mac帧格式
帧格式
主要有3部分组成:
- mac heaad:包括帧控制(Frame Control)、时长(Duration)、地址(Address)等
- frame body:代表数据域。这部分内容的长度可变,其具体存储的内容由帧类型(type)和子类型(sub type)决定
- fcs(Frame Check Sequence,帧校验序列):用于保障帧数据完整性
MAC head
Frame Control域
长度:共2字节,16bit
Protocol Version
代表802.11 MAC帧的版本号。目前的值是0。
Type和Subtype
这两个字段用于指明MAC帧的类型。802.11中MAC帧可划分为三种类型,分别是control、data和management,每种类型的帧用于完成不同功能。
To DS和From DS
只用在数据类型的帧中。表示帧的源和目的地址
More Fragments
表明数据是否分片。只支持data和management帧类型。
Retry
如果该值为1,表明是重传包。
Power Management
表明发送该帧的STA处于活跃模式还是处于省电模式,PM为1表示STA将进入PS状态,否则将进入Active状态。
802.11规范为STA定义了两种和电源相关的状态:
//通常ap无ps模式,有线电源供电
- Active模式。
- PS(Power Save)模式。处于PS模式下,无线设备将关闭收发器(transceiver)以节省电力。
关闭收发器节省电力的同时保证数据传输连贯性:
a)AP了解与其关联的STA电源状态,当sta处于ps模式,AP缓存数据待sta激活后再将数据发送给sta
b)AP定时发送缓存数据,sta在ps模式会定期接受,当接受到ap的缓存数据时则激活进入Active模式并通过PS-POLL控制帧来接收ap缓存帧
PM字段无用场景:
1.AP不缓存的管理帧
2.AP发送的帧
3.STA发送给还未与之关联的AP的帧中
More Data
PM字段=1:ap有缓存数据。AP为那些处于省电模式下的STA缓冲一些数据帧,而STA会定时查询是否有数据要接收。
More Data表示剩余缓存数据。即ap的缓存数据sta是否都获取完毕,如果该值为0,表明STA已经接收完数据帧
Protected Frame
表明数据是否加密。
Order
指明接收端必须按顺序处理该帧。
Duration/ID域
共2字节16bit
其具体含义根据Type和Subtype的不同而变化,大体分为2类:
- 对于PS-POLL帧,该域表示AID的值。其中最后2位必须为1,而前14位取值为1~2007。这就是该域取名ID之意
- 对于其他帧,代表离下一帧到来还有多长时间,单位是微秒。这就是该域取名Duration之意
Address域
IEEE 802.3[19]协议,MAC地址特点:
- MAC地址可用6字节的十六进制来表示
- MAC地址的组成包括两个部分。0~23位是厂商向IETF等机构申请用来标识厂商的代码,也称为“组织唯一标识符”(Organizationally Unique Identifier,OUI)。后24位是各个厂商制造的所有网卡的一个唯一编号
- 第48位用于表示这个地址是组播地址还是单播地址,0是单播,1是组播
- 第47位表示该MAC地址是全球唯一的还是本地唯一。故该位也称为G/L位
802.11 MAC帧头部分共包含五个MAC地址定义:
-
BSSID
在基础型BSS中,它为AP的mac地址。
在IBSS中则是一个本地唯一MAC地址。
MAC广播地址来说,其名称为wildcard BSSID。 -
目标地址(Destination Address,DA)
MAC数据包最终接收者 -
源地址(Source Address,SA)
最初发出MAC数据包的地址 -
发送STA地址(Transmitter Address,TA)
将MAC数据包发送到WM中的STA地址 -
接收STA地址(Receiver Address,RA)
接收者也是STA,那么RA和DA一样。
如果接收者不是无线工作站,而是比如以太网中的某台PC,那么DA就是该机器的MAC地址,而RA则是AP的MAC地址(中转)。表明该帧将先发给AP,然后由AP转发给PC。
Address1 接收
Address2 发送
Address3 携带其他信息帮助mac帧传输
Sequence Control域
长16位,前4位代表片段编号(Fragment Number),后12位为帧顺序编号(Sequence Number)
Sequence Number:STA每次发送数据帧时都会设置一个帧顺序编号。注意,控制帧没有帧顺序编号。另外,重传帧不使用新的帧顺序编号。
Fragment Number:用于控制分片帧。如果数据量太大,则MAC层会将其分片发送。每个分片帧都有对应的分片编号
管理帧
格式
管理帧中的Frame Body携带具体的管理信息数据,802.11的管理信息数据大体可分为两种类型:
- 定长字段:指长度固定的信息,规范称为Fixed Field
- 信息元素:指长度不固定的信息。显然这类信息中一定会有一个参数用于指示最终的数据长度
定长字段
Authentication Algorithm Number:认证过程中所使用的认证类型
0:代表开放系统身份认证(Open System Authentication)。
1:代表共享密钥身份认证(Shared Key Authentication)。
2:代表快速BSS切换(Fast BSS Transition)。
3:代表SAE(Simultaneous Authentication of Equals)。用于两个STA互相认证的方法,常用于Mesh BSS网络。
65535:代表厂商自定义算法
Beacon Interval field:表示发送Beacon信号之间间隔的时间,单位为Time Units
Capability Information(性能信息):用于宣告此网络具备何种功能
ESS/IBSS:基础结构型网络中,AP将设置ESS位为1,IBSS位为0。相反,IBSS中,STA设置ESS位为0,而IBSS位为1。Mesh BSS中,这两个位都为0。
Privacy:如果传输过程中需要维护数据机密性(data confidentiality),则AP设置该位为1,否则为0。
Spectrum Mgmt:如果某设备对应MIB中dot11SpectrumManagementRequired为真,则该位为1。根据802.11 MIB对dot11SpectrumManagementRequired的描述,它和前面介绍的TPC(传输功率控制)和DFS(动态频率选择)功能有关。
Radio Measurement:如果某设备对应MIB中的dot11RadioMeasurementActivated值为真,则该位置为1,用于表示无线网络支持Radio Measurement Service
Reason Code:该字段长2字节。用于通知Diassociaton、Deauthentication等操作(包括DELTS、DELBA、DLS Teardown等)失败的原因
Status Code:该字段长2字节,用于反馈某次操作的处理结果。0代表成功
信息元素
Element ID:表示不同的信息元素类型
Length:表示Information字段长度
根据Element ID的不同,Information中包含不同的信息
802.11上层协议封装
RFC 1042规定SNAPheader(Sub Network Access Protocol,子网访问协议)转换方法,在MAC headers和Type之间增加了4个字段。
DSAP(Destination Service Access Point,目标服务接入点)。
SSAP(Source Service Access Point,源服务接入点)。
Control(控制字段,值被设定为0x03,代表Unnumbered Information,即未编号信息)。
OUI(固定为0x000000)。