欢迎光临散文网 会员登陆 & 注册

学习802.11之MAC帧格式(一篇就够!)

2023-02-11 16:30 作者:补给站Linux内核  | 我要投稿

802.11规范的关键在于MAC(媒介访问控制层),MAC位于各式物理层之上,控制数据传输。负责核心成帧操作以及与有线骨干网络之间的交互。


802.11 MAC采用载波监听多路访问(CSMA)机制来控制对传输媒介的访问,不过冲突会浪费宝贵的传输资源,因而802.11采用冲突避免(CSMA/CA)机制,而非Ethernet所采用的冲突检测(CSMA/CD)机制。


在802.11无线局域网中,MAC帧是实现MAC协议和保证数据有效通讯的基础。802.11MAC帧格式很特别,它的长度是可变的。不同功能的数据帧长度不一样。


802.11 MAC一般格式

 

【文章福利】小编推荐自己的Linux内核技术交流群:【749907784】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!(含视频教程、电子书、实战项目及代码)     


Frame Control(帧控制)

所有帧的开头均为2个字节的Frame Control。



1:Protocol字段:有2位组成,用以显示该帧所使用的MAC版本,目前802.11 MAC只有1个版本,它的协议编号为0


2:Type与Subtype字段:用来指定使用的帧类型。

其中Type表示帧类型:

00: 管理帧(Management Frame) 

01: 控制帧(Control Frame) 

10: 数据帧(Data Frame) 


  • 管理帧:负责监督,主要用来加入或退出无线网络以及处理接入点之间关联的转移事宜。


   

    SubType:

0000:Association  Request(关联请求) 

0001:Association Response(关联响应)

0010:Reassociation Request(重新关联请求)

0011:Reassocation response(重新关联响应)

0100:Probe Request(探测请求)

0101:Probe Response(探测响应)

1000:Beacon(信标)

1001:ATIM(通知传输指示消息)

1010:Disassociation(取消关联)

1011:Authentication(身份验证)

1100:Deauthentication(解除身份验证)


  • 控制帧:通常与数据帧搭配使用,负责区域的清空、信道的取得、载波监听的维护,并于收到数据时予以肯定确认,借此提高工作站之间数据传输的可靠性。

SubType:

1010:Power Svae(PS)-Poll(省电-轮询)

1011:RTS(请求发送)

1100:CTS(清除发送)

1101:ACK(确认)

1110:CF-End(无竞争周期结束)

1111:CF-End(无竞争周期结束)+CF-ACK(无竞争周期确认)


  • 数据帧:负责在工作站之间搬运数据。会将上层协议的数据置于帧主体中加以传递。

SubType:

0000:Data(数据)

0001:Data+CF-ACK

0010:Data+CF-Poll

0011:Data+CF-ACK+CF-Poll

0100:Null data(无数据:未传送数据)

0101:CF-ACK(未传送数据)

0110:CF-Poll(未传送数据)

0111:Data +CF-ACK+CF-Poll(未传送数据)


1000:QoS Data(数据)

1001:QoSData+CF-ACK

1010:QoSData+CF-Poll

1011:QoSData+CF-ACK+CF-Poll

1100:QoS Null(无数据:未传送数据)

1101:QoS CF-ACK(未传送数据)

1110:QoS CF-Poll(未传送数据)

1111:QoS CF-ACK+CF-Poll(未传送数据)


3:To DS与From DS:用来指示帧的目的地是否为分布式系统。

  • To DS=0,From DS=0:表示Station之间的AD Hoc类似的通信,或者控制侦、管理侦。

  • To DS=0,From DS=1:Station接收的侦。

  • To DS=1,From DS = 0:Station发送的侦。

  • To DS=1,From DS = 1:无线桥接器上的数据侦。

4:More Fragments:上层的封包经过MAC分段处理,除了最后一个片段,其他片段均会将该为置1。


5:Retry:重传标记,任何重传的帧都会将该为置位1,以协助接收端剔除重复的帧。


6:Power Management:用来指示工作站在完成当前原子帧交换之后是否进入省电(Power-Save)模式,1表示工作站即将进入深感模式,0表示工作站会一直保持清醒状态。接入点不允许进入省电模式,所以接入点传送的帧中此位必然为0。


7:More data:接入点会为处于省电模式的工作站缓存帧,接入点如果设置此位,表示至少有1个帧待传给休眠中的工作站。


8:Protected frame:该位被置1,帧收到链路层安全协议包含,


9:Order:该位被置1,帧与帧严格要求依次传送。


Duration/ID字段

紧跟在FrameControl字段之后,此字段有很多功能,有三种可能是形式:


1:Duration:持续时间,bit15被设定为0。用来记载网络分配矢量(NAV),访问媒介的时间限制由NAV指定。,Duration/ID字段被用来设定NAV。


2:无竞争周期所传送的帧(CFP)。bit15被设为1,bit14被设为0。其余所有位均为0,字段值为32768。


3:PS-Poll帧:bit15和bit14均被设为1,用于从省电模式醒来的Station发送

AID(关联标知符)以取得在AP中的缓存帧。 


Address字段

一个802.11帧最多可以包含4个Address字段。通常有3个,SA、DA、BSSID,由To DS/From DS位来决定。



其中:

BSSID:基本服务集标识符

DA:目的地址

SA:源地址

RA:接收端地址

TA:发送端地址


SequenceControl(顺序控制)字段

此字段16位,用来重组帧片段及丢弃重复帧。它是由4位的片段编号(fragment number)字段以及12位的顺序(sequence nubmer)编号。

控制帧未使用顺序编号,无此字段。



当上层帧交给MAC传送时,会被赋予一个顺序编号。此字段的作用相当于已传帧的计数器取4096的模,此计数器从0起算,MAC每处理一个上层封包它就会累加1,如果上层封包被分段处理,则所有帧片段都会具有相同的顺序编号。如果是重传帧,则顺序编号不会有任何改变。


帧片段之间的差异在于片段编号,第一个片段的编号为0,其后每个片段编号依次累加1,重传的片段编号会保持原始的顺序编号以协助重组。


FrameBody((帧主体)字段

也称为数据字段,负责在工作站之间传递上层有效载荷。


FCS(帧校验序列)字段

循环冗余校验(CRC)码,FCS让工作站能攻检查所收到的帧的完整性。FCS的计算范围涵盖MAC标头里所有字段以及帧主体。


当帧送至无线接口时会先计算FCS,然后在经过RF链路传送出去。接收端随后会为收到的帧计算FCS,然后与记录在帧中的FCS进行比较。如果两者相符,则该帧极有可能在传送过程中未受损。


最后来一张Omnipeek抓包截图:


原文作者:燕十三的物联网之旅





学习802.11之MAC帧格式(一篇就够!)的评论 (共 条)

分享到微博请遵守国家法律