发展历程:
802.11b: 1999 年,2.4GHz;物理层调制技术:DSSS,11Mbps
802.11a: 2000 年,5GHz;物理层调制技术:OFDM,最高 64QAM 调制,54Mbps
802.11g: 2003 年,2.4GHz;物理层调制技术:OFDM,最高 64QAM 调制,54Mbps
802.11i: 2004 年,MAC 层安全增强,WiFi 加密相关的协议
802.11e: 2005 年,MAC 层 QoS 增强
802.11n: 2009 年,称为 WiFi4。2.4GHz 和 5GHz;物理层技术:MIMO, OFDM; 最高 64QAM 调制,最高 4 条空间流,最大 40MHz 带宽。常用的双流 40MHz 带宽下,最高物理层速率 是 300Mbps。802.11n 较 802.11g 增加子载波数从 48/52 个到 52/56 个,增加了 4 个数据子 载波,如果信道捆绑为 40MHz 则有 108 (52*2+4=108) 个子载波,其中会利用间隙产生 4 个额外子载波。
802.11ac: 2014 年,称为 WiFi5。5GHz,2.4G 还是用的 802.11n;物理层技术:MIMO, OFDM, 最高 256QAM 调制,最高 8 条空间流,最大 160MHz 带宽。常用的双流 80MHz 带宽下,最 高物理层速率是 866Mbps
802.11ax: 2018 年,称为 WiFi6。物理层技术:MIMO, OFDM, OFDMA,最高 1024QAM 调 制,最高 8 条空间流,最大 160MHz 带宽。常用的双流 80MHz 带宽下,最高物理层速率是 1201Mbps。
物理层:
频率:
2.4 GHz: 2.412 GHz to 2.484 GHz
相邻信道中心频点间隔 5MHz,相邻的多个信道存在频率重叠,相互不干扰的信道有三 组(1、6、11 或 2、7、12 或 3、8、13)共划分 14 个信道,中国可用 13 个信道(1-13), 美国可用 11 个信道(1-11)。参考 WiFi 802.11 协商速率信道有效带宽 20MHz,实际带宽 22MHz,其中 2MHz 为隔离频带。一个信道一共 64 个子载波,每个子载波 312.5kHz,12 个 子载波是保护间隔,52 **个子载波(**48 **个数据,**4 **个导频)**用于实际数据传输。Wifi6 中进一 步划分信道为子信道,每个子载波 78.125kHz,一个信道就存在 256 个子载波。
子载波序号 | 类型 | 说明 |
---|---|---|
-32 ~ -27 | 保护间隔 | 左侧保护带,防止信道间干扰 |
-26 ~ -1 | 数据子载波 | 26 个子载波,用于传输数据 |
-21, -7, 7, 21 | 导频子载波 | 用于信道估计和校准(固定位置) |
1 ~ 26 | 数据子载波 | 26 个子载波,用于传输数据 |
27 ~ 31 | 保护间隔 | 右侧保护带,防止信道间干扰 |
0 | 直流子载波 | 不用于传输,用于直流偏置(DC Null) |
5 GHz: 5.15 GHz to 5.825 GHz
5GWIFI 频段共 201 个信道,间隔 5MHz,由于频率重合,只有少数信道可以使用。在 中国,只有 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165 这 13 个信道可以供 5G 的 wifi 网络使用。信道划分和 2.4GHz 一样。
信道编号 | 频段 | 中心频率(MHz) |
---|---|---|
36 | 5G | 5180 |
40 | 5G | 5200 |
44 | 5G | 5220 |
48 | 5G | 5240 |
52 | 5G | 5260 |
56 | 5G | 5280 |
60 | 5G | 5300 |
64 | 5G | 5320 |
149 | 5G | 5745 |
153 | 5G | 5765 |
157 | 5G | 5785 |
161 | 5G | 5805 |
165 | 5G | 5825 |
6 GHz: 5.925 GHz to 7.125 GHz
共计 1200MHz 频谱。它可以通过信道绑定成 3 个 320MHz 信道、7 个 160MHz 信道、14 个 80MHz 信道或者是 29 个40MHz 信道。如果不绑定直接使用,它提供了 59 个 20MHz 信道
数据子载波数 x 每个符号传输比特数 x 载波编码率 x 符号速率 = 最大理论速率
3.2us(OFDM数据传输时间,1/312.5)+0.8(long GI)/0.4(short GI)=符号持续时间。倒数即是符号速率,802.11g时+0.8=0.4us,即250k的符号速率。
802.11n则是+0.4= 277.778k。最大理论速率108(52*2+4) * 6bit(64QAM) * 5/6(FEC) * 277.778 ksps *4(MIMO) = 600Mbps。
802.11ac: 468 (160MHz带宽) * 8bit(256QAM) * 5/6 * 277.778 ksps *4 = 3466.67Mbps
802.11ax: 468 (160MHz带宽) * 8bit(256QAM) * 5/6 * 277.778 ksps *4 = 3466.67Mbps
物理层帧格式:
这里的PSDU即上节提到的802.11 MAC层封装的报文。PHY层在MAC层报文基础上,继续添加PHY层的报头。然后按照物理层协议定义,添加前导码,并映射到OFDM symbol。最后将这些符号调制到电磁波上,通过射频天线系统发射到空口媒介中去。
物理层协议演进:
802.11, DSSS, 1Mbps 2Mbps
802.11b, HR/DSSS, 5.5Mbps, 11Mbps
802.11a/g, OFDM, 64QAM
802.11n, OFDM, 40MHz, MIMO, 64QAM
802.11ac, OFDM, 160MHz, MU-MIMO, 256QAM
802.11ax, OFDMA, 160MHz, 1024QAM
速率表:
物理层协议定义不同的MCS(Modulation and Coding Scheme,调制解调策略),每一个MCS会对应一个物理层速率。不同的MCS对信号质量和信噪比的要求不同,越高阶的MCS对环境的要求越高,同时物理层速率也越高。
802.11n
802.11ac
802.11ax
MAC 层:
帧格式:
每个 MAC 帧都包含以下几部分:
-
- 一个 MAC 帧头
-
- 一个可变长度的帧体,包含特定于帧类型或子类型的信息
-
- 一个帧校验序列,简写为 FCS,包含一个 32bit 的 CRC
帧:
- Frame Control (帧控制):Frame Control 字段位于帧的开头,用于定义帧的类型、子类 型、协议版本、帧方向、以及一些控制标志。
- Duration/ID (持续时间/标识符):该字段用于指定网络中其他节点的 NAV (网络分配向 量)计时器,用于控制介质访问。
- Address1 (地址 1):常表示帧的接收者 MAC 地址。在 To DS 为 1 的情况下,表示 目标 AP 的地址
- Address2 (地址 2):通常表示帧的发送者 MAC 地址。
- Address3 (地址 3):根据帧类型的不同,这个字段可以表示不同的地址
- Sequence Control (序列控制):该字段用于帧的序列控制和片段管理
- Address4 (地址 4):无线分布式系统) 或中继的情况下使用。通常用于表示源或目标地 址。
- Frame Body (帧体):包含实际的数据负载或管理信息。根据帧的类型和子类型,该字 段的内容和长度可以不同。
- FCS (Frame Check Sequence,帧校验序列):用于帧的错误检测。通常是一个 32 位的 CRC 校验码,用于验证帧的完整性。
1. Frame control:802.11 协议定义了三种帧类型(Type):控制帧、管理帧和数据帧。常 用的帧类型如下表所示:
管理帧:
Type value B3 B2 | Type description | Subtype B7 B6 B5 B4 | Subtype description |
---|---|---|---|
00 | Management | 0000 | Association Request |
00 | Management | 0001 | Association |
00 | Management | 0100 | Probe Prequest |
00 | Management | 0101 | Probe Response |
00 | Management | 1000 | Beacon |
00 | Management | 1010 | Disassociation |
00 | Management | 1011 | Authentication |
00 | Management | 1100 | Deauthentication |
00 | Management | 1101 | Action |
控制帧:
Type value
B3 B2 | Type description | Subtype B7 B6 B5 B4 | Subtype description |
---|---|---|---|
01 | Control | 1000 | Block Ack Request |
01 | Control | 1001 | Block Ack |
01 | Control | 1011 | RTS |
01 | Control | 1100 | CTS |
01 | Control | 1101 | Ack |
数据帧:
Type value
B3 B2 | Type description | Subtype B7 B6 B5 B4 | Subtype description |
---|---|---|---|
10 | Data | 0000 | Data |
10 | Data | 0100 | Null Data |
10 | Data | 1000 | QoS Data |
10 | Data | 1100 | QoS Null Data |
(d) To DS (发送到分布式系统) [第8位]
指示该帧是否发送到分布式系统 (即无线接入点AP)
取值:
0:帧不是发送到 DS (通常是 STA 发送给 AP 的帧)
1:帧是发送到 DS (通常是 AP 发送给 STA 的帧)
(e) From DS (来自分布式系统) [第9位]
指示该帧是否来自分布式系统。
取值:
0:帧不是来自 DS (通常是 AP 发送给 STA 的帧) 1:帧是来自 DS (通常是 STA 发送给 AP 的帧)
(f) More Fragments (更多片段) [第10位]
指示当前帧是否有更多的片段。如果一个数据帧被分片发送,那么除最后一个片段外,所有片段的此位都置为1。
取值: 0:这是最后一个片段; 1:后续还有片段
(g) Retry (重传) [第11位]
指示当前帧是否为重传帧。如果之前发送的帧没有被正确确认,帧会被重传,此位会置为1。
取值: 0:首次发送; 1:重传帧
(h) Power Management (电源管理) [第12位]
指示站点的电源管理状态。
取值:0:站点处于活动模式; 1:站点处于省电模式
(i) More Data (更多数据) [第13位]
由AP设置,用于指示站点是否有更多的数据帧等待接收。
取值: 0:没有更多数据;1:有更多数据
(j) Protected Frame (保护帧) [第14位]
指示帧的内容是否加密,使用的是 WEP、TKIP、CCMP 等加密协议。
取值:0:帧未加密; 1:帧已加密
(k) Order (顺序) [第15位]
指示该帧是否以严格顺序处理,通常用于 QoS 数据帧。
取值:0:不需要严格顺序处理; 1:需要严格顺序处理
2. Duration/ID (持续时间/标识符)
Duration/ID 字段的功能因帧的类型和上下文而异,主要有以下两种主要用途:网络分配向量 (NAV)持续时间 和 AID (Association ID)
(a) 网络分配向量 (NAV)持续时间
对于大多数数据帧和管理帧,Duration/ID字段表示剩余的帧传输时间。它告诉网络中的其他设备该帧将占用通信介质多长时间,从而更新它们的网络分配向量 (NAV)。NAV是一个计时器,指示设备在特定时间内不应访问通信介质,避免冲突。
单位:微秒 (µs)
数据帧: Duration/ID 字段表示从当前帧开始,到ACK帧结束所需的时间。这包括数据帧传输时间、SIFS (短帧间隙)时间和ACK传输时间。
RTS/CTS帧 在RTS (Request to Send) 和 CTS (Clear to Send) 帧中,Duration/ID 字段表示整个传输会话的剩余时间,包括数据帧和相应的ACK帧传输。
(b) AID (Association ID)
在某些帧 (如 Power Save Poll 帧)中,Duration/ID 字段包含的是站点的 Association ID (AID),这是一个由接入点 (AP) 分配给每个关联站点的唯一标识符。当字段被用于此目的时,字段的高两位通常设置为 11 以表示 AID,而剩余的14位表示实际的 AID 值。
3. Sequence Control (序列控制)
Sequence Control 字段分为两个部分: Fragment Number (片段号):4位 和 Sequence Number (序列号):12位
(a) Fragment Number (片段号) [4位]
片段号用于标识帧的分片部分。由于无线传输可能会受到干扰,大型帧在传输前可能会被分割成多个小片段,每个片段都有唯一的片段号
取值范围:0 到 15 (即2^4 - 1)
Fragment Number 的主要功能
片段管理: 当一个帧被分片时,片段号用于标识每个片段的顺序,以便接收端正确重组原始帧。
重传管理:在某些情况下,如果一个片段由于传输错误而丢失,只有丢失的片段需要重传,而不是整个帧。片段号帮助识别需要重传的具体片段。
(b) Sequence Number (序列号) [12位]
序列号用于标识发送方发出的帧的顺序,以便接收方能够检测丢失的帧并正确重组数据。
取值范围:0 到 4095 (即2^12 - 1)
Sequence Number 主要功能:
帧顺序管理:序列号帮助接收端按正确的顺序排列接收到的帧。如果接收到的帧序列号不连续,说明有帧丢失或需要重传。
重传检测:当帧重传时,序列号保持不变,但片段号可能变化。接收方通过序列号识别重传的帧,并决定是否丢弃或处理该帧
© 工作原理
分片传输: 当一个大数据帧被分片时,所有片段使用相同的序列号,但片段号递增。例如,假设序列号为100,片段号为 0,表示第一个片段;片段号为 1,表示第二个片段,依此类推。
帧重传: 如果帧在传输过程中丢失或被接收端判断为错误,发送端会重传该帧。重传帧的序列号与原帧相同,但片段号可能发生变化,具体取决于传输的片段。
4. 管理帧举例
Beacon 帧:
Frame Control (帧控制):类型字段为管理帧,子类型字段为 Beacon
Duration/ID (持续时间/ID) 表示帧传输需要的时间,Beacon 帧一般设为 0,表明没有后续 操作需要保留介质。
Address 1 (Destination Address,目的地址) :通常设置为广播地址 (FF:FF:FF:FF:FF),因为 Beacon 帧是广播帧,面向所有设备。
Address 2 (Source Address,源地址):AP 的 MAC 地址,标识发送 Beacon 帧的无线接入点。 Address 3 (BSSID,基本服务集标识符): 网络的 BSSID,通常与 Address 2 相同,除非是中继 的场景。
Sequence Control (序列控制): 包含序列号和片段号,用于管理帧的顺序和重组。 Frame Body (帧主体) :Beacon 帧的主要内容,包含网络的配置信息和时间同步信息。以下 是 Frame Body 中的关键字段:
Timestamp (时间戳):用于同步客户端设备的时钟。
Beacon Interval (信标间隔):AP 发送 Beacon 帧的时间间隔,单位为 TU (Time Unit,1TU = 1024 微秒)。
Capability Information (能力信息):描述 AP 支持的功能,如是否启用加密、是否为基础设 施模式等。
SSID (服务集标识符):网络的名称,帮助客户端识别网络。
Supported Rates (支持的速率):AP 支持的数据速率列表。
DS Parameter Set (DS 参数集):指示使用的信道号。
Traffic Indication Map (TIM,流量指示图):用于指示 AP 暂存的数据包,尤其在节能模式 下,告诉客户端何时需要唤醒以接收数据。
**Country Information (国家信息):包括地区、信道等限制信息 (可选)。
RSN Information (RSN 信息):如果网络启用了加密 (如 WPA/WPA2),此字段包含安全信 息。
Association Request 帧
Association Request 帧是 802.11 无线 WiFi 网中用于建立客户端设备(例如笔记本电脑、智 能手机等)与无线接入点 (AP) 之间连接的管理帧之一。
帧体 :
Frame Control (帧控制) :类型字段为管理帧 (00)子类型字段为 Association Request (0000)。 Duration/ID (持续时间/ID):指定传输此帧所需的时间,或包含关联 ID。
Address 1 (目的地址) 目标 AP 的 MAC 地址 (即接收地址)。
Address 2 (源地址) 发送 Association Request 的客户端设备的 MAC 地址。
Address 3 (BSSID,基本服务集标识符) 目标网络的 BSSID,通常与 Address 1 相同。 Sequence Control (序列控制) :包含帧的序列号和片段号,用于管理帧的顺序和重组。 Frame Body (帧主体) Association Request 帧的核心部分,包含客户端设备的能力和配置参 数。帧主体包含以下子字段:
- Capability Information (能力信息) 描述客户端设备的能力,如是否支持加密、短前导 码、QoS、功率管理等功能。
- Listen Interval (侦听间隔) 客户端设备与 A P 通信时的间隔,表示客户端设备多长时 间侦听一次信标帧。值越小,客户端越频繁地检查 AP 发送的信标,消耗的功率越 大。
- SSID (服务集标识符) 客户端设备请求加入的无线网络的 SSID (网络名称)。如果客户 端设备明确指定要加入哪个网络,就会包含这个字段。
- Supported Rates (支持的速率) 客户端设备支持的数据传输速率列表。AP 会根据这 个列表判断是否可以支持客户端的请求,并选择最佳传输速率。
- Extended Supported Rates (扩展支持速率) 如果客户端设备支持的速率超过了 8 个, 则会使用这个字段来传递更多速率信息。
- RSN Information (RSN 信息) 如果网络启用了 WPA/WPA2 加密,客户端会在这个字 段中发送其支持的安全功能和加密方法。
- Power Capability (功率能力) 客户端设备的最小和最大传输功率,通常在需要节能或 具有特定功率要求的设备中使用。
- Supported Channels (支持的信道) 客户端设备支持的信道范围,用于 AP 选择适当 的信道进行通信。
- Vendor Specific (厂商特定) 一些厂商特有的扩展字段,允许客户端和 AP 传递特定 于设备的附加信息。
加入网络:客户端设备使用 Association Reques t 帧请求加入一个 AP 管理的无线网络。 传递客户端能力:帧中包含了客户端设备的能力信息,例如支持的速率、加密方法、QoS 功 能等。
获取网络资源:通过关联请求,客户端能够获取到网络分配的资源,例如 IP 地址、网络权 限等
Association Response:
Frame Control (帧控制) 类型字段为管理帧 (00) 子类型字段为 Association Response (0001) 。
Duration/ID (持续时间/ID) 指定传输此帧所需的时间,或包含关联 ID。
Address 1 (目的地址) 发送关联请求的客户端设备的 MAC 地址 (即接收地址) 。
Address 2 (源地址) AP的MAC地址,表示发送该响应帧的设备。
Address 3 (BSSID,基本服务集标识符) 网络的 BSSID,通常与 Address 2 相同。
Sequence Control (序列控制) 包含帧的序列号和片段号,用于管理帧的顺序和重组。
Frame Body (帧主体) Association Response 帧的核心部分,包含关联结果和配置参数。以下是 Frame Body 中的关键字
- Capability Information (能力信息) 描述 AP 的能力,如支持的加密方法、短前导码、 QoS、功率管理等功能。这个字段的内容与 Association Request 帧中的 Capability Information 字段相似,但由 AP 决定。
- Status Code (状态码) 指示关联请求的处理结果。常见的状态码包括:0 (成功) :关 联请求成功。1-65535 (失败原因) :如资源不足、AP 不支持客户端请求的功能、认 证失败等。
- Association ID (AID,关联 ID) 如果关联成功,AP 为客户端设备分配一个唯一的关联 ID (AID) 。AID 是一个用于标识客户端设备的短标识符,在 AP 和客户端之间进行 通信时很常用,尤其是在节能模式下。
- Supported Rates (支持的速率) AP 支持的数据传输速率列表,通常包含在响应帧中 以确认客户端设备和 AP 之间的速率匹配。
- HT Capabilities (高吞吐量能力,可选) 如果 AP 支持 802.11n 或更高标准 (如 802.11ac) ,可能会包含这个字段来描述 AP 的高吞吐量能力。
确认关联请求:AP 通过 Association Response 帧确认客户端设备的关联请求。
提供关联状态:该帧告知客户端设备其关联请求的结果 (成功或失败) ,如果失败,还会提 供失败的原因。
分配资源:如果关联成功,AP 会为客户端设备分配一个关联 ID (AID) ,并可能提供其他必 要的网络参数。
ACK:
Frame Control(帧控制):类型字段:管理帧(01)子类型字段:确认帧(1101)
Duration/ID(持续时间/ID): 指定传输此帧所需的时间,或包含关联 ID。
Address 1(目的地址):目的地址是发送该数据帧的 接收者 的 MAC 地址。通常是接收到数据帧后需要确认的设备的地址(如客户端设备或AP)。
Address 2(源地址):
源地址是发送确认帧的设备的 MAC 地址,通常是接收数据帧并需要发送确认帧的设备(如AP或客户端设备)。
Address 3(BSSID,基本服务集标识符):
Sequence Control(序列控制):Sequence Control 字段包括序列号和片段号,主要用于管理帧的顺序和重组。在 ACK 帧中,这个字段是用于标识与被确认的数据帧的对应关系。
Frame Body(帧主体):
ACK 帧的 Frame Body 通常为空。它没有携带数据内容,只有一个简单的 确认 信息。
确认接收:当设备成功接收到数据帧或管理帧后,发送 ACK 帧以告知发送方帧已被接收。
减少重传 :通过及时确认接收,ACK 帧帮助减少不必要的重传,优化网络效率。
保障可靠性:ACK 机制是 802.11 协议提供可靠数据传输的重要部分,确保发送方知道数据是否成功到达。
连接过程:
开放网络连接过程(不需要密码)
1 扫描
站点通过发送 probe request 帧或者监听 AP Beacon 帧的方式来扫描到 AP;
AP 会周期性的广播 Beacon 帧并回复 probe response 帧来周知自己的存在。
2 认证
通过两帧 authentication 帧完成认证握手。
3 关联
通过 association request 和 association response 帧完成关联握手。
WPA-PSK 加密连接过程
WPA-PSK 加密连接过程是在上文开放网络连接过程的基础上,通过 WPA 四次握手,协商出 秘钥。之后的数据帧通信都由协商出来的密钥加密。
CSI 信息:
MIMO -OFDM 数据帧结构如图 2-1 所示,由短训练字段、长训练字段、信令字段、 数据字段等部分组成, 短训练字段和长训练字段共同构成前导码。短训练字段包括 10 个相 同长度码元(t1-t10) , 用于帧检测、粗略频率偏移估计、时间同步以及自动增益控制设 置。短训练字段后面是用于更精确频率偏移估计和时间同步的长训练字段, 由两个保护间 隔(GI2) 和两个长训练码元(T1和T2 ) 组成。每个长训练码元包含 64 个比特,保 护间隔一般为当前长训练码元的后半部分构成。长训练字段后面依次包含分组速率和长度信 息的信令字段以及由服务比特、数据比特和尾部填充比特组成的数据字段
长训练字段的另外一项主要作用是用于信道估计。Wi-Fi 发射机(Transmitter, Tx)发送 的两个长训练码元是相同且已知的频率序列经过 64 点逆快速傅里叶变换(Inverse Fast Fourier Transform, IFFT)获得,且当子载波位置范围标记为 {−32, −31, …, −1, 0, 1, …, 31, 32} 时,载有长训练码元的子载波集中在 {−26, −25, …, −1, 0, 1, …, 25, 26} 范围内。接收 机(Receiver, Rx)从长训练字段提取出两个长训练码元接收信号,分别对每个长训练码进行 一个 FFT 运算提取该码元在子载波上的频率响应,然后将来自第一个长训练码元子载波频 率响应与来自第二个长训练码元子载波频率响应作平均减小噪声。Hk 为 CSI,为所有多径传 播信号信道频率响应在载波频率 fk 和采样时间 t 上的线性叠加。
测、粗略频率偏移估计、时间同步以及自动增益控制设 置。短训练字段后面是用于更精确频率偏移估计和时间同步的长训练字段, 由两个保护间 隔(GI2) 和两个长训练码元(T1和T2 ) 组成。每个长训练码元包含 64 个比特,保 护间隔一般为当前长训练码元的后半部分构成。长训练字段后面依次包含分组速率和长度信 息的信令字段以及由服务比特、数据比特和尾部填充比特组成的数据字段
长训练字段的另外一项主要作用是用于信道估计。Wi-Fi 发射机(Transmitter, Tx)发送 的两个长训练码元是相同且已知的频率序列经过 64 点逆快速傅里叶变换(Inverse Fast Fourier Transform, IFFT)获得,且当子载波位置范围标记为 {−32, −31, …, −1, 0, 1, …, 31, 32} 时,载有长训练码元的子载波集中在 {−26, −25, …, −1, 0, 1, …, 25, 26} 范围内。接收 机(Receiver, Rx)从长训练字段提取出两个长训练码元接收信号,分别对每个长训练码进行 一个 FFT 运算提取该码元在子载波上的频率响应,然后将来自第一个长训练码元子载波频 率响应与来自第二个长训练码元子载波频率响应作平均减小噪声。Hk 为 CSI,为所有多径传 播信号信道频率响应在载波频率 fk 和采样时间 t 上的线性叠加。