第 1 章:802.11-1997 — 小镇的第一个十字路口
"所有伟大的交通系统,都始于一个简单的十字路口。"
本章导读
1997 年 6 月,IEEE 发布了 802.11 标准——无线局域网的第一个正式标准。在我们的比喻中,这就像是在一个小镇上建立了第一个十字路口:有了基本的交通规则,有了红绿灯,有了简单的道路。虽然简陋,但它定义了所有后续交通系统的基础架构。
这一章是全书最重要的一章。CSMA/CA、DCF、帧结构、NAV、IFS、退避算法——这些机制在 2024 年的 Wi-Fi 7 中仍然存在。后续所有章节都是在这一章的基础上做加法。
本章你将学到:
- MAC 层:DCF 和 PCF 两种交通管理模式
- 帧结构:数据的"车牌+目的地+货物+验货单"
- NAV:对讲机通知机制
- IFS:不同车辆的启动延迟
- RTS/CTS:先按喇叭再通行
- 退避算法:随机等待的智慧
- PHY 层:三种道路铺设技术(FHSS、DSSS、IR)
- 缺陷分析:为什么这个十字路口需要升级
1 协议栈概览:十字路口的建筑蓝图
在深入细节之前,先看整体架构。802.11 定义了 OSI 模型中最低的两层:
比喻:MAC 层是"交通规则"——决定谁在什么时候可以通行;PHY 层是"道路和车辆"——决定数据如何在物理世界中传输。
2 MAC 层:交通规则的核心
2.1 DCF — 分布式协调功能(没有交警的十字路口)
DCF(Distributed Coordination Function)是 802.11 MAC 的核心接入机制,也是必须实现的。它的本质是:没有中心调度,所有车辆自行协调。
DCF 基于 CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance,载波侦听/碰撞避免)。注意,这里不是以太网的 CSMA/CD(碰撞检测),因为无线环境无法检测碰撞,原因有三:
- 发射信号远强于接收信号:WiFi 发射功率约 15-20 dBm,接收灵敏度低至 -90 dBm,差距超过 100 dB。自己发出的信号像在耳边大喊,根本听不到远处别人的低语——无法在发射的同时检测到碰撞。
- 隐终端问题:无线环境中并非所有 STA 都能互相听到。A 和 C 都在给 B 发数据,但 A 听不到 C,即使能"边发边听",也检测不到 C 的信号碰撞。
- 碰撞无物理特征:以太网碰撞时,总线电压会异常升高,接收端能立即察觉。无线碰撞只是两个电磁波叠加,接收端收到的是一个失真的信号,无法区分"正常信号"和"碰撞后的混合信号"——只能通过没有收到 ACK 来推断可能发生了碰撞。
因此 802.11 采用碰撞避免(CA)而非碰撞检测(CD):先尽量避免碰撞发生,碰撞后通过超时和重传来恢复。
交通比喻:在一个没有交警的十字路口,每辆车都要自己判断"路口是否空闲"。如果空闲,就通过;如果不空闲,就等待。为了避免碰撞,采用"先看再走"的策略。
2.1.1 CSMA/CA 基本流程
翻译成交通语言:
- 有数据要发送 = 有货物要运
- 监听信道 = 看路口是否空闲
- 等待 DIFS = 确认路口空闲后,等一个标准延迟(就像"绿灯亮了但要等 2 秒再走")
- 随机退避 = 如果有多辆车同时想走,各自随机等一段时间,避免同时冲出去
- 发送数据 = 通过路口
- 等待 ACK = 等对方签收确认
2.1.2 为什么需要退避?——碰撞避免的核心
如果两辆车同时到达路口,同时发现"路口空闲",同时开始通过——碰撞就发生了。退避算法就是为了解决这个问题:
二进制指数退避(Binary Exponential Backoff):
- 第一次退避:从 [0, CWmin] 中随机选择一个值(DSSS 的 CWmin = 31,FHSS 的 CWmin = 15)
- 每次碰撞后:竞争窗口翻倍(DSSS:31 → 63 → 127 → ... → CWmax = 1023;FHSS 从 15 开始翻倍:15 → 31 → 63 → ... → 1023)
- 成功后:重置为 CWmin
交通比喻:第一次等红灯,随机等 0-31 秒。如果撞了,下次随机等 0-63 秒。再撞,0-127 秒。这样碰撞的概率指数级下降。
参数来源:IEEE 802.11-1997, Section 9.2.5.2
| 参数 | 值 | 说明 |
|---|---|---|
| CWmin(最小竞争窗口) | 31(DSSS)/ 15(FHSS) | 首次退避的随机范围上限 |
| CWmax(最大竞争窗口) | 1023 | 退避范围的上限 |
| Slot Time(时隙) | 20 µs (DSSS) / 50 µs (FHSS) | 退避计数器每次递减的时间单位 |
Slot Time 的具体含义:Slot Time 是退避的基本时间单位。STA 从 [0, CW] 随机选一个数 N,每经过一个 Slot Time 且信道空闲,计数器减 1;归零时才能发送。如果中途信道变忙,计数器冻结,等信道重新空闲后继续递减。
不同 PHY 技术的 Slot Time 不同:
| PHY 技术 | Slot Time | 协议 |
|---|---|---|
| FHSS | 50 µs | 802.11 |
| DSSS | 20 µs | 802.11 |
| OFDM | 9 µs | 802.11a/g/n/ac/ax/be |
Slot Time 必须足够长,覆盖三件事:传播延迟(信号从最远 STA 到 AP 的时间)、收发切换时间(PHY 从接收切到发射)、CCA 检测时间(PHY 判断信道是否空闲)。OFDM 物理层处理更快,所以 Slot Time 更短,退避效率更高。
交通比喻:Slot Time 就像红绿灯的"最小计时单位"——你可以等 1 个、5 个、31 个这样的单位,但每个单位的时间是固定的。不同路口(PHY 技术)的单位时间不同——乡间路口(FHSS)的单位是 50 µs,城市路口(OFDM)只要 9 µs。
2.2 CCA 与 NAV — 载波侦听机制
在发送之前,STA 必须先判断"信道是否空闲"。802.11 用两种机制共同判断:物理载波侦听(CCA) 和 虚拟载波侦听(NAV)。
2.2.1 CCA(Clear Channel Assessment)— 物理载波侦听
CCA 是 PHY 层的信道检测机制,通过两种方式判断信道状态:
| 检测方式 | 原理 | 门限(802.11-1997) | 说明 |
|---|---|---|---|
| Energy Detection(ED) | 测量信道上的总射频能量 | -65 dBm(FHSS)/ -76 dBm(DSSS) | 不区分信号类型,只要能量超过门限就判定为忙 |
| Carrier Sense(CS) | 检测是否存在 802.11 前导码 | -85 dBm(FHSS) | 只识别 802.11 信号,灵敏度更高 |
交通比喻:ED 就像在路口竖一个噪音检测器——不管是什么声音(汽车、施工、音乐),只要分贝超过阈值就判定"路口很吵,不要走"。CS 则像一个专门听汽车喇叭的传感器——只有听到 802.11 的"喇叭声"(前导码)才判定"有车来了"。
为什么有两种? 因为场景不同:
- CS 灵敏度更高(-85 dBm vs -65 dBm,FHSS),能检测到远处的 WiFi 信号,避免干扰已有通信
- ED 在 CS 无法识别信号时(非 WiFi 干扰,如微波炉、蓝牙)兜底,防止在噪声环境中盲目发送
环境太嘈杂的后果:如果信道上的能量持续超过 ED 门限(-65 dBm,FHSS),CCA 会一直报告"信道忙",STA 根本无法发包。这就是为什么 2.4 GHz 频段在密集部署时性能急剧下降——微波炉、蓝牙、邻居的 WiFi 全在同一个频段竞争。
交通比喻:如果路口周围全是工地施工(非 WiFi 广播),噪音检测器一直响,所有车都被堵在路上无法通行——即使实际上没有车在路口中央。
2.2.2 NAV — 虚拟载波侦听(对讲机通知机制)
物理载波侦听只能检测到"有没有人在说话",但无法解决隐终端问题。
隐终端问题:A 和 C 都能听到 B,但 A 听不到 C。当 C 正在给 B 发数据时,A 不知道,可能同时给 B 发数据,导致 B 收到两个信号的碰撞。
NAV(Network Allocation Vector)是解决方案:**每个帧的 Duration 字段告诉所有人"这条路还要被占用多久"**。
交通比喻:RTS 就像 A 按喇叭说"我要从这条路通过,大约需要 300 微秒"。CTS 是 B 回应"收到,我这边空着"。C 听到了这些对话,就知道"这条路被占用了约 300 微秒",即使路口看起来空闲,C 也会等待。这就是"对讲机通知"——用广播通知所有人"前方管制"。
关键点:信道状态由 CCA 和 NAV 共同决定——只有 CCA 报告"信道空闲" 且 NAV = 0 时,STA 才能发送。即使 CCA 说"空闲",只要 NAV > 0,就不能发;反过来,即使 NAV = 0,只要 CCA 检测到能量或信号,也不能发。
2.3 RTS/CTS — 先按喇叭再通行
RTS/CTS 是一个可选的四次握手机制,用于解决隐终端问题和减少碰撞代价:
这里的关键在帧头 2 字节的 Duration 字段:收到 RTS 的 STA 解析出 A 声明的占用总时长写入 NAV 计数器;而隐终端 C 听不到 RTS、只收到 B 的 CTS,就解析 CTS 里更短的 Duration。这正是 §1.2.2 "对讲机通知"的落地点——第三方不参与对话,只靠旁听到的时长值自动让路。
RTS/CTS 四次握手:发送方 → RTS("我要发数据")→ 接收方 → CTS("收到,你发吧")→ 发送方 → DATA("货物在此")→ 接收方 → ACK("确认收到")
交通比喻:RTS/CTS 就像在狭窄山路上会车时的流程——先按喇叭(RTS)告知"我要过来了",对方闪灯回应(CTS)"收到,我等你",然后你通过(DATA),最后对方再按一声喇叭(ACK)表示"通过成功"。
为什么是"可选"的? 因为 RTS/CTS 本身也有开销(4 个帧 vs 基本的 2 个帧)。对于短帧,直接发送可能更高效。协议中通过 RTS Threshold 来控制:只有帧长度超过阈值时才使用 RTS/CTS。
控制帧的关键细节:
RTS、CTS、ACK 都是控制帧,协议对它们有严格规定:
- 帧大小固定:CTS 和 ACK 都是 14 字节(Frame Control 2 + Duration 2 + RA 6 + FCS 4),RTS 是 20 字节。没有可变字段,传输时间确定。
- 发送速率固定:控制帧必须使用 Basic Rate Set 中的速率发送(IEEE 802.11 Section 9.2.8),确保 BSS 内所有 STA 都能解码。2.4 GHz 通常为 1 Mbps,5/6 GHz 为 6 Mbps。
- CTS 和 ACK 必须在 SIFS 后立即发送:不参与 DIFS 竞争,保证响应的实时性。
这意味着 Station A 在发 RTS 之前就能精确计算整个交互的耗时:
1 | CTS 传输时间 = 14 字节 × 8 / 基本速率 |
基本速率信息来自 AP 的 Beacon 或 Probe Response 中的 Supported Rates 字段——Station A 在连接时就已经知道了。
2.4 IFS — 不同车辆的启动延迟
IFS(Interframe Space,帧间间隔)是 802.11 优先级机制的基础。不同的 IFS 长度决定了不同类型的帧需要等待多长时间才能发送。
具体数值(IEEE 802.11-1997, Section 9.2.8):
| IFS | FHSS | DSSS | 计算公式 |
|---|---|---|---|
| SIFS | 28 µs | 10 µs | 固定值 |
| PIFS | 78 µs | 30 µs | SIFS + Slot Time |
| DIFS | 128 µs | 50 µs | SIFS + 2 × Slot Time |
| EIFS | — | — | SIFS + DIFS + ACK_time(basic rate) |
交通比喻:想象一个路口,红灯变绿后——急救车(SIFS)立即启动,警车(PIFS)等 1 秒,私家车(DIFS)等 2 秒。这种延迟差异确保了高优先级的帧总是能先通过。
为什么 ACK 用 SIFS? 因为 ACK 必须在收到数据帧后尽快回复。如果 ACK 也等 DIFS,其他设备可能在这段时间内开始发送,导致 ACK 碰撞。SIFS 确保 ACK 能"抢到"信道。
EIFS 是什么? EIFS(Extended IFS)是用于错误恢复的特殊帧间间隔。当 STA 接收一个帧但 FCS 校验失败(帧损坏)时,它不知道对方是否需要 ACK——可能对方正在等 ACK 而自己不知道。此时 STA 必须等一个 EIFS 再尝试发送,这段时间足够让可能存在的 ACK 交互完成。
EIFS 的计算:EIFS = SIFS + DIFS + ACK 传输时间(基本速率)。它没有固定数值——ACK 传输时间取决于基本速率:1 Mbps 时 ACK = 112 µs,6 Mbps 时 ACK = 18.67 µs。
交通比喻:EIFS 就像路口发生了小事故——你听到一声碰撞但不确定情况,必须等更长时间(等交警处理完、可能的救护车通过)才能重新起步。比正常等红灯(DIFS)要久得多。
2.5 PCF — 点协调功能(交警统一指挥模式)
前面几节的 CSMA/CA、NAV、RTS/CTS、IFS 都属于 DCF 竞争机制;PCF(Point Coordination Function)则是可选的集中式接入机制,由 AP 作为"交警"统一调度。
报文类型:CF-Poll 与 CF-ACK 均无专用帧,复用 Data 帧变体(Type=10),Subtype 分别为 0010 / 0101。
交通比喻:PCF 就像学校门口上下学时段的交通管理——交警站在路口,按顺序放行每辆车。在非高峰时段,交警撤走,恢复正常的自行协调模式。
PCF 的核心是把信道时间切成竞争期(CP)与无竞争期(CFP)两段交替运行。进入 CFP 时,AP 先在 Beacon 里下发 CF 参数(CFPMaxDuration、CFPCount 等),宣告无竞争时段开始;随后 AP 用 CF-Poll 逐一"点名"轮询各 STA,被点到的才准发送并以 CF-ACK 应答(见上方报文类型),其余 STA 因 NAV 被预设为 CFPMaxDuration 而保持沉默。轮询完毕,AP 发 CF-End 控制帧结束 CFP,信道回到 CP——这正是比喻里"交警撤走、恢复自行协调"的时刻。
PCF 的问题:虽然理论上能提供无竞争的传输,但实现复杂,而且与 DCF 的协调并不完美。实际上,PCF 在后续标准中几乎未被采用,取而代之的是 802.11e 的 HCCA。
3 帧结构:数据的"车牌+目的地+货物+验货单"
802.11 的帧结构是理解所有后续协议的基础。一个完整的帧包含以下字段:
3.1 Frame Control(帧控制)字段 — 2 字节
这是帧的"身份证",包含了帧的所有元信息:
| 字段 | 位数 | 说明 | 交通比喻 |
|---|---|---|---|
| Protocol Version | 2 | 协议版本(始终为 0) | 道路规则版本 |
| Type | 2 | 帧类型:管理(00)/控制(01)/数据(10) | 车辆类型:路牌/信号灯/货车 |
| Subtype | 4 | 子类型:Beacon/RTS/CTS/ACK 等 | 具体型号 |
| To DS | 1 | 方向:是否去往 DS | 目的地标记 |
| From DS | 1 | 方向:是否来自 DS | 出发地标记 |
| More Frag | 1 | 是否有更多分片 | "还有后续货物" |
| Retry | 1 | 是否是重传 | "这是重新发的" |
| Power Mgmt | 1 | 电源管理模式 | "我要休息了" |
| More Data | 1 | AP 有缓存数据 | "还有你的包裹" |
| WEP | 1 | 是否加密 | "上了锁" |
| Order | 1 | 是否有序传输 | "按顺序送达" |
3.2 帧类型与子类型
802.11 定义了三种帧类型,对应交通系统的三种"通信方式":
3.2.1 管理帧(Management Frames)— Type = 00
| Subtype | 名称 | 作用 | 交通比喻 |
|---|---|---|---|
| 0000 | Association Request | 请求加入网络 | 申请通行证 |
| 0001 | Association Response | 响应加入请求 | 发放通行证 |
| 0100 | Probe Request | 探测网络 | 司机问路 |
| 0101 | Probe Response | 响应探测 | 路人指路 |
| 1000 | Beacon | 广播网络信息 | 路边指示牌 |
| 1011 | Authentication | 认证 | 出示证件 |
| 1100 | Deauthentication | 解除认证 | 吊销证件 |
3.2.2 控制帧(Control Frames)— Type = 01
| Subtype | 名称 | 作用 | 交通比喻 |
|---|---|---|---|
| 1011 | RTS | 请求发送 | 按喇叭示意 |
| 1100 | CTS | 清除发送 | 闪灯回应 |
| 1101 | ACK | 确认 | 签收确认 |
3.2.3 数据帧(Data Frames)— Type = 10
| Subtype | 名称 | 作用 | 交通比喻 |
|---|---|---|---|
| 0000 | Data | 普通数据 | 普通货车 |
| 0100 | Null Data | 无数据(用于功率管理) | 空车(报告状态) |
| 1000 | QoS Data | QoS 数据(802.11e 增加) | 优先级货车 |
来源:IEEE 802.11-1997, Section 7.1.3
4 PHY 层:三种道路铺设技术
802.11-1997 定义了三种物理层技术,就像三种不同的道路铺设方式:
4.1 FHSS — 跳频扩频(频繁换路)
FHSS(Frequency Hopping Spread Spectrum)是最简单的 PHY 技术。
工作原理:
- 在 2.4 GHz ISM 频段内,定义 79 个 1 MHz 的信道
- 发射器按照伪随机序列在这些信道之间跳转
- 跳频速率:最低跳频速率由监管机构规定(如 FCC 约 2.5 跳/秒,802.11-1997 本身只规定「最低跳频速率由监管当局决定」);aMaxDwellTime 最大 390 TU(FCC 域 ≈ 400 ms)
- 调制方式:GFSK(Gaussian Frequency Shift Keying),高斯频移键控
数据速率:
- 1 Mbps(基本速率,2 级 GFSK)
- 2 Mbps(可选,4 级 GFSK)
交通比喻:FHSS 就像一个快递员不走固定路线,而是每到一个路口就随机换一条路。这样即使某条路被堵了(受到干扰),也只是暂时受影响,下一个路口就换到其他路了。79 条路中,总能找到畅通的。
优点:抗干扰强(干扰通常只影响一个频率)
缺点:速率低(1-2 Mbps),跳频开销大
4.2 DSSS — 直接序列扩频(拓宽道路)
DSSS(Direct Sequence Spread Spectrum)是更常用的 PHY 技术。
工作原理:
- 在 2.4 GHz 频段,使用 22 MHz 的信道带宽
- 用 11-chip Barker 码将每个数据比特扩展为 11 个码片
- 调制方式:DBPSK(1 Mbps)、DQPSK(2 Mbps)
数据速率:
- 1 Mbps(DBPSK,Differential Binary Phase Shift Keying,差分二进制相移键控)
- 2 Mbps(DQPSK,Differential Quadrature Phase Shift Keying,差分四进制相移键控)
交通比喻:DSSS 就像把一条单车道的路拓宽成 11 条平行的小道,每条小道都传输同样的信息。即使其中几条小道被堵了(干扰),只要大部分畅通,信息就能完整到达。这就是"扩频"——用更宽的道路换取更强的抗干扰能力。
关键参数:
- 处理增益(Processing Gain)= 10 × log10(11) ≈ 10.4 dB
- 这意味着 DSSS 可以在噪声比信号强 10 倍的环境下工作
优点:比 FHSS 更高的速率,更好的抗干扰
缺点:22 MHz 带宽导致 2.4 GHz 频段只能容纳 3 个不重叠信道
4.3 IR — 红外(光速通道)
IR(Infrared)是最少被提及的 PHY 技术。
工作原理:
- 使用 850-950 nm 波长的红外光
- 扩散红外(Diffuse IR):光信号在室内反射传播
- 调制方式:16-PPM(1 Mbps)/ 4-PPM(2 Mbps)
数据速率:1 Mbps(基本)、2 Mbps(可选)
交通比喻:IR 就像一条只在室内有效的"光速通道"——速度极快,但不能穿墙,只能在同一个房间里用。
为什么被淘汰? 红外不能穿透墙壁,只能在视线范围内工作,实用性极低。在后续标准中被完全移除。
4.4 三种 PHY 技术对比
5 连接流程:从"问路"到"办通行证"
一个 STA(设备)要连接到 AP(接入点),需要经历五个阶段:发现 → 认证 → 关联 → 密钥协商 → 数据传输。
报文类型:连接流程涉及的帧子类型见 §1.3 的帧类型表;仅 EAPOL 例外——它复用 QoS Data 帧(Type=10, Subtype=1000)承载密钥协商。
下面逐个阶段详解:
5.1 阶段 1:发现(Probe)
STA 首先要找到附近的 AP。有两种扫描方式:
主动扫描(Active Scanning):STA 发送 Probe Request 帧,收到的 AP 回复 Probe Response,包含 SSID、支持的速率、安全能力等信息。Probe Response 是单播帧,只发给请求的 STA。
主动扫描有三种场景:
场景一:广播 Probe Request(不携带 SSID)
STA 在每个信道上广播 Probe Request(目的地址 FF:FF:FF:FF:FF:FF),不指定 SSID,询问"这个信道上有 AP 吗?"。所有收到的 AP 都会回复 Probe Response。这是 IEEE 802.11 标准定义的标准扫描方式。
场景二:定向 Probe Request(携带特定 SSID)
STA 广播 Probe Request,但帧体中指定了目标 SSID。只有 SSID 匹配的 AP 才会回复。这种方式用于 STA 已经知道目标网络名称(比如用户手动输入了 SSID)时,避免收到大量无关回复。
注意:以上两种 Probe Request 的目的地址都是广播地址 FF:FF:FF:FF:FF:FF,区别在于是否携带 SSID。
场景三:单播 Probe Request(携带目标 AP 的 BSSID)—— 厂商实现,非协议规定
IEEE 802.11 标准定义的 Probe Request 是广播帧,没有规定可以单播发送。但实际设备驱动中,STA 在关联前可能会向目标 AP 的 BSSID 发送单播 Probe Request,做最后确认——确认 AP 仍然在线、支持的速率和能力没有变化。这是厂商实现的行为,不是协议要求。
关于隐藏 SSID:IEEE 802.11 标准本身没有定义"隐藏 AP"的概念。隐藏 SSID 是厂商实现的安全功能——AP 在 Beacon 中将 SSID 字段设为空,并且不回复不携带 SSID 的广播 Probe Request。效果是:被动扫描(监听 Beacon)看不到 SSID,广播 Probe Request 也得不到回复。STA 必须发送携带正确 SSID 的定向 Probe Request 才能发现这类 AP。不过,这并非真正的安全机制(SSID 仍然可以从关联帧中获取),只是增加了发现难度。
被动扫描(Passive Scanning):STA 在每个信道上安静地监听 Beacon 帧。AP 通常每 100 ms 发一次 Beacon,STA 等到就能发现 AP。被动扫描更慢,但省电(不需要发射),常用于漫游场景。
交通比喻:主动扫描 = 司机摇下车窗喊"附近有交警指挥中心吗?",每个指挥中心都回答。被动扫描 = 司机在路边等,看到指示牌(Beacon)就知道指挥中心在哪。
5.2 阶段 2:Authentication(认证)
认证是 STA 向 AP 证明"我是合法用户"的过程。802.11-1997 定义了两种认证方式:
Open System(开放系统):2 帧完成。STA 发 Auth Request(Seq=1),AP 回 Auth Response(Seq=2)。不验证身份,相当于"敲门就进"。WPA2 推荐用此模式——真正的安全由后面的 4-way handshake 保障。
Shared Key(共享密钥):4 帧完成,基于 WEP。AP 先发一个 Challenge 明文,STA 用 WEP 密钥加密后发回,AP 验证。因为 WEP 已被破解,这种模式不安全,实际已废弃。WPA3 用 SAE(Simultaneous Authentication of Equals)替代,也是 4 帧(2 轮 Commit + Confirm)。
交通比喻:Open System = 到了指挥中心,门卫说"请进",不查证件。Shared Key = 门卫给你一道密码题,你解对了才让进。
5.3 阶段 3:Association(关联)
认证通过后,STA 发送 Association Request,正式申请加入这个 BSS。请求中包含:
- SSID:要加入的网络名称
- Supported Rates:STA 支持的速率列表(如 1, 2, 5.5, 11, 6, 9, 12, ... Mbps)
- Capability Information:STA 的能力(是否支持短前导码、加密等)
AP 收到后检查是否接受:
- 如果接受:回 Association Response(Status=0),分配 AID(Association ID,类似"通行证编号"),告诉 STA 支持哪些速率
- 如果拒绝:回 Association Response(Status≠0),说明拒绝原因(如速率不匹配、BSS 已满)
交通比喻:Association Request = 申请在这个区域通行,提交车辆信息。Association Response = 发放通行证,分配编号 AID。
5.4 阶段 4:密钥协商(EAPOL 4-Way Handshake)
802.11-1997 的 WEP 时代没有密钥协商——密钥是预配置的,所有用户共享同一个密钥。这非常不安全。
后来的 802.11i(WPA2)引入了 4-Way Handshake,通过 4 个 EAPOL(Extensible Authentication Protocol Over LAN)帧协商密钥。在理解握手流程之前,先理解密钥层次:
5.4.1 密钥层次:PMK → PTK → KCK/KEK/TK
PMK(Pairwise Master Key,成对主密钥):PMK 是整条密钥链的根,有 256 位(32 字节)。它的来源取决于认证模式:
- WPA2-Personal(PSK 模式):PMK = PBKDF2(SHA1, passphrase, SSID, 4096, 256)。把用户输入的密码(passphrase)和网络名称(SSID)一起做 4096 轮哈希运算,生成 256 位的 PMK。这意味着同一个密码在不同 SSID 下会产生不同的 PMK
- WPA2-Enterprise(802.1X 模式):PMK 来自 RADIUS 服务器在 EAP 认证过程中生成的 MSK(Master Session Key),取前 256 位
PMK 在握手之前就已经存在于 STA 和 AP 双方(PSK 模式下双方用相同密码算出相同 PMK),它不会在空中传输。
PTK(Pairwise Temporal Key,成对临时密钥):PTK 由 PMK 推导而来,但每次连接都不同。推导公式:
1 | PTK = PRF(PMK, "Pairwise key expansion", |
其中 AA = AP 的 MAC 地址,SPA = STA 的 MAC 地址,ANonce/SNonce 是双方各自生成的随机数。因为每次连接的随机数都不同,所以 PTK 也不同——避免每次连接复用同一把密钥。不过要注意:这并不是前向保密。WPA2-PSK 的 PMK 仅由口令和 SSID 静态推导,一旦口令泄露,攻击者配合抓到的握手(ANonce/SNonce 都是明文)就能还原 PTK、解密历史流量。真正的前向保密要到第 8 章的 WPA3/SAE 才实现。
PTK 被拆分为三部分:
| 子密钥 | 用途 | 长度(CCMP) |
|---|---|---|
| KCK(Key Confirmation Key) | 计算 MIC,验证消息完整性 | 128 位 |
| KEK(Key Encryption Key) | 加密 GTK 等敏感数据 | 128 位 |
| TK(Temporal Key) | 加密实际数据帧 | 128 位 |
MIC(Message Integrity Code,消息完整性校验码):MIC 是用 KCK 对消息内容计算的 HMAC-SHA1 值(取前 128 位)。作用是防止消息被篡改——如果攻击者修改了握手消息,MIC 校验就会失败,接收端会丢弃该消息。
WEP 用 CRC-32 做完整性校验,但 CRC-32 不是加密哈希,可以被篡改而不被发现,这是 WEP 的致命缺陷之一。
GTK(Group Temporal Key,组临时密钥):GTK 用于保护组播和广播帧(如 ARP、DHCP)。所有连接到同一 AP 的设备共享同一个 GTK。GTK 由 AP 生成,通过 PTK 中的 KEK 加密后分发给各 STA。
5.4.2 四次握手流程
理解了密钥层次后,握手流程就清晰了:
- AP → STA(Msg 1):AP 生成随机数 ANonce,明文发送给 STA
- STA → AP(Msg 2):STA 生成随机数 SNonce,连同自己的 MIC 一起发给 AP。此时 STA 已经用 PMK + ANonce + SNonce + 双方 MAC 地址推导出完整的 PTK
- AP → STA(Msg 3):AP 也推导出 PTK,用 KEK 加密 GTK,连同 MIC 发给 STA。这是 AP 确认"我也算出了 PTK"的证据
- STA → AP(Msg 4):STA 确认密钥安装完成。AP 收到后也安装密钥,开始用 AES-CCMP 加密数据
为什么双方能算出相同的 PTK? 因为输入相同:PMK(双方用相同密码算出)、ANonce(AP 发的)、SNonce(STA 发的)、双方 MAC 地址。PRF 是确定性函数,相同输入产生相同输出。
交通比喻:PMK = 双方预先共享的密码本。ANonce/SNonce = 各自出的随机谜题。PTK = 用密码本和谜题共同算出的一次性钥匙。MIC = 防伪印章,有人改了信件内容印章就会碎。GTK = AP 发给所有人的公共钥匙,锁在用 PTK 加密的保险柜里。
5.5 阶段 5:数据传输
安全通道建立后,STA 可以开始收发数据。数据帧有两种:
普通 Data 帧:承载 IP 数据包,通过 DCF、CSMA/CA 竞争信道发送。每个数据帧需要 ACK 确认。
QoS Data 帧(802.11e/WMM 增加):带有 QoS 优先级标记,不同优先级的数据使用不同的竞争参数(AIFS、CWmin、CWmax),高优先级帧更容易抢到信道。例如语音(AC_VO)比普通网页浏览(AC_BE)优先级更高。
另有两位控制运行时行为:More Frag 置 1 表示还有后续分片——大帧按分片阈值拆开,各片共享 Sequence Number、按 Fragment Number 排序重组;Power Mgmt 置 1 表示 STA 即将休眠,AP 暂存其帧并在 Beacon 的 TIM 位图里标记,STA 醒来用 PS-Poll 取回。
交通比喻:普通 Data = 普通货车,按交通规则排队等候。QoS Data = 急救车/警车,有专用车道和优先通行权。
6 安全:WEP — 纸糊的保险柜
802.11-1997 引入了 WEP(Wired Equivalent Privacy,有线等效保密),目标是提供与有线网络等效的隐私保护。
WEP 的工作方式:WEP 的加密流水由四个部件拼成——
- 使用 RC4 流密码加密
- 密钥长度:40 位(后来扩展到 104 位)
- 初始化向量(IV):24 位
- 完整性校验:CRC-32
这四个部件在发送端串成一条字节级流水线:24 位 IV 与密钥拼成 RC4 种子,RC4 生成 keystream,明文与 keystream 逐字节异或得到密文,尾部附上对明文算出的 ICV(CRC-32),最终 IV 与密文一起装入帧发出。
WEP 的致命缺陷(将在后面章节详细讨论):
- IV 太短(24 位):约 1677 万个 IV 后就会重复
- CRC-32 不是加密哈希:可以被篡改而不被发现
- 密钥管理缺失:所有用户共享同一个密钥
- 已被完全破解:2001 年,Fluhrer, Mantin, Shamir 发表了攻击论文
交通比喻:WEP 就像用一个 3 位数的密码锁锁门——理论上锁了,但实际上几分钟就能试出密码。
7 缺陷分析:这个十字路口为什么需要升级?
802.11-1997 定义了坚实的基础,但暴露了多个明确的缺陷:
| 缺陷 | 具体问题 | 影响 |
|---|---|---|
| 速率太低 | 最高仅 2 Mbps | 无法满足文件传输、流媒体需求 |
| 没有 QoS | 所有帧平等竞争 | 语音/视频等实时应用无法保证延迟 |
| 安全形同虚设 | WEP 已被完全破解 | 数据可以被轻易窃听和篡改 |
| PHY 技术落后 | FHSS/DSSS 频谱效率低 | 有限的频谱无法承载更多数据 |
| 覆盖范围有限 | 室内 30-100 米 | 无法满足大面积覆盖需求 |
用交通语言说,这些缺陷逼着人们一次次修路:车道太窄就拓宽(a/b/g),没有优先信号灯就加装(e),锁一撬就开就换新锁(i),单车道瓶颈就架起立体交叉(n)。
这些缺陷直接催生了后续的每一代协议:
- 速率太低 → 802.11a/b/g
- 没有 QoS → 802.11e
- 安全缺陷 → 802.11i/WPA2
- 单天线瓶颈 → 802.11n MIMO
8 本章总结
802.11-1997 建立了无线局域网的基础架构:
MAC 层核心:
- DCF/CSMA/CA:分布式接入,"先看再走"
- NAV:虚拟载波侦听,"对讲机通知"
- RTS/CTS:四次握手,"先按喇叭再通行"
- IFS:优先级机制,"急救车优先"
- 退避算法:碰撞避免,"随机等待"
PHY 层:
- FHSS:跳频抗干扰
- DSSS:扩频抗干扰
- IR:红外短距通信
关键认知:这些机制在 27 年后的 Wi-Fi 7 中仍然存在。理解了它们,你就理解了 802.11 的"基因"。
回看开篇的十字路口:DCF 是"没有交警时靠自觉"的交通规则,NAV 是司机互报路况的对讲机,IFS 是急救车、警车与私家车的起步优先级,RTS/CTS 是过窄路先按喇叭的默契,Slot Time 是红绿灯的计时单位,退避算法是随机等待的耐心,PHY 的 FHSS/DSSS/IR 则是三种铺路方式——这套 1997 年定下、27 年后仍在 Wi-Fi 7 中运行的"基因",正是从这个简陋却完整的十字路口开始的。
下一章将讲述:如何从 2 Mbps 提升到 54 Mbps?OFDM 是什么?为什么 802.11a 比 802.11b 先进却没有先普及?