802.11无线网络权威指南(二):无线帧结构

news2024/11/14 14:12:11

802.11无线网络权威指南(二):无线帧结构

  • 无线协议桢的三种类型
  • 无线网络帧结构
    • 完整帧格式
      • control frame
      • Duration/ID
      • Address
      • Sequence Control
      • QoS Control
      • HT Control 字段
      • Frame Body 帧体
      • FCS 校验域
    • 帧细节
      • 管理帧
      • 控制帧
        • RTS 帧
        • CTS 帧
        • ACK 帧格式
        • PS-POLL省电轮询
      • 数据帧

无线协议桢的三种类型

类型和字段定义了无线网络的三种类型,分别是:

  1. 管理帧(Management frames)
    维护接入点和无线客户端之间的通信,管理该框架拥有以下子类型:
    Authentication 身份认证帧
    De-authentication 解除认证帧
    Association Request 关联请求帧
    Association Response 关联回应帧
    Reassociation Request 重新关联请求帧
    Reassociation Response 重新关联回应帧
    Disassociation 解除关联帧
    Beacon 信标帧
    Probe Request 探测请求帧
    Probe Response 探测响应帧
    ATIM帧

  2. 控制帧(Control frames)
    负责客户端和接入点的数据交换,类型为:
    RTS帧(Request to Send)
    CTS帧(Clear to Send)
    ACK帧(Acknowledgement)

  3. 数据帧(Data frames)
    这些不同类别的数据包被统称为数据包类型。

解释几个比较难理解的帧:
beacon 帧:由AP以一定的时间间隔周期性发出,以此来告诉外界自己无线网络的存在,相当于广播。
RTS 帧:发送数据之前的请求帧。
CTS 帧:由接收方发出,用于确认可以接收数据包,并通过广播方式通知其他设备不要发送数据包,以确保接收方能够正常接收。
RTS/CTS 的流程:
a. RTS/CTS 是用来解决传送大的数据包前的信道预约功能,由程序中设定的门限值来控制的;超过该门限值的数据帧由 RTS/CTS 先行清空介质,而较小的帧则直接传送,不需要发送。
b. 发送大数据前,先向AP路由发送RTS请求占用信道;
c. AP收到后广播发出CTS,告知所有设备;
d. 设备收到CTS和ACK后即可开始发送大的数据帧。

按照书里的描述:RTS/CTS技术是一种用于解决无线网络中的信号冲突问题的方法。在无线网络中,当多个设备同时发送信号时,会发生信号碰撞,导致数据包损坏和传输延迟增加。RTS/CTS技术通过引入两个新的控制帧,即RTS帧和CTS帧,来协调发送方和接收方之间的通信,有效减少信号冲突,提高网络传输效率。

ATIM帧:(‌Announcement Traffic Indication Message)‌是WLAN中用于通知处于休眠状态的接收者有信息待传的一种管理帧。‌

无线网络帧结构

完整帧格式

Control framesDuration/IDadress1adress2adress3Sequence controladress4QoS controlHT controlFrame BodyFCS

完整的帧共分三大部分:

  • 802.11 协议MAC头部分
  • Frame Body(帧体部分)
  • FCS帧校验

control frame

ProtocolTypeSub typeTo DSFrom DSMore FlagRetryPwr MgmtMore Dataprotected frameOrder
2bit2bit4bit1bit1bit1bit1bit1bit1bit1bit1bit
  • Protocol:表示802.11协议版本,目前802.11数据帧有两个版本:0或1;

  • Type:802.11 帧的类型,3类;

  • Sub type:802.11帧的子类型,后面讲;
    在这里插入图片描述

  • To DS 和From DS:这两个位用来指示帧的目的地是否为分布式系统。在基础结构型网络里,每个帧都会设定一个DS位(其中DS为Ap或DS系统);

To DS 和 From DS 取值含义
To DS = 0 From DS = 01.同一IBSS中,从一个STA到另一个STA;2.同一个BSS中,从一个非 AP 的STA到另一个非AP的STA或者BSS外部
To DS =1 From DS = 0代表发送给DS或AP的MAC帧;发往DS的帧必须通过AP转发
To DS =0 From DS = 1代表来自DS或AP的数据帧
To DS =1 From DS = 1仅 Mesh BSS 支持
  • More Frag:表示该帧是否有更多的分片;
  • Retry:表示该帧是否需要重传;
  • Pwr Mgt:
    1: 表示STA在发送完本帧后,将关闭天线处于休眠状态;
    0:表示处理工作状态
    (说明:AP不允许休眠,只有STA可以,因此AP发送的数据帧该字段恒为0)
  • More Data:
    1:至少还有一个数据帧要发送给STA;
    0:此帧已经发送完成;(说明:此bit只用于管理数据帧,在控制帧中此bit恒为0)
  • Protected Frame:
    1:表示该帧受到链路层安全协议的保护;否则为0;
  • Order:
    1:长帧分段传送采用严格编号方式;否则为0。

Duration/ID

Duration / ID 是持续时间和ID位,共有16bit,根据第14bit和15bit的取值组合,有以下三种类型的含义:

  1. 当第15bit被设置为0时,该字段就会被用来设定NAV值,表明该帧和它的确认帧将会占用信道多长时间(单位为微秒);工作站必须监视所收到的任何帧头并据此更新NAV(0 - 32767)。
  2. 当第15bit被设置为1,第14bit为0时,该字段用于无竞争周期(CFP)中,该值被解读为NAV(固定为32768),它让没收到beacon的所有工作站都得以公告无竞争周期;
  3. 当第15bit被设置为1,第14bit为1时,用于PS-Poll帧,PS中的工作站会定期醒来,此时会发送一个PS-Poll,其中有关联标识符(AID),以表示其所属的BSS。(值范围为:1 - 2007)

Address

一个802.11帧最多包含4个Address。因随着帧类型的不同,这些字段的作用也有所差异。分别为:

  • SA:源地址
  • DA:目的地址
  • TA:传输工作站地址
  • RA:接收工作站地址

SA与DA必不可少,后两个只对跨BSS的通信有用。
目的地址可以为单播地址(Unicast address)、多播地址(Multicast address)、广播地址(Broadcast address)。

  • 如果传送给实际媒介的第一个位为0,则该地址为单播(unicast);
  • 如果第一位为1,则该地址为组播(multicast);
  • 如果所有的位均为1,则该地址为广播(broadcast)。

802.11帧中Address字段含义根据帧的不同而不同,具体如下表所示:

网络类型Address1(接收端)Address2(发送端)Address3Address4
IBSSDASABSSID未使用
To APBSSIDSADA未使用
From APDABSSIDSA未使用

以下为To DS和From DS字段和Address字段 间的关系的使用场景:
在这里插入图片描述

Sequence Control

序列控制域。 共16位,前4位代表片段编号(Fragment Number),后12位为帧顺序编号(Sequence Number),域格式如图下所示。
在这里插入图片描述

  1. sequence number:当上层帧交付到MAC层传送时,会被赋予一个 sequence number。
    a. 相当于已传帧的计数器取 4096 的模;此计数器由 0 起算,MAC每处理一个上层封包就会加1;
    b. 如果上层封包被分片处理, 所有帧片段(Fragment Number)都会具有相同的顺序编号;
    c. 如果是重传帧,则顺序编号不会累加;
    d. 也是从0开始计数,如果满了以后那么循环为0,重新计数。
    e. 控制帧没有帧顺序编号,重传帧不使用新的帧顺序编号。

  2. Fragment Number:用于控制分片帧。如果数据量太大,则MAC层会将其分片发送。每个分片帧都有对应的分片编号, 其初始为0,每新增一次分片其会增加1;

QoS Control

QoS control是802.11e中新增的一个MAC层的字段。
Qos Control域有2个字节,QoS Control field中比较重要的字段是 TID(Traffic identifier)。
TID 值 0-7 用于具有优先权的默认 QOS 设定值,表示使用者的优先顺序(UP);
TID 值 8-15 用于自定义的QOS类型,即表示数据流ID(TSID),节点可以通过ADDTS过程和AP(WLC)协商,从而特定设置一些对应的QoS参数。

QoS control字段格式定义如下图所示,主要分几个部分:

  1. BIT0-BIT3:TID(Traffic identifier)业务流相关的ID号(有8种TC和8种TS数据类型);
  2. BIT4:标志,直接决定BIT8-BIT15的内容。有 以下几种情况:
    a. EOSP:End Of Service Period。数据下行(即由AP发送),此时又分两种情况:
    ① AP发Null Data+CF ACK: BIT8-BIT15内容为 AP PS Buffer State;为1代表当前服务周期结束;
    ② AP发CF Pull包:BIT8-BIT15内容为TXOP Limit值;
    b. 0:数据上行(由STA发送),BIT8-BIT15内容为TXOP Duration Request;
    c. 1:数据上行(由STA发送),BIT8-BIT15内容为Queue size;
  3. Bit5-Bit6:ACK Policy;
  4. Bit7:打开和关闭A-MSDU帧聚合的标志;
    在这里插入图片描述
    TID有4个Bit(B0-B3),一共可以表示16个类型,其中8个对应TC(规定的8种默认优先级类型),另外8个对应TS,TS的参数是通过STA与AP协商的。
    也就是说TID不仅仅被设置为AC_BK、AC_BE、AC_VI和AC_VO,还可以使用TS进行协商。
    在这里插入图片描述
    802.11e 提供了4个不同的优先级的流量种类,当流量 MSDU 到达 802.11e 定义的MAC层时,会根据其 802.1D 的 tag 标识被分别存放到4个不同的queue里,分别是AC_VO,AC_VI,AC_BE,AC_BK,如下 图所示:
    在这里插入图片描述
  5. 语音服务(Voice,AC_VO):一般为 VoIP 流量类型,对延迟最为敏感,同时也是优先级最高的流量。
  6. 视频服务(Video,AC_VI):视频流量的优先级低于语音服务。视频服务也是延迟敏感类型的服务,所以具有一定的优先级。
  7. 尽力传输(Best-effort,AC_BE):默认的无线流量类型就是best-effort类型,比如网页访问的数据流量类型。对于延迟有一定需求,但是没有那么敏感。
  8. 背景流量(Background,AC_BK):对于延迟要求最不敏感的流量,比如文件传输,打印作业的流量。

HT Control 字段

该字段在 802.11 的 11n 协议中引入,11ac和11ax还有点不同,先只看11n的,字段如图:
在这里插入图片描述

  1. Link Adaption Control (Bit0-Bit15)
    在这里插入图片描述
  • TRQ:Training Request.探测请求,该位设置为1请求接收者发送探测帧(sounding PPDU), 主要用于波束成形(beaming);
  • MAI:MCS Request (MRQ) or ASEL Indicator。用于mcs请求或天线选择;值设置为14表示打开ASELC(天线选择控制)标志; 否则即为MCS请求,用于链路自适应动态选择最佳MCS;
  • MFSI:MCS Feedback Sequence Identifier。用于调制解调方案的反馈;
  • MFB/ASELC:MCS feedback and Antenna Selection Command。MAI设置为天线选择字段,说明天线选择命令和数据;否则该字段包含推荐的MCS反馈;
  1. Calibration Position (BIT16-BIT17):校准位置;
  2. Calibration Sequence (BIT18-BIT19):校准序列;
  3. Reserved
  4. CSI/Steering (BIT22-BIT23): Beamforming feedback类型
    0:No feedback required
    1:CSI
    2:Noncompressed beamforming
    3:Compressed beamforming
  5. NDP Announcement:设置为1表示有一个后续的NDP;
  6. AC Constraint:指示RD数据帧的映射AC是否被约束到单个AC
  7. RDG/More PPDU:Reverse Direction协议相关。当使用反向 (RD) 协议时,获得了 TXOP 的 STA 可以授予其他 STA 在同一 TXOP 内回传数据的机会,而无需响应的 STA 在传输之前竞争介质。

Frame Body 帧体

  1. 代表数据域, 也称为数据字段,负责传输上层有效载荷(Payload)。在802.11标准中,传输的载荷报文也被称为MSDU(MAC Service Data Unit);
  2. 这部分内容的长度可变,其具体存储的内容由帧类型(type)和子类型(sub type)决定;
  3. 根据帧类型,封装的上层数据单元长度为0~2312个字节;所以802.11帧在没有帧聚合(A-MSDU)的情况下最大长度为:2312 + 34(MAC头和CRC,不包括QoS和HT control) = 2346个字节;

FCS 校验域

包含32位循环冗余码。用于检查接收帧的完整性。类似于Ethernet中的CRC。

帧细节

Frame Control(帧控制域)中的Type(类型域)和Subtype(子类型域)共同指出帧的类型。
当Type的 Bit3 和 Bit2 位为:
00:管理帧
01:控制帧
10:数据帧

管理帧

主要用于STA与AP之间协商和连接的控制,如关联、认证、同步等。 而Subtype进一步判断帧类型,如管理帧里头细分为关联和认证帧;

TypeSubTypeFrameType
000000Association request (连接请求)
000001Association response (连接响应)
000010Reassociation request(重连接请求)
000011Reassociation response(重连接联响应)
000100Probe request(探测请求)
000101Probe response(探测响应)
001000Beacon(信标,被动扫描时AP 发出,notify)
001001ATIM(通知传输指示消息)
001010Disassociation(解除连接,notify)
001011Authentication(身份验证)
001100Deauthentication(解除认证,notify)
001101~1111Reserved(保留,未使用)

控制帧

用于竞争期间的握手通信和正向确认(RTS信道预约、CTS预约成功、ACK等)、结束非竞争期等,为数据帧的发送提供辅助功能。

TypeSubtypeFrame type
011010Power Save(PS)- Poll(省电-轮询)
011011RTS(请求发送,即: Request To Send ,预约信道,帧长20字节)
011100CTS(清除发送,即:Clear To Send ,同意预约,帧长14字节)
011101ACK(确认)
011110CF-End(无竞争周期结束)
011111CF-End(无竞争周期结束)+CF-ACK(无竞争周期确认)
RTS 帧

RTS 帧可用来取得媒介的控制权,以便传送大型帧;大型帧是超过网卡驱动程序中 RTS threshold(阈值)的帧。
媒介访问权只能保留给单播(unicast)帧使用,而广播(broadcast)与组播(multicast)帧只是简单地传送。
RTS 帧只有帧头,不携带任何数据,帧头之后就是 FCS 帧校验码,格式如下:
RTS 帧
RTS 帧会试图预约媒介使用权,供帧交换过程使用。因此 RTS 帧传送必须计算 RTS 帧结束后还需要多少时间用于帧交换。不过下图也明示了要 3 个 SIFS 周期、一个 CTS 持续时间、最后的 ACK 加上传送第一个帧片段所需要的时间。
RTS 帧的 duration 字段:
在这里插入图片描述

CTS 帧

CTS 帧有两种目的,其格式如下:
CTS 帧
起初 CTS 帧仅用于回复 RTS 帧,如果之前没有 RTS 帧出现,就不会产生 CTS。
后来 CTS 帧被 802.11g 保护机制用来避免干扰较旧的工作站。
而用来响应 RTS 的 CTS 帧的发送端会以 RTS 帧的 duration 值作为持续时间的计算基准。RTS 帧会为整个 RTS-CTS-frame-ACK 交换过程预留媒介使用时间。
不过当 CTS 帧被传送出去后,只剩下其他未传帧或帧片段及其确认待传。CTS 帧发送端会将 RTS 帧的 duration 值减去传送 CTS 帧及其后的短帧间间隔送需要的时间,然后将计算结果置于 CTS 的 duration 字段中。
CTS 的持续时间:
在这里插入图片描述

ACK 帧格式

确认帧。因为无线网络的特点,很难保证数据一定会到达目的地。
为了确保数据一定到达,802.11采用确认、重传机制,即每一个数据都必须确认ACK,如果未收到ACK,发送方重新发送。
这会导致信号差的时候,重传概率加大,造成传输速度下降;
ACK 帧
非最终ACK帧的 Duration 字段:
在这里插入图片描述

PS-POLL省电轮询

当一个移动工作站从省电模式中苏醒后,便会传送一个 PS-Poll 帧给接入点以取得任何缓存帧。
PS-POLL 帧:
在这里插入图片描述
AID:PS-Poll 帧会以 MAC 标头的第三位与第四位来代表关联标识符(association ID)。
关联标识符是接入点指定的一个数值,用来识别关联。将此标识符放入帧中,可让接入点找出为其(移动式工作站)缓存的帧。

PS-Poll 帧没有 duration,因此无法更新 NAV。
但是收到 ACK 的工作站会以短帧间间隔加上传送 ACK 信号需要的时间来更新 NAV。

数据帧

用于在竞争期和非竞争期传输数据。
一般数据帧:
在这里插入图片描述
这种数据帧只能在无竞争周期出现。不可能出现在 IBSS(独立基本服务集)。
另一种区分方式是对携带数据与提供管理功能的帧加以区分。
下面是数据帧的分类方式:

TypeSub typeFrame type
100000Data(数据)
100001Data+CF-ACK
100010Data+CF-Poll
100011Data+CF-ACK+CF-Poll
100100Null data(无数据:未传送数据)
100101CF-ACK(未传送数据)
100110CF-Poll(未传送数据)
100111Data+CF-ACK+CF-Poll
101000Qos Data
101001Qos Data + CF-ACK
101010Qos Data + CF-Poll
101011Qos Data + CF-ACK+ CF-Poll
101100QoS Null(未传送数据)
101101QoS CF-ACK(未传送数据)
101110QoS CF-Poll(未传送数据)
101111QoS CF-ACK+ CF-Poll(未传送数据)

参考书:《802.11无线网络权威指南》
参考链接:https://zhuanlan.zhihu.com/p/679499856

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

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

相关文章

使用BenchmarkDotNet对C#代码进行基准测试

一、基准测试 基准测试(benchmarking)是一种测量和评估软件性能指标的活动。你可以在某个时候通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性…

手持气象站:掌中的天气预报员

在科技日新月异的今天,手持气象站作为一种便携、智能的气象监测设备,逐渐成为了户外探险、农业生产、环境监测等领域的得力助手。它以其小巧的体积、丰富的功能和精准的数据,赢得了广大用户的青睐。 一、手持气象站的概述 手持气象站是一种集…

Springboot 多数据源事务

起因 在一个service方法上使用的事务,其中有方法是调用的多数据源orderDB 但是多数据源没有生效,而是使用的primaryDB 原因 spring 事务实现的方式 以 Transactional 注解为例 (也可以看 TransactionTemplate, 这个流程更简单一点)。 入口:ProxyTransa…

算法通关:006_1二分查找

查找一个数组里面是否存在num import java.util.Arrays;/*** Author: ggdpzhk* CreateTime: 2024-07-23*/ public class _006 {//二分查找//保证数组有序才能用二分查找,不然无意义public static boolean exist(int[] arr,int num){if(arr null || arr.length 0)…

VUE3学习第二篇:报错记录

1、在我整理好前端代码框架后,而且也启动好了对应的后台服务,访问页面,正常。 2、报错ReferenceError: defineModel is not defined 学到这里报错了 在vue网站的演练场,使用没问题 但是在我自己的代码里就出问题了 3、watchEffec…

2024-07-23 Unity插件 Odin Inspector11 —— 使用 Odin 自定义编辑窗口

文章目录 1 OdinEditorWindow1.1 运作方式1.2 使用特性绘制 OdinEditorWindow1.3 在 OdinEditorWindow 中渲染对象 2 OdinMenuEditorWindow2.1 添加菜单导航栏2.2 添加导航栏示例 ​ Odin Window 可以完整地访问 Odin 绘图系统,不再需要操心 Window 的绘制 方式&am…

MySQL的主从复制以及读写分离

主从复制 主从复制的原理; 读写分离,MHA(高可用)的前提是得要有主从复制 主从复制的模式: 1、MySQL的默认模式: 异步模式 住主库在更新完事务之后会立即把结果返回给从服务器,并不关心从库…

Github 2024-07-17 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-17统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量非开发语言项目3Python项目3Rust项目2TypeScript项目2MDX项目1项目化学习 创建周期:2538 天协议类型:MIT LicenseStar数量:161973 个Fork数量…

Unity UGUI 之 Slider

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 1.Slider是什么 滑块,由三部分组成:背景 填充条 手柄 填充条就是…

提升网站性能:ThinkPHP6中如何实现Mysql分页查询

随着互联网的快速发展,web应用程序的开发也越来越复杂。而分页查询是web应用程序中常见的功能之一。thinkphp6是一个web框架,可以帮助开发人员快速开发应用程序。在本文中,我们将讨论如何在thinkphp6中使用mysql进行分页查询。 首先&#xf…

【java计算机毕设】医用物理学实验考核系统java MySQL ssm JSP maven项目设计源码+文档 寒暑假作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】医用物理学实验考核系统java MySQL ssm JSP maven项目设计源码文档 寒暑假作业 2项目介绍 系统功能: 医用物理学实验考核系统包括管理员、学生、教师三种角色。 管理员功能包括个人中心模块用于…

Google Cloud Platform数据工程简介

Google Cloud Platform数据工程简介 前言 云计算的出现为数据驱动型组织提供了采用成本效益高且可扩展的数据工程解决方案的机会。在云服务提供商中,Google Cloud Platform (GCP) 是近年来表现优异的领导者之一。GCP的增长被归因于其在企业和初创公司中的日益普及…

【Leetcode】十八、动态规划:不同路径 + 最大正方形

文章目录 1、动态规划2、leetcode509:斐波那契数列3、leetcode62:不同路径4、leetcode121:买卖股票的最佳时机5、leetcode70:爬楼梯6、leetcode279:完全平方数7、leetcode221:最大正方形 1、动态规划 只能…

SAP库龄计算报表(源码)

一个简单的库龄计算报表,根据移动类型来判断最后移动日期,包含批次和非批次库存。 *&---------------------------------------------------------------------* *& Report ZMMR_016 *&---------------------------------------------------…

数据代理实践

1,什么事数据代理机制? 通过访问 代理对象的属性 来向该访问 目标对象的属性 数据代理机制的视线需要依靠,Object.defineProperty()方法 2, ES6新特性: 在对象中的函数/方法 :function是可以省略的 &l…

P2-AI产品经理-九五小庞

项目要怎么做 需求,技术,构建流程,算法 要懂,懂什么? 懂产品方案,包含: 不懂,会遇到哪些问题? 跟算法供应商沟通的专业度不足,容易被边缘化,…

手写数字识别(机器学习)

一:一对多分类方法(one-vs-all) 这里先上的代码,想看原理可以到代码下面。 在数据集中,y的取值为1~10,y10表示当前数字为0 首先读取数据,并对数据进行切分。 import pandas as pd import numpy as np import matplotlibmatplo…

美摄科技企业级视频拍摄与编辑SDK解决方案

在数字化浪潮汹涌的今天,视频已成为企业传递信息、塑造品牌、连接用户不可或缺的强大媒介。为了帮助企业轻松驾驭这一视觉盛宴的制作过程,美摄科技凭借其在影视级非编技术领域的深厚积累,推出了面向企业的专业视频拍摄与编辑SDK解决方案&…

Linux磁盘扩容lvm

目录 Linux磁盘管理基础知识介绍 1.确认分区类型 2.添加新硬盘 3.给新硬盘添加分区 (2)指定分区类型 4.创建物理卷 5.创建卷组 6.扩展逻辑卷 7.刷新文件系统 (1)查看文件系统 xfs文件系统使用(centos&#…

RocketMQ集群搭建,看完这篇文章你就懂了(基于2m-2s-async模式)

前言 上一篇初步认识了RocketMQ,这一篇文章我们简单来搭建一个RocketMQ集群。RocketMQ支持多种集群部署模式,其中最常用的是多主多从的异步复制模式(2m代表两个master,2s代表两个slave,async代表异步刷盘的机制&#…