5 题型 - CSMA CA协议
408 学习笔记:5 题型 - CSMA CA协议。保留原有知识内容、公式与图示;有对应原件时提供查看和下载入口。
本页目录
描述:802.11 无线局域网难以像有线以太网那样边发送边可靠检测碰撞,因此使用 CSMA/CA 尽量避免碰撞;对通常需要确认的单播数据帧,以链路层 ACK 和重传提高单跳传输可靠性。RTS/CTS 与 NAV 可缓解隐蔽站问题,DIFS、SIFS、退避窗口和四地址字段是常见考点。
5.1 为什么无线局域网使用 CSMA/CA
- 无线站点的发送信号远强于同时接收到的远端弱信号,难以在发送过程中可靠检测碰撞。
- 各站覆盖范围不同,可能存在彼此听不到、却会在同一接收点发生冲突的隐蔽站。
- 无线误码率通常高于有线链路。典型的单播数据帧交换采用 ACK;未收到预期 ACK 的发送方按规则退避并重传,直至成功或达到重试上限。组播、广播帧通常不逐帧确认;某些模式还支持块确认或无确认策略。
因此 802.11 的思路是发送前监听与预约、发送后等待确认,而不是 CSMA/CD 的发送中碰撞检测。
5.2 基本发送过程与帧间间隔
| 间隔 | 用途 | 优先级 |
|---|---|---|
| SIFS | DATA 后的 ACK、RTS 后的 CTS、分片间响应等立即应答 | 高,时间短 |
| DIFS | 普通数据站在竞争信道前等待 | 低于 SIFS,时间长 |
不使用 RTS/CTS 时,普通单播数据帧的典型过程为:
信道空闲 DIFS -> 随机退避 -> DATA -> SIFS -> ACK
使用 RTS/CTS 时:
DIFS -> 退避 -> RTS -> SIFS -> CTS -> SIFS -> DATA -> SIFS -> ACK
SIFS 比 DIFS 短,使已经开始的 DATA/ACK 或 RTS/CTS 交换优先完成,其他普通站点不能在响应帧之前抢占信道。
5.3 退避计数器的工作方式
- 站点需要竞争信道时,从当前竞争窗口中随机选择一个退避计数值。
- 信道每保持空闲一个时隙,计数器减 1;减到 0 时发送。
- 退避过程中若信道变忙,计数器冻结;信道重新空闲并持续 DIFS 后继续倒计时,而不是重新随机选择。
- 发送失败/重传时必须退避并扩大竞争窗口。
- 一次成功发送后,即使队列中还有下一帧,也要进行规定的发送后退避,避免同一站连续独占信道。
- 若站点刚产生一帧、信道已持续空闲 DIFS,且不存在发送后退避等约束,可直接发送而不先随机退避。
5.4 隐蔽站、RTS/CTS 与 NAV
若站点 A 和 C 互相听不到,但二者都能到达 AP,则 A、C 同时向 AP 发送会在 AP 处碰撞,它们互为隐蔽站。
RTS/CTS 的信道预约过程:
- A 向 AP 发送 RTS,并在 Duration 字段声明完成本次交换所需的剩余时间。
- AP(接收站)在 SIFS 后向发送站 A 返回一个以 A 为接收地址的 CTS 控制帧。CTS 不是 MAC 广播帧,但处在无线覆盖范围内的其他站可以旁听。
- 能听到 RTS 或旁听到 CTS 的其他站点读取 Duration 字段并设置网络分配向量 NAV,在预约期内保持静默。
- A 在 SIFS 后发送 DATA,AP 再在 SIFS 后回复 ACK。
NAV 是虚拟载波监听的倒计时器。各帧中的 Duration/NAV 剩余时间为:
$$NAV_{RTS}=SIFS+T_{CTS}+SIFS+T_{DATA}+SIFS+T_{ACK}$$
$$NAV_{CTS}=SIFS+T_{DATA}+SIFS+T_{ACK}$$
$$NAV_{DATA}=SIFS+T_{ACK}$$
RTS/CTS 能显著缓解隐蔽站碰撞,但控制帧本身仍可能碰撞,也不能消除所有无线冲突。
5.5 2024 年真题:CTS 中的 NAV
条件:DIFS 为 $128,\mu s$,SIFS 为 $28,\mu s$;RTS、CTS、ACK 的发送时延分别为 $3、2、2,\mu s$。数据帧总长 $1998,B$,速率 $54,Mb/s$,忽略传播时延。题目问其他终端旁听到 AP 发出的、寻址给发送站 A 的 CTS 时设置的 NAV。
数据帧发送时延:
$$T_{DATA}=\frac{1998\times8}{54\times10^6}=296,\mu s$$
CTS 发出后剩余的交换为 SIFS、DATA、SIFS、ACK:
$$ \begin{aligned} NAV_{CTS}&=28+296+28+2\ &=354,\mu s \end{aligned} $$
DIFS、RTS 和 CTS 自身已经过去,不能再计入 CTS 的 NAV。
答案:B,$354,\mu s$。
5.6 802.11 的可靠传输与地址字段
5.6.1 链路层可靠性
在典型的普通单播数据帧交换中,802.11 接收端正确收到帧后,在 SIFS 后返回 ACK。发送端若未收到 ACK,就认为该帧或确认可能丢失,并按规则退避重传;达到重试上限仍失败时会放弃该帧。因此,这是提高本无线链路交付可靠性的链路层机制,而非保证每帧必达,也不能替代 TCP 的端到端可靠传输。组播、广播通常没有这种逐帧 ACK;块确认等机制也不按“每个数据帧立即回复一个 ACK”的方式工作。
5.6.2 四地址字段映射
| 去往 DS | 来自 DS | 地址 1 | 地址 2 | 地址 3 | 地址 4 |
|---|---|---|---|---|---|
| 0 | 0 | 目的地址 DA | 源地址 SA | BSSID | 未使用 |
| 0 | 1 | 目的站地址 DA | 发送 AP 地址/BSSID | 原始源地址 SA | 未使用 |
| 1 | 0 | 接收 AP 地址/BSSID | 源站地址 SA | 最终目的地址 DA | 未使用 |
| 1 | 1 | 接收 AP 地址 RA | 发送 AP 地址 TA | 最终目的地址 DA | 原始源地址 SA |
主机 A 通过 AP 向同一 BSS 中的 B 发送时分两跳:
- A 到 AP:去往 DS=1、来自 DS=0,地址 1 为 AP/BSSID,地址 2 为 A,地址 3 为 B。
- AP 到 B:去往 DS=0、来自 DS=1,地址 1 为 B,地址 2 为 AP/BSSID,地址 3 为原始源站 A。
因此题目问 AP 转发给 B 时,答案为:
去往 DS = 0
来自 DS = 1
地址 3 = A 的 MAC 地址
5.7 模拟题:完整 RTS/CTS 交换时间
条件:DIFS=$128,\mu s$,SIFS=$28,\mu s$,RTS/CTS/ACK 的发送时延分别为 $3、2、2,\mu s$;数据帧 $1100,B$,速率 $11,Mb/s$。忽略传播时延、误码、碰撞和随机退避时间。
$$T_{DATA}=\frac{1100\times8}{11\times10^6}=800,\mu s$$
从决定发送到收到 ACK,依次经历:
$$DIFS+RTS+SIFS+CTS+SIFS+DATA+SIFS+ACK$$
$$ \begin{aligned} T&=128+3+28+2+28+800+28+2\ &=1019,\mu s \end{aligned} $$
答案:B,$1019,\mu s$。
5.8 易错点
- CSMA/CA 不是完全消除碰撞,而是通过监听、退避、预约和确认降低碰撞概率。
- RTS 后、CTS 后、DATA 后都等待 SIFS;普通竞争发送前等待 DIFS。
- CTS 中的 NAV 只计算 CTS 之后剩余的 SIFS、DATA、SIFS、ACK,不包含已完成的 DIFS/RTS/CTS。
- 退避倒计时遇忙应冻结,重新空闲并等待 DIFS 后继续,不是每次从头抽取。
- 普通单播帧的链路层 ACK/重传提高单跳交付可靠性,但有重试上限,不能替代 TCP 的端到端可靠性;组播、广播通常不逐帧 ACK。
- AP 向无线站转发属于“来自 DS”,故去往 DS=0、来自 DS=1,地址 3 保存原始源地址。
相关知识
- 科目导航:计算机网络导航
- 阅读顺序:上一篇:透明传输与 PPP · 下一篇:网络层知识框架
- 关联专题:数据链路层总纲
5.9 本节复盘
- 802.11 使用 CSMA/CA;普通单播交换通常使用 ACK 与重传,但组播/广播及块确认等模式不能概括为“所有帧逐帧 ACK”。SIFS 响应优先级高于 DIFS 普通竞争。
- RTS/CTS 通过 Duration 字段设置 NAV,缓解互相听不到的隐蔽站冲突。
- 2024 年 CTS NAV 为 $28+296+28+2=354,\mu s$。
- RTS/CTS 完整交换时间按
DIFS-RTS-SIFS-CTS-SIFS-DATA-SIFS-ACK顺序累加。 - AP 转发给无线站时去往 DS=0、来自 DS=1,地址 3 是原始源站 MAC 地址。