1. WiFi技术基础:802.11协议族概述、频段与信道、调制方式(OFDM/CCK)、WiFi网络拓扑结构(STA/AP/Ad-hoc)
各位同学,咱们开始第一课。做WiFi驱动开发,说白了就是跟802.11协议打交道。你如果不了解协议族的基本脉络,后面调试起来会非常痛苦。我个人习惯是,先搭一个宏观框架,再往里面填细节。
1.1 802.11协议族:从a/b/g到ax/be
802.11协议族,是IEEE定义的一套无线局域网标准。我刚开始接触时,被那一堆字母搞得头晕——802.11a、b、g、n、ac、ax,还有最新的be。其实它们之间是有演进逻辑的。
咱们先看一个表格,把主流标准理清楚:
| 标准 | 频段 | 最大速率 | 调制方式 | 推出年份 |
|---|---|---|---|---|
| 802.11b | 2.4 GHz | 11 Mbps | CCK | 1999 |
| 802.11a | 5 GHz | 54 Mbps | OFDM | 1999 |
| 802.11g | 2.4 GHz | 54 Mbps | OFDM/CCK | 2003 |
| 802.11n | 2.4/5 GHz | 600 Mbps | OFDM (MIMO) | 2009 |
| 802.11ac | 5 GHz | 6.9 Gbps | OFDM (MU-MIMO) | 2013 |
| 802.11ax | 2.4/5/6 GHz | 9.6 Gbps | OFDMA | 2019 |
嗯,这里要注意。802.11b用的是CCK调制,抗干扰能力其实不错,但速率上不去。802.11a虽然速率高,但5GHz频段穿墙能力差。我在项目中遇到过,有些老设备只支持b/g,你如果强制开n模式,它直接不连。所以驱动里做速率协商时,一定要考虑兼容性。
核心要点:802.11协议族是向后兼容的。一个支持802.11n的AP,必须能处理b/g的客户端。这是驱动开发中绕不开的兼容性逻辑。
1.2 频段与信道:2.4GHz和5GHz的差异
WiFi主要工作在两个频段:2.4GHz和5GHz。你想想看,为什么2.4GHz穿墙好但干扰大?因为波长长,绕射能力强。但微波炉、蓝牙、Zigbee都挤在这个频段,信道拥挤得很。
2.4GHz频段从2.412GHz到2.484GHz,划分了14个信道,每个信道宽20MHz。但实际可用的一般只有1、6、11这三个不重叠的信道。我建议你在驱动初始化时,默认把信道扫描范围设成这三个,能省不少时间。
5GHz频段就好多了。信道多,干扰少。从5.150GHz到5.850GHz,划分了20多个信道,每个信道也是20MHz。而且802.11n/ac还支持40MHz、80MHz甚至160MHz的绑定信道,速率直接翻倍。
避坑指南:我曾经在调试一款路由器时,发现5GHz信道36到64是DFS信道。DFS的意思是动态频率选择,如果检测到雷达信号,设备必须自动切换信道。驱动里如果不处理DFS状态,会被FCC罚款的。嗯,这个坑我踩过。
1.3 调制方式:OFDM与CCK
调制方式,说白了就是把数字信号变成无线电波的过程。WiFi里最常用的两种:CCK和OFDM。
CCK(补码键控)是802.11b用的。它把数据编码成8位补码序列,然后调制到载波上。优点是实现简单,抗多径干扰能力强。缺点是速率上不去,最高只有11Mbps。
OFDM(正交频分复用)就高级多了。它把高速数据流分成多个低速子流,分别调制到正交的子载波上。802.11a/g/n/ac/ax都在用OFDM。为什么OFDM这么流行?因为它能有效对抗频率选择性衰落。
我举个例子。假设你要传输100Mbps的数据,用单载波的话,一旦某个频率被干扰,整个链路就断了。但OFDM把数据分散到52个子载波上,每个子载波只传2Mbps左右。就算有几个子载波被干扰,其他子载波还能正常工作,通过纠错码就能恢复数据。
技术细节:OFDM的子载波间隔是312.5kHz。802.11a/g使用52个子载波,其中48个用于数据,4个用于导频。导频的作用是相位跟踪和频率同步。驱动开发中,导频的处理直接影响解调性能。
802.11n引入了MIMO-OFDM,也就是多天线技术。我记得第一次调试MIMO时,发现天线之间的信号串扰非常严重。后来加了信道估计和波束成形,才把吞吐量提上去。嗯,这部分后面章节会详细讲。
1.4 WiFi网络拓扑结构:STA、AP、Ad-hoc
WiFi网络有三种基本拓扑:STA(工作站)、AP(接入点)、Ad-hoc(对等网络)。
STA(Station)就是客户端,比如你的手机、笔记本。STA负责扫描AP、发起连接、收发数据。驱动开发中,STA模式是最常见的。你要处理扫描、认证、关联、4次握手、数据加密等流程。
AP(Access Point)是接入点,比如路由器。AP负责广播Beacon帧、响应STA的连接请求、转发数据。AP模式的驱动开发比STA复杂,因为要管理多个STA的连接,还要处理VLAN、QoS、WDS等功能。
Ad-hoc(对等网络)也叫IBSS(独立基本服务集)。两个设备直接通信,不需要AP。这个模式现在用得少了,但在物联网场景中还有应用。比如两个传感器直接交换数据。
注意事项:Ad-hoc模式在802.11n/ac中基本被废弃了。如果你要做新项目,建议直接用WiFi Direct或者SoftAP模式。WiFi Direct本质上还是P2P连接,但兼容性更好。
我个人习惯,在驱动初始化时先判断工作模式。如果是STA模式,就注册扫描和连接的回调;如果是AP模式,就注册Beacon发送和客户端管理的回调。这样代码结构清晰,也方便后续扩展。
好了,第一课就到这里。下一章咱们会深入MAC层,讲帧格式和CSMA/CA机制。你先把这些基础概念消化掉,后面才能跟上节奏。
课后思考:为什么2.4GHz频段只有1、6、11三个不重叠信道?如果你在驱动里要优化信道选择算法,你会怎么设计?