802.11无线网络权威指南(二):无线帧结构

802.11无线网络权威指南(二):无线帧结构

无线协议桢的三种类型

类型和字段定义了无线网络的三种类型,分别是:

  1. 管理帧(Management frames)

    维护接入点和无线客户端之间的通信,管理该框架拥有以下子类型:

    Authentication 身份认证帧

    De-authentication 解除认证帧

    Association Request 关联请求帧

    Association Response 关联回应帧

    Reassociation Request 重新关联请求帧

    Reassociation Response 重新关联回应帧

    Disassociation 解除关联帧

    Beacon 信标帧

    Probe Request 探测请求帧

    Probe Response 探测响应帧

    ATIM帧

  2. 控制帧(Control frames)

    负责客户端和接入点的数据交换,类型为:

    RTS帧(Request to Send)

    CTS帧(Clear to Send)

    ACK帧(Acknowledgement)

  3. 数据帧(Data frames)

    这些不同类别的数据包被统称为数据包类型。

解释几个比较难理解的帧:

beacon 帧:由AP以一定的时间间隔周期性发出,以此来告诉外界自己无线网络的存在,相当于广播。

RTS 帧:发送数据之前的请求帧。

CTS 帧:由接收方发出,用于确认可以接收数据包,并通过广播方式通知其他设备不要发送数据包,以确保接收方能够正常接收。

RTS/CTS 的流程:

a. RTS/CTS 是用来解决传送大的数据包前的信道预约功能,由程序中设定的门限值来控制的;超过该门限值的数据帧由 RTS/CTS 先行清空介质,而较小的帧则直接传送,不需要发送。

b. 发送大数据前,先向AP路由发送RTS请求占用信道;

c. AP收到后广播发出CTS,告知所有设备;

d. 设备收到CTS和ACK后即可开始发送大的数据帧。

按照书里的描述:RTS/CTS技术是一种用于解决无线网络中的信号冲突问题的方法。在无线网络中,当多个设备同时发送信号时,会发生信号碰撞,导致数据包损坏和传输延迟增加。RTS/CTS技术通过引入两个新的控制帧,即RTS帧和CTS帧,来协调发送方和接收方之间的通信,有效减少信号冲突,提高网络传输效率。

ATIM帧:(‌Announcement Traffic Indication Message)‌是WLAN中用于通知处于休眠状态的接收者有信息待传的一种管理帧。‌

无线网络帧结构

完整帧格式

Control frames Duration/ID adress1 adress2 adress3 Sequence control adress4 QoS control HT control Frame Body FCS

完整的帧共分三大部分:

  • 802.11 协议MAC头部分
  • Frame Body(帧体部分)
  • FCS帧校验

control frame

Protocol Type Sub type To DS From DS More Flag Retry Pwr Mgmt More Data protected frame Order
2bit 2bit 4bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit
  • Protocol:表示802.11协议版本,目前802.11数据帧有两个版本:0或1;

  • Type:802.11 帧的类型,3类;

  • Sub type:802.11帧的子类型,后面讲;

  • To DS 和From DS:这两个位用来指示帧的目的地是否为分布式系统。在基础结构型网络里,每个帧都会设定一个DS位(其中DS为Ap或DS系统);

To DS 和 From DS 取值 含义
To DS = 0 From DS = 0 1.同一IBSS中,从一个STA到另一个STA;2.同一个BSS中,从一个非 AP 的STA到另一个非AP的STA或者BSS外部
To DS =1 From DS = 0 代表发送给DS或AP的MAC帧;发往DS的帧必须通过AP转发
To DS =0 From DS = 1 代表来自DS或AP的数据帧
To DS =1 From DS = 1 仅 Mesh BSS 支持
  • More Frag:表示该帧是否有更多的分片;
  • Retry:表示该帧是否需要重传;
  • Pwr Mgt:
    1: 表示STA在发送完本帧后,将关闭天线处于休眠状态;
    0:表示处理工作状态
    (说明:AP不允许休眠,只有STA可以,因此AP发送的数据帧该字段恒为0)
  • More Data:
    1:至少还有一个数据帧要发送给STA;
    0:此帧已经发送完成;(说明:此bit只用于管理数据帧,在控制帧中此bit恒为0)
  • Protected Frame:
    1:表示该帧受到链路层安全协议的保护;否则为0;
  • Order:
    1:长帧分段传送采用严格编号方式;否则为0。

Duration/ID

Duration / ID 是持续时间和ID位,共有16bit,根据第14bit和15bit的取值组合,有以下三种类型的含义:

  1. 当第15bit被设置为0时,该字段就会被用来设定NAV值,表明该帧和它的确认帧将会占用信道多长时间(单位为微秒);工作站必须监视所收到的任何帧头并据此更新NAV(0 - 32767)。
  2. 当第15bit被设置为1,第14bit为0时,该字段用于无竞争周期(CFP)中,该值被解读为NAV(固定为32768),它让没收到beacon的所有工作站都得以公告无竞争周期;
  3. 当第15bit被设置为1,第14bit为1时,用于PS-Poll帧,PS中的工作站会定期醒来,此时会发送一个PS-Poll,其中有关联标识符(AID),以表示其所属的BSS。(值范围为:1 - 2007)

Address

一个802.11帧最多包含4个Address。因随着帧类型的不同,这些字段的作用也有所差异。分别为:

  • SA:源地址
  • DA:目的地址
  • TA:传输工作站地址
  • RA:接收工作站地址

SA与DA必不可少,后两个只对跨BSS的通信有用。

目的地址可以为单播地址(Unicast address)、多播地址(Multicast address)、广播地址(Broadcast address)。

  • 如果传送给实际媒介的第一个位为0,则该地址为单播(unicast);
  • 如果第一位为1,则该地址为组播(multicast);
  • 如果所有的位均为1,则该地址为广播(broadcast)。

802.11帧中Address字段含义根据帧的不同而不同,具体如下表所示:

网络类型 Address1(接收端) Address2(发送端) Address3 Address4
IBSS DA SA BSSID 未使用
To AP BSSID SA DA 未使用
From AP DA BSSID SA 未使用

以下为To DS和From DS字段和Address字段 间的关系的使用场景:

Sequence Control

序列控制域。 共16位,前4位代表片段编号(Fragment Number),后12位为帧顺序编号(Sequence Number),域格式如图下所示。

  1. sequence number:当上层帧交付到MAC层传送时,会被赋予一个 sequence number。

    a. 相当于已传帧的计数器取 4096 的模;此计数器由 0 起算,MAC每处理一个上层封包就会加1;

    b. 如果上层封包被分片处理, 所有帧片段(Fragment Number)都会具有相同的顺序编号;

    c. 如果是重传帧,则顺序编号不会累加;

    d. 也是从0开始计数,如果满了以后那么循环为0,重新计数。

    e. 控制帧没有帧顺序编号,重传帧不使用新的帧顺序编号。

  2. Fragment Number:用于控制分片帧。如果数据量太大,则MAC层会将其分片发送。每个分片帧都有对应的分片编号, 其初始为0,每新增一次分片其会增加1;

QoS Control

QoS control是802.11e中新增的一个MAC层的字段。

Qos Control域有2个字节,QoS Control field中比较重要的字段是 TID(Traffic identifier)。

TID 值 0-7 用于具有优先权的默认 QOS 设定值,表示使用者的优先顺序(UP);

TID 值 8-15 用于自定义的QOS类型,即表示数据流ID(TSID),节点可以通过ADDTS过程和AP(WLC)协商,从而特定设置一些对应的QoS参数。

QoS control字段格式定义如下图所示,主要分几个部分:

  1. BIT0-BIT3:TID(Traffic identifier)业务流相关的ID号(有8种TC和8种TS数据类型);
  2. BIT4:标志,直接决定BIT8-BIT15的内容。有 以下几种情况:
    a. EOSP:End Of Service Period。数据下行(即由AP发送),此时又分两种情况:
    ① AP发Null Data+CF ACK: BIT8-BIT15内容为 AP PS Buffer State;为1代表当前服务周期结束;
    ② AP发CF Pull包:BIT8-BIT15内容为TXOP Limit值;
    b. 0:数据上行(由STA发送),BIT8-BIT15内容为TXOP Duration Request;
    c. 1:数据上行(由STA发送),BIT8-BIT15内容为Queue size;
  3. Bit5-Bit6:ACK Policy;
  4. Bit7:打开和关闭A-MSDU帧聚合的标志;

    TID有4个Bit(B0-B3),一共可以表示16个类型,其中8个对应TC(规定的8种默认优先级类型),另外8个对应TS,TS的参数是通过STA与AP协商的。
    也就是说TID不仅仅被设置为AC_BK、AC_BE、AC_VI和AC_VO,还可以使用TS进行协商。

    802.11e 提供了4个不同的优先级的流量种类,当流量 MSDU 到达 802.11e 定义的MAC层时,会根据其 802.1D 的 tag 标识被分别存放到4个不同的queue里,分别是AC_VO,AC_VI,AC_BE,AC_BK,如下 图所示:
  5. 语音服务(Voice,AC_VO):一般为 VoIP 流量类型,对延迟最为敏感,同时也是优先级最高的流量。
  6. 视频服务(Video,AC_VI):视频流量的优先级低于语音服务。视频服务也是延迟敏感类型的服务,所以具有一定的优先级。
  7. 尽力传输(Best-effort,AC_BE):默认的无线流量类型就是best-effort类型,比如网页访问的数据流量类型。对于延迟有一定需求,但是没有那么敏感。
  8. 背景流量(Background,AC_BK):对于延迟要求最不敏感的流量,比如文件传输,打印作业的流量。

HT Control 字段

该字段在 802.11 的 11n 协议中引入,11ac和11ax还有点不同,先只看11n的,字段如图:

  1. Link Adaption Control (Bit0-Bit15)
  • TRQ:Training Request.探测请求,该位设置为1请求接收者发送探测帧(sounding PPDU), 主要用于波束成形(beaming);
  • MAI:MCS Request (MRQ) or ASEL Indicator。用于mcs请求或天线选择;值设置为14表示打开ASELC(天线选择控制)标志; 否则即为MCS请求,用于链路自适应动态选择最佳MCS;
  • MFSI:MCS Feedback Sequence Identifier。用于调制解调方案的反馈;
  • MFB/ASELC:MCS feedback and Antenna Selection Command。MAI设置为天线选择字段,说明天线选择命令和数据;否则该字段包含推荐的MCS反馈;
  1. Calibration Position (BIT16-BIT17):校准位置;
  2. Calibration Sequence (BIT18-BIT19):校准序列;
  3. Reserved
  4. CSI/Steering (BIT22-BIT23): Beamforming feedback类型
    0:No feedback required
    1:CSI
    2:Noncompressed beamforming
    3:Compressed beamforming
  5. NDP Announcement:设置为1表示有一个后续的NDP;
  6. AC Constraint:指示RD数据帧的映射AC是否被约束到单个AC
  7. RDG/More PPDU:Reverse Direction协议相关。当使用反向 (RD) 协议时,获得了 TXOP 的 STA 可以授予其他 STA 在同一 TXOP 内回传数据的机会,而无需响应的 STA 在传输之前竞争介质。

Frame Body 帧体

  1. 代表数据域, 也称为数据字段,负责传输上层有效载荷(Payload)。在802.11标准中,传输的载荷报文也被称为MSDU(MAC Service Data Unit);
  2. 这部分内容的长度可变,其具体存储的内容由帧类型(type)和子类型(sub type)决定;
  3. 根据帧类型,封装的上层数据单元长度为0~2312个字节;所以802.11帧在没有帧聚合(A-MSDU)的情况下最大长度为:2312 + 34(MAC头和CRC,不包括QoS和HT control) = 2346个字节;

FCS 校验域

包含32位循环冗余码。用于检查接收帧的完整性。类似于Ethernet中的CRC。

帧细节

Frame Control(帧控制域)中的Type(类型域)和Subtype(子类型域)共同指出帧的类型。

当Type的 Bit3 和 Bit2 位为:

00:管理帧

01:控制帧

10:数据帧

管理帧

主要用于STA与AP之间协商和连接的控制,如关联、认证、同步等。 而Subtype进一步判断帧类型,如管理帧里头细分为关联和认证帧;

Type SubType FrameType
00 0000 Association request (连接请求)
00 0001 Association response (连接响应)
00 0010 Reassociation request(重连接请求)
00 0011 Reassociation response(重连接联响应)
00 0100 Probe request(探测请求)
00 0101 Probe response(探测响应)
00 1000 Beacon(信标,被动扫描时AP 发出,notify)
00 1001 ATIM(通知传输指示消息)
00 1010 Disassociation(解除连接,notify)
00 1011 Authentication(身份验证)
00 1100 Deauthentication(解除认证,notify)
00 1101~1111 Reserved(保留,未使用)

控制帧

用于竞争期间的握手通信和正向确认(RTS信道预约、CTS预约成功、ACK等)、结束非竞争期等,为数据帧的发送提供辅助功能。

Type Subtype Frame type
01 1010 Power Save(PS)- Poll(省电-轮询)
01 1011 RTS(请求发送,即: Request To Send ,预约信道,帧长20字节)
01 1100 CTS(清除发送,即:Clear To Send ,同意预约,帧长14字节)
01 1101 ACK(确认)
01 1110 CF-End(无竞争周期结束)
01 1111 CF-End(无竞争周期结束)+CF-ACK(无竞争周期确认)
RTS 帧

RTS 帧可用来取得媒介的控制权,以便传送大型帧;大型帧是超过网卡驱动程序中 RTS threshold(阈值)的帧。

媒介访问权只能保留给单播(unicast)帧使用,而广播(broadcast)与组播(multicast)帧只是简单地传送。

RTS 帧只有帧头,不携带任何数据,帧头之后就是 FCS 帧校验码,格式如下:

RTS 帧会试图预约媒介使用权,供帧交换过程使用。因此 RTS 帧传送必须计算 RTS 帧结束后还需要多少时间用于帧交换。不过下图也明示了要 3 个 SIFS 周期、一个 CTS 持续时间、最后的 ACK 加上传送第一个帧片段所需要的时间。

RTS 帧的 duration 字段:

CTS 帧

CTS 帧有两种目的,其格式如下:

起初 CTS 帧仅用于回复 RTS 帧,如果之前没有 RTS 帧出现,就不会产生 CTS。

后来 CTS 帧被 802.11g 保护机制用来避免干扰较旧的工作站。

而用来响应 RTS 的 CTS 帧的发送端会以 RTS 帧的 duration 值作为持续时间的计算基准。RTS 帧会为整个 RTS-CTS-frame-ACK 交换过程预留媒介使用时间。

不过当 CTS 帧被传送出去后,只剩下其他未传帧或帧片段及其确认待传。CTS 帧发送端会将 RTS 帧的 duration 值减去传送 CTS 帧及其后的短帧间间隔送需要的时间,然后将计算结果置于 CTS 的 duration 字段中。

CTS 的持续时间:

ACK 帧格式

确认帧。因为无线网络的特点,很难保证数据一定会到达目的地。

为了确保数据一定到达,802.11采用确认、重传机制,即每一个数据都必须确认ACK,如果未收到ACK,发送方重新发送。

这会导致信号差的时候,重传概率加大,造成传输速度下降;

非最终ACK帧的 Duration 字段:

PS-POLL省电轮询

当一个移动工作站从省电模式中苏醒后,便会传送一个 PS-Poll 帧给接入点以取得任何缓存帧。

PS-POLL 帧:

AID :PS-Poll 帧会以 MAC 标头的第三位与第四位来代表关联标识符(association ID)。

关联标识符是接入点指定的一个数值,用来识别关联。将此标识符放入帧中,可让接入点找出为其(移动式工作站)缓存的帧。

PS-Poll 帧没有 duration,因此无法更新 NAV。

但是收到 ACK 的工作站会以短帧间间隔加上传送 ACK 信号需要的时间来更新 NAV。

数据帧

用于在竞争期和非竞争期传输数据。

一般数据帧:

这种数据帧只能在无竞争周期出现。不可能出现在 IBSS(独立基本服务集)。

另一种区分方式是对携带数据与提供管理功能的帧加以区分。

下面是数据帧的分类方式:

Type Sub type Frame type
10 0000 Data(数据)
10 0001 Data+CF-ACK
10 0010 Data+CF-Poll
10 0011 Data+CF-ACK+CF-Poll
10 0100 Null data(无数据:未传送数据)
10 0101 CF-ACK(未传送数据)
10 0110 CF-Poll(未传送数据)
10 0111 Data+CF-ACK+CF-Poll
10 1000 Qos Data
10 1001 Qos Data + CF-ACK
10 1010 Qos Data + CF-Poll
10 1011 Qos Data + CF-ACK+ CF-Poll
10 1100 QoS Null(未传送数据)
10 1101 QoS CF-ACK(未传送数据)
10 1110 QoS CF-Poll(未传送数据)
10 1111 QoS CF-ACK+ CF-Poll(未传送数据)

参考书:《802.11无线网络权威指南》

参考链接:https://zhuanlan.zhihu.com/p/679499856

相关推荐
Nigoridl7 分钟前
MSF的使用学习
网络·web安全
pemper_2 小时前
怎么操作使http变成https访问?
网络·网络协议·http·https·ssl
蒙奇·D·路飞-2 小时前
古诗词四首鉴赏
网络
Run_Snails3 小时前
hcia-openEuler V1.0师资题库-试卷3
运维·服务器·网络
学java的小菜鸟啊3 小时前
第五章 网络编程 TCP/UDP/Socket
java·开发语言·网络·数据结构·网络协议·tcp/ip·udp
新手嵌入式学习3 小时前
网络协议头分析
网络·网络协议
运维Z叔5 小时前
云安全 | AWS S3存储桶安全设计缺陷分析
android·网络·网络协议·tcp/ip·安全·云计算·aws
weixin_456732595 小时前
网络-内核是如何与用户进程交互
网络·交互
爱吃涮毛肚的肥肥(暂时吃不了版)5 小时前
计算机网络34——Windows内存管理
网络·计算机网络·udp
码哝小鱼6 小时前
firewalld封禁IP或IP段
linux·网络