在计算机网络的数据链路层中,如何协调多个站点共享同一个通信信道是一个核心问题。这就好比在一个喧闹的会议室里,如果每个人都想发言,必须有一套规则来决定谁先说、谁后说,否则就会乱成一锅粥。这种规则被称为介质访问控制(Medium Access Control, MAC)。
介质访问控制主要分为静态划分(如频分、时分复用)和动态划分。动态划分中,最重要的一类便是随机访问(Random Access)。在随机访问协议中,站点争用信道,胜利者获得发送权。本文将按照历史发展脉络,深入讲解从 ALOHA 到 CSMA/CA 的演变过程、基本原理及实际应用。
4.1 随机访问的起源:ALOHA 协议
4.1.1 历史背景
20 世纪 70 年代初,夏威夷大学的 Norman Abramson 教授面临一个难题:夏威夷群岛地形复杂,岛屿之间铺设电缆成本极高。为了实现各岛屿主机与中心计算机的无线通信,他们开发了世界上最早的无线分组交换网------ALOHA 网络。这一开创性的工作奠定了后来以太网(Ethernet)的基础。
4.1.2 纯 ALOHA 协议(Pure ALOHA)
纯 ALOHA 的思想非常简单粗暴:"想发就发"。
-
基本原理 :任何一个站点只要有数据帧要发送,就立即发送。如果两个或更多的站点同时发送,信号就会在信道上叠加,导致数据错乱,这被称为冲突(Collision)。发送方通过监听信道或等待确认信号(ACK)来判断是否发生冲突。如果发生冲突,发送方会随机等待一段时间后重传。
-
性能分析 :由于完全没有规则限制,冲突概率极高。
假设帧的传输时间为 T0T_0T0 ,吞吐量为 SSS (归一化吞吐量),网络负载为 GGG 。数学推导表明,纯 ALOHA 协议的最大利用率仅为:
Smax=12e≈0.184 S_{max} = \frac{1}{2e} \approx 0.184 Smax=2e1≈0.184这意味着,信道只有约 18.4% 的时间在有效传输数据,其余时间大都在处理冲突。

4.1.3 时隙 ALOHA 协议(Slotted ALOHA)
为了提高效率,研究人员对协议进行了改进,引入了"时间片"的概念。
- 基本原理 :将时间划分为等长的时隙(Slot),规定只能在每个时隙的开始时刻发送帧。这样,冲突只可能发生在完全重叠的情况下,消除了部分重叠的可能性。
- 性能提升 :这一改进将最大利用率提升了一倍:
Smax=1e≈0.368 S_{max} = \frac{1}{e} \approx 0.368 Smax=e1≈0.368
虽然效率提升到了 36.8%,但在高负载下仍然不够理想。然而,ALOHA 协议的"冲突检测与重传"思想为后续协议指明了方向。
4.2 礼貌的侦听者:CSMA 协议
ALOHA 的主要问题在于太"鲁莽",不观察信道状态就发送。为了解决这个问题,载波监听多点接入(Carrier Sense Multiple Access, CSMA) 协议应运而生。其核心思想是:"先听后说"。
4.2.1 基本原理
在发送数据前,站点先监听信道(Carrier Sense)。如果信道忙,则暂时不发;如果信道空闲,则根据策略决定是否发送。根据监听后的策略不同,CSMA 分为三种类型:
-
1-坚持 CSMA (1-persistent CSMA):
- 如果信道空闲,立即发送(概率为 1)。
- 如果信道忙,持续监听,直到信道空闲立即发送。
- 缺点:如果有两个站点同时在等待信道变为空闲,一旦空闲它们会同时发送,必然导致冲突。
-
非坚持 CSMA (Non-persistent CSMA):
- 如果信道空闲,立即发送。
- 如果信道忙,不再持续监听,而是随机等待一段时间后再来监听。
- 缺点:减少了冲突,但增加了数据传输的延迟,信道利用率可能降低。
-
p-坚持 CSMA (p-persistent CSMA):
- 适用于时隙信道。如果信道空闲,以概率 ppp 发送,以概率 1−p1-p1−p 推迟到下一个时隙。
- 这是一个折中方案,试图在减少冲突和降低延迟之间寻找平衡。
尽管 CSMA 引入了监听机制,但由于传播时延(Propagation Delay) 的存在,当一个站点刚开始发送数据时,信号尚未到达远端,远端站点可能误认为信道空闲而发送数据,从而导致冲突。
4.3 边发边听:CSMA/CD 协议
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)是 CSMA 的改进版,意为**"载波监听多点接入/碰撞检测"**。它是早期总线型以太网(IEEE 802.3)的核心协议。
4.3.1 协议流程
可以将 CSMA/CD 的工作过程概括为四句话:先听后发,边发边听,冲突停止,延迟重发。
- 载波监听:准备发送前,先检测信道是否空闲。
- 碰撞检测:在发送过程中,继续监听信道。如果检测到信号电压摆动值超过阈值,说明发生了冲突。
- 停止发送 :一旦发现冲突,立即停止发送当前帧,并发送一个人为干扰信号(Jamming Signal),强化冲突,确保护所有站点都知道发生了冲突。
- 二进制指数退避算法 :冲突后,站点需要等待一段时间再尝试发送。等待的时间 TTT 是随机的:
T=r×τ T = r \times \tau T=r×τ
其中 τ\tauτ 是争用期, rrr 是从离散整数集合 [0,1,...,2k−1][0, 1, \dots, 2^k - 1][0,1,...,2k−1] 中随机取出的数。重传次数 kkk 越多,等待时间的范围就越大,从而动态适应网络负载。
4.3.2 最短帧长限制
这是 CSMA/CD 最关键的考点之一。
为了确保发送方在数据发送完毕之前就能检测到是否发生了冲突,数据帧的传输时延必须大于两倍的传播时延(往返时间 2τ2\tau2τ)。
LminC≥2τ \frac{L_{min}}{C} \ge 2\tau CLmin≥2τ
其中 LminL_{min}Lmin 是最小帧长, CCC 是数据传输率。
- 实际应用 :在 10Mbps 的传统以太网中,规定最小帧长为 64 字节(512 bit)。如果接收到的帧小于 64 字节,会被直接认定为冲突碎片而丢弃。

4.3.3 现状与发展
虽然 CSMA/CD 是计算机网络的经典理论,但在现代网络中,随着交换机(Switch) 和全双工技术的普及,冲突域被隔离,有线网络中实际上已经不再需要 CSMA/CD 协议来处理冲突了。但它依然是理解网络原理的基石。
4.4 避免冲突:CSMA/CA 协议
当网络从有线走向无线(Wi-Fi, IEEE 802.11)时,CSMA/CD 变得不再适用。于是,CSMA/CA(Collision Avoidance,碰撞避免)应运而生。
4.4.1 为什么无线网络不用 CSMA/CD?
- 检测困难:无线信号在传输过程中衰减非常快。发送方的发射信号强度远大于接收到的信号强度,导致设备在发送时很难"听"到微弱的远程冲突信号("灯下黑")。
- 隐蔽站问题(Hidden Terminal Problem):

4.4.2 CSMA/CA 的工作原理
既然无法有效"检测"冲突,那就尽量"避免"冲突。
- 帧间间隔(IFS):为了避免所有站点一等到信道空闲就同时发送,协议规定在发送前必须等待一段空闲时间(DIFS)。
- 预约机制(RTS/CTS) :
- 发送方先发一个短控制帧 RTS(请求发送),包含源地址、目的地址和预计占用时间。
- 接收方收到后,广播一个 CTS(允许发送)。
- 作用:CTS 会被发送方收到,也会被"隐蔽站"收到。隐蔽站收到 CTS 后,知道信道将被占用,会自动"闭嘴"一段时间(设置网络分配向量 NAV)。
- 链路层确认(ACK):无线环境干扰大,丢包率高。因此接收方收到数据后,必须回复一个 ACK 帧。如果在规定时间内未收到 ACK,发送方通过重传机制进行重发。
4.4.3 实际应用
CSMA/CA 是现代 Wi-Fi(802.11 系列标准)的核心机制。虽然它牺牲了一定的传输效率(因为有 RTS/CTS 和 ACK 的开销),但有效保证了在不可靠的无线介质中的通信质量。
4.5 本章小结
本章介绍的四种协议展示了网络技术解决"共享资源争用"问题的演进逻辑:
| 协议 | 核心思想 | 关键机制 | 适用场景 |
|---|---|---|---|
| ALOHA | 想发就发 | 随机重传 | 早期无线网,卫星通信 |
| CSMA | 先听后发 | 载波监听 | 理论基础 |
| CSMA/CD | 边发边听,冲突停发 | 碰撞检测,最短帧长限制 | 早期有线以太网(总线型) |
| CSMA/CA | 碰撞避免 | RTS/CTS预约,ACK确认 | 无线局域网(Wi-Fi) |
对于初学者而言,理解 CSMA/CD 的最短帧长 计算和 CSMA/CA 的RTS/CTS 握手是掌握本章内容的重点。随着网络技术的发展,虽然部分老旧协议已不再在物理设备中广泛运行,但其背后的算法思想(如指数退避、载波监听)依然在分布式系统设计中闪烁着智慧的光芒。