当前位置: 首页 > news >正文

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

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内核源码技术学习路线+视频教程内核源码

学习直通车:Linux内核源码内存调优文件系统进程管理设备驱动/网络协议栈

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抓包截图:

 

 

http://www.lryc.cn/news/4224.html

相关文章:

  • 使用阿里云IoT Studio建立物模型可视化界面
  • HBase 复习 ---- chapter07
  • 跟我一起写Makefile--个人总结
  • 设计模式之为什么要学好设计模式
  • 大数据时代的小数据神器 - asqlcell
  • 【呕心沥血】整理全栈自动化测试技术(三):如何编写技术方案
  • 67. 二进制求和
  • 1555数列极差(队列 优先队列 )
  • 代码随想录算法训练营第二十七天 | 93.复原IP地址,78.子集,90.子集II
  • jvm类加载器
  • Rust学习入门--【7】Rust 数据类型
  • 阅读MySQL必知必会,查缺补漏
  • MySQL数据库10——多表连接查询
  • 华为OD机试 - 括号检查(Python)| 真题含思路
  • 安全渗透测试中的一款免费开源的超级关键词URL采集工具
  • 数据资产管理实践白皮书(6.0版)解读
  • c/c++开发,无可避免的函数指针使用案例
  • QT(12)-QThreadPool
  • 【Java|golang】1138. 字母板上的路径
  • Flink 1.14从简单到源码第三讲
  • 淘宝API接口系列,获取购买到的商品订单列表,卖出的商品订单列表,订单详情,订单物流,买家信息,收货地址列表,买家token
  • ucos-ii 的任务调度原理和实现
  • Solon2 开发之容器,七、切面与函数环绕拦截
  • 代码随想录第十天(28)
  • 循环队列来了解一下!!
  • Idea打包springboot项目war包,测试通过
  • python+django高校师生健康信息管理系统pycharm
  • CUDA中的流序内存分配
  • 开源、低成本的 Xilinx FPGA 下载器(高速30MHz)
  • Maven专题总结