带冲突检测的载波侦听多路访问(CSMA / CD),英文描述为Carrier Sense Multiple Access with Collision Detect (CSMA/CD)。
最初,以太网被设计为在共享介质上运行的协议,如图所示。
在这种拓扑中,总线上的每个节点(node)都可以平等地访问总线,但是一次只能传输一个节点,并且每个节点都传输半双工。
来自多个节点的同时传输将导致介质上的数据出现乱码,随后数据丢失。从这个简单的例子中,我们可以得出对网络协议的一些基本要求:
在以太网中,使用称为带冲突检测的载波侦听多路访问(CSMA / CD)的方案可以满足这些要求。
在以太网节点可以开始传输之前,它必须首先确定介质是处于活动(active)状态还是空闲(idle)状态(载波侦听)。如果介质处于活动状态,则该节点必须等待,直到介质变为空闲,然后在此之后等待预定时间(predetermined amount of time),然后再开始传输。
此预定时间量称为数据包间间隙Inter-Packet Gap(IPG),也称为帧间间隙Inter-Frame Gap(IFG),并且取决于总线的速度,如表所示。
但是,如果多个节点正在等待媒体变为空闲状态,则一旦媒体变为空闲状态,它们几乎可以同时开始传输。因此,所有节点还必须具有检测这些冲突的能力(冲突检测)。
如果尝试在空闲介质上进行传输的节点位于介质的物理相对两端,并且一个节点在看到来自介质上另一节点的传输之前就开始进行传输,则发生最坏情况。
节点1开始传输,但是数据需要花费一些时间才能通过介质传播到节点4。节点4在看到来自节点1的数据之前就开始传输。节点4几乎会立即检测到介质上的冲突,并将一种称为堵塞信号的特殊模式传输到介质上。
现在,该阻塞信号必须先返回到节点1才能检测到通过将其发送的数据与接收的数据进行比较,可以确定发生了冲突。
这适用于10Base2、10Base5和10Base-F节点,其中所有节点共享一个公共介质。
这意味着在确保介质上的所有节点都检测到网络之前,网络的信号传播时间大约是其两倍。该时间称为冲突窗口或时隙时间。 表显示了各种速度的时隙时间。
我们描述的情况称为“窗口内”冲突,因为该冲突是在时段内检测到的。
但是,如果网络的大小大于网络直径,则可能会发生“窗口外”或“后期”冲突。
较晚的碰撞不像窗口内碰撞那样被视为传输错误,但被视为网络拓扑本身存在问题。
与窗口内冲突不同,后期冲突不在以太网的物理/数据链路层处理,而是必须由应用程序软件检测和处理。
根据以上示例,应该可以明显看出碰撞窗口等于帧的最小大小。 但是,增加帧大小会增加从碰撞中恢复的影响。
为此,IEEE 802.3规范的原始作者通过针对10Base-T和100Base-T以太网提出“合理的”冲突窗口(表2中称为“网络直径”)而受到损害。
然后将最小框架尺寸设置为匹配所选网络直径。
自然而然,运行速度为1000 Mb / s的千兆以太网的网络直径将是100Base-T的1/10。 但是,这将导致约20m的实际无法使用的网络直径。
千兆以太网通过在帧末尾添加位(称为“载波扩展”)来扩展帧大小,以形成4096位的有效最小帧长度。
这导致网络直径与100Base-T大致相同。
由于100Base-T的传输速率是10Base-T的传输速率的10倍,因此传输帧所需的时间是时间的1/10。
反过来,这意味着时隙时间从10Base-T的大约50μs减少到100Base-T的大约5μs。
因此,网络直径从2500m缩小到约200m。
请注意,半双工可用于不使用共享总线拓扑的拓扑,例如点对点连接。
在这种情况下,一个节点的TX线连接到另一节点的RX线,反之亦然。因此,冲突很容易检测到,因为每个节点可以在传输时简单地在其RX端口上查找数据。
如果在传输期间接收到任何数据,则链接的节点也必须也在传输,并且发生了冲突。这适用于10Base-T以及所有100 Mb / s和千兆位以太网节点。
对我们的网络协议的最后要求是一种方法,每个节点都可以通过该方法确定何时重新传输。如果每个节点尝试同时重传,则冲突将无限期继续。
因此,以太网实现了所谓的二进制指数补偿算法,其工作原理如下:
1.每个节点在尝试其第一次重传之前选择一个随机延迟(范围从0到1)。
2.如果发生另一个冲突,则每个节点将随机延迟的范围加倍(现在从0到3),然后再次选择随机延迟。
3.重复此过程(范围为0到7、0到15等),直到没有碰撞发生或尝试10次为止。此时,每个节点的定义范围将是0到1023。以这种方式,每次尝试的退避时间范围都呈指数增长,并且碰撞的可能性迅速降低。
4.将进行六次尝试(总共16次尝试)以进行重发。如果某个节点仍无法成功进行重传,则会丢弃该帧,并报告过多的冲突错误。然后,应用程序软件必须检测到帧丢失,并根据需要尝试重新传输丢失的帧。
在我们了解IEEE 802.3帧的时序之前,我们必须了解时序背后的原因。也就是存在冲突以及如何去解决冲突,七种当然包含很多的算法等。
2020-3-30