CSMA/CD协议
CS空闲检测:1.在发送数据之前会检查信道是否空闲
CD碰撞检测:2.在发送中,也会检查信道是否空闲(碰撞),如果检测到其他站正在发送,本站就会立即停止发送
注意,发送结束后,就不会再进行检查,但这时数据可能还在信道上传播。
注意,这里的检测信道检测的不是一整条信道,而是只能检测到本站点前的信道,即此时本站点前的信道是否有数据在通过。
如图,A发送的信号还没传播到B,此时B会检测到信道为空闲。
1:A开始发送数据
2:A正在发送数据,且数据还没达到B,所以B检测信道为空闲
3:A正在发送数据,一边发送一边检测(注意,只检查站点前的信道)
4:A数据到达B站点,但是B站点此时还在发送数据,所以B站点明白了自己的数据发生碰撞,B站点立即停止传送数据,等待一段随机时间后重传数据
5:A站点还在发送数据,此时B站点数据到达,A站点检测到自己发生碰撞,停止发送数据,等待一段随机时间后重传数据
所以A知道发生碰撞的时间 是B数据传播到A的时候,这个时间最多为数据在端与端之间往返一趟的时间2t。A的数据无限接近B站点,但是还没达到时(时间无限接近t),B站点检测信道为空闲,发送信息,经过t时间传播到A,时间总计2t。
争用期:上面的2t就是争用期,只有在这个时间内没有检测到碰撞,才能肯定没有发生碰撞(因为在2t内,B随时有可能发送数据,导致碰撞)。
CSMA/CD取2t为51.2μs,为局域网最远的端与端之间(大概5km)往返一趟的时间。
最短帧长
现在考虑一种情况
如果A数据帧很短,一下子就发送完毕----也就是不会再进行碰撞检测,但是数据在传播过程中发生碰撞,但是A此时并没有在进行碰撞检测,所以A并不知道自己的数据发生碰撞,从而不会重传数据。
为了避免这种情况,CSMD/CD规定了最短帧长,保证数据传送的时间至少为2t(51.2μs)。