学习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抓包截图:
相关文章:

学习802.11之MAC帧格式(一篇就够!)
802.11规范的关键在于MAC(媒介访问控制层),MAC位于各式物理层之上,控制数据传输。负责核心成帧操作以及与有线骨干网络之间的交互。 802.11 MAC采用载波监听多路访问(CSMA)机制来控制对传输媒介的访问&…...

使用阿里云IoT Studio建立物模型可视化界面
使用阿里云IoT Studio建立物模型可视化界面 上一篇文章介绍了如何使用ESP-01S上报数据到物模型:https://blog.csdn.net/weixin_46251230/article/details/128996719 这次使用阿里云IoT Studio建立物模型的Web页面 阿里云IoT Studio: https://studio.i…...
HBase 复习 ---- chapter07
HBase 复习 ---- chapter07部署 HBase(运维) 1:部署 HBase 实际是部署了三个技术(hadoop zookeeper hbase) hadoop hdfs mapreduce common hdfs namenode datanode secondaryNamenode yarn ResourceManager&a…...

跟我一起写Makefile--个人总结
此篇笔记是根据陈皓大佬《跟我一起写Makefile》学习所得 文章目录换行符clean变量make的自动推导另类风格的Makefile清空目标文件的规则cleanMakefile总述显示规则隐晦规则变量的定义注释引用其它的Makefile环境变量MAKEFILESmake的工作方式书写规则规则举例规则的语法在规则中…...
设计模式之为什么要学好设计模式
目录1 回顾软件设计原则2 设计模式总览3 经典框架都在用设计模式解决问题1 回顾软件设计原则 不用设计模式并非不可以,但是用好设计模式能帮助我们更好地解决实际问题,设计模式最重要的是解耦。设计模式天天都在用,但自己却无感知。我们把设…...

大数据时代的小数据神器 - asqlcell
自从Google发布了经典的MapReduce论文,以及Yahoo开源了Hadoop的实现,大数据这个词就成为了一个行业的热门。在不断提高的机器性能和各种层出不穷的工具框架加持下,数据分析开始从过去的采样抽查变成全量整体,原先被抽样丢弃的隐藏…...

【呕心沥血】整理全栈自动化测试技术(三):如何编写技术方案
前面两篇笔记我介绍了自动化测试前期调研注意事项和前置准备阶段切入点,有同学在后台提问: “做完前期的调研和准备工作,领导要求写一个落地方案并评审,自动化测试的落地方案该怎么写”? 首先这个要求我觉得挺正常&a…...

67. 二进制求和
文章目录题目描述竖式模拟转换为十进制计算题目描述 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 示例 1: 输入:a “11”, b “1” 输出:“100” 示例 2: 输入:a “1010”, b “1011” …...
1555数列极差(队列 优先队列 )
目录 题目描述 解题思路 代码部分 题目描述 在黑板上写了N个正整数作成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a*b1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得…...

代码随想录算法训练营第二十七天 | 93.复原IP地址,78.子集,90.子集II
一、参考资料复原IP地址题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/子集题目链接/文章讲解:https://programmercarl.com/0078.…...
jvm类加载器
概念 Bootstarp ClassLoader (引导类加载器) 加载String等核心的类Ext ClassLoader (拓展类加载器)System ClassLoader (系统类加载器) 加载用户自定义的类 关系 BootstrapClassLoader 包含 ExtClassLoaderExtClassLoader 包含 SystemClassLoader彼此是包含关系,不…...

Rust学习入门--【7】Rust 数据类型
类型系统 对于任何一门语言都是重中之重,因为它体现了语言所支持的不同类型的值。 类型系统 也是 IT 初学者最难啃的三座大山之一,而类型系统之所以难以理解,主要是没有合适的现成的参考体系。 我们说类型系统 存在的目的,就是 …...

阅读MySQL必知必会,查缺补漏
MySQL自带数据库 information_schema:是MySQL自带的数据库,主要保持MySQL数据库服务器的系统信息,比如数据库的名称,数据库表的名称,字段名称,存储权限等。 performance_schema:是MySQL系统自…...

MySQL数据库10——多表连接查询
数据如果在多个表里面,需要进行连接查询。 一般在pandas里面merge合并会用到一个索引,按这个索引的规则进行合并叫做有规则的等值连接。若不按规则连接,遍历两两组合的所有可能性,叫做笛卡尔积。 笛卡尔积连接 通常人们都会设置…...
华为OD机试 - 括号检查(Python)| 真题含思路
括号检查 题目 现有一字符串 仅由 (,),{,},[,] 六种括号组成,若字符串满足以下条件之一,则为无效字符串 任意类型的左右括号数量不相等 存在未按正确顺序(先左后右)闭合的括号, 输出括号的最大嵌套深度 若字符串无效则输出 0 0 <= 字符串长度 <= 100000 输入 一个只…...

安全渗透测试中的一款免费开源的超级关键词URL采集工具
安全渗透测试中的一款免费开源的超级关键词URL采集工具。 #################### 免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使…...
数据资产管理实践白皮书(6.0版)解读
目录 第一章数据资产管理概述 ( 一 ) 数据资产管理和数据要素的关系...

c/c++开发,无可避免的函数指针使用案例
一、函数指针简介 函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关。例如: char* (*pf1)(char * p1,char *p2); 这是一个函数指针,其…...
QT(12)-QThreadPool
1 简介 QThreadPool是Qt框架中的一个类,提供了一组工作线程池。该线程池自动管理一组工作线程,在线程可用时分配任务。使用线程池的主要优点是,它可以减少创建和销毁线程的开销,因为可以重复使用线程。 线程池设计用于场景中&am…...

【Java|golang】1138. 字母板上的路径
我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”],如下所示。 我们可以按下面的指令规则行动: 如果方格存…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...