📖 CSMA/CA(载波监听多址接入/碰撞避免)协议的基本工作原理
🎯 课程摘要:本课讲解 802.11 无线局域网中 CSMA/CA 协议的完整工作流程,包括 DIFS/SIFS(帧间间隔)、虚拟载波监听与 NAV(网络分配向量)、退避算法,以及用 RTS/CTS(请求/允许)帧进行信道预约以解决隐蔽站问题。
📝 详细笔记
1. 两种关键帧间间隔
| 帧间间隔 | 全称 | 长度 | 用途 |
|---|---|---|---|
| SIFS | 短帧间间隔 | 28 μs | 最短的帧间间隔,用来分隔"属于一次对话"的各帧(如 ACK、CTS、数据帧) |
| DIFS | DCF 帧间间隔 | 128 μs | 在 DCF 方式下用来发送数据帧和管理帧;站点检测到信道空闲后须先等待 DIFS |
- DCF(分布式协调功能):802.11 定义的默认方式,无中心控制站点,每个站点用 CSMA/CA 协议争用信道。
- 等待 DIFS 的原因:给可能有高优先级帧要发送的站点留出机会。
2. CSMA/CA 基本工作流程(四个步骤)
步骤一:先听后发(载波监听)
- 源站发送第一个数据帧前,先检测信道。若信道空闲,等待 DIFS 间隔后才能发送。
- 数据帧首部中的持续时间字段指出源站要占用信道的时间(含目的站回送确认帧 ACK 所需时间)。
步骤二:RTS/CTS 握手(信道预约,可选)
- 源站等待 DIFS 后,先发送一个 RTS(请求发送)帧(短控制帧,含源地址、目的地址、本次通信持续时间)。
- 目的站正确收到 RTS,在空闲且经过 SIFS 后回送 CTS(允许发送)帧(复制持续时间字段)。
- 其他站点收到 RTS/CTS/数据帧后,据其持续时间推迟访问信道。
步骤三:数据发送
- 源站正确收到 CTS,等待一个 SIFS 后即可发送数据帧。
步骤四:ACK 确认
- 目的站正确收到数据帧,经 SIFS 后向源站发送 ACK(确认)帧。
- 源站在重传计时器的超时时间内未收到 ACK,则重传,直到收到 ACK 或重传若干次失败后放弃。
3. 虚拟载波监听与 NAV(网络分配向量)
- 当某个站点检测到正在信道中传送的帧首部中的持续时间字段时,就调整自己的 NAV(网络分配向量)。
- NAV 指出完成本次帧传送、且信道转入空闲状态所需的时间。
- 在 NAV 指示的时间内,其他站若有帧要发送,必须推迟;NAV 结束后还要经 DIFS + 退避随机时间才能发送。
- 虚拟载波监听机制:站点只需监听到数据帧/RTS/CTS 中的任意一个,就能知道信道将被占用的持续时间,无需真正监听信道上的信号。
4. 退避算法
为何需要退避
- 当某站发送帧时,可能有多个站都在监听并等待发送;一旦信道空闲,这些站几乎同时发送会产生碰撞。
- 因此所有要发送帧的站在检测到信道从忙转为空闲后,都要执行退避算法:既减少碰撞概率,又避免某站长时间占用无线信道。
何时使用 / 不使用退避
- 不使用退避的唯一情况:要发送数据帧时检测到信道空闲,且该帧不是成功发送完上一帧后立即连续发送的下一帧。
- 必须使用退避的情况:
- 发送帧之前检测到信道处于忙状态;
- 每一次重传一个帧时;
- 每一次成功发送帧后要连续发送下一个帧时。
退避计时器工作规则
- 为退避计时器设置一个随机退避时间。
- 计时器未减到零、信道又转为忙时:冻结计时器,等待信道变为空闲;经 DIFS 后继续倒计时(从冻结值续接)。
- 第 i 次退避时,随机数 r 在整数集合 {0, 1, …, 2^(i+4)−1} 中选取,退避时间 = r × 基本退避时间(一个时隙);当退避次数达到上限后,退避窗口不再增加(最大 CW = 1023)。
退避过程示例
5. RTS/CTS 信道预约与隐蔽站问题
信道预约的意义
- RTS/CTS 帧都很短,其碰撞概率、碰撞开销及本身开销都很小。
- 普通数据帧发送时延远大于传播时延,一旦碰撞重发浪费很多时间。
- 用很小的代价预约信道通常是值得的。
三种使用选择
- 总是使用 RTS/CTS 帧;
- 仅当数据帧长度超过某个数值时才使用 RTS/CTS 帧;
- 不使用 RTS/CTS 帧。
解决隐蔽站问题
- RTS/CTS 帧都携带通信持续时间,属于虚拟载波监听机制。
- 隐蔽站 B 监听不到源站 A 发给 AP 的 RTS,但能监听到 AP 回给 A 的 CTS。
- B 据 CTS 中的持续时间修改自己的 NAV,在 NAV 时间内不会发送帧干扰 A 与 AP 的通信。
6. ⚠️ 重点/考点
- CSMA/CA 使用停止等待的确认机制(ACK)实现可靠传输,因为无线信道误码率较高;这与使用 CSMA/CD 的共享式以太网不同(以太网不要求链路层确认)。此知识点可"秒杀"相关 408 真题。
- 区分 DIFS(128 μs,发送数据/管理帧前等待) 与 SIFS(28 μs,分隔一次对话内的帧)。
- 退避计时器冻结—续接机制是常考点:信道变忙则冻结,空闲后从冻结值继续。
- RTS/CTS 信道预约属于虚拟载波监听,可解决隐蔽站问题。
- 802.11 MAC 帧首部的持续时间字段是实现虚拟载波监听与 NAV 的关键。
💡 核心总结
- CSMA/CA = 先听后发(DIFS) + RTS/CTS 握手预约 + 数据发送 + SIFS 后 ACK 确认。
- 虚拟载波监听靠帧首部"持续时间字段"维护 NAV,减少隐蔽站碰撞。
- 信道由忙转空闲后必须退避(随机时间 = r × 时隙),计时器可冻结续接。
- 无线信道误码率高 → 链路层用停止等待 ACK 保证可靠传输。
❓ 课后思考 / 经典考题
- (408 真题,答案 D)CSMA/CA 协议通过交换 RTS 帧和 CTS 帧进行信道预约——请说明该机制如何降低碰撞概率并解决隐蔽站问题。
- (408 真题,答案 A)请说明 DCF 帧间间隔 DIFS 与短帧间间隔 SIFS 的作用及各自长度(128 μs / 28 μs)。
- 为什么 802.11 采用 CSMA/CA 而非 CSMA/CD?为什么需要 ACK 确认而共享式以太网不需要?
- 退避计时器在信道变忙时如何处理?哪些情况下必须执行退避算法?