Appearance
CSMA/CD协议
考情分析
CSMA/CD 是 408 数据链路层的高频考点,尤其是争用期、最小帧长、二进制指数退避算法这三个知识点几乎是必考内容。选择题和计算题都有可能出现。
考频:★★★★
协议概述
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)——载波侦听多路访问/冲突检测,是以太网(802.3)使用的介质访问控制协议。
它的核心思想可以用 16 个字概括:
先听后发、边发边听、冲突停发、随机重发
工作流程
先听后发(Carrier Sense)
站点在发送帧之前,先监听信道。如果信道空闲,开始发送;如果信道忙,等待信道变为空闲后再发送。
但"先听后发"不能完全避免冲突。因为电磁信号在信道中有传播时延,A 站开始发送后,B 站可能还没有"听到"A 的信号,误以为信道空闲,也开始发送,于是冲突就发生了。
边发边听(Collision Detection)
站点在发送帧的同时,持续监听信道上的信号。如果检测到信道上的信号与自己发出的不一致,说明发生了冲突。
冲突停发 + 发送 JAM 信号
一旦检测到冲突,立即停止发送数据,并发出一个短的阻塞信号(JAM),通知所有站点发生了冲突。JAM 信号通常是 32 比特或 48 比特。
随机重发(二进制指数退避)
发送冲突后,等待一段随机时间再尝试重新发送。等待时间由截断二进制指数退避算法决定(后面详述)。
争用期(碰撞窗口)
争用期是 CSMA/CD 中最关键的时间参数,也叫碰撞窗口或冲突窗口。
什么是争用期
考虑最坏情况:A 站开始发送,信号即将到达最远端的 B 站时(经过了接近
也就是说,A 站从开始发送到最迟能检测到冲突的时间是:
其中
争用期的意义
- 在争用期内(发送开始后的
时间内),站点可能检测到冲突 - 如果过了争用期还没有检测到冲突,就可以确信这次发送不会再发生冲突了
- 以太网取
(10 Mbps 以太网,最大网段长度 2500m)
最小帧长
为了确保发送方能在发送完一帧之前检测到可能发生的冲突,帧的发送时间不能短于争用期:
对于 10 Mbps 以太网:
这就是以太网规定最小帧长为 64 字节的原因。
如果发送的数据不足 64 字节,就需要在数据字段后面填充(Padding)到最小长度。
反过来: 如果接收方收到了一个小于 64 字节的帧,直接丢弃——这是一个因冲突而中途停止的无效帧("碎片")。
截断二进制指数退避算法
当发生冲突后,站点等待一段随机时间再重试。这个等待时间不是固定的,而是通过以下算法计算:
第 1 步: 确定基本退避时间为争用期
第 2 步: 第
第 3 步: 等待时间 =
第 4 步: 如果重试 16 次后仍然冲突,放弃发送,向上层报告错误
关键细节:
| 重传次数 | 随机数范围 | 最大等待(时槽数) |
|---|---|---|
| 1 | 1 | |
| 2 | 3 | |
| 3 | 7 | |
| ... | ... | ... |
| 10 | 1023 | |
| 11~16 | 1023(不再增大) | |
| >16 | 放弃 | — |
"截断"的含义:
这种指数退避的设计思想:冲突次数越多,说明网络越拥挤,等待时间的上限越大,能更有效地分散各站点的重试时间。
交互可视化
CSMA/CD 的约束条件
CSMA/CD 要求站点能够边发边听,这对物理层有要求:
- 必须是半双工通信(发送和接收共用信道)
- 站点需要有能力同时发送和检测信道信号
- 全双工链路不需要 CSMA/CD——因为发送和接收分别使用不同的通道,不存在冲突
因此,现代交换式以太网(每个端口独占带宽,全双工通信)已经不需要 CSMA/CD。
易错点
1. 争用期是
最坏情况下需要一个来回的传播时延才能检测到冲突。只取单程时延
2. 最小帧长的计算要用争用期乘以数据率
最小帧长 =
3. 退避算法中
4. 冲突后发送的是 JAM 信号,不是重传数据帧
检测到冲突后先发 JAM 信号(通知其他站),然后停止、等待、重试。不是检测到冲突就立即重传。
高频考点清单
- "先听后发、边发边听、冲突停发、随机重发"的完整流程
- 争用期 =
,以及为什么是 - 最小帧长 =
,以太网最小帧长 64 字节 - 截断二进制指数退避算法的详细步骤
- 给定冲突次数,计算退避时间的可能范围
- 全双工链路不需要 CSMA/CD