802.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.xdnf.cn/news/1487730.html

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

相关文章

6.1 面向对象技术-面向对象相关概念

大纲 面向对象基本概念 面向对象分析

LeetCode 热题 HOT 100 (010/100)【宇宙最简单版】

【链表】No. 0206 反转链表 【简单】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#xf…

鸿蒙仓颉语言【cryptocj 库】(介绍与SHA、MD5、HMAC摘要算法)

cryptocj 库 介绍 cryptocj 是一个安全的密码库,包括常用的密码算法、常用的密钥生成和签名验证。 该库是对 C 语言的 openSSL 封装的仓颉加密算法 1 提供SHA、MD5、HMAC摘要算法。 前置条件:NA 场景: OHOS, Linux&#xff…

C#使用csvhelper实现csv的操作

新建控制台项目 安装csvhelper 33.0.1 写入csv 新建Foo.cs namespace CsvSut02;public class Foo {public int Id { get; set; }public string Name { get; set; } }批量写入 using System.Globalization; using CsvHelper; using CsvHelper.Configuration;namespace Csv…

Meta发布Llama 3.1模型

Llama 3.1模型 Meta(原Facebook)开发的一款大型语言模型(LLM),该模型在多个方面展现出了强大的性能和广泛的应用潜力。关于Llama 3.1模型的规模与参数,具体概述如下: 一、模型规模 Llama 3.1…

VBA实例-从Excel整理数据到Word

实现目录 功能需求数据结构复制数据到新sheet并分类数据添加序号、日期、时间三列数据添加序号列添加时间列 将名称和类别复制到word文件中将参数5和参数9中的一个复制到word文件中 实例 功能需求 1、将原始数据中不要的数据剔除 2、原始数据中增加序号、日期和时间三列数据&a…

opengl 写一个3D立方体——计算机图形学编程 第4章 管理3D图形数据 笔记

计算机图形学编程(使用OpenGL和C) 第4章 管理3D图形数据 笔记 数据处理 想要绘制一个对象,它的顶点数据需要发送给顶点着色器。通常会把顶点数据在C端放入 一个缓冲区,并把这个缓冲区和着色器中声明的顶点属性相关联。 初始化立…

【Unity2D 2022:UI】无法拖拽TextMeshPro组件

在预制体Card上挂载了四个Text Mesh Pro组件,分别命名为Name、HP、ATK、Description。 将预制体Card挂载脚本CardDisplay用来在预制体上显示属性,并创建TextMeshPro对象来接收TextMeshPro组件。 using TMPro; using UnityEngine; using UnityEngine.UI;…

leetcode日记(49)旋转链表

其实不难,就是根据kk%len判断需要旋转的位置,再将后半段接在前半段前面就行。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : …

2、springboot3 vue3开发平台-后端-基础数据准备,MybatisPlus整合

文章目录 1. 基础数据准备2. 整合MybatisPlus3. MybatisPlus 配置3.1 数据源配置3.2 mybatis-plus 分页插件配置3.3 mybatis-plus 自动填充3.4 代码生成器 1. 基础数据准备 直接拿前辈做的表结构使用。 /*Navicat Premium Data TransferSource Server : localhost_my…

sql server 连接报错error 40

做个简单的记录,造成40 的原因有很多,你的错误并不一定就是我遇到的这种情况. 错误描述: 首先我在使用ssms 工具连接的时候是可以正常连接的,也能对数据库进行操作. 在使用 ef core 连接 Sql Server 时报错: Microsoft.Data.SqlClient.SqlException (0x80131904): A network-r…

【Linux】从零开始认识多线程 --- 线程互斥

人生有许多事情 正如船后的波纹 总要过后才觉得美的 -- 余光中 线程互斥 1 线程类的封装1.1 框架搭建1.2 线程启动1.3 线程终止1.4 线程等待1.5 运行测试 2 线程互斥2.1 多线程访问的问题2.2 解决办法 --- 锁2.3 从原理角度理解锁 Thanks♪(・ω・)&am…

后端返回一个图片链接,前端如何实现下载功能?

纯原创文章,转载请说明来源。 一、背景 要实现一个下载功能,后端直接返回了一个图片的地址https://xxxxx/pic.jpg。如果我们直接通过window.open(url, _blank) 的方式去下载这个图片,会发现 Chrome 浏览器会对这个图片进行预览,…

氧气传感器在汽车制氧检测中的应用

在当今汽车工业中,技术的快速发展不仅带来了驾驶安全性和舒适性的显著提升,还为车辆增加了各种智能功能,以应对不同的驾驶环境和需求。氧气传感器作为一种关键的技术装置,在汽车制氧检测系统中的应用,尤其是针对疲劳驾…

DDoS 究竟在攻击什么?

分布式拒绝服务(DDoS)攻击是一种常见的网络攻击形式,攻击者通过向目标服务端发送大量的请求,使目标服务端无法进行网络连接,无法正常提供服务。 DDoS 攻击通常是由大量的分布在全球各地的 “僵尸” 计算机&#xff08…

npm下载pnpm

一、提供node_global和node_cache的文件夹 若不存在,可自行新建文件夹 二、配置环境变量 配置NODE_PATH变量: 配置Path变量: 三、执行cmd指令 npm config set prefix "D:\Configure\nodejs\node_global" npm config set cache &…

【Python】Facebook开源时间序列数据预测模型Prophet

文章目录 一、简介二、项目的文件解读三、Prophet类主要方法和参数3.1 主要参数3.2 主要方法 四、用法示例 一、简介 Prophet 是由 Facebook 开发的一个开源工具,用于时间序列数据的预测。它特别适用于处理具有强季节性和趋势的时间序列数据,并且对节假…

【数学建模】——【python】实现【最短路径】【最小生成树】【复杂网络分析】

目录 1. 最短路径问题 - 绘制城市间旅行最短路径图 题目描述: 要求: 示例数据: python 代码实现 实现思想: 要点: 2. 最小生成树问题 - Kruskal算法绘制MST 题目描述: 要求: 示例数据…

推荐系统三十六式学习笔记:工程篇.常见架构24|典型的信息流架构是什么样的

目录 整体框架数据模型1.内容即Activity2.关系即连接 动态发布信息流排序数据管道总结 从今天起,我们不再单独介绍推荐算法的原理,而是开始进入一个新的模块-工程篇。 在工程实践的部分中,我首先介绍的内容是当今最热门的信息流架构。 信息…

C#使用Clipper2进行多边形合并、相交、相减、异或的示例

Clipper2库介绍 开源库介绍: Clipper2在Github上的地址:https://github.com/AngusJohnson/Clipper2 Clipper2库对简单和复杂多边形执行交集(Intersection)、并集(Union)、差分(Difference&…