作用
在同一时刻只能允许一台主机在总线上发送数据,否则就会产生冲突。CSMA/CD协议就是用来解决这种问题。
协议要点
1.多点接入。 即总线上接入多台主机
2.载波监听。在发送前和发送中不停的检测信道。 发送前检测是为了判断其他计算机有没有在发送数据, 发送中检测是为了判断有没有发生碰撞。
3.碰撞检测。边发送边检测, 发生冲突就停止发送。
在检测到信道为空闲时发送数据,并不能保证不会出现碰撞。因为电磁波以有限速率在总线中传播。
争用期
从上图可以看出, 主机在发送数据后, 需要过一段时间才能确定是否发生了碰撞。 这个时间至多为2t,即以太网的端到端的往返时间, 称为争用期。
若过了争用期还没有检测到碰撞, 则说明这次发送不会出现碰撞。
截断二进制指数退避
从数据集【0, 1, 3,(2^k - 1)】中随机选择一个数, 记为r, 重传推迟的时间就是r * 争用期的时间, k的计算方式如下:
k = Min【重传次数, 10】
重传次数小于10的时候, k等于重传次数, 否则为10。
当重传16次仍然不能成功的时候, 说明传送失败, 应丢弃该帧, 并向上层报告。
最短帧
若某一个帧非常短, 以至于在碰撞到达发送方之前就已经发送完成, 那么发送方不会重发该帧。 为了避免这种情况, 以太网规定最短帧长为64字节, 即512bit。
长度不足64B的帧, 应填充一些数据, 使其长度不小于64B。
若发生碰撞, 则发送的帧长度在64B之内, 此为无效帧, 应立即丢弃。
强化碰撞
当发送数据的站发现发送碰撞的时候, 除了停止发送数据之外, 还会再继续发送32bit或者48bit的认为干扰信号,以便让用户知到碰撞发生了。
帧见最小间隔
以太网规定帧见最小间隔为9.6微秒。这样做是为了让刚接受数据帧的站的接受缓存来得及清理。