Skip to content

2024年 408 计算机网络 第 36 题

计算机网络2024年选择题2分

题目

在采用 CSMA/CA 的 802.11 无线局域网中,DIFS = 120 μs,SIFS = 28 μs,RTS、CTS 和 ACK 帧的传输时延分别是 3 μs、2 μs 和 2 μs,忽略信号传播时延。若主机 A 欲向 AP 发送一个总长度为 1998 B 的数据帧,无线链路带宽为 54 Mb/s,则隐藏站 B 收到 AP 发送的 CTS 帧时,设置的网络分配向量 NAV 的值是()

错因

A

漏算了"数据帧前的那个 SIFS"——只算 数据帧 + SIFS + ACK = 296 + 28 + 2 = 326 μs。错的根源:以为"SIFS 只在 ACK 之前出现一次"。实际 RTS-CTS-Data-ACK 这四帧之间都用 SIFS 间隔,所以 NAV 必须包含 SIFS(CTS→Data)+ Data + SIFS(Data→ACK)+ ACK 四项。

C

把 NAV 错算成"包含 RTS 与 CTS 在内的整个交互时段"——按 SIFS + CTS + SIFS + Data + SIFS + ACK = 28 + 3 + 28 + 296 + 28 + 2 = 385 μs(这里把 CTS 误记成 3 μs,原题 RTS 是 3 μs、CTS 是 2 μs,混淆了两个值)。CTS 中的 NAV 是告诉听众"从此 CTS 结束之后到整个传输结束还要多久",不应该再往回倒数算 RTS / CTS 自身。

D

把 NAV 当作整个完整 CSMA/CA 周期(DIFS + RTS + SIFS + CTS + SIFS + Data + SIFS + ACK + 多余项)来理解,凑出 513 μs。错的根源:完全没理解 NAV 的语义——NAV 仅用于告知未参与本次握手的旁观站"信道还要被占多久",不包括已经过去的 DIFS、RTS、CTS 部分。

总解析

第一步:算数据帧传输时延

(恰好整除,54 × 296 = 15984。)

第二步:理解 NAV 的语义

CSMA/CA 用 RTS-CTS-Data-ACK 四步交换。NAV(Network Allocation Vector) 是 802.11 用来"虚拟载波监听"的关键机制:

  • 任何听到 RTS 或 CTS 的旁观站从该帧的 Duration 字段读出 NAV,更新本地"信道还要被占用多久"的倒计时;倒计时归零前不发送任何东西,避免与正在进行的传输冲突
  • CTS 中的 NAV = 从 CTS 帧结束之后到本次完整交换(Data + 后续 ACK)结束的全部时间
  • 隐藏站 B 听不到 A 发的 RTS(隐藏站定义),但能听到 AP 发的 CTS——所以靠 CTS 中的 NAV 来"知情避让"

第三步:列出 CTS 之后的全部时段

时段时长是否属于 CTS 的 NAV
RTS(A 发送,B 听不到)3 μs❌ 已过去
SIFS(RTS 后)28 μs❌ 已过去
CTS(AP 发送,B 听到,开始读 NAV)2 μs❌ NAV 计时起点是 CTS 结束之后
SIFS(CTS 后)28 μs✅ 属于 NAV
Data(A 发送)296 μs✅ 属于 NAV
SIFS(Data 后)28 μs✅ 属于 NAV
ACK(AP 发送)2 μs✅ 属于 NAV

NAV 求和

最终答案是 B(354 μs)

编者注(生僻术语):"隐藏站"指接收方(AP)能听到、但发送方(A)听不到的第三方站点 B——B 与 A 在 AP 周围,但 B 距离 A 太远不在 A 的射频范围内。这种站不能通过监听 A 的信号避让,所以 802.11 设计了 RTS-CTS 让 AP 用 CTS 广播 NAV:"我接下来要忙于收 A 的数据了,听到这条 CTS 的所有站请等 354 μs 再发"。这是 RTS-CTS 机制存在的根本理由(解决"隐藏终端问题")。

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题