本文参考 计算机网络微课堂
1. CSMA/CD协议介绍
当多个主机同时发送数据时,如何解决碰撞冲突问题呢?
早期的共享式以太网采用 载波监听多址接入/碰撞检测
,即CSMA/CD协议
来解决碰撞冲突问题
多址接入MA
- 多个站连接在一条总线上,竞争使用总线
载波监听CS
- 每一个站在发送帧之前先要检测一下总线上是否有其他站点在发送帧(先听后说):
- 若检测到总线空闲 96 比特时间,则发送这个帧
- 若检测到总线忙,则继续检测并等待总线转为空闲 96 比特时间,然后发送这个帧
96 比特时间
是指发送 96 比特所耗费的时间,也称为帧间最小间隔
。其作用是使接收方可以检测出一个帧的结束,同时也使得其他站点有机会平等竞争信道并发送帧
碰撞检测CD
- 每一个正在发送帧的站边发送边检测碰撞(边听边说):
- 一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送
- 一旦发现总线上出现碰撞,则立即停止发送,退避一段随机时间后再次发送
2. 基本原理
CSMA/CD的基本原理是:所有节点都共享网络传输信道,节点在发送数据之前,首先检测信道是否空闲,如果信道空闲则发送,否则就等待;在发送出信息后,再对冲突进行检测,当发现冲突时,则取消发送。
- 假设在主机 B 发送帧的过程中,主机 C 也要发送帧。主机 C 进行载波监听,发现总线空闲 96 比特后立即发送帧,这必然导致碰撞
- 碰撞信号沿总线传播,主机 C 比主机 B 更早检测到碰撞并停止发送,退避一段随机时间后,重新发送之前所发送的帧
- 当主线 B 检测到碰撞后,同样也停止发送退避一段随机时间,重新发送之前所发送的帧
以太网还采用了一种 强化碰撞
的措施,这就是当发送帧的站点一旦检测到碰撞,除了立即停止发送帧外,还要继续 发送 32 比特或 48 比特的人为干扰信号
(Jamming Signal),以便有足够多的碰撞信号使所有站点都能检测出碰撞。
3. 争用期(碰撞窗口)
- 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞
- 每一个主机在自己发送帧之后的一小段时间内,存在着偶遇碰撞的可能性。这一小段时间取决于另一个发送帧的主机到本主机的距离,但不会超过总线端到端的往返传播时延,也就是一个争用期时间
- 显然,在以太网中发送帧的主机越多,端到端往返传播时延越大,发生碰撞的概率就越大。因此,共享式以太网不能连接太多的主机,使用的总线也不能太长
4. 最小帧长
以太网规定最小帧长为 64 字节
,即 512 比特(512 比特时间即为争用期)- 如果要发送的数据非常少,那么必须加入一些填充字节,使帧长不少于 64 字节
- 以太网的
最小帧长确保了主机可在帧发送完成之前就检测到该帧的发送过程中是否遭遇了碰撞
- 如果在争用期(共发送 64 字节)没有检测到碰撞,那么后续发送的数据就一定不会发生碰撞
- 如果在争用期内检测到碰撞,就立即中止发送,这时已经发送出去的数据一定小于 64 字节。因此,
凡长度小于 64 字节的帧都是由于碰撞而异常中止的无效帧
5. 最大帧长
- 示例
6. 截断二进制指数退避算法
- 若连续多次发生碰撞,就表明可能有较多的主机参与竞争信道。但使用上述退避算法可
使重传需要推迟的平均时间随重传次数而增大
(这也称为动态退避
),因而减小发生碰撞的概率
,有利于整个系统的稳定 - 当
重传 16 次仍不能成功
时,表明同时打算发送帧的主机太多,以至于发生碰撞,则丢弃该帧
,并向高层报告
7. 信道利用率
8. 帧发送流程
9. 帧接收流程
附加: 相关练习题
注意: CSMA/CD协议曾经用于各种总线结构以太网和双绞线以太网的早期版本中。 现在的以太网基于交换机和全双工连接,不会有碰撞,因此没有必要使用CSMA/CD协议。