DU(Data Unit) 数据单元,信息传输的最小数据集合
传递过程逐层封装(Rncapsulation)
SDU (Service Data Unit) / PDU (Protocol Data Unit)
MSDU--->MIC--->分帧--->添加IV--->加密--->添加mac头--->MPDU
MPDU/PSDU+物理头=PPDU--->RF发射
802.11 MAC头部结构
802.11
Protocol Version (2bit)
802.11协议版本,始终为0,1,2,3
Type (2bit)
规定帧的具体用途(3种帧类型)
控制帧(1)
数据帧(2)
管理帧(0)
SubType (4bit)
每个类型对应多个子类型,协议规定不同类型/子类型的帧完成不同功能的操作
To DS / From DS (1/1bit)
标识帧的传输方向,传向DS或者来自DS,这两个字段的值决定着MAC头中四个Address字段的不同定义
0X00:出现在IBSS环境中 (可能是Management帧或者是Control帧类型),或者是STSL(Station To Station Link)中间两个STA通信,这种情况下通信不通过AP
0X01:表示Data帧从AP向STA传递
0x02:标识Data帧从STA向AP传递
0x03:表示两个AP间通信,这是典型的WDS(Wireless Distribution System)环境下AP间的通信,或者表示Mesh环境下MP间的通信,只有此时才会使用到Address4字段
More Frag(1bit) 表示是否还有后续帧
值为1时表示有后续分段,可能是Data或者Management帧类型,只有单播接收地址会被分段
Retry(1bit)重传
值为1时标识重传帧,可能是Data或者Management帧类型接收端进程使用此值防止帧重复
Power Mgnt(1bit) 活动模式(0)/省电模式(1)
STA处于省电模式时,向关联的AP发送该值为1的帧(AP从不使用此字段),省电模式下STA不接收数据,发送给它的Data帧由AP暂时缓存
More Data (1bit)
当AP缓存了至少一个MSDU时,会向省电模式的STA发送该值为1的帧,表示有数据要传输给STA,接收到此帧的STA唤醒自己并向AP发送PS-Poll帧,取回由AP为其缓存的数据,也被用于AP有更多的广播/多播帧需要发送的情况
Protcted Frame (1bit)
可能是Data 或者 Management帧类型,标识MSDU是否被加密,也被用于表示PSK身份验证Frame#3帧,数据载荷为空时 该字段值为0
Order (1bit)
在非QoS帧的情况下,值为1表示数据必须按严格顺序处理 通常为0
Duration/ID (16bit)
所有的Control帧都使用该字段,其作用随Type/SubType变化有所不同
帧类型为PS-Poll(type:1,subtype:10)时,表示STA关联的AID(association identity)
其他情况下,该字段作为一种载波侦听机制,表示接收下一帧之前需要保持时间间隔,用于NAV(Network Allocation Vector) 计算,单位是微秒
MAC Layer Address
BSSID:Basic Server set ID 踏实BSS的二层唯一标识,Infrastructure模式中BSSID就是AP的MAC地址,当AP支持多BSS时,随机生成每个BSSID
Sequence Control (16bit)
包含两个字段:Sequence Number和Fragment Number
Sequence Number是每个帧的编号,范围是0-4095 以1为步长递增,在帧被分段的时候,同意帧中不同分段的Sequence Number相同
Fragment Number是被分段的帧用于标识分段位置顺序的编号,数值范围是0-15,以1为步长递增
FCS (32bit)
发送端对全部MAC包头和Frame Body内容进行CRC计算,计算结果既为FCS(Frame Check Sequence)值,接收端进行同样的计算,结果一致时,则接收端向发送端返回ACK,否则丢弃帧(只对单播帧有效FCS错误的广播/多播可能被接收)
wireshark在抓包时已经删除了FCS值
Frame Body(变长)
数据字段,未加密的最大MSDU长度为2304字节(其中包含最大256字节的上层头信息和可以被传递的数据2048字节),不同的加密方法会增加一定的内容长度
WEP: 8bytes--->2312bytes
TKIP(WPA1):20bytes--->2324bytes
CCMP(WPA2):16bytes--->2320bytes
[*]Conteol类型的帧没有Frame Body的内容