802.11 mac帧

news2024/11/17 13:30:57

mac帧格式

  • 帧格式
  • MAC head
    • Frame Control域
      • Protocol Version
      • Type和Subtype
      • To DS和From DS
      • More Fragments
      • Retry
      • Power Management
      • More Data
      • Protected Frame
      • Order
    • Duration/ID域
    • Address域
      • Address1 接收
      • Address2 发送
      • Address3 携带其他信息帮助mac帧传输
    • Sequence Control域
  • 管理帧
    • 格式
    • 定长字段
    • 信息元素
    • 802.11上层协议封装

帧格式

在这里插入图片描述
主要有3部分组成:

  1. mac heaad:包括帧控制(Frame Control)、时长(Duration)、地址(Address)等
  2. frame body:代表数据域。这部分内容的长度可变,其具体存储的内容由帧类型(type)和子类型(sub type)决定
  3. 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模式,有线电源供电

  1. Active模式。
  2. 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类:

  1. 对于PS-POLL帧,该域表示AID的值。其中最后2位必须为1,而前14位取值为1~2007。这就是该域取名ID之意
  2. 对于其他帧,代表离下一帧到来还有多长时间,单位是微秒。这就是该域取名Duration之意

Address域

IEEE 802.3[19]协议,MAC地址特点

  1. MAC地址可用6字节的十六进制来表示
  2. MAC地址的组成包括两个部分。0~23位是厂商向IETF等机构申请用来标识厂商的代码,也称为“组织唯一标识符”(Organizationally Unique Identifier,OUI)。后24位是各个厂商制造的所有网卡的一个唯一编号
  3. 第48位用于表示这个地址是组播地址还是单播地址,0是单播,1是组播
  4. 第47位表示该MAC地址是全球唯一的还是本地唯一。故该位也称为G/L位

802.11 MAC帧头部分共包含五个MAC地址定义

  1. BSSID
    在基础型BSS中,它为AP的mac地址。
    在IBSS中则是一个本地唯一MAC地址。
    MAC广播地址来说,其名称为wildcard BSSID

  2. 目标地址(Destination Address,DA)
    MAC数据包最终接收者

  3. 源地址(Source Address,SA)
    最初发出MAC数据包的地址

  4. 发送STA地址(Transmitter Address,TA)
    将MAC数据包发送到WM中的STA地址

  5. 接收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的管理信息数据大体可分为两种类型:

  1. 定长字段:指长度固定的信息,规范称为Fixed Field
  2. 信息元素:指长度不固定的信息。显然这类信息中一定会有一个参数用于指示最终的数据长度

定长字段

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)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/390489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3:生命周期(onErrorCaptured)

一、背景 当项目如果发生报错,影响程序体验。如果能以捕获的方式得到错误信息,而且还能定位问题,这样就好了,本文介绍onErrorCaptured实现我们想要的效果。 vue2:errorCaptured。使用与vue3同理。 vue3:…

某游戏app sig参数分析

今天要分析的app 叫 dGFwdGFwIDIuMjA= (base64 解码),来一起学习下。 找个视频接口,上来先抓个包,没错今天就是要分析下这个sig参数。 这个app 在高版本上有加固壳,并且还有frida检测(ps:遇到困难不会放弃,以后慢慢研究),这里只是研究sig参数,所以采用低版本了。 把…

ARM uboot 的移植2-从三星官方 uboot 开始移植

一、inand 驱动问题的解决 1、先从现象出发定位问题 (1) 解决问题的第一步,是定位问题。所谓定位问题,就是找到源代码当中导致这个问题的那一句或者那几句代码。有时候解决这个问题需要修改的代码和直接导致这个问题的代码是不同的。我们这里说的定位问…

一文深入分析虚拟机中对象锁实现!

一、前言 编程过程中经常会遇到线程的同步问题,Java 中对同步问题的解决方案比较多(synchronized、JUC、原子操作、volatile、条件变量等),其中synchronized 最方便、简单易用,也是java 编程中使用最多的临界区保护方…

接口自动化入门-TestNg

目录1.TestNg介绍2、TestNG安装3、TestNG使用3.1 编写测试用例脚本3.2 创建TestNG.xml文件(1)创建testng.xml文件(2)修改testng.xml4、测试报告生成1.TestNg介绍 TestNg是Java中开源的自动化测试框架,灵感来源于Junit…

CSAPP第九章 虚拟内存

理解虚拟内存的原因 本章前部分描述虚拟内存是如何工作的,后一部分描述应用程序如何使用和管理虚拟内存 物理和虚拟寻址 虚拟内存作为缓存的工具 页表 页命中 缺页 虚拟内存作为内存管理的工具 简化链接,简化加载,简化共享,简化…

K8s集群部署

#部署方式有多种,本文采用kubeadm组件的方式来部署K8s集群 安装要求: 至少三台主机内存最少2G,CPU2核集群网络互通可以访问外网禁止swap分区 环境说明: 系统:ubuntu22.04.1 版本信息:kubernetes:1.26.…

HashMap底层的实现原理

目录一、知识点回顾二、HashMap 的 put() 和 get() 的实现2.1 map.put(k, v) 实现原理2.2 map.get(k) 实现原理2.3 为何随机增删、查询效率都很高?2.4 为什么放在 HashMap 集合 key 部分的元素需要重写 equals 方法?2.5 HashMap总结2.6 JDK8 之后,HashM…

由点到面贯穿整个Java泛型理解

泛型概述 Java泛型(generics)是DK5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构。 泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数。 如我们经常使用的Array…

信息安全与数学基础-笔记-③一次同余方程

知识目录一次同余方程的解中国剩余定理中国剩余定理的应用一次同余方程的解 本文只研究一次同余方程的解。 f(x) 三 0 (mod m), 若有一个s能够满足该式子,那么该数字就是该式子的解, 在同余方程式中的解一般写成:x三s (mod m) 同…

Git学习入门(2)- 基本命令操作总结

个人博客:我的个人博客,各位大佬来玩1 创建 git仓库1.1 从现有工作目录中初始化新仓库需要到你需要用git管理的项目中输入以下命令:git init便会创建一个空的git项目,并且当前目录下会出现一个名为 .git 的目录, Git 需…

1.SpringSecurity快速入门

*SpringScurity的核心功能: 认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户 授权:经过认证后判断当前用户是否有权限进行某个操作 *第一步:创建springboot工程 *第二步:引入SpringSecurity依赖 *第三步:写controller,访问对应的url:localhos…

常用训练tricks,提升你模型的鲁棒性

目录一、对抗训练FGM(Fast Gradient Method): ICLR2017代码实现二、权值平均1.指数移动平均(Exponential Moving Average,EMA)为什么EMA会有效?代码实现2. 随机权值平均(Stochastic Weight Averaging,SWA&a…

Java Volatile的三大特性

本文通过学习:周阳老师-尚硅谷Java大厂面试题第二季 总结的volatile相关的笔记volatile是Java虚拟机提供的轻量级的同步机制,三大特性为:保证可见性、不保证原子性、禁止指令重排一、保证可见性import java.util.concurrent.TimeUnit;class M…

cadence专题【1】--多引脚IC如何创建orcad原理图库

cadense下载说明新建工程一、采用传统方式创建1、新建库文件2、放置pin array3、修改管脚信息二、采用电子表格方式创建1、新建库文件2、Ctrlc、Ctrlvcadense下载说明 cadence是目前最流行的EDA,下载装机全交给阿狸狗即可。 浏览器搜索cadence吴川斌或点击链接: ht…

【aiy篇】小目标检测综述

小目标检测(Small Object Detection)是指在图像中检测尺寸较小的目标物体,通常是指物体的尺寸小于图像大小的1/10或者更小,COCO为例,面积小于等于1024像素的对象维下目标。小目标检测是计算机视觉领域的一个重要研究方…

记录一下,学习express的小成就

终于搞出来了mongoose 和express 前后端链接的部分。 主要目的是为了使用markdown转换网页。 项目随便写的。没有参考价值,在此只是为了做个记录。作为学习的一个里程碑。对于nodejs,终于可以自己探索,也算是入门了吧。 各位观众不要看了。…

深度学习 | 入个Pytorch的小门

本文主要参考 1’ 2’ 3 更新:2023 / 3 / 1 深度学习 | 入个Pytorch的小门 - 1. 常见数据操作创建操作算术操作加法索引形状查询形状改变形状广播机制广播条件运算数据类型转换Tensor转NumPyNumPy转Tensor线性回归线性回归的基本要素1. 模型2. 数据集3. 损失函数4.…

pycharm的License Certificate使用方法

1 在邮箱获得License Certificate的激活码之后,打开pycharm,选择HELP 在HELP菜单里选择Register 2 输入username or email和密码进行登录 3 登录之后,根据提示(如果有的话),进入官网如下页面&#xff0c…

LC-1599. 经营摩天轮的最大利润(贪心)

1599. 经营摩天轮的最大利润 难度中等39 你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱,但每次轮转都需要支付一定的运行成本 runningCost 。摩天轮每次轮转都恰好转动 1 / 4 周。…