第 4 章:802.11n(Wi-Fi 4)— 立交桥时代

"当单车道的路堵到极限时,唯一的出路就是建立交桥。"


本章导读

2009 年,IEEE 正式发布了 802.11n(也称为 HT,High Throughput)——这是 WiFi 历史上最大的一次技术飞跃。它引入了 MIMO(Multiple Input Multiple Output,多输入多输出)技术,用多条天线同时传输不同数据,把多径衰落从"敌人"变成了"朋友"。加上 40 MHz 信道绑定、帧聚合、Block ACK 等机制,理论速率从 54 Mbps 一跃提升到 600 Mbps。

本章你将学到:

  • MIMO 的核心原理:如何在同一条路上同时跑多辆车
  • 空间流(Spatial Stream):立交桥的每一层
  • 波束成形(Beamforming):定向绿灯 + 专用车道
  • 信道绑定(Channel Bonding):把两条路合并成一条
  • 帧聚合(A-MSDU / A-MPDU):一辆大卡车代替十辆小车
  • Block ACK:批量签收确认
  • MCS 0-31(及特殊 MCS 32):调制编码方案的完整体系
  • 这一代暴露了什么新缺陷

1 为什么需要 MIMO?—— 单天线的物理极限

1.1 Shannon-Hartley 定理:速率的天花板

无线信道的最大容量由 Shannon-Hartley 定理给出:

1
C = B × log₂(1 + SNR)

其中 C 为容量(bps),B 为带宽(Hz),SNR 为信噪比。

以 20 MHz 带宽、30 dB SNR 为例:

1
C = 20×10⁶ × log₂(1 + 1000) ≈ 200 Mbps

单天线系统已经接近这个理论极限。要继续提升速率,唯一的出路是增加维度——时间、频率、或空间。

1.2 MIMO 的核心思想:空间维度

MIMO 利用空间维度来提升容量:多条天线同时发射不同的数据流

MIMO 空间流

关键突破:MIMO 把多径传播从问题变成了优势。在传统系统中,信号通过不同路径到达接收端会导致衰落(某些频率被抵消)。但在 MIMO 中,这些不同路径恰恰提供了额外的"空间信道"——每个路径可以独立传输一份数据。

交通比喻:想象一个十字路口,传统 SISO 只有一条单车道的路。MIMO 就像建了一座立交桥——上层跑东向西的车,下层跑西向东的车,互不干扰。如果天线更多(比如 4×4),就像建了 4 层立交桥,每层独立通行。

1.3 空间流(Spatial Stream)

空间流是 MIMO 的基本单位——每个空间流携带一份独立的数据。

配置空间流数理论速率(20MHz, MCS 7)
1×1 SISO165 Mbps
2×2 MIMO2130 Mbps
3×3 MIMO3195 Mbps
4×4 MIMO4260 Mbps

空间流数的限制:空间流数 ≤ min(发射天线数, 接收天线数)。所以 4×4 MIMO 最多 4 个空间流,2×2 最多 2 个。

空间流就像立交桥的层数。4 层立交桥(4×4 MIMO)可以同时跑 4 路车(4 个空间流)。但如果你只有 2 个入口(2 个发射天线),最多只能用 2 层。

1.4 MIMO 与天线的关系

802.11n 支持最多 4 条空间流,但实际设备中:

  • 手机/笔记本:通常 1-2 条空间流(2×2 或 1×1)
  • AP/路由器:通常 2-4 条空间流(2×2 到 4×4)
  • 理论最大:4×4 MIMO,4 条空间流

2 波束成形(Beamforming)— 定向绿灯

波束成形是 MIMO 的高级功能:通过调整多条天线的信号相位,把能量集中在特定方向

波束成形:无波束全向辐射 vs 有波束定向增强

无波束成形就像十字路口中间的路灯——照亮四面八方。波束成形就像定向绿灯——知道目标车辆在哪,把信号集中照过去。具体映射:调整多条天线的信号相位,就像转动一排定向路灯的灯头,让所有灯头同时对准目标车辆,光在同一个方向叠加;获取 CSI 反馈,就像车辆实时报告自己的位置,路灯才知道该朝哪个方向照——显式反馈回传的压缩 CSI,就像车辆定期寄回的「位置报告单」,路灯照着报告单上的方位转灯头。这样在同样功率下,目标方向的信号更强,覆盖更远。

802.11n 的波束成形

  • 标准定义了波束成形的框架
  • 没有规定具体的实现方式——不同厂商的实现不兼容
  • 这导致 802.11n 的波束成形在实际中很少被使用
  • 802.11ac 后来引入了显式反馈机制,解决了这个问题

波束成形生效的前提是发射端知道信道状态信息(CSI),获取 CSI 有两条路。隐式反馈依赖信道互易性——上下行同频、信道对称,发射端用接收端的探测帧反向估计信道,省去回传开销;但真实射频链路增益不对称需校准,各厂商校准算法不统一——校准不统一使上下行链路增益不对称,信道互易性被破坏,隐式反馈测得的 CSI 失真,波束方向随之偏移,因此难以互通。显式反馈则让接收端把测得 CSI 量化后封装进反馈帧回传。802.11n 虽定义了显式反馈框架,却没规定统一量化格式——各厂商各做各的,反馈无法被对端解析,这正是"框架已定义却互不兼容"的根源。


3 信道绑定(Channel Bonding)— 把两条路合并成一条

3.1 40 MHz 信道

802.11n 引入了 40 MHz 信道绑定:把两个相邻的 20 MHz 信道合并成一个 40 MHz 信道。

信道绑定

20 MHz 就像一条双向两车道的路。40 MHz 就像把两条相邻的路合并成一条双向四车道的大路——车道翻倍,通行能力翻倍。

3.1.1 子载波数量:不是简单翻倍

40 MHz 用 128 点 FFT(20 MHz 是 64 点),子载波翻倍了吗?没有——实际总子载波是 114,不是 56×2=112。

参数20 MHz简单×240 MHz 实际
FFT 点数64128128
总子载波56112114
数据子载波52104108
导频子载波486

40 MHz 为什么不是简单翻倍?因为合并时"省"下了中间的隔离带,但也多了一点开销:

  1. 边缘保护带省了:HT 20 MHz 左右共留 7 个空子载波当保护带,两个 20 MHz 就是 2×7=14 个;40 MHz 合并后中间交界处是连续频谱,只需 11 个保护子载波,省下 3 个可以用来传数据。
  2. DC null 反而多了一个:20 MHz 各需 1 个 DC 空子载波,40 MHz 合并后要 3 个(中心 -1/0/+1),比 2×1=2 多出 1 个。

一省一多,净多出 3−1=2 个子载波(114 vs 112)。所以 40 MHz 的子载波利用效率略高于"简单翻倍"——FFT 点数加倍,但浪费的子载波没有加倍。

两条路合并时,中间的隔离带和两侧路肩不需要重复建——省下的空间可以多画一条车道。所以实际车道数比 2×2=4 还多一点。

3.2 信道绑定的挑战

在 2.4 GHz 频段,只有 3 个不重叠的 20 MHz 信道(1/6/11)。使用 40 MHz 信道绑定后,整个 2.4 GHz 频段只能容纳 1 个 40 MHz 信道!这在密集环境中几乎不可用。

在 5 GHz 频段,最多有 25 个不重叠的 20 MHz 信道,使用 40 MHz 绑定后仍有 12 个不重叠信道,情况好得多。

频段20 MHz 信道40 MHz 信道实用性
2.4 GHz31低(干扰严重)
5 GHz2512

此外,40 MHz 在混合 20/40 环境下还需额外保护机制:L-SIG TXOP Protection 用 L-SIG 的 duration 字段向旧 20 MHz 设备通告本次 TXOP(Transmission Opportunity,传输机会)时长,让它们设 NAV 静默。旧设备之所以能读到这个 duration,是因为 40 MHz 的 HT-Mixed 前导码会把 L-SIG(连同 L-STF/L-LTF 等兼容字段)在两个 20 MHz 子信道上各复制一份——无论旧设备停在主信道还是副信道,都能解出 duration 字段并设 NAV。设备还可置 40 MHz Intolerant 位声明「无法容忍 40 MHz」,AP 看到后须退回 20 MHz。这些保护开销会吃掉一部分信道绑定的实际增益。


4 帧聚合 — 一辆大卡车代替十辆小车

帧聚合是 802.11n 提升吞吐量的另一个关键机制。先看看没有帧聚合时,普通发送是什么样的:

普通数据组装发送流程(无聚合)

报文类型:Data(Type=10, Subtype=0000),ACK(Type=01, Subtype=1101)。

每帧独立竞争信道、独立等待确认——大量时间浪费在"等红灯"上。802.11n 引入了两种聚合方式来解决这个问题。

帧聚合结构总览

4.1 A-MSDU(聚合 MAC 服务数据单元)

A-MSDU 把多个 MSDU(MAC Service Data Unit)聚合到一个 MPDU 中。下图左侧展示了 A-MSDU 的组装流程,右侧用"装大箱子"的比喻说明其工作原理:

A-MSDU 组装流程与交通比喻

注意:A-MSDU 只产生一个 MPDU,因此只需普通 ACK 确认即可。这也是它和 A-MPDU 的关键区别之一——A-MPDU 包含多个独立 MPDU,才需要 Block ACK 配合逐帧确认。

4.1.1 A-MSDU 的最大长度:7935 从哪来?

文档中经常出现的 7935 Bytes 并非凭空而来,它由协议直接定义。IEEE 802.11-2024 中,A-MSDU 的最大长度由 HT Capability Information 字段中的 Maximum A-MSDU Length 子字段(1-bit)决定:

编码最大 A-MSDU 长度对应最大 MPDU 长度差值
03839 Bytes3895 Bytes56B
17935 Bytes7991 Bytes56B

可以看到,A-MSDU 最大长度 = MPDU 最大长度 - 56 字节。这 56 字节是 A-MSDU 之外的 MPDU 开销,由 MAC Header + FCS + 安全封装组成,由协议直接定义,而非某个公式推导的结果。

注意:当 A-MSDU 放入 A-MPDU 时,受 Delimiter 的 MPDU Length 字段限制(HT 为 12-bit,最大 4095),即使设备声明支持 7935 的 A-MSDU,在 HT A-MPDU 中实际只能用到 4095 字节以内。

4.2 A-MPDU(聚合 MAC 协议数据单元)

A-MPDU 把多个 MPDU 聚合到一个 PHY 帧中,每个 MPDU 有独立的 FCS。

A-MPDU 的优势:

  • 每个 MPDU 有独立的 FCS,可以单独确认
  • 如果某个 MPDU 损坏,只需重传那个 MPDU
  • 配合 Block ACK,效率极高

A-MPDU 就像组一支车队——4 辆货车各装一批货,组成编队一起出发,只派一辆领队车(PHY Preamble)开路,只等一次红灯(DIFS+Backoff)。到了目的地,老板拿一张清单(Block ACK)一次性签收:A 到了、B 到了、C 丢了、D 到了——只需补发 C,不用重跑整个车队。

下图左侧展示了 A-MPDU 的完整组装流程(MSDU → 加 MAC 头 → 加 Delimiter → 聚合填充 → 加 PHY 头 → Block ACK),右侧用交通比喻展示了从"4 辆车各跑一趟"到"组成车队一趟送完"的变化:

A-MPDU 组装流程与交通比喻

报文类型:图中涉及的帧——Data(Type=10, Subtype=0000),Block ACK(Type=01, Subtype=1001)。

不过,车队不是想组就组的——要让接收方按 Block ACK 的方式「只补发一辆车」,双方得先立个规矩。

4.2.1 使用 A-MPDU 前要先"办证"——ADDBA 协商

A-MPDU 不能直接使用,通信双方必须先通过 Block ACK 会话协商

  1. 发送方发 ADDBA Request(Action 帧):告诉接收方"我要开始用 A-MPDU 了"
  2. 接收方回 ADDBA Response:同意并约定参数(BA 窗口大小、超时时间等)
  3. 协商完成后才允许发送 A-MPDU

就像车队出发前要先跟目的地报备——"我们 5 辆车要一起过来",对方同意了才出发。没报备就直接开过去,对方不认。

4.2.2 ADDBA 协商的具体内容

ADDBA Request 和 ADDBA Response 都是 Block Ack 类别的 Action 帧(IEEE 802.11-2024 §9.6.4),核心字段如下:

ADDBA Request 帧(Table 9-466)

字段说明
CategoryBlock Ack(值 3)
Block Ack ActionADDBA Request(值 0)
Dialog Token非零值,用于匹配 Request/Response
Block Ack Parameter Set核心参数(见下表)
Block Ack Timeout Value超时时间(TU),0 = 不超时
Block Ack Starting Sequence Control本次协议下第一个 MSDU/A-MSDU 的序列号

ADDBA Response 帧(Table 9-467) 在 Request 基础上多一个 Status Code(同意/拒绝),其余字段相同。

4.2.3 Block Ack 参数详解(§9.4.1.13 / §9.4.1.14)

这是 ADDBA 协商中最关键的参数字段,共 2 字节:

子字段位数说明
A-MSDU Supported1-bit1 = 本协议下允许使用 A-MSDU
Block Ack Policy1-bit非 DMG STA 固定为 1
TID4-bitTraffic ID——指定哪条业务流(0-15)
Buffer Size10-bit接收方可缓存的 MPDU 数量(0-1023)
  • TID(Traffic Identifier):对应 802.11e 的 4 个 AC(Access Category),每个 TID 独立协商一个 Block ACK 协议。比如语音(TID 6)和视频(TID 4)各自有自己的 Block ACK 窗口
  • Buffer Size:接收方在 ADDBA Response 中声明自己能同时缓存多少个 MPDU。发送方的发送窗口不能超过这个值——否则接收方缓存溢出会丢帧
  • A-MSDU Supported:如果为 1,表示该 Block ACK 协议下可以使用 A-MSDU in A-MPDU 双重聚合;为 0 则只允许普通 MPDU

紧随其后的 Block Ack Timeout Value(§9.4.1.14)也是 2 字节,单位是 TU(Time Unit,1 TU = 1024 µs):如果在这段时间内没有任何使用该 Block ACK 协议的帧交换,协议自动终止——设为 0 表示不超时(协议一直有效直到手动删除),典型值如 5000 TU ≈ 5.12 秒。Block Ack Starting Sequence Control 则告诉接收方"我的第一个数据帧的序列号是多少",让接收方知道从哪个序号开始构建 bitmap。

交通比喻总结:ADDBA 协商就像车队出发前填写的报备单——

  • TID:走哪条专线(货运/客运/急救)
  • Buffer Size:目的地仓库能同时收多少辆车的货
  • Timeout:报备有效期多久
  • Starting Sequence:车队第一辆车的编号
  • A-MSDU Supported:每辆车上能不能再装大箱子(A-MSDU)

双方签字(ADDBA Response)后,协议生效,车队才能出发。

协议还定义了 DELBA 帧(Table 9-468),用于主动终止已建立的 Block ACK 协议——就像车队取消报备,后续恢复逐帧发送+逐帧确认的模式。

协商管的是「这一批帧怎么确认」,但 A-MPDU 帧本身在物理上是怎么拼起来的?这就要看每个 MPDU 前夹着的分隔符了。

4.2.4 Delimiter 的结构

每个 A-MPDU 的 4 字节 Delimiter 包含以下字段:

Delimiter 结构

  • Reserved(4-bit):保留位。802.11ac/ax 中,其中 2 位被用作 MPDU Length High,把长度字段扩展到 14-bit,最大 16383 字节
  • MPDU Length(12-bit):记录后续 MPDU 的长度,最大 4095 字节。A-MPDU 的结束由最后一个 MPDU Length = 0 的 Delimiter 标记
  • CRC(8-bit):校验 Reserved 和 MPDU Length 字段是否损坏
  • Delimiter Signature(8-bit):固定为 ASCII 'N'(0x4E),用于在 Delimiter 出错后重新定位后续 Delimiter 的边界

MPDU Length 就像车队每辆车的"货物重量标签",接收方先看标签知道这辆车装了多少货,再决定怎么处理。最后一个 Length = 0 的 Delimiter 就像车尾灯——看到它就知道车队到此结束。

Delimiter 用 MPDU Length 字段标定了每个 MPDU 的边界,顺着这个长度字段往下,自然引出下一个问题:单个 MPDU 本身最多能有多长?

4.2.5 单个 MPDU 的最大长度

除了 A-MPDU 总长度有限制,单个 MPDU 也有最大长度。这个长度由三个因素共同决定:

1. 协议标准规定(IEEE 802.11-2024 Table 9-313)

VHT/HE/EHT 的 Maximum MPDU Length 能力字段(2-bit)编码三种 MPDU 最大长度(802.11n HT 没有这个字段):

编码最大 MPDU 长度适用标准
03895 BytesHT / VHT / HE
17991 BytesHT / VHT / HE
211454 BytesVHT / HE / EHT
3Reserved

注意:这个 2-bit 字段是 VHT/HE/EHT 的能力,802.11n(HT)没有定义它——HT 的单个 MPDU 受 Delimiter 12-bit 字段限制在 4095 字节以内,只能靠聚合多个 MPDU 组成更大的 A-MPDU。VHT/HE/EHT 设备通常声明 7991 或 11454 字节。

2. Delimiter 的 MPDU Length 字段容量

  • 802.11n:12-bit → 最多记录 4095 字节(超出 4095 的 MPDU 只能作为非聚合单帧发送)
  • 802.11ac/ax/be:14-bit → 最多记录 16383 字节

3. 接收方的 Buffer 能力

接收方通过 HT Capabilities 元素的 A-MPDU Parameters 字段(不是 ADDBA Response)声明自己的聚合接收能力:

  • Maximum A-MPDU Length Exponent:指数值(802.11n 取值 0-3),实际最大长度 = 2^(13+exponent) - 1
    • exponent=3 → 最大 2^16 - 1 = 65535 Bytes
    • exponent=7 → 最大 2^20 - 1 = 1048575 Bytes(1 MB,802.11ac 及之后)
  • Buffer Size:在 ADDBA Response 的 Block Ack Parameter Set 中声明,接收方能同时缓存的 MPDU 数量(在 Block ACK 窗口内)

交通比喻:目的地仓库(接收方)会在车队出发前告诉发送方——"我的仓库最多能同时接收 64 辆车的货"(Buffer Size)和"单件货物不能超过 10 公斤"(Maximum MPDU Length)。发送方必须按这个限制来装车。

4.3 A-MSDU vs A-MPDU

特性A-MSDUA-MPDU
聚合层次MSDU 级别MPDU 级别
FCS整体一个 FCS每个 MPDU 独立 FCS
错误处理一个出错,全部重传只重传出错的 MPDU
开销更低(更少的帧头)稍高(每个 MPDU 有分隔符)
最大长度7935 字节65535 字节
实际使用较少更常用

两种聚合在出错时的重传策略也完全不同:A-MSDU 只有一个 FCS,无法定位是哪个子帧出错,只能整体重传A-MPDU 每个 MPDU 有独立 FCS,配合 Block ACK bitmap 精确标记,只重传出错的 MPDU

交通比喻:A-MSDU 像一个大箱子——封箱胶带(FCS)验出问题,不知道是哪件货坏了,只能整箱退回重发。A-MPDU 像车队——每辆车有自己的货物清单(FCS),到了目的地逐辆核对,哪辆坏了只重发哪辆。

聚合得越多,单次传输占用的信道时间也越长——聚合的上限不只看长度字段,还受信道占用时间约束。实际聚合数量还受 TXOP 限制——发送方能占用信道的最大时间:DCF 模式下没有严格的 TXOP 限制,但 EDCA(QoS)模式下每个 AC 有最大 TXOP;聚合帧太大 → 占用信道时间太长 → 其他 STA 饥饿。因此厂商通常会在聚合数量信道公平性之间取平衡。

交通比喻:就像车队不能无限长——你占着路不让别人走,交警(AP)会让你先让一让。

既然 A-MPDU 和 A-MSDU 一个赢在灵活、一个赢在省开销,能不能把两者叠起来用?

4.3.1 A-MSDU in A-MPDU:双重聚合

"组合使用"指的是:A-MPDU 的每个 MPDU 内部包含的是 A-MSDU,而不是普通的单个 MSDU。

A-MSDU in A-MPDU 双重聚合结构

  • 外层 A-MPDU:多个 MPDU,各自独立 FCS → 只重传出错的 MPDU
  • 内层 A-MSDU:每个 MPDU 里塞多个 MSDU → 减少 MAC 头开销
  • 效果:兼顾了 A-MSDU 的低开销和 A-MPDU 的灵活重传

车队里每辆卡车不是只装一件货,而是装了一个大箱子(A-MSDU),箱子里打包了好几件小包裹。这样既减少了车队里的车辆数(MPDU 数),又保留了"哪辆车坏了只重发那辆"的灵活性。

4.3.2 最多能聚合多少个包?

聚合上限由最大聚合长度单个包大小共同决定:

A-MSDUA-MPDU
802.11n 最大长度7935 Bytes(通常 3839)65535 Bytes
802.11ac11454 Bytes1048575 Bytes(1 MB)
802.11be11454 Bytes4194304 Bytes(4 MB)

以 1500 Bytes MSDU(典型以太网 MTU)为例:

  • A-MSDU:每个子帧 = 6(SA)+ 6(DA)+ 2(Len)+ 1500(Data)= 1516B(4B 对齐)→ 7935 ÷ 1516 ≈ 5 个
  • A-MPDU:每个 MPDU ≈ 36(MAC头)+ 1500(Data)+ 4(FCS)+ 4(Delimiter)= 1544B → 65535 ÷ 1544 ≈ 42 个
包大小A-MSDU(11n)A-MPDU(11n)A-MPDU(11ac)
1500B~5 个~42 个~600+ 个
100B~50+ 个~300+ 个数千个

实际中受限于 TXOP 时间、信道条件和厂商实现,一般不会用满上限。

4.4 实战:如何在 Sniffer 中区分?

在 Wireshark 抓包时,可以通过以下方法判断帧是否经过聚合、以及是哪种聚合:

判断方法A-MSDUA-MPDU
QoS Control bit 7= 1(A-MSDU Present)= 0
HT Control bit= 1(A-MPDU Present)
MPDU 数量1 个 MPDU多个 MPDU(每个有独立 FCS)
Payload 结构单个 MPDU 内部有多个 SA+DA+Len 子帧多个 4B Delimiter + MPDU 组合
确认方式普通 ACKBlock ACK
Wireshark 显示1 个帧,内部嵌套多个 "Subframe" 条目多个独立的 "802.11 QoS Data" 帧

最快速的判断方法:看确认帧类型——后面跟 Block ACK 的就是 A-MPDU,跟普通 ACK 的大概率是 A-MSDU(或普通单帧)。


5 Block ACK — 批量签收确认

传统的 ACK 每收到一个帧就回复一次确认。Block ACK 允许一次确认多个帧:

传统 ACK vs Block ACK 对比

报文类型:ACK(Type=01, Subtype=1101),Block ACK Request/BAR(Type=01, Subtype=1000),Block ACK(Type=01, Subtype=1001)。

交通比喻:传统 ACK 就像每辆车到了收费站都要停一下确认。Block ACK 就像车队到了目的地后,一次性核对整个车队的货物清单——哪些到了,哪些丢了。

5.1 Block ACK 与 A-MPDU 的关系

Block ACK 不是只能配合 A-MPDU,但两者在不同协议版本中的绑定关系不同:

协议版本Block ACK 是否需要 A-MPDU说明
802.11e(2005)不需要Block ACK 最初为 QoS 设计,可配合逐帧发送
802.11n(2009)必须HT immediate Block ACK 强制使用 A-MPDU
802.11ac/ax/be必须延续 HT 的规定

5.1.1 802.11e 时代:Block ACK 可以不用 A-MPDU

802.11e 引入 Block ACK 时,A-MPDU 还不存在。此时的工作方式是:

802.11e Block ACK 流程

报文类型:图中 ADDBA Request/Response 都是 Action 帧(Type=00, Subtype=1101),类别为 Block Ack(Category=3)。BAR(Type=01, Subtype=1000),Block ACK(Type=01, Subtype=1001),Data(Type=10, Subtype=0000)。

交通比喻:4 辆货车各走一趟(每趟都要等红灯),但到了目的地后不需要每辆都签收——等最后一辆到了,老板拿清单一次性核对。省了逐辆签收的时间,但"等红灯"的时间没省。

这种模式的局限:每帧仍然独立竞争信道(DIFS + Backoff),Block ACK 只省掉了"每帧等 ACK"的间隔(SIFS),信道竞争的开销没减少。

5.1.2 为什么接收方不逐帧回 ACK?

你可能会问:协议规定收到数据帧后等一个 SIFS 就要回 ACK,为什么接收方能"忍住"不回?

关键在于 ADDBA 协商

  1. 发送方和接收方先通过 ADDBA Request/Response 建立 Block ACK 协议
  2. 协商完成后,接收方知道这是 Block ACK 会话 → 主动抑制逐帧 ACK
  3. 发送方连续发送多个帧,帧间只隔 SIFS(不等 ACK)
  4. 发送方发完后,发送一个 BAR(Block ACK Request):"请给我 Block ACK"
  5. 接收方收到 BAR 后,回复 Block ACK(bitmap 逐帧确认)

交通比喻:就像提前跟仓库报备——"接下来 4 辆车会连续过来,你不用每辆都签收,等我最后发一张清单请求,你再一次性核对。"仓库收到报备后,就"忍住"不逐辆签收了。

如果没有 ADDBA 协商就直接连续发帧,接收方会按默认规则逐帧回 ACK——但 ACK 和后续数据帧会在空中碰撞,导致混乱。所以 ADDBA 协商是 Block ACK 的前提

5.1.3 802.11n 之后:Block ACK 必须配合 A-MPDU

802.11n 规定:在 HT immediate Block ACK 协议下,所有数据帧必须以 A-MPDU 形式发送,即使只有一个 MPDU 也要包在 A-MPDU 里——这种只有一个 MPDU 的 A-MPDU 称为 S-MPDU(Single MPDU A-MPDU)。

交通比喻:即使只有一件货,也必须装上车队的"领队车+一辆货车"的编队出发——不能单独骑摩托车送。

5.1.4 为什么这样设计?

对比项无 A-MPDU 的 Block ACK有 A-MPDU 的 Block ACK
信道竞争每帧独立竞争只竞争一次
PHY 头每帧一个只有一个
确认间隔每帧等 ACK(SIFS)只等一次 Block ACK
MAC 效率~40-50%~80%

交通比喻:没有 A-MPDU 的 Block ACK = 4 辆车各走一趟,到了目的地才一次性签收——省了签收时间,但路上的红灯没省。有 A-MPDU 的 Block ACK = 4 辆车组成车队一趟出发,只等一次红灯,到了一次性签收——红灯和签收都省了。

5.1.5 Block ACK 的 Bitmap 机制

Block ACK 帧中包含一个 bitmap(位图),每一位对应一个序列号的 MPDU:

  • 1 = 该 MPDU 接收成功
  • 0 = 该 MPDU 丢失或校验失败

发送方根据 bitmap 只重传标记为 0 的 MPDU,不用重传整个 A-MPDU。

交通比喻:老板拿着清单逐辆核对——A 到了(打勾)、B 到了(打勾)、C 丢了(打叉)、D 到了(打勾)——只需补发 C,不用重跑整个车队。

5.1.6 Bitmap 有上限:一次最多确认多少个?

Block ACK 帧的 bitmap 长度是有限的,不同变体能确认的 MPDU 数量不同(IEEE 802.11-2024 §9.3.1.8):

Compressed BlockAck(802.11n/ac/ax 最常用的变体,Table 9-38):

Fragment Number 编码Bitmap 长度能确认的 MSDU/A-MSDU 数
B0=0(无分片), B2-B1=008 字节(64 bit)64 个
B0=0(无分片), B2-B1=1032 字节(256 bit)256 个
B0=1(有分片), B2-B1=008 字节16 个(每个 4 分片)
B0=1(有分片), B2-B1=1032 字节64 个(每个 4 分片)

Extended Compressed BlockAck(802.11ax 引入):固定 8 字节 → 64 个,外加 1 字节 RBUFCAP 报告接收方剩余缓冲区。

Multi-STA BlockAck(802.11ax 上行 MU 用):每个 Per AID TID Info 的 bitmap 可以是 0/4/8/16/32 字节 → 单用户最多 256 个

注意「有分片」那两行:此时 bitmap 的每一位对应一个 fragment(分片),而不是一个完整 MSDU——一个 MSDU 切成 4 片就要占 4 位,所以 8 字节(64 bit)在有分片时只能确认 16 个 MSDU、32 字节(256 bit)只能确认 64 个 MSDU。

Bitmap 从 Starting Sequence Number(SSN) 开始,每一位按序列号递增顺序对应一个 MPDU。802.11 的序列号是 12-bit(0-4095 循环),所以:

  • 如果发送方连续发了超过 bitmap 长度的帧但一直没发 BAR,超出部分无法被确认——bitmap 覆盖不到
  • 发送方必须在 bitmap 范围内发 BAR,拿到 Block ACK 后滑动窗口前移,才能继续发送
  • ADDBA 协商中的 Buffer Size 正是约束这个窗口大小的参数

交通比喻:老板的清单只有 64 个格子(8 字节 bitmap)。如果车队有 100 辆车,不能等 100 辆全到了再签收——必须在第 64 辆到了之后先签一次(发 BAR → 收 Block ACK),清单腾出空间,再继续收后面的 36 辆。这就是"滑动窗口"机制——窗口大小由 Buffer Size 和 bitmap 长度共同决定。


6 Short GI — 缩短车间距

802.11n 引入了 Short Guard Interval(短保护间隔),将 OFDM 符号间的保护间隔从 800 ns 缩短到 400 ns。

参数Long GIShort GI
保护间隔800 ns400 ns
符号时长4.0 µs3.6 µs
速率提升~11%

交通比喻:Long GI 就像车与车之间保持较大的安全车距——防止前车急刹时追尾(符号间干扰)。Short GI 就像缩短了车距——路况好(信道质量高)时能提升通行效率;但雨天路滑(多径效应严重)时车距太近容易追尾,符号间干扰随之上升。


7 MCS 0-31:调制编码方案的完整体系

7.1 速率怎么算出来的?

802.11n 的数据速率由一个公式决定(IEEE 802.11-2024 §19.5):

1
Data Rate = N_SD × N_BPSCS × R × N_SS / T_SYM
符号含义取值
N_SD数据子载波数20 MHz: 52;40 MHz: 108
N_BPSCS每子载波每空间流的编码比特数BPSK: 1, QPSK: 2, 16-QAM: 4, 64-QAM: 6
R编码率1/2, 2/3, 3/4, 5/6
N_SS空间流数1, 2, 3, 4
T_SYMOFDM 符号时长(含保护间隔)Long GI: 4.0 µs;Short GI: 3.6 µs

注意:N_SD 是数据子载波数(不含导频)。802.11n 的 20 MHz 有 52 个数据子载波 + 4 个导频 = 56 个可用子载波;40 MHz 有 108 个数据子载波 + 6 个导频 = 114 个可用子载波。相比 802.11a 的 20 MHz(48 数据 + 4 导频 = 52),HT 回收了部分边缘子载波。

7.1.1 手算示例:MCS 7(20 MHz, Long GI)

MCS 7 = 64-QAM(N_BPSCS=6)× 编码率 5/6 × 1 空间流:

1
2
3
4
Rate = 52 × 6 × (5/6) × 1 / 4.0 µs
= 52 × 6 × 0.833 / 4.0
= 260 / 4.0
= 65 Mbps ✓

7.1.2 手算示例:MCS 15(40 MHz, Short GI)

MCS 15 = MCS 7 × 2 空间流,40 MHz:

1
2
3
Rate = 108 × 6 × (5/6) × 2 / 3.6 µs
= 1080 / 3.6
= 300 Mbps

7.2 MCS 0-7:单空间流的 8 个等级

每个空间流有 8 种 MCS(0-7),调制方式从低到高:

MCS调制N_BPSCS编码率20MHz Long GI20MHz Short GI40MHz Long GI40MHz Short GI
0BPSK11/26.57.213.515.0
1QPSK21/213.014.427.030.0
2QPSK23/419.521.740.545.0
316-QAM41/226.028.954.060.0
416-QAM43/439.043.381.090.0
564-QAM62/352.057.8108.0120.0
664-QAM63/458.565.0121.5135.0
764-QAM65/665.072.2135.0150.0

(单位:Mbps)

7.3 MCS 8-31:多空间流的线性扩展

802.11n 的 MCS 索引编码规则很简单:MCS = (空间流序号 - 1) × 8 + 该流内的 MCS 0-7

MCS 范围空间流数20MHz 最高速率(Long GI)40MHz 最高速率(Long GI)
MCS 0-7165 Mbps135 Mbps
MCS 8-152130 Mbps270 Mbps
MCS 16-233195 Mbps405 Mbps
MCS 24-314260 Mbps540 Mbps

多空间流的速率 = 单流速率 × N_SS——因为公式中 N_SS 是乘数,线性增长。

7.3.1 速率的"齿轮比":编码率 × 调制阶数

观察 MCS 0-7 的编码率变化,你会发现它们不是随意选的,而是精心设计的"齿轮比":

MCS调制 × 编码率每子载波有效比特递增比
0BPSK × 1/20.5
1QPSK × 1/21.0×2
2QPSK × 3/41.5×1.5
316-QAM × 1/22.0×1.33
416-QAM × 3/43.0×1.5
564-QAM × 2/34.0×1.33
664-QAM × 3/44.5×1.125
764-QAM × 5/65.0×1.11

调制阶数越高(BPSK→QPSK→16-QAM→64-QAM),每子载波装的比特越多,但对信道质量(SNR)要求也越高。编码率越低(5/6→1/2),纠错能力越强,但有效吞吐越低。这套调制×编码率的组合并非任意搭配——高调制阶数必须配高码率来平衡星座点密度与纠错冗余:BPSK 只配 1/2,64-QAM 只配 2/3、3/4 或 5/6。MCS 0-7 就是在速率和可靠性之间找平衡的 8 个档位

7.4 MCS 32:特殊的重复模式

MCS 32 是一个特殊值——它只在 40 MHz 模式下使用,用 20 MHz 的 MCS 0 参数在 40 MHz 的两个 20 MHz 子信道上重复发送同一份数据,速率仅 6.0 Mbps。目的是在 40 MHz 信道条件极差时提供最可靠的连接(相当于用冗余换可靠性)。

7.5 自动速率选择(Rate Adaptation)

实际设备不会固定用一个 MCS——速率自适应算法会根据信道质量动态切换:

条件策略交通比喻
信号强、干扰少用高 MCS(如 7)路况好,开快车
信号弱、干扰多用低 MCS(如 0)路况差,降速慢行
丢包率突然升高降一级 MCS 重试前方事故,临时减速

常见算法:ARF(Auto Rate Fallback)、AARF(Adaptive ARF)、Minstrel(Linux 默认)、RalinkProprietary 等。

交通比喻:MCS 等级就像汽车的档位——MCS 0 是 1 档(慢但稳),MCS 7 是 5 档(快但要求路况好)。速率自适应就是自动变速箱——根据路况(信道质量)自动换档。


8 其他 802.11n 新特性

8.1 LDPC(Low Density Parity Check)

802.11n 的 Data 字段支持两种前向纠错编码(FEC)(§19.3.11.4):

编码方式类型802.11n 支持说明
BCC卷积编码必须支持802.11a/g 就有的老方案
LDPC低密度奇偶校验码可选802.11n 新增,性能更优

BCC(Binary Convolutional Coding) 是传统的编码方式——先用 1/2 码率的卷积编码器编码,再通过"打孔"(puncturing)去掉部分冗余比特来实现更高的码率(2/3, 3/4, 5/6)。当 PHY 速率超过 300 Mbps 时,BCC 会使用两个并行编码器来提高处理速度。

LDPC 的核心思想完全不同——它用一个稀疏校验矩阵 H 来编码:

  • 编码时:根据 H 矩阵计算校验比特,附加到数据后面
  • 解码时:接收方用迭代译码算法(Belief Propagation),反复在 H 矩阵的校验节点和变量节点之间传递"置信度",逐步逼近正确码字
  • 每次迭代都能纠正更多错误,直到收敛或达到最大迭代次数

LDPC 相比 BCC 的优势:

指标BCCLDPC
编码增益基准+2-3 dB
高 SNR 下的表现接近理论极限更接近 Shannon 极限
解码延迟固定(Viterbi)可变(迭代次数)
实现复杂度较高

交通比喻:BCC 就像传统快递——每件货附一张手写清单(校验比特),到了对照一下,错了就退。LDPC 就像智能快递——每件货上贴了多个交叉校验标签(稀疏校验矩阵),到了之后系统自动交叉比对,哪里不对可以自动修正,不用整件退回。

使用条件:接收方必须在 HT Capabilities 中声明支持 LDPC(dot11LDPCCodingOptionActivated = true),发送方才能使用。否则只能用 BCC。

8.2 STBC(Space Time Block Coding)

STBC 是一种分集技术——当发射天线数多于空间流数时,把同一个数据流在不同天线和不同时刻上编码发送,接收方合并后获得分集增益(§10.16)。

典型场景:设备有 2 根天线但只有 1 条空间流(2×1 MISO)。此时可以启用 STBC:

  • 天线 1 在时刻 t 发送符号 S₁
  • 天线 2 在时刻 t 发送符号 S₂
  • 天线 1 在时刻 t+1 发送 -S₂*(共轭取反)
  • 天线 2 在时刻 t+1 发送 S₁*

这就是经典的 Alamouti 编码(2×1 STBC)——用 2 个时隙传 2 个符号,速率不变,但获得了 2 副天线的分集增益,等效于把信道从"快衰落"变成了"慢衰落"。接收端把两路信号合并,等效信噪比翻倍;只有两路同时深衰落才会丢符号,丢符号概率从 p 降至 p²。

配置无 STBC有 STBC
2Tx, 1 空间流1 流,无分集1 流,2 重分集
可靠性一般提升(对抗深衰落)
速率不变不变
接收方复杂度需要合并译码

交通比喻:STBC 就像同一件货同时走两条不同的路——即使一条路堵了,另一条路还能到。代价是需要两条路的资源(两个天线),但货物总量(速率)没变。

使用条件:发送方和接收方都必须在 HT Capabilities 中声明支持 STBC(Tx STBC / Rx STBC 子字段)。

8.3 Greenfield 模式

802.11n 定义了两种前导码(Preamble)格式(§19.3.9):

8.3.1 HT-Mixed Mode(默认,兼容旧设备)

前导码分为两部分——前半段用 802.11a/g 的格式(L-STF, L-LTF, L-SIG),后半段才是 HT 专用字段。旧设备收到 L-SIG 后能算出帧 duration,知道要"安静多久"(虚拟载波侦听),不会在 HT 帧传输期间发送干扰。

8.3.2 HT-Greenfield Mode(效率优先,不兼容旧设备)

省掉了 L-STF, L-LTF, L-SIG 这些兼容字段,直接用 HT 专用格式,前导码缩短约 12 µs。

HT-Mixed Mode vs HT-Greenfield 前导码结构对比

8.3.3 两者对比

特性HT-Mixed ModeHT-Greenfield Mode
兼容 802.11a/g
前导码开销较大(~36 µs)较小(~24 µs)
效率较低较高(节省 ~33% 前导码)
单空间流可用 Short GI否(协议禁止)
实际使用主流极少使用

交通比喻:HT-Mixed Mode 就像新修的高速路保留了旧的收费站——老车也能过(旧设备能识别帧),但新车要排队等(额外开销)。HT-Greenfield 就像专用车道——只让 HT 车辆走,省掉了旧收费站,效率更高,但老车上不去。

为什么 Greenfield 实际很少用? 因为现实环境中几乎不可能是纯 802.11n 网络——总有旧设备(手机、IoT、访客)需要兼容。Mixed Mode 虽然有开销,但换来了向下兼容性,是绝大多数场景的唯一选择。

8.3.4 HT Capabilities 字段速查表

回顾一下,HT Capabilities 元素是 802.11n 设备在关联时声明自身能力的地方——本章散落出现的各能力开关,其实都集中在这个元素里:

字段 / 子字段声明内容取值与含义
Maximum A-MSDU Length(1-bit)A-MSDU 最大长度0 = 3839 B,1 = 7935 B(§4.4.1)
A-MPDU Parameters → Maximum A-MPDU Length Exponent最大 A-MPDU 长度0-3:2^(13+exp)-1,最大 65535 B(§4.4.2)
LDPC Coding Capability是否支持 LDPC置位才可用 LDPC,否则退回 BCC(§4.8.1)
Tx STBC / Rx STBC是否支持 STBC 收发双方都置位才可用 STBC(§4.8.2)
HT-Greenfield是否支持 Greenfield 前导码置位才可用 Greenfield 前导码(§4.8.3)
40 MHz Intolerant是否无法容忍 40 MHz置位后 AP 须退回 20 MHz(§4.3.2)

这些字段一起决定了两个 HT 设备之间「能开哪些 802.11n 特性」——每个特性都要双方声明支持才能真正生效。


9 缺陷分析:下一代需要解决什么?

缺陷具体问题影响
波束成形未标准化厂商实现不兼容波束成形几乎未被使用
仅 5 GHz 支持 40 MHz2.4 GHz 无法有效使用 40 MHz2.4 GHz 速率提升有限
无下行 MU-MIMO(Multi-User Multiple Input Multiple Output,多用户多输入多输出)每次只服务一个用户密集场景效率低
最高 64-QAM调制阶数有限高 SNR 下速率有天花板
4 空间流上限天线数有限速率上限 ~600 Mbps
20/40 MHz 共存开销混合 20/40 环境需保护机制(L-SIG TXOP Protection / 40 MHz Intolerant)绑定增益被保护开销抵消

10 本章总结

802.11n 是 WiFi 的一次革命性升级:

特性效果交通比喻
MIMO空间复用,多流并行多层立交桥
40 MHz带宽翻倍合并两条路
帧聚合减少开销大卡车代替小车
Block ACK批量确认车队一次性签收
Short GI效率提升 11%缩短车间距

关键认知

  1. MIMO 把多径从敌人变成朋友——不同路径 = 不同空间流
  2. 信道绑定在 2.4 GHz 不实用——只有 5 GHz 能有效使用 40 MHz
  3. 帧聚合是提升实际吞吐量的关键——减少协议开销比提升物理速率更重要

下一章将讲述:256-QAM 如何把每辆车装更多货?下行 MU-MIMO 如何同时服务多个用户?80/160 MHz 信道如何进一步拓宽道路?