纯 ALOHA 和时隙 ALOHA 明明就差个 "时间段",怎么利用率差了快一倍?CSMA 的 "先听后说" 和 CSMA/CD 的 "边听边说" 到底多了啥功能?甚至不知道 CSMA 的三种类型(1 - 坚持、非坚持、p - 坚持)该怎么区分?这篇文章会用 "会议室抢话筒" 的比喻,帮你吃透 ALOHA、CSMA、CSMA/CD 的核心逻辑,还能直接拿捏最短帧长、退避算法等必考计算题。
一、先搞懂:随机访问协议的本质 ------"抢资源,但有规矩"
在广播信道(比如早期以太网)里,多个设备共享同一条传输线路,就像一群人挤在会议室抢一个话筒 ------ 谁都想说话,但 "同时开口"(信号冲突)会让所有声音都失效。
随机访问协议的核心逻辑很简单:
- 自由发送:设备有数据就发,不用等 "调度"(没有集中控制)。
- 冲突补救:一旦发现冲突,按规则重传,直到成功为止。
- 本质目标 :把 "乱哄哄的广播信道",变成 "能有序 传数据的点到点信道"。
二、ALOHA 协议:最 "野蛮" 的 "抢话筒"------ 想插就插
ALOHA 是随机访问协议的 "鼻祖",逻辑像 "没主持人的会议室",完全靠 "自觉",效率极低但实现最简单。
1. 纯 ALOHA(Pure ALOHA):"不管别人,我先插"
- 核心思想 :设备有数据要发,不做任何检测,直接发送(相当于 "不管有没有人说话,直接插话")。
- 冲突怎么判断:发送后等确认,没收到确认就认定冲突。
- 冲突后怎么办 :随机等一段时间(比如 1 秒或 3 秒),再重发。
- 致命缺点 :冲突窗口大(两个帧的时间),比如 A 刚发完一帧,B 在 A 发完前或发完后一帧内插话,都会冲突,导致信道利用率最高仅 18.4% (10 个人抢话筒,8 个都在撞车)。 -- 信道利用率极低。
2. 时隙 ALOHA(Slotted ALOHA):"按时间段插,别乱抢"
- 核心改进 :把时间切成等长的 "时间段(时隙)",规定设备只能在每个时隙的开始时刻发送(相当于 "主持人说'现在到 1 号时段,要说话的现在说',其他时间不能插"); -- 轮流说
- 冲突变化 :冲突窗口缩小到 "一个帧的时间"------ 只有两个设备在同一个时隙插话才会冲突;
- 冲突处理:发生冲突后,等待随机个时隙后重传。
- 优点 :通过限制发送时机,将冲突窗口缩小到一个帧时,提高了信道利用率(最高可达36.8%),但需要全网时间同步。
- 缺点:需要全网 "对表"(时间同步),少一个设备同步就会乱套。
一张表分清两种 ALOHA
| 协议类型 | 发送规则 | 冲突窗口 | 最高信道利用率 | 核心优缺点 |
|---|---|---|---|---|
| 纯 ALOHA | 随时发送,无需同步 | 2 个帧时 | 18.4% | 实现简单,利用率极低 |
| 时隙 ALOHA | 仅时隙开始时发送,需同步 | 1 个帧时 | 36.8% | 利用率更高,依赖时间同步 |
三、CSMA 协议:"先听再说"------ 减少冲突的 "聪明抢法"
ALOHA 的问题是 "不看场合乱插话",CSMA(载波监听多路访问)加了 "先听后说" 的机制 ------ 就像 "说话前先听有没有人在讲,没人讲再插",大幅降低冲突概率。
CSMA 分三种类型,核心区别在 "信道忙时怎么等":
1 - 坚持 CSMA:"等也要等,一有空就插"
- 流程 :监听信道→空闲?立刻发(概率 100%)→忙?一直听,直到空闲再立刻发。
- 比喻:盯着话筒,只要没人说,马上抢过来开口。
- 特点 :信道不浪费(几乎没空着的时候),但多个人同时盯的话,一有空就集体抢,必然会发生冲突。
2. 非坚持 CSMA:"忙就走,过会儿再来听"
- 流程 :监听信道→空闲?立刻发→忙?放弃监听,随机等一会儿再回来听。
- 比喻:听着有人说话,不等了,过 5 分钟再回来看看话筒空没。
- 特点 :冲突少(没人抢着等),但信道容易空着(比如话筒空了,没人及时来用),数据延迟变长。
3. p - 坚持 CSMA:"折中一下,看概率插"
- 适用场景 :时分信道(时间切成时隙,和时隙 ALOHA 类似)。
- 流程:监听信道→忙?等下一个时隙再听→空闲?以概率 p 发,概率 1-p 等下一个时隙。
- 比喻:话筒空了,扔硬币决定(p=0.5 就是 50% 概率开口,50% 等下一轮)。
- 特点 :平衡冲突和延迟 ------ 比 1 - 坚持冲突少,比非坚持信道利用率高,是 "中间方案"。
CSMA 三种类型对比表
| 类型 | 信道忙时策略 | 冲突概率 | 信道利用率 | 延迟大小 |
|---|---|---|---|---|
| 1 - 坚持 CSMA | 持续监听,空闲即发 | 高 | 高 | 小 |
| 非坚持 CSMA | 随机等待后重听 | 低 | 低 | 大 |
| p - 坚持 CSMA | 按概率发送 / 等下一时隙 | 中 | 中 | 中 |
四、CSMA/CD 协议:以太网的 "边说边听,撞了就停"------ 解决冲突的终极方案
CSMA 的问题是 "发了之后不知道有没有冲突",CSMA/CD(载波监听多路访问 / 冲突检测)加了 "冲突检测",相当于 "边说话边听自己的声音,一旦发现和别人撞了,立刻闭嘴"------ 这是传统半双工以太网的核心协议。
1. 核心思想:4 句话记住
先听后发,边听边发,冲突停发,随机重发
2. 关键机制(必考!)
(1)冲突检测:怎么知道 "撞车" 了?
发送前和发送中持续检测信道 ------ 如果有两个信号同时传输,电压会叠加变高,一旦检测到这种变化,就认定 "冲突了",立刻做两件事:
- 停止发送数据(别再浪费信道);
- 发一个 "强化干扰信号"(让所有设备都知道 "冲突了,别发了")。
(2)争用期(冲突窗口):多久能发现冲突?
- 定义 :设备从开始发送,到确定 "没冲突" 的最长时间,值为2τ(τ 是信号从信道一端传到另一端的单程时间)。
- 为什么是 2τ:比如 A 在信道一端发数据,B 在另一端同时发,信号要经过 τ 时间相遇(冲突),冲突信号再经过 τ 时间传回 A,所以 A 最多等 2τ 就能知道有没有冲突。
- 重要性 :只要 2τ 内没有检测到冲突,就说明 "这次发送肯定没冲突"。
(3)最短帧长:别 "没听完就说完了"
- 要求:数据帧的发送时间,必须≥2τ(争用期);
- 原因:如果帧太短,发送时间<2τ,设备发完了还没等到冲突信号,就不知道 "撞车" 了,数据白发。
- 公式:最短帧长 = 2τ × 信道带宽。
- 例子:10Mbps 以太网,τ=25.6μs,最短帧长 = 2×25.6μs×10Mbps=512bit(即 64 字节)------ 这就是以太网帧最小 64 字节的由来!
(4)截断二进制指数退避算法:冲突后 "等多久再发"?
用途:确定冲突后重传的等待时间。
冲突后不能立刻重发(不然会再次冲突),要随机等一段时间,规则如下:

- 上限:如果重传 16 次还没成功,就丢弃数据,向高层报错(别再浪费资源)。
3. 完整流程:一步不差
- 设备准备好数据,开始监听信道;
- 若信道忙,持续监听;若信道空闲且保持 9.6μs(帧间最小间隔,防止连发包冲突),就发送数据。
- 发送时持续检测信道:
- 若 2τ 内没冲突,发送成功。
- 若检测到冲突,立刻停发 + 发干扰信号,执行退避算法,等随机时间后回到步骤 2。
- 若重传 16 次都失败,丢弃数据并报错。
五、总结:3 个必拿分要点
-
公式类:
- 时隙 ALOHA 最高利用率 36.8%,纯 ALOHA18.4%。
- 最短帧长 =2τ× 信道带宽(记住例子:10Mbps 以太网 64 字节)。
-
概念类:
- CSMA/CD 的核心是 "冲突检测",只用于有线以太网。
- 争用期 = 2τ,是判断冲突的关键时间。
- 退避算法的 k 值 = min(重传次数,10),最多重传 16 次。
-
对比类:
- ALOHA→无监听,效率低。
- CSMA→有监听(先听后发),无检测。
- CSMA/CD→有监听 + 检测(边听边发),效率最高。
六、一句话总结
随机访问协议的进化史,就是 "从不管冲突(ALOHA)→减少冲突(CSMA)→解决冲突(CSMA/CD) " 的过程,核心都是 "在自由发送和有序传输间找平衡"。