随机访问:ALOHA、CSMA 与 CSMA/CD

第 3 章错题最多的一页,8 道错题落在这里。 教材【复习提示】点名要重点掌握的”CSMA/CD 协议、局域网的争用期和最小帧长、二进制指数退避算法”全在这一页;真题从 2009 年到 2023 年几乎每两年考一次。

所有题目都从一个物理事实推出来:信号在电缆上传播要时间。所以”听到空闲”不等于”真的空闲”,冲突不可避免,只能尽快发现(争用期)、保证发现得了(最短帧长)、发现后别马上再撞(退避)。

CSMA/CA 另起一页,见 CSMA/CA。

机制

随机访问的核心思想

在随机访问协议中,不采用集中控制方式解决发送信息的次序问题,所有用户都能根据自己的意愿随机地发送信息,占用信道的全部速率。在总线形网络中,当有两个或多个用户同时发送信息时,就会产生帧冲突(也称碰撞),导致所有冲突用户的发送均以失败告终。为了解决随机访问发生的冲突,每个用户需要按照一定的规则反复地重传它的帧,直到该帧无冲突地通过,这些规则就是随机访问介质访问控制协议,其核心思想是:胜利者通过争用获得信道,进而获得信息的发送权。因此,随机访问介质访问控制协议也称争用型协议(信道划分与随机访问的特点 2014 年考过)。

若采用信道划分机制,节点之间的通信要么共享空间,要么共享时间,要么共享空间和时间;而若采用随机访问控制机制,节点之间的通信既不共享时间,也不共享空间。因此,随机介质访问控制实质上是一种将广播信道转换为点到点信道的机制——某一时刻只有争到信道的那一对站在通信。

ALOHA 协议

纯 ALOHA 协议的基本思想是:当总线形网络中的任何站点需要发送数据时,可以不进行任何检测就发送数据。若在一段时间内未收到确认,该站点就认为传输过程中发生了冲突,发送站点需要等待一段随机的时间后再发送数据,直至发送成功。假定所有帧都是定长的,帧长用发送这个帧所需的时间 表示:只要两个帧在时间上重叠了一部分,就发生冲突,冲突的各站都必须重传,但并不能马上重传(这样做必然导致继续发生冲突),而是各自等待一段随机的时间再重传。纯 ALOHA 网络的吞吐量很低。

时隙 ALOHA 协议同步各站点的时间,将时间划分为一段段等长的时隙(Slot),规定站点只能在每个时隙开始时才能发送帧,发送一帧的时间必须小于或等于时隙的长度。这样避免了用户发送数据的随意性,降低了产生冲突的可能性,提高了信道的利用率。每个帧到达后,一般要在缓存中等待一段小于时隙 的时间才能发送出去;当一个时隙内有两个或两个以上的帧到达时,在下一个时隙将产生冲突。冲突后重传的策略与纯 ALOHA 相似。

CSMA 协议:先听后发

ALOHA 网络发生冲突的概率很大。若每个站点在发送前都先监听公用信道,发现信道空闲后再发送,则会大大降低冲突的可能性,从而提高信道的利用率,载波监听多路访问(Carrier Sense Multiple Access,CSMA)协议依据的正是这一思想。CSMA 协议是在 ALOHA 协议基础上提出的一种改进协议,它与 ALOHA 协议的主要区别是多了一个载波监听装置。

根据监听方式和监听到信道忙后的处理方式不同,CSMA 协议分为三种:

1-坚持 CSMA:站点要发送数据时,首先监听信道;若信道空闲,则立即发送数据;若信道忙,则继续监听直至信道空闲。“坚持”的含义是监听到信道忙时继续坚持监听信道;“1”的含义是监听到信道空闲时,立即发送帧的概率为 1。

非坚持 CSMA:站点要发送数据时,首先监听信道;若信道空闲,则立即发送数据;若信道忙,则放弃监听,等待一个随机的时间后,再重新监听。非坚持 CSMA 在监听到信道忙时就放弃监听,因此降低了多个站点等待信道空闲后同时发送数据导致冲突的概率,但也增加了数据在网络中的平均时延。

p-坚持 CSMA:只适用于时分信道。站点要发送数据时,首先监听信道;若信道忙,则持续监听(等到下一个时隙再监听),直至信道空闲;若信道空闲,则以概率 发送数据,以概率 推迟到下一个时隙再继续监听;直到数据发送成功。检测到信道空闲后以概率 发送、以概率 推迟,目的是降低 1-坚持 CSMA 中多个站点检测到信道空闲时同时发送帧的冲突概率;采用坚持”监听”,目的是克服非坚持 CSMA 中因随机等待造成的延迟时间较长的缺点。因此,p-坚持 CSMA 协议是非坚持 CSMA 协议和 1-坚持 CSMA 协议的折中。

信道状态1-坚持非坚持p-坚持
空闲立即发送立即发送以概率 发送,以概率 推迟到下一个时隙
忙继续坚持监听放弃监听,等待随机时间后再监听持续监听(等到下一时隙再监听),直至空闲

三种协议在”空闲”一行只有 p-坚持与众不同,在”忙”一行只有非坚持与众不同。所以”监听到信道空闲时仍可能不发送”的只有 p-坚持(王道 3.5.4 第 8 题)。

CSMA/CD:边听边发

载波监听多路访问/冲突检测(CSMA/CD)协议是 CSMA 协议的改进方案,适用于总线形网络或半双工网络环境。对于全双工网络,因为全双工采用两条信道,分别用来发送和接收,在任何时候,收发双方都可以发送或接收数据,不可能产生冲突,所以不需要 CSMA/CD 协议(2015 年考过 CSMA/CD 的特点)。

载波监听是指每个站点在发送前和发送过程中都必须不停地检测信道:在发送前检测信道是为了获得发送权,在发送过程中检测信道是为了及时发现发送的数据是否发生冲突。站点要在发送数据前先监听信道,只有信道空闲时才能发送。冲突检测(Collision Detection)就是边发送边检测,适配器边发送数据边检测信道上电压的变化情况,当检测到电压的变化幅度超过一定的门限值时,表明发生了冲突,适配器要立即停止发送数据,等待一段随机时间后再次发送。

CSMA/CD 的工作流程可简单地概括为”先听后发,边听边发,冲突停发,随机重发”。

为什么”听到空闲”仍会冲突:争用期

电磁波在总线上的传播速率总是有限的。因此,当某时刻发送站检测到信道空闲时,信道不一定空闲。设 为单程传播时延(2010 年考过信道发生冲突的最短、最长时间):

时刻事件
A 站发送数据
A 发送的数据还未到达 B 站,B 检测到信道空闲而发送数据
A 与 B 发送的数据在途中发生冲突,但这时 A 和 B 都不知道
B 检测到冲突,停止发送数据
A 检测到冲突,也停止发送数据

至此,A 和 B 发送数据均失败,都要推迟一段时间后重新发送。

不难看出,A 站在开始发送数据后最多经过时间 (端到端传播时延的 2 倍)就能知道有没有发生冲突(当 时)。因此,把以太网的端到端往返传播时延 称为**争用期**(也称冲突窗口)。每个站在自己发送数据后的一小段时间内,存在发生冲突的可能性;只有经过争用期这段时间还未检测到冲突时,才能确定这次发送不会发生冲突。

教材在本章疑难点里把这层意思说得更完整:若有冲突,则冲突一定发生在冲突窗口内。节点发送前先监听信道,一个数据帧从 A 向最远节点传输的过程中,若有其他节点也在发送,就会发生冲突,冲突信号经过冲突窗口时间后传回 A,A 就能检测到;若在冲突窗口内没有发生冲突,之后其他节点再要发送时,就会监听到信道忙而不发送,从而不会再发生冲突。

最短帧长:保证冲突一定检测得到

考虑一种情况:某站发送一个很短的帧,但在发送完之前并未检测出冲突。假定这个帧在继续向前传播到达目的站之前,和别的站发送的帧发生了冲突,因此目的站将收到有差错的帧(当然会把它丢弃),然而发送站却不知道发生了冲突,因此不会重传这个帧。为了避免发生这种情况,以太网规定了一个**最短帧长**(争用期内可发送的数据长度)。在争用期内若检测到冲突,就停止发送,此时已发送出去的数据一定小于最短帧长,因此凡长度小于这个最短帧长的帧,就都是因为冲突而异常中止的无效帧(最短帧长的理解和相关计算 2009、2016、2019、2022 年考过)。

最短帧长最大单向传播时延数据传输速率争用期数据传输速率

例如,以太网规定 51.2μs 为争用期的长度。对于 10Mb/s 的以太网,在争用期内可发送 512bit,即 64B。当以太网发送数据时,若前 64B 未发生冲突,则后续数据也不会发生冲突(表示已成功抢占信道);换句话说,若发生冲突,则一定在前 64B。因为一旦检测到冲突就立即停止发送,所以这时发送出去的数据一定小于 64B。于是,以太网规定最短帧长为 64B,凡长度小于 64B 的帧,都是因为冲突而异常中止的无效帧,收到这种无效帧时应立即丢弃。若只发送小于 64B 的帧(如 40B 的帧),则需要在 MAC 子层中于数据字段的后面加一个整数字节的填充字段,以保证以太网的 MAC 帧长度不小于 64B(见 3.6.2)。

截断二进制指数退避

一旦发生冲突,参与冲突的两个站点紧接着再次发送就没有意义,若坚持这样做,将导致无休止的冲突。CSMA/CD 采用**截断二进制指数退避算法**来确定冲突后重传的时机,它让发生冲突的站点在停止发送后,推迟一个随机的时间再重新发送(二进制指数退避算法的应用 2023 年考过)。算法精髓如下:

  1. 确定基本退避时间,一般取 2 倍的总线端到端传播时延 (即争用期)。
  2. 从离散的整数集合 中随机取出一个数,记为 ,重传所需推迟的时间就是 倍的争用期,即 。参数 重传次数:当重传次数不超过 10 时,参数 等于重传次数;但当重传次数超过 10 时, 就不再增大,而一直等于 10。
  3. 当重传达 16 次仍不成功时,说明网络太拥挤,认为该帧永远无法正确发出,抛弃该帧并向高层报告出错(这个条件容易忽略)。

假设适配器首次试图发送一帧,且在传送过程中检测到冲突。第 1 次重传时 ,随机数 从 中选择,可选的重传推迟时间是 0 或 。若再次发生冲突,则第 2 次重传时,随机数 从 中选择,重传推迟时间是在 这四个时间中随机选取的一个,以此类推。使用截断二进制指数退避算法,可使重传需要推迟的平均时间随重传次数的增大而增大(也称动态退避),因此能降低发生冲突的概率,有利于整个系统的稳定。

以太网还规定帧间最小间隔为 9.6μs,相当于发送 96 比特的时间。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,为接收下一帧做好准备。

CSMA/CD 的完整流程

flowchart TD
    A["① 准备发送<br/>从网络层获得分组,封装成帧,放入适配器缓存"] --> B{"② 检测信道"}
    B -- "忙" --> B
    B -- "空闲且持续 9.6μs" --> C["发送这个帧<br/>③ 发送过程中持续检测信道"]
    C -- "争用期内未检测到冲突" --> D["发送成功"]
    C -- "争用期内检测到冲突" --> E["立即停止发送<br/>执行截断二进制指数退避"]
    E --> F{"重传已达 16 次?"}
    F -- "否,等待随机时间" --> B
    F -- "是" --> G["停止重传,向上报错"]
    classDef ok fill:#dcfce7,stroke:#16a34a
    classDef bad fill:#fee2e2,stroke:#dc2626
    class D ok
    class G bad

计算模板

争用期、最短帧长与距离

争用期距离传播速率中继设备时延最短帧长争用期速率
  1. 由距离和传播速率求单程传播时延 ;有集线器、中继器时加上它们的单程再生时延。
  2. 争用期 ;最短帧长 速率(单位 bit)。
  3. 反向求距离时,先把最短帧长除以速率得到争用期,再除以 2 得到单程时延,扣掉设备时延后乘以传播速率。

例(王道 3.5.4 第 14 题):长 10km、10Mb/s 的 CSMA/CD 以太网,传播速率 200m/μs。s,争用期 s,最短帧长 bit。

例(2009 真题,第 33 题):1Gb/s、传播速率 200000km/s 的 CSMA/CD 网络,最小帧长减少 800 比特,最远两站距离至少需要?帧长减少 800bit → 争用期减少 s → 往返距离减少 m → 单程减少 80m,选 D。

例(2019 真题,第 40 题):100Mb/s 局域网最小帧长 128B,冲突域内两站的单向传播时延最多是?争用期 s,单向 5.12μs。

错题复盘:有集线器时,单程时延 = 传播时延 + 集线器的再生时延

2016 年统考真题(王道 3.5.4 第 38 题):Hub 再生比特流时产生 1.535μs 的时延(Switch 和 Hub 均为 100Base-T 设备),信号传播速率 200m/μs,不考虑前导码,H3 与 H4(都接在 Hub 上)之间理论上可以相距的最远距离是(A. 200m B. 205m C. 359m D. 512m)。答案 B。

最短帧长 64B,100Mb/s 下发送时间 s,这就是往返时延的上限,单程上限 s。H3 到 H4 的单程时延 = 电缆传播时延 + Hub 再生时延,所以传播时延最多 s,距离 m。

A 的 200m 是”100Base-T 每段 100m、两段相加”的直觉,没有用到题目给的 1.535μs。H3、H4 都挂在 Hub 上,属于同一个冲突域;Switch 在这道题里只是背景,与距离无关。

退避时间

  1. 数清这是第几次重传(= 已经发生的冲突次数),记为 。
  2. ,。
  3. 最大退避时间 争用期,注意是 而不是 。
  4. 争用期要按速率换算:以太网固定的是 512 比特时间,10Mb/s 下是 51.2μs,100Mb/s 下是 5.12μs。
  5. 第 11 次及以后, 的上限固定为 1023;重传达 16 次仍不成功就丢弃。

错题复盘:100Mb/s 以太网的争用期是 5.12μs,第二次重传最多等 3 个争用期

王道 3.5.4 第 17 题:某 100Mb/s 以太网使用 CSMA/CD,某站在发送帧时检测到冲突,并准备进行第二次重传,所需等待的最大退避时间是(A. 5.12μs B. 15.36μs C. 25.6μs D. 51.2μs)。答案 B。

以太网规定的争用期是发送 512 比特所需的时间,100Mb/s 下为 s。第 次重传从 中随机取 ,第二次重传 , 最大为 3,最大退避时间 s。

51.2μs 只是 10Mb/s 以太网的争用期,速率提高 10 倍,争用期缩短 10 倍——不变的是 512 比特(64 字节)这个最短帧长。

错题复盘:连续 4 次冲突后最长等待 (2⁴−1) 个争用期

2023 年统考真题(王道 3.5.4 第 42 题):已知 10BaseT 以太网的争用时间片为 51.2μs,若网卡在发送某帧时发生了连续 4 次冲突,则基于二进制指数退避算法确定的再次尝试重发该帧前等待的最长时间是(A. 51.2μs B. 204.8μs C. 768μs D. 819.2μs)。答案 C。

连续 4 次冲突后的这次重发就是第 4 次重传,, 从 中选取,最长等待 s。

四个选项正好对应四种算错法:A 只等 1 个争用期;B 用 ;D 用 ,漏掉了减 1。集合的上界是 ,因为下界从 0 开始,共 个值。

边界

争用期是往返时间,不是单程时间。 冲突信号要从最远端传回发送站,发送站才知道撞了,所以是 。

错题复盘:争用期是信号在最远两端点之间往返传输的时间;最短帧长随速率提高而变长

王道 3.5.4 第 11 题:在 CSMA/CD 协议的定义中,“争用期”指的是(A. 信号在最远两个端点之间往返传输的时间 B. 信号从线路一端传输到另一端的时间 C. 从发送开始到收到应答的时间 D. 从发送完毕到收到应答的时间)。答案 A。

王道 3.5.4 第 20 题:根据 CSMA/CD 协议的工作原理,需要提高最短帧长的是(A. 网络传输速率不变,冲突域的最大距离变短 B. 冲突域的最大距离不变,网络传输速率提高 C. 上层协议使用 TCP 的概率增加 D. 在冲突域不变的情况下减少线路中的中继器数量)。答案 B。

CSMA/CD 要求发送帧的时间 ≥ 争用期,等号成立时,最短帧长 = 数据传输速率 × 争用期。A:最大距离变短,争用期(最大距离的往返时间)变短,最短帧长变短;B:速率提高,最短帧长变长;C:对最短帧长没有影响;D:在冲突域不变的情况下减少中继器数量,会降低传播时延,争用期变短,最短帧长变短。

两题合起来就是一条链:距离、中继器决定争用期,争用期乘速率得最短帧长。速率提高而最短帧长不变的话,就只能反过来缩短距离——这正是 100BASE-T 把网段缩到 100m 的原因(3.6.2)。

二进制指数退避的好处是”考虑了负载”,不是”简单”或”快”。

错题复盘:二进制指数退避考虑了网络负载对冲突的影响;冲突次数越多的帧再次冲突的概率越低

王道 3.5.4 第 15 题:使用二进制指数退避算法的理由是(A. 这种算法简单 B. 执行速度快 C. 考虑了网络负载对冲突的影响 D. 与网络的规模大小无关)。答案 C。

王道 3.5.4 第 16 题:下列数据帧重传时再次发生冲突的概率最低的是(A. 首次重传的帧 B. 发生两次冲突的帧 C. 发生三次重传的帧 D. 发生四次重传的帧)。答案 D。

冲突次数多,说明网络负载重;退避范围随冲突次数指数增长,负载越重,站点散得越开。第 16 题正是这句话的定量版本: 越大, 的取值集合越大,两个站恰好选到同一个 的概率越小。选项里”次数最多”的那个帧,就是再次冲突概率最低的那个。

CSMA/CD 只用于有线、半双工。 无线局域网改用 CSMA/CA,原因见 CSMA/CA。

错题复盘:CSMA/CD 用于有线网络,不适用于无线网络;传播时延趋于零时信道利用率趋于 100%

2015 年统考真题(王道 3.5.4 第 37 题):关于 CSMA/CD 协议,错误的是(A. 边发送数据帧,边检测是否发生冲突 B. 适用于无线网络,以实现无线链路共享 C. 需要根据网络跨距和数据传输速率限定最小帧长 D. 当信号传播延迟趋近 0 时,信道利用率趋近 100%)。答案 B。

CSMA/CD 适用于有线网络,而 CSMA/CA 广泛应用于无线局域网。A、C 关于 CSMA/CD 的描述都是正确的。D 也正确:CSMA/CD 中信号传播时延影响冲突检测的效率,若传播时延趋于零,冲突检测就会非常及时,从而减少重传的时间和次数,提高信道利用率——传播时延趋于零时,信道利用率趋于 100%。

D 容易被当成”绝对化表述”排除。判据是:CSMA/CD 的全部浪费都来自传播时延造成的”听不准”,时延没了,浪费也就没了。

“发送完帧前没检测到冲突”不代表这个帧没冲突——除非帧长不小于最短帧长。若不对帧长加以限制,往返传播时延大于帧发送时间时,发送完毕之前没检测到冲突的帧仍可能与其他站的帧发生冲突(第 12 题)。这正是规定最短帧长的原因。

两站都检测到冲突所需的时间:最短 ,最长 。 两站同时发送时,信号在中点相遇,各自经 检测到冲突;一站的信号快到另一站时另一站才开始发送,先发的一站要等 才检测到(2010 年真题,王道 3.5.4 综合应用第 5 题,1km 时分别为 0.01ms 和 0.02ms)。只看一方的话,最短可以趋于 0,最长仍是争用期。

超过 10 次后 固定,超过 16 次才丢弃——10 和 16 是两个不同的门槛。第 11 次冲突后 在 0~1023 之间选(第 18 题)。

对照速查

协议发送前监听发送中检测冲突后
纯 ALOHA❌,想发就发❌未收到确认 → 随机等待后重发
时隙 ALOHA❌,只在时隙开始发❌同上
CSMA✅❌按 1-坚持 / 非坚持 / p-坚持处理
CSMA/CD✅✅,边发边听立即停发,截断二进制指数退避
数字含义
争用期(冲突窗口)
51.2μs10Mb/s 以太网的争用期(= 512 比特时间)
64B / 512bit以太网最短帧长
9.6μs帧间最小间隔(96 比特时间,10Mb/s)
重传次数退避参数,
16 次重传上限,达到后丢弃并报错
说法对错
CSMA 与 ALOHA 的主要区别是多了载波监听装置✅
非坚持 CSMA 监听到空闲时以概率 发送❌(立即发送;以概率 发送的是 p-坚持)
p-坚持 CSMA 适用于任何信道❌(只适用于时分信道)
全双工以太网需要 CSMA/CD❌
争用期内未检测到冲突,这次发送就不会冲突✅
以太网中所有速率的争用期都是 51.2μs❌(固定的是 512 比特)

考点

  • 随机访问 = 争用型协议,胜利者通过争用获得信道(2014)
  • ALOHA:纯 ALOHA 想发就发,时隙 ALOHA 只在时隙开始发
  • CSMA 三种:1-坚持、非坚持、p-坚持;p-坚持是折中,只用于时分信道
  • CSMA/CD:先听后发、边听边发、冲突停发、随机重发;只用于总线形或半双工(2015)
  • 争用期 ;两站检测到冲突的最短、最长时间(2010)
  • 最短帧长 = 争用期 × 速率(2009、2016、2019、2022)
  • 截断二进制指数退避:重传次数,,16 次放弃(2023)

链接