liwen01 2024.09.22
前言
前面介绍了 WiFi 的工作原理和 WiFi 的接入过程,这里将通过分析 WiFi 具体数据包结构,让你对 WiFi 工作原理和接入过程有一个更进一步的了解。
前面文章可以通过下面连接查看:
《WiFi基础(四):WiFi工作原理及WiFi接入过程》
(一) 802.11 帧
802.11 无线 WiFi 有 数据帧,管理帧、控制帧 三种类型帧。
这些帧由 9 个部分组成:Frame Control,Duration ID,Address1,Address2,Address3,Seq-ctl,Address4,Frame Body,FCS。
需要注意的是,有些组成部分在有些帧里并不是必须的。
九个部分的功能简介如下:
- 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 (帧控制)
(a) Protocol Version (协议版本) [第0-1位]
指定协议的版本号。当前的 802.11 标准使用版本号 00,即 0。
(b) Type (帧类型) [第2-3位] :
定义帧的主要类型。
- 00:管理帧 (Management Frame)
- 01:控制帧 (Control Frame)
- 10:数据帧 (Data Frame)
- 11:保留
(c) Subtype (子类型) [第4-7位]
定义帧的子类型,不同的主类型有不同的子类型
对于管理帧:
- 0000:Association Request
- 0001:Association Response
- 1000:Beacon
对于控制帧:
- 1101:ACK
- 1011:RTS (Request to Send)
- 1101:CTS (Clear to Send)
对于数据帧:
- 0000:数据帧 (无数据类型区分)
- 1000:QoS 数据帧
(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:需要严格顺序处理
上面 802.11 Beacon frame 帧,版本号为 0;帧类型为 00 为管理帧;子类型为1000 为Beacon 帧。
(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 值。
上面的 CTS 帧,Duration 为 134 ms,表示该传输会持续134 ms,在这期间同信道的其它设备需要保持安静。
(3)Sequence Control (序列控制)
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 主要功能:
帧顺序管理:序列号帮助接收端按正确的顺序排列接收到的帧。如果接收到的帧序列号不连续,说明有帧丢失或需要重传。
重传检测:当帧重传时,序列号保持不变,但片段号可能变化。接收方通过序列号识别重传的帧,并决定是否丢弃或处理该帧
(c) 工作原理
分片传输: 当一个大数据帧被分片时,所有片段使用相同的序列号,但片段号递增。例如,假设序列号为100,片段号为 0,表示第一个片段;片段号为 1,表示第二个片段,依此类推。
帧重传: 如果帧在传输过程中丢失或被接收端判断为错误,发送端会重传该帧。重传帧的序列号与原帧相同,但片段号可能发生变化,具体取决于传输的片段。
查看上面的数据帧,被分开了多个数据帧,当前 Sequence Number 为 1144 。
(二) 无线空口包
WiFi 是通过无线电报在空中进行数据交互,所以称为空中接口包(Air Interface Packet),也简称为空口包。它包含了无线 WiFi 网中传输的所有信息。
(1) 空口包 capture
在有线网中,我们一般使用 Wireshark 来抓取网卡的所有数据,但是在无线 WiFi 中,无线口空包数据一般使用 Omnipeek 来抓取。
Omnipeek 需要搭配一个数据分析网卡来使用,可以在不建立链接的前提下,直接抓取到 802.11 无线数据,一般用于研究开发 WiFi 协议、分析无线连接过程、监控无线网络等。
关于 Omnipeek 的使用,网上介绍比较多,我这里就简单概括一下使用方法。
- 安装 Omnipeek 软件和驱动
- 设置 Omnipeek 需要抓取的频段(信道)
- 如果 AP 是加密的的,需要设置密码
通过上面方式就可以抓取到某个信道的所有无线信号,具体使用与 Wireshark 类似。抓取到的数据帧如下:
(三) 管理帧
管理帧有:Beacon 信标帧、Probe Request 检测请求帧、Probe Response 检测应答帧、Authentication 认证帧、De-Authentication 解除认证帧、Association Request 连接请求帧、Re-Association Request 重新连接请求、Association Response 连接应答帧
这里我们主要介绍:Beacon 信标帧、Association Request 连接请求帧 和 Association Response 连接应答帧。
(1) Beacon 帧
Beacon 的 Subtype 为1000,所以整个帧类型为:001000b,也就是 0x08。
使用过滤条件为:wlan.fc.type_subtype == 0x08
可以刷选出所有的 beacon 帧。
Beacon 由无线接入点 (AP)定期广播,用于宣布无线网络的存在,并向附近的客户端设备提供必要的网络信息,以便它们能够加入和管理连接。
(a) Beacon帧的功能:
网络发现:Beacon 帧包含了无线网络的SSID (Service Set Identifier),帮助客户端设备发现和识别无线网络。
同步:Beacon 帧携带时间戳,客户端设备通过接收 Beacon 帧可以同步其时钟与AP的时钟,这对于协调设备的定时和节能至关重要。
传递网络配置信息:Beacon 帧包含网络的配置信息,如支持的速率、加密方法、信道信息等,帮助客户端设备配置和优化其连接。
信号广播:Beacon 帧还帮助客户端设备确定信号强度,从而选择合适的 AP 进行连接。
(b) Beacon帧的工作原理
定期广播: AP按照设定的 Beacon 间隔 (通常为100 TU,即102.4毫秒)定期发送Beacon帧,以宣布其存在和提供网络信息。
客户端扫描: 无线客户端设备定期扫描信道,接收不同 AP 发送的 Beacon 帧,通过这些帧中的信息来选择合适的 A P进行连接。
网络加入和管理: 客户端设备一旦选择了合适的 AP,便通过 Beacon 帧中的信息来配置连接参数,例如信道、速率、加密方法等。
节能管理: 当设备进入节能模式时,它会依赖 Beacon 帧中的 TIM 字段来判断何时需要唤醒接收数据,减少不必要的能耗。
(c) 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),此字段包含安全信息。
(2)Association Request 帧
Association Request 帧是802.11无线WiFi网中用于建立客户端设备(例如笔记本电脑、智能手机等)与无线接入点 (AP) 之间连接的管理帧之一。
这个帧由客户端设备在选择了一个 AP 后发出,表示它希望加入这个无线网络。
使用参数 wlan.fc.type_subtype == 0x00
可以过滤出所有的 Association Request 帧
(a) Association Request 帧的功能
加入网络:客户端设备使用 Association Reques t帧请求加入一个 AP 管理的无线网络。
传递客户端能力:帧中包含了客户端设备的能力信息,例如支持的速率、加密方法、QoS 功能等。
获取网络资源:通过关联请求,客户端能够获取到网络分配的资源,例如 IP 地址、网络权限等
(b) Association Request 帧的工作原理
扫描与发现: 客户端设备通过主动或被动扫描(如发送探测请求帧或接收信标帧)发现可用的 AP。
发送关联请求: 在选择目标 AP 后,客户端设备发送 Association Request 帧给AP,请求加入网络。
AP处理请求: AP 收到请求后,会检查客户端设备的能力和配置是否与网络兼容,并确定是否允许其加入。
发送关联响应:如果 AP 同意请求,它将返回一个 Association Response 帧,指示关联的成功与否,并分配一个关联 ID (AID)。如果不成功,AP 会给出拒绝原因。
建立连接: 关联成功后,客户端设备和AP之间的连接建立,客户端设备可以开始数据传输。
(c) Association Request 帧的结构
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 传递特定于设备的附加信息。
(3) Association Response 帧
Association Response 由无线接入点 (AP) 在收到客户端设备 (例如笔记本电脑、智能手机等) 发送的 Association Request 帧后,作为响应发出。
这个帧的作用是通知客户端设备其关联请求是否成功,并在成功的情况下分配一个关联 ID (AID) ,允许其加入网络。
使用参数 wlan.fc.type_subtype == 0x01
可以过滤所有的 Association Response 帧
(a) Association Response 帧的功能
确认关联请求:AP 通过 Association Response 帧确认客户端设备的关联请求。
提供关联状态:该帧告知客户端设备其关联请求的结果 (成功或失败) ,如果失败,还会提供失败的原因。
分配资源:如果关联成功,AP会为客户端设备分配一个关联 ID (AID) ,并可能提供其他必要的网络参数。
(b) Association Response 帧的工作原理
接收关联请求: AP 首先接收到来自客户端设备的 Association Request 帧。
处理请求: AP 根据自身的能力、当前网络状态、客户端设备的能力信息等因素,决定是否允许客户端设备加入网络。
生成关联响应: AP生成一个 Association Response 帧,其中包含关联请求的结果和相关信息。
发送关联响应: AP 将 Association Response 帧发送回客户端设备。
关联成功:如果请求成功,客户端设备将接收到 AID ,并可以开始正常的数据传输。
关联失败:如果请求失败,客户端设备会接收到一个错误状态码,告知失败的原因,并可能需要重新发送关联请求或进行其他处理。
建立连接:如果关联成功,AP 和客户端设备之间的连接正式建立,客户端可以进行数据传输和进一步的网络交互
(c) 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 的高吞吐量能力。
(四)控制帧
控制帧包括:ACK(应答)、RTS(请求发送)、 CTS(允许发送)、PS-Poll省电模式-轮询帧。
由于这些帧都不带实体部分,所以相对是比较简单的。
(1) ACK 帧
ACK帧 (Acknowledgement Frame) 用于确认接收到的数据帧或管理帧。
这是确保可靠数据传输的重要机制,尤其在无线网络中,因为无线信道易受干扰和数据丢失的影响。ACK帧由接收方发送给发送方,表示已成功接收到数据,无需重传。
(a) ACK 帧的功能
确认接收:当设备成功接收到数据帧或管理帧后,发送 ACK 帧以告知发送方帧已被接收。
减少重传 :通过及时确认接收,ACK 帧帮助减少不必要的重传,优化网络效率。
保障可靠性:ACK 机制是 802.11 协议提供可靠数据传输的重要部分,确保发送方知道数据是否成功到达。
(b) ACK帧的工作原理
发送数据帧: 设备 A 向设备 B 发送数据帧 (如 Data 帧) 。
接收并处理数据帧: 设备 B 接收到数据帧,并检查数据的完整性 (通过 FCS 字段) 。
发送ACK帧: 如果数据帧无误,设备 B 在一个短的时隙 (称为SIFS,Short Interframe Space) 后,向设备 A 发送 ACK 帧。
确认接收: 设备 A 接收到 ACK 帧后,知道设备 B 已成功接收到数据帧,因此可以继续发送下一个数据帧。如果没有收到 ACK 帧,设备 A 会在规定的重传次数内重发数据帧。
(c) ACK 帧的结构
类型字段为控制帧 (01),子类型字段为ACK (1101),通过 wlan.fc.type_subtype == 0x1d
可以筛选出 ACK 帧
(2) RTS 与 CTS 帧
RTS 帧 (Request to Send Frame) 与 CTS 帧 (Clear to Send Frame) 用于解决无线通信中可能发生的信道争用和隐藏节点问题。
RTS 帧通过请求信道占用权,确保发送方可以独占信道进行数据传输,从而减少数据帧的碰撞。
(a) RTS/CTS 帧的功能
避免碰撞:在多个设备共享同一无线信道的环境下,RTS 帧帮助协调设备之间的通信,减少同时发送数据导致的帧碰撞。
解决隐藏节点问题:当两个设备无法直接彼此通信,但都能与 AP 通信时,RTS 帧有助于确保这些设备不会同时发送数据,从而避免信道争用。
控制信道访问:通过RTS/CTS (Clear to Send) 机制,设备可以请求短暂占用信道的权限,确保其数据传输不会受到其他设备的干扰。
(b) RTS/CTS 机制的工作原理
RTS帧与CTS帧 (Clear to Send) 共同工作,形成RTS/CTS机制。这是802.11协议中一种用于解决信道争用和碰撞的问题的协议。其工作步骤如下:
发送 RTS 帧:设备 A 准备发送一个较大的数据帧时,首先向设备 B 发送 RTS 帧,请求占用信道的许可。RTS 帧中包括目的地址 (设备B) 和信道占用时间。
接收 CTS 帧:如果设备B接收到 RTS 帧,并且信道空闲,它会在一个短暂的 SIFS (Short Interframe Space) 后,向设备 A 发送 CTS 帧。CTS 帧中包括允许占用信道的时间。
其他设备等待:在设备 A 和设备 B 进行 RTS/CTS 交换的过程中,其他设备 (能够听到 CTS 帧的设备) 会进入等待状态 (NAV,网络分配向量) ,不占用信道,直至数据传输完成。
发送数据帧:收到 CTS 帧后,设备 A 确认信道已被分配给它,开始向设备 B 发送数据帧。
ACK确认:设备 B 成功接收到数据帧后,发送 ACK 帧确认数据的接收。
(c) RTS/CTS 帧的重要性
解决隐藏节点问题:在无线网络中,隐藏节点是指两个无法彼此直接通信的设备,但它们可以与同一个 AP 通信。RTS/CTS 机制通过要求所有设备在发送数据前先进行 RTS/CTS 交换,确保没有隐藏节点干扰数据传输。
减少碰撞概率:通过 RTS/CTS 机制,设备在传输大型数据帧前先进行握手,确保信道已被预留。这样,大大减少了因为碰撞而重传数据的需求,提高了网络效率。
优化信道使用:虽然 RTS/CTS 机制本身会增加一些控制帧的开销,但在高流量或高干扰环境中,它能有效地减少碰撞,从而提高整体网络的吞吐量和效率
(d) RTS/CTS 帧结构
- RTS 类型字段为控制帧 (01),子类型字段为RTS (1011),整合类型为 0x1b
- CTS 类型字段为控制帧 (01),子类型字段为CTS (1100),整合类型为 0x1c
(3) PS-Poll 帧
PS-Poll帧 (Power Save Poll Frame) 用于设备在省电模式下与接入点 (AP) 通信时,轮询接收缓存的帧。
它的主要目的是帮助处于省电模式的设备高效管理电源,同时确保不会错过重要的数据帧。
(a) PS-Poll 帧的功能
省电模式下的帧获取:当设备处于省电模式时,它会定期进入活动状态,通过发送PS-Poll 帧请求 AP 发送缓存的数据帧。
优化电池使用: 通过减少设备的活动时间,PS-Poll 帧帮助设备在尽可能少消耗电能的情况下获取数据。
信道效率: PS-Poll 帧确保只有在设备准备好接收数据时,AP 才会发送缓存的帧,从而提高了信道的使用效率。
(b) PS-Poll 帧的工作原理
PS-Poll 帧的工作流程涉及设备和AP之间的交互,确保省电模式下的设备能够有效接收数据帧。具体步骤如下:
设备进入省电模式:设备定期进入省电模式,关闭大部分的无线功能以节省电能。
AP 缓存数据帧:当 AP 有数据帧需要发送给处于省电模式的设备时,它会缓存这些帧,并在 Beacon 帧中设置标志,表明有数据帧等待发送。
设备轮询 AP:设备周期性地唤醒,并发送 PS-Poll 帧给 AP,询问是否有数据帧待接收。
AP响应PS-Poll 帧:收到 PS-Poll 帧后,AP 会根据缓存情况,立即发送数据帧。如果有多帧需要发送,AP 会继续缓存剩余的帧,直到设备再次发送 PS-Poll 帧。
设备接收数据帧:设备接收到 AP 发送的帧后,如果 AP 指示还有更多帧待接收,设备可以选择继续轮询或返回省电模式。
(c) PS-Poll 帧的重要性
延长电池寿命:PS-Poll 帧的使用使得设备能够最大限度地减少无线功能的开启时间,从而有效延长电池寿命。
信道占用优化:PS-Poll 机制确保AP只在设备请求时发送数据帧,避免了不必要的信道占用,从而提高了网络效率。
适用于移动设备:在移动设备 (如智能手机和笔记本电脑)中,PS-Poll 帧机制尤其重要,因为这些设备依赖电池供电,电量管理对用户体验至关重要。
(d) PS-Poll 帧结构
类型字段为控制帧 (01),子类型字段为 PS-Poll (1010),整合类型为:0x1a
注意,在 PS-Poll 帧中,Duration 字段通常用来表示设备 ID,以帮助 AP 识别是哪台设备正在轮询帧。所以上面截图的这个 Duration 实际是解析错了,它不是表示时间,而是表示 ID。
结尾
上面内容主要是对 WiFi 的部分控制帧和管理帧做了简单的介绍,如有错误,欢迎评论区提示指出,不胜感激。
下一篇将介绍 WiFi 漫游与路由器的串并联、 Mash、AC+AP 组网相关知识