Appearance
CSMA/CD协议
2026 大纲 三(五)2 随机访问介质访问控制(CSMA、CSMA/CD 协议)。随机访问的吞吐量模型(
)在《ALOHA》,帧格式与帧长账在《以太网》。
一、先听一下再发,能好多少
ALOHA 的 18.4% 之所以这么低,根子在"想发就发"——别人正发着我也照发不误。最省事的改进就是发之前先听一听:信道忙就等着,空闲才发。这就是 CSMA(载波侦听多址接入)。
"载波"是译名遗留。 总线上根本没有载波,监听的是有没有信号电压变化,不是某个频率的载波。教材说"把 Carrier 译为'载体'或'媒体'可能更加准确些"。
但只"先听后发"还不够,因为先听后发仍然会撞。CSMA/CD 在它之上再加一条"边发边听",合起来是十六字四机制,缺一不可:
| 机制 | 不做会怎样 |
|---|---|
| 先听后发 | 退化成 ALOHA |
| 边发边听 | 撞了也不知道,白发完整帧 |
| 冲突停发 + 强化碰撞 | 离碰撞点远的站察觉不到 |
| 随机重发 | 冲突各方原样再撞一次 |
二、"先听后发"为什么还会撞
原因只有一条:电磁波的传播速率有限。A 在
"先听后发"能消除的只是"我听得见你在发还硬要发"这一类冲突,消不掉"信号还在路上"这一类。

图源:谢希仁《计算机网络》(第 8 版) 图 3-17,p89
上半幅横轴是位置、纵轴向下是时间:两条斜线的交点就是碰撞位置,而 B 的信号还要从交点走回 A,A 才知道——这就是争用期里第二个
的来源。
争用期为什么是 而不是
取
| 时刻 | 发生了什么 | 谁知道 |
|---|---|---|
| A 开始发送;B 此刻监听到信道空闲 | — | |
| A 的信号还没到 B,B 判定空闲,开始发送 | 双方都不知道要撞 | |
| 两个信号在中途相遇,碰撞发生 | 双方仍不知道 | |
| A 的信号到达 B,B 检测到碰撞,停止发送 | B 知道了 | |
| B 的信号回传到 A,A 检测到碰撞,停止发送 | A 才知道 |
A 是最先发送的那个站,它得知碰撞的时刻是
一句话记住:碰撞发生在对方那一侧,我要知道它还得等对方的信号走回我这里——这是一次往返。
熬过
⚠️ 10 Mb/s 以太网的
不只是端到端时延。 它还预留了转发器时延、JAM 信号持续时间等,所以拿它反推网段长度只能得到上界(约 5 km)。
三、最小帧长与跨距:同一条不等式的两头
要让发送站在"发完之前"察觉碰撞,必须保证帧的发送时间
它保护的是发送方的检测能力,不是效率。 帧太短会出现"发完了才撞":目的站丢弃这个坏帧,而发送站已经不再监听、不知道撞过、也就不会重传——帧无声地丢失了,这属于协议失效而不是效率问题。
10 Mb/s 下算出 512 bit 即 64 字节,由此还有两个推论:
- 数据字段不足 46 字节要加填充字段(帧头帧尾共 18 字节);
- 收到不足 64 字节的帧一律丢弃——合法帧至少 64 字节,而碰撞会把帧中途截断,所以短帧只能是碰撞碎片。
⚠️ "64 字节"是标准值,"
反过来,帧长定死之后,跨距就被卡住了:
| 数据率 | 64 B 帧的发送时间 | 允许的最大 | 对应最大单程距离( |
|---|---|---|---|
| 10 Mb/s | |||
| 100 Mb/s | |||
| 1 Gb/s |
这张表解释了 CSMA/CD 为什么会被淘汰。 半双工共享介质下"数据率"与"网络直径"此消彼长,而两者都在往上要。千兆时跨距只剩 51.2 m 已不可用,标准只好用载波延伸把争用期对应比特数提到 4096 bit,跨距拉回 409.6 m。唯一的根本出路是取消共享——交换机给每端口独占一段全双工链路,冲突域缩到一条链路的两个端点。
两个方向都要会推
设某总线型以太网数据率 100 Mb/s,最远两站相距 200 m,传播速率
由距离求帧长:
由帧长求距离:把不等式倒过来用,
一个 40 字节的帧能不能保证检测到碰撞? 该网络的物理条件只要求 25 字节,40 > 25,从碰撞可检测性看是够的;但以太网标准强制最小帧长 64 字节,接收方会把不足 64 字节的帧当碰撞碎片直接丢弃,所以它必须由 MAC 子层填充到 64 字节才能发出。
交互可视化
四、撞了之后:强化碰撞与退避
检测到碰撞后要立即停发,但光停发不够——离碰撞点远的站可能检测不到电压异常,还傻等着。所以停发后还要继续发 32 或 48 比特的人为干扰信号(JAM),把"撞了"这件事广播出去,这叫强化碰撞。
完整顺序是:检测到碰撞 → 停发 → JAM → 退避 → 重传。一次碰撞占用总线
截断二进制指数退避
为什么要退避? 几个碰撞的站会同时检测到信道变空闲,都同时重传必然接连再撞。
为什么是指数增长? 冲突次数多说明参与争用的站多,站越多就越需要撒到更宽的时间范围里。范围每次翻倍能在几次之内迅速拉开区间,线性增长在站数很多时收敛太慢。
算法:基本退避时间取争用期
推迟
两个数字管两件事,别混:
为什么在
| 重传次数 | 随机数 | 可选时槽数 | 最长等待( | |
|---|---|---|---|---|
| 1 | 1 | 2 | ||
| 2 | 2 | 4 | ||
| 3 | 3 | 8 | ||
| 4 | 4 | 16 | ||
| 10 | 10 | 1024 | ||
| 11 ~ 16 | 10 | 1024(不再增大) |
随机数集合含 0,上界是
最后一条容易被忽略的性质:CSMA/CD 不保证公平。适配器每发一个新帧都重新执行一次算法,对过去发生过的碰撞没有记忆——新帧可能抢在已退避多次的老站之前发成功。要"有上界的等待时间"得看令牌传递。
五、参数 :把两条约束压成一个数
理想化假设各站发送都不碰撞、总线一空闲立刻有站发送,此时发一帧占用线路
注意它是"上界的上界":假设了完全不碰撞——那已经不是 CSMA/CD 了。这个式子的用处是给出天花板,说明"即使没有碰撞,只要
拿一个 10 Mb/s 总线以太网(最大单程传播时延
- 64 字节帧:
, , ; - 1518 字节帧:
, , 。
适用边界:CSMA/CD 必须半双工、必须共享介质;全双工点对点链路上物理上不存在碰撞。现代交换式以太网已不跑它,但帧结构未改变,所以仍叫以太网。
即便如此它仍要掌握:最小帧长 64 字节这条帧格式规定的来历全在它里面,而帧格式至今没变;"冲突域"是从它定义出来的,讲交换机绕不开;它还是"共享介质 + 分布式仲裁"的范本,CSMA/CA 照着它的骨架改。
本节小结
- 争用期
是一次往返:去程让对方撞上,回程让我知道; 按最远两站算。熬过 就可确信本次发送不会再碰撞。 - 最小帧长
保护发送方的检测能力:帧太短会"发完了才撞"、发送方永不知情,属协议失效。10 Mb/s 下为 64 字节,短于此的帧一律当碰撞碎片丢弃。数据率上升按比例压缩最大跨距,这正是它被交换式全双工取代的根本原因。 - 截断二进制指数退避:
,从 取 ,等 ,满 16 次放弃。指数增长是因为"撞得多说明站多、要撒得更开",截断是因为时延代价反噬;适配器对历史碰撞无记忆故不保证公平。
考点速记
本节是数据链路层出题最密的一处,在真题里被考过的形式按问法分四类,四类各卡一个不同的点。
① 由退避次数求最长等待时间(cn-2023-36、cn-2025-35)。这两道是同一类的两个难度,动作三步:定
- cn-2023-36:连续 4 次冲突,
, 最大 ,最长等待 。干扰项 819.2 μs 就是把上界当成 算的,这是本类题唯一的分岔口。 - cn-2025-35:连续 11 次冲突,
, 最大 1023,最长 。 在 10 就截断了,按 算会得到另一个选项。
② 由帧长求跨距、由跨距求帧长(cn-2009-37、cn-2019-36、cn-2016-36、cn-2022-47)。全都在用
- cn-2019-36 最直接:100 Mbps、最小帧 128 B,问单向传播时延最多多少。
。 - cn-2009-37 考增量:最小帧长减少 800 bit,问最远距离怎么变。
s, m,帧长减小则距离减少 80 m。做增量题不必算出原值。 - cn-2016-36、cn-2022-47 在路径上多了一台集线器:集线器再生比特流会引入固定延时,要从时延预算里先扣掉。以 cn-2016-36 为例,100BaseT 的
s,扣掉 Hub 的 1.535 μs 只剩 1.025 μs 用于传播, 。扣设备延时这一步是这两道题的全部难点。
③ 概念判断(cn-2015-36)。四个选项挑错的,答案是"适用于无线网络"——CSMA/CD 靠"边发边听",而无线站点发射时自己的信号会盖住一切,根本听不到别人,所以无线用的是 CSMA/CA。另外三项都对:边发边听、最小帧长由跨距与速率决定、传播时延趋近 0 时
④ 综合大题(cn-2010-47,9 分)。给 10 Mbps、距离 2 km、
- 检测到冲突的最短与最长时间。
s。最短是两站同时开始发,双方都在 收到对方信号;最长是一方在对方信号即将抵达的最后一刻才发,先发的那个要等到 才知道。这两个数就是第二部分那张走查表的两端。 - 有效数据传输速率。甲发 1518 B 帧、乙回 64 B 确认,停等式。一个周期
ms,而有效数据只有 B:
这一问其实是停止-等待协议那条利用率公式换了个说法——分母是一个完整周期、分子只算有效载荷。
易错:退避随机数的上界是
不是 。 第 4 次冲突最长等 ,不是 。这是本节最容易丢分的一处。
易错:
截断的是 ,重传次数仍数到 16 才放弃。 别答成"最多重传 10 次"。
易错:争用期是
,题目问"单向传播时延"时要再除以 2。 反过来,问"最远距离"时用的是单程 。
易错:路径上有集线器时,它的再生延时要从
里扣掉,剩下的才是留给传播的时间。
易错:
是物理下限,64 字节是标准值。 给了物理参数就算公式,问以太网标准就答 64 B。算出来 25 B 不代表可以发 25 B 的帧。
易错:CSMA/CD 只能用于半双工共享介质。 "适用于无线网络""交换式以太网仍用 CSMA/CD"都是错的。
教材出处
- 谢希仁《计算机网络》(第 8 版)印刷 p88:CSMA/CD 名称与"载波"译名的辨析——"在以太网中,把 Carrier 译为'载体'或'媒体'可能更加准确些";并给出"载波监听"与"碰撞检测"两个要点:碰撞检测是"适配器边发送数据边检测信道上的信号电压的变化情况……当适配器检测到的信号电压变化幅度超过一定的门限值时,就认为总线上至少有两个站同时在发送数据"。
- 同书印刷 p89,图 3-17 与其后的时刻表:争用期推导的原始依据。原文"这个时间最多是两倍的总线端到端的传播时延(
),或总线的端到端往返传播时延",以及"局域网必须按最坏情况设计"。同页还给出"电磁波在 1 km 电缆的传播时延约为 (这个数字应当记住)",以及"使用 CSMA/CD 协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)"。 - 同书印刷 p90:争用期与截断二进制指数退避的完整规定——"以太网的端到端往返时间
称为争用期(contention period),它是一个很重要的参数。争用期又称为碰撞窗口";退避算法三条规定(基本退避时间为争用期 ;从 中随机取 , ;重传达 16 次仍不成功则丢弃并向高层报告);以及退避的理由——几个发生碰撞的站会同时检测到信道变空闲,若同时重传"必然接连发生碰撞",动态退避"使重传推迟的平均时间随重传次数而增大……有利于整个系统的稳定"。 - 同书印刷 p91:最小帧长的失败场景与结论——"为了避免发生这种情况,以太网规定了一个最短帧长 64 字节,即 512 比特","凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。只要收到了这种无效帧,就应当立即将其丢弃";强化碰撞与人为干扰信号 32/48 比特;一次碰撞占用总线
;"以太网的最大端到端时延必须小于争用期的一半(即 )";以及适配器"对过去发生过的碰撞并无记忆"。 - 同书印刷 p94–p95:参数
的定义与极限信道利用率 的推导;"据统计,当以太网的利用率达到 30% 时就已经处于重载的情况"。 - 同书印刷 p104:交换式以太网不再使用 CSMA/CD——"以太网交换机不使用共享总线,没有碰撞问题,因此不使用 CSMA/CD 协议,而是以全双工方式工作。既然连以太网的重要协议 CSMA/CD 都不使用了(相关的'争用期'也没有了),为什么还叫作以太网呢?原因就是它的帧结构未改变"。
相关知识
ALOHA 协议|CSMA/CA 协议|以太网与 MAC 地址|交换机工作原理|令牌传递