数据帧概述
IEEE 802.11-2016标准定义了15种数据帧子类型,最常见的两种数据帧是数据子类型(通常称为简单数据帧)和QoS数据子类型。二者的区别在于,QoS数据帧的QoS控制字段携带服务类别信息。简单数据帧有时也称为非QoS数据帧
这两种数据帧的帧体都封装有MSDU净荷(上层信息)。出于数据保密性考虑,MSDU净荷通常经过加密。接入点或无线局域网控制器中的集成服务负责解密数据帧的MSDU净荷,然后取出并转换为802.3以太网帧
对于802.11简单数据帧或QoS数据帧,帧体的最大长度由MSDU的最大长度(2304字节以及加密产生的开销决定。以802.11数据帧的帧体为例,WEP加密会产生8字节开销,TKIP加密会产生20字节开销,而CCMP加密会产生16字节开销
15种数据帧子类型中的大多数其实并不存在。在IEEE 802.11-2016标准定义的15种数据帧中,有11种目前仅停留在纸面上。全部15种数据帧子类型如下所示(由于所有PCF或HCCA数据帧实际上从未使用过,因此主要关注普通数据帧数据帧、空数据帧、Qos数据帧、Qos空帧子类型即可
类型(Type)字段
| 比特值 | 帧类型 | 作用 |
|---|---|---|
00 | 管理帧 | 发现接入点并加入基本服务集 |
01 | 控制帧 | 确认传输成功并保留无线介质 |
10 | 数据帧 | 携带上层MSDU净荷 |
11 | 扩展帧 | 一种新的、灵活的帧格式 |
数据帧帧子类型(Subtype)字段
| 比特值 | 帧类型 | 作用 |
|---|---|---|
0000 | 普通数据帧(Data(simple data frame)) | 携带上层协议数据(如IP包),使用DCF(分布式协调)机制传输,无QoS支持(适用于802.11a/b/g) |
0001 | 数据 + 无竞争确认(Data +CF-Ack) | 在PCF(点协调功能) 模式下,既传输数据,又对前一个帧进行确认(CF-Ack)。现代Wi-Fi几乎不用PCF |
0010 | 数据 + 无竞争轮询(Data +CF-Poll) | 在PCF模式下,AP发送此帧表示“我有数据发给你,同时轮询你是否有数据要发” |
0011 | 数据 + 确认 + 轮询(Data +CF-Ack +CF-Poll) | 同时完成三项功能:传数据、确认前帧、轮询STA。仅用于已废弃的PCF模式 |
0100 | 空数据帧(无负载)(Null(no data)) | 不携带任何上层数据,但用于维持关联状态(如省电模式下告知AP“我还在线”),或触发响应(如漫游探测) |
0101 | 无竞争确认(无数据)(CF-Ack(no data)) | 仅用于PCF模式下的确认,无数据负载 |
0110 | 无竞争轮询(无数据)(CF-Poll(no data)) | AP在PCF周期中轮询STA是否有数据要发送 |
0111 | 确认 + 轮询(无数据)(CF-Ack +CF-Poll(no data)) | PCF模式下组合操作,无数据 |
1000 | QoS数据帧(QoS Data) | 最常用的数据帧类型(802.11e及以后)。携带上层数据,并包含QoS控制字段(如TID、EOSP、ACK policy),支持WMM、语音/视频优先级、A-MPDU聚合等 |
1001 | QoS数据 + 确认(QoS Data +CF-Ack) | 理论上存在,但因PCF已弃用,实际几乎不会出现 |
1010 | QoS数据 + 轮询(QoS Data +CF-Poll) | 同上,仅在PCF + QoS混合场景(极罕见) |
1011 | QoS数据 + 确认 + 轮询(QoS Data +CF-Ack +CF-Poll) | 同上,基本不用 |
1100 | QoS空帧(QoS Null(no data)) | 不携带数据,但包含QoS信息。常用于: • 客户端进入/退出省电模式(通过EOSP位) • 触发AP发送缓存帧 • 保持关联并声明流量类别(如VoIP流保活) |
1101 | 保留(Reserved) | 未使用 |
1110 | QoS轮询(无数据)(QoS CF-Poll(no data)) | 理论存在,实际不用(PCF已淘汰) |
1111 | QoS确认+轮询(无数据)(QoS CF-Ack +CF-Poll(no data)) | 同上,废弃 |
笔者注
由于PCF机制的淘汰,目前实际使用的数据帧类型只有Qos数据帧、Qos空帧、普通数据帧、空数据帧这几种,本文只针对这部分数据帧进行讨论
Qos字段
Qos控制字段(QoS Control)
非DMG PPDU中QoS Control
笔者注:QoS Control field详情见IEEE 802.11-2016文档9.2.4.5
QoS Control字段是一个16位的字段,用于标识该帧所属的业务类别(TC)或业务流(TS),以及与QoS、A-MSDU和Mesh相关的其他信息;这些信息的具体内容会因帧类型、子类型以及发送STA的类型而异
当子类型(Subtype)字段中的QoS子字段等于1时,所有数据帧中均包含QoS控制字段。 在非DMG PPDU中传输时,每个QoS控制字段由五个或八个子字段组成,具体结构取决于发送方(HC或非AP STA)以及帧的类型和子类型
| Applicable frame (sub)types | Bits 0-3 | Bit 4 | Bits 5-6 | Bit 7 | Bits 8 | Bit 9 | Bit 10 | Bits 11- 15 |
|---|---|---|---|---|---|---|---|---|
QoS CF-Poll and QoS CF- Ack+CF-Poll frames sent by HC | TID | EOSP | Ack Policy | Reserved | TXOP Limit | |||
QoS Data+CF-Poll and QoS Data+CF-Ack+CF- Poll frames sent by HC | TID | EOSP | Ack Policy | A-MSDU Present | TXOPLimit | |||
QoS Data and QoS Data +CF-Ack frames sent by HC | TID | EOSP | Ack Policy | A-MSDU Present | AP PS Buffer State | |||
QoS Null frames sent by HC | TID | EOSP | Ack Policy | Reserved | AP PS Buffer State | |||
QoS Data and QoS Data +CF-Ack frames sent by non-APSTAs that are not a TPU buffer STA or a TPU sleep STA in a nonmesh BSS | TID | 0 | Ack Policy | A-MSDU Present | TXOP Duration Requested | |||
TID | 1 | Ack Policy | A-MSDU Present | Queue Size | ||||
QoS Null frames sent by non-AP STAs that are not a TPU buffer STA or a TPU sleep STA in a nonmesh BSS | TID | 0 | Ack Policy | Reserved | TXOP Duration Requested | |||
TID | 1 | Ack Policy | Reserved | Queue Size | ||||
QoS Data and QoS Data +CF-Ack frames sent by TPU buffer STAs in a nonmesh BSS | TID | EOSP | Ack Policy | A-MSDU Present | Reserved | |||
QoS Null frames sent by TPU buffer STAs in a nonmesh BSS | TID | EOSP | Ack Policy | Reserved | Reserved | |||
QoS Data and QoS Data +CF-Ack frames sent by TPU sleep STAs in a nonmesh BSS | TID | Reserved | Ack Policy | A-MSDU Present | Reserved | |||
QoS Null frames sent by TPU sleep STAs in a nonmesh BSS | TID | Reserved | Ack Policy | Reserved | Reserved | |||
All frames sent by mesh STAs in a mesh BSS | TID | EOSP | Ack Policy | A-MSDU Present | Mesh Control Present | Mesh Power Save Level | RSPI | Reserved |
TID子字段:TID子字段用于标识帧体(Frame Body)字段中对应的MSDU(或其分片)或A-MSDU所属的业务类别(TC)或业务流(TS)。此外,当通过设置“请求的TXOP时长”(TXOP duration requested)或“队列大小”(queue size)来请求TXOP时,TID子字段也用于标识所请求TXOP的业务所属的TC或TS
EOSP子字段:EOSP子字段长度为1位,由混合协调器(HC)用于指示当前服务周期(SP)的结束,或由DMG STA用于指示当前SP的结束,或指示目的地AID为单播地址的当前分配CBAP(信道时间分配)的结束
Ack Policy子字段:Ack Policy(确认策略)子字段长度为2位,用于标识在成功传输MPDU后所遵循的确认策略
TXOP Limit子字段:TXOP Limit(TXOP限制)子字段是一个8位的字段,出现在子类型包含CFPoll的QoS数据帧中,用于指定在基础结构型BSS中由混合协调器(HC)通过QoS (+)CF-Poll帧所授予的TXOP(传输机会)的时间上限
Queue Size子字段:Queue Size(队列大小)子字段是一个8位的字段,用于指示发送该帧的STA在指定业务类别(TC)或业务流(TS)下所缓存的流量总量。该子字段出现在由非AP STA发送、且其QoS控制字段第4位为1的QoS数据帧中。AP可利用Queue Size子字段中的信息来确定分配给该STA的TXOP时长
TXOP Duration Requested子字段:TXOP Duration Requested(请求的TXOP时长)子字段出现在非Mesh BSS中关联的STA所发送的QoS数据帧中,且要求该帧QoS控制字段的第4位为0。该子字段是一个8位字段,用于指示发送STA为其指定TID的下一次TXOP所需的时长,单位为32微秒
AP PS Buffer State子字段:AP PS缓冲区状态(AP PS Buffer State)子字段是一个8位的字段,用于指示AP针对某STA的省电(PS)缓冲区状态。该子字段进一步细分为三个子字段:
- 缓冲区状态指示(
Buffer State Indicated) - 最高优先级已缓存接入类别(
Highest-Priority Buffered AC) AP已缓存负载(AP Buffered Load)
A-MSDU Present子字段:A-MSDU存在(A-MSDU Present)子字段长度为1位,用于指示是否存在A-MSDU
Mesh Control Present子字段:Mesh控制存在(Mesh Control Present)子字段长度为1位,用于指示帧体中是否存在Mesh控制字段
Mesh Power Save Level子字段:Mesh节能等级(Mesh Power Save Level)子字段Mesh节能等级(Mesh Power Save Level)子字段长度为1位,用于指示在帧交换序列成功完成后,该Mesh STA针对特定对端所采用的Mesh节能管理模式是深度睡眠模式(deep sleep mode)还是浅度睡眠模式(light sleep mode)
DMG PPDU中QoS Control
在DMG PPDU内传输的MPDU所使用的QoS控制字段格式如表所示
| Applicable frame (sub-)types | Bits 0-3 | Bit 4 | Bits 5-6 | Bit 7 | Bit 8 | Bit 9 | Bits 10-13 | Bit 14 | Bit 15 |
|---|---|---|---|---|---|---|---|---|---|
QoS Data | TID | EOSP | Ack Policy | A-MSDU Present | A-MSDU Type | RDG/ More PPDU | Buffered AC | Reserved | AC Constraint |
QoS Null | TID | EOSP | Ack Policy | Reserved | Reserved | RDG/ More PPDU | Buffered AC | Reserved | AC Constraint |
Receiver Service Period Initiated,RSPI子字段:接收方服务周期启动(Receiver Service Period Initiated,RSPI)子字段长度为1位。该子字段置为0表示:本帧接收方作为所有者的Mesh对等服务周期(mesh peer service period)尚未启动;置为1表示:该Mesh对等服务周期已被启动
A-MSDU Type子字段:A-MSDU类型(A-MSDU Type)子字段长度为1位,用于指示帧体(Frame Body)中所包含的A-MSDU的类型
RDG/More PPDU 子字段:对于DMG帧,QoS控制字段中的RDG/More PPDU子字段的解释方式取决于该帧是由反向传输(Reverse Direction, RD)发起方还是RD响应方发送的
AC Constraint子字段:对于DMG帧,QoS控制字段中的AC约束(AC Constraint)子字段用于指示一个反向传输(RD)数据帧所映射的接入类别(AC)是否被限制为单一AC
Buffered AC 子字段:Buffered AC(已缓存接入类别)子字段是一个4位的位图,用于指示四个接入类别(AC)是否存在已缓存的业务。如果某一位被置为1,则表示对应AC至少有一个缓存单元(BU)已被缓存。该Buffered AC子字段仅在QoS数据帧和QoS空帧(QoS Null frames)中有效,其他情况下为保留字段
Qos信息字段(QoS Info)
笔者注:QoS Control field详情见IEEE 802.11-2016文档9.4.1.17
QoS信息(QoS Info)字段长度为1个字节,包含能力信息位。该字段的具体内容取决于该STA是否位于AP内部

EDCA 参数集更新计数子字段:EDCA机制为使用八种不同业务优先级的STA提供差异化的分布式无线介质(WM)接入。该机制定义了四个接入类别(AC),用于支持STA传输具有不同UP的业务。当dot11AlternateEDCAActivated为真时,定义六个发送队列;否则定义四个发送队列
Q-Ack 子字段: 当dot11QAckOptionImplemented为真时,AP将Q-Ack子字段置为1,否则置为0
Queue Request子字段:如果AP能够处理QoS数据帧中QoS控制字段内的非零队列大小(Queue Size)子字段,则将队列请求(Queue Request)子字段置为1,否则置为0
TXOP Request子字段: 如果AP能够处理QoS数据帧中QoS控制字段内的非零TXOP请求时长(TXOP Duration Requested)子字段,则将TXOP请求(TXOP Request)子字段置为1,否则置为0
Qos数据帧与非Qos数据帧
IEEE 802.11标准中的QoS(Quality of Service,服务质量)机制是在802.11e修正案中引入的,用于支持不同优先级的数据传输(如语音、视频、普通数据等)。在该机制下,数据帧被分为QoS数据帧和非QoS数据帧。以下是它们的相同点与不同点:
相同点
- 都属于数据帧类型
QoS数据帧和非QoS数据帧都属于IEEE 802.11 MAC帧中的“数据帧”子类型 - 基本帧结构相似
两者都包含标准的MAC帧头(Frame Control、Duration/ID、地址字段等)、帧体(Payload)和FCS(帧校验序列) - 都可用于单播、组播或广播通信
两种帧都可以用于向单个STA或多播/广播地址发送数据 - 都支持加密和完整性保护(如使用 WPA/WPA2/WPA3)
安全机制对两类帧均适用
不同点
| 特性 | 非 QoS 数据帧 | QoS 数据帧 |
|---|---|---|
| 是否包含 QoS 控制字段 | 不包含 | 包含(位于地址字段之后,紧接在帧头中) |
| QoS 控制字段内容 | 无 | 包含TID(Traffic Identifier,0–7)、EOSP、ACK Policy、TXOP Limit等 |
| 支持多优先级传输 | 所有流量平等处理 | 支持8个用户优先级(UP),映射到不同的AC(接入类别:AC_VO,AC_VI,AC_BE,AC_BK) |
| 是否支持 A-MSDU / A-MPDU | 通常不支持(或受限) | 支持(聚合帧常用于QoS数据帧以提高效率) |
| 是否用于 EDCA 或 HCCA | 仅使用DCF(分布式协调功能) | 可用于EDCA(增强型分布式信道访问)或HCCA(混合协调功能控制信道访问) |
| 电源管理支持 | 基本支持(通过PS位) | 更精细(通过EOSP位指示服务周期结束) |
| 典型应用场景 | 传统Wi-Fi设备、不支持802.11e的设备 | 支持WMM(Wi-Fi Multimedia)的现代设备(如VoIP、视频流) |
关键字段差异说明
- QoS 控制字段(2 字节):
- TID(Traffic Identifier):
3位,标识流量类别(0–7),决定其所属的AC - EOSP(End of Service Period):
1位,用于节能模式,表示当前帧是服务周期的最后一帧 - Ack Policy:
2位,可指定是否需要ACK(例如,对于某些高优先级流可使用No Ack以减少开销) - TXOP Limit:在
HCCA模式下使用,指示最大TXOP长度
使用场景
QoS终端既能传输QoS数据帧,也能传输非QoS数据帧。只要非QoS设备作为发送方或接收方参与通信,就必须使用非QoS数据帧。广播帧默认以非QoS帧的形式传输;但如果基本服务集中的所有终端都支持QoS,发送方将使用QoS帧作为广播帧。与之类似,多播帧默认以非QoS帧的形式传输;但如果基本服务集中属于多播组成员的所有终端都支持QoS,发送方将使用QoS帧作为多播帧。如下表
| 发送方 | 接收方 | 使用的数据帧子类型 |
|---|---|---|
非Qos终端 | 非Qos终端 | 简单数据帧(非Qos) |
非Qos终端 | Qos终端 | 简单数据帧(非Qos) |
Qos终端 | Qos终端 | Qos数据帧 |
Qos终端 | 非Qos终端 | 简单数据帧 |
非Qos终端 | 广播 | 简单数据帧 |
非Qos终端 | 多播 | 简单数据帧 |
Qos终端 | 广播 | 简单数据帧;如果基本服务集中的所有终端都支持QoS,发送方将使用QoS数据帧 |
Qos终端 | 多播 | 简单数据帧;如果基本服务集中属于多播组的所有终端都支持QoS,发送方将使用QoS数据帧 |
空数据帧和Qos空帧
在IEEE 802.11协议中,空数据帧(Null Data Frame) 和QoS空数据帧(QoS Null Data Frame) 是两类不携带上层数据(即Frame Body为空)的特殊数据帧。它们虽然“空”,但在无线网络中扮演着非常重要的控制和管理角色
主要用途
- 功率管理(
Power Management) - 保持连接/心跳机制
- 触发下行数据传输(配合
PS-Poll或U-APSD) - 确认链路活跃性(
Link Liveness)
关键字段差异
| 字段 | 空数据帧 | QoS 空数据帧 |
|---|---|---|
Frame Body | 无 | 无 |
QoS Control字段 | 不存在 | 存在(2字节) |
支持TID/UP | 不支持 | 支持(用于区分业务流) |
支持EOSP位 | 否 | End of Service Period,用于U-APSD |
| 适用协议 | 802.11(原始) | 802.11e / WMM |
是否可用于U-APSD触发 | 否 | 是 |
参考文档
《无线局域网权威指南 第五版》