以太网半双工是主机决定的,还是Hub决定的?

为啥使用集线器的星型以太网是半双工,是因为一个站不能同时发送和接收数据,还是A,B同时发送数据会碰撞?

 

以太网半双工是主机决定的,还是Hub决定的?
 
不是说是用两条双绞线吗,哪为啥会碰撞啊,而且连入局域网用的不是一条双绞线吗?
 
 
以太网半双工是主机决定的,还是Hub决定的?
为何主机连在交换机上,主机的物理接口就工作在双工(full duplex)模式?
双方使用了一个物理层消息NLP/FLP(Normal/Fast Link Pulse),用于动态协商物理接口的速率与双工/半双工模式。协商的工作其实很简单,就是把自己的家底(Speed/Duplex)告诉彼此,然后双方瘸子里选将军,找到一个共同的交集,比如双方都支持1000Gbps, Full Duplex,那么最终双方就工作在1000Gbps双工模式下。
 
为何主机连在HUB上,主机的物理接口就工作在半双工(half duplex)模式?
那是因为HUB没有能力发出NLP/FLP(Normal/Fast Link Pulse )消息,自然不能与主机协商双工模式,主机发现自己发出的NLP/FLP消息之后,迟迟得到不响应,那么就知道遇到傻子了,于是就模式使用半双工模式。
 
这里的逻辑其实很简单,交换机有能力发NLP/FLP,路由器也有能力发NLP/FLP,防火墙也有能力发NLP/FLP,服务器也有能力发NLP/FLP,唯一不能发NLP/FLP消息的自然就是HUB
 
所以题主的问题其实是问主机使用双绞线连接HUB,为何工作在半双工模式?
上面的文字已经解释了为何工作在半双工模式。如果题主问,那能不能手工将连接HUB主机的网口强制配置成双工模式?
 
可以的,但是这样会造成数据丢失,为什么呢?
 
因为HUB是将连接到某个端口上TX线(入线)与其它所有端口的RX线(出线)连接在一起,形成一条数据总线。造成的后果就是,任何时刻只能有一个主机发送数据,如果同时有两个或者多个主机发送数据,那么这些数据就会相互冲突,让真正的接收者无法从冲突的信号里复原自己的数据。
 
当强制主机的物理接口工作在双工模式,意味着将本机的CSMA-CD算法关闭,意味着本机在发数据之前,无需任何等待,也无需检测RX线的冲突信号、数据信号,可以同时收发数据。而此时如果有其它主机在发送数据,那么就很容易发生数据冲突。
 
所以,一个主机工作在半双工,还是全双工模式,那是使用物理层信号NLP/FLP自动协商的结果,也可以手工来强制配置,但是如果连接的是HUB并不建议使用强制指定的方式。
 
为何主机连接交换机就会工作在双工模式?
意味着主机在任何时间,可以同时收发数据。其实实现这点也不复杂,一旦主机与交换机自协商为双工模式,主机会将本机的CSMA-CD算法关闭。
 
但是上面的文字还是没有解释为何主机连接交换机就可以工作在双工模式,而不会造成潜在的数据冲突(Collision)?
交换机端口入向(incoming)如果检测到内部数据总线忙,会将收到的帧缓存起来,直到数据总线空闲下来才会将缓存的数据送到数据中心上完成交换,这样就不会造成数据冲突。连接交换机所有主机,都可以在任意时刻发数据给交换机,同时也可以从交换机接收数据,而不会有任何冲突。
 
当主机A与主机B连在同一个HUB上,工作在半双工模式,同时发送数据,会发生什么?
 
主机A或主机B,在TX线发送数据的同时,会在RX线启动CSMA-CD算法,即实时监控RX线是否有数据信号的存在。
 
自然,主机A或主机B的数据帧迟早会进入对方的RX线,并被对方的CSMA-CD检测到,然后立马做以下的动作:
 
  • 中断(Interrupt)正在TX线数据发送工作
  • TX(Transmit)线发送一个阻塞信号(Jam Signal)
  • 启动一个Backoff 定时器,只有定时器超时才能再次尝试将被中断发送的数据帧重传(Retransmit)出去
 
被中断的数据帧(不完整)会被目的MAC所代表的主机接收吗?
 
不会的,因为无法通过CRC校验。
 
最后留给读者一个问题,如果将主机A与主机B连在一个HUB上,且HUB上只连接这两台主机,这两台主机被配置成:100M双工模式,这两台主机位于同一个网段,都是10.1.1.x/24,A与B通信数据会冲突吗?
 
欢迎评论区讨论!

来源:车小胖谈网络,本文观点不代表自营销立场,网址:https://www.zyxiao.com/p/128435

侵权联系 投诉举报
返回顶部