802.11 帧(MAC架构)
802.11帧封装及帧格式
- 802.11帧封装
- 802.11帧格式
802.11帧封装
首先我们需要知道数据在计算机中传递,是从OSI模型上层逐步向下传输至物理层,最终由物理层将数据转移至其他设备,而每层都将在数据上添加本层的包头信息。我们本章主要介绍数据链路层及物理层是如何组装及传递数据报文的。
数据链路层
数据链路层分为LLC(Logical Link Control,逻辑链路控制)子层及MAC(Media Access Control,媒体访问控制)子层。上层数据被移交给LLC子层后成为MAC服务数据单元,即MSDU(MAC Service Data Unit),而当LLC将MSDU发送到MAC子层后,需要给MSDU增加MAC包头信息,被封装后的MSDU成为MAC协议数据单元,即MPDU(MAC Protocol Data Unit),其实它就是802.11MAC帧。802.11MAC帧包括第二层报头、帧主体及帧尾。
MAC帧头将在本章后段详细介绍。
帧主体(Framebody)就是网络层传来的数据,即MSDU,又称数据位。负责在工作站间传送上层数据(payload)。在最初的指定的规格中,802.11帧最多可以传送2034字节的数据。802.2LLC标头具有八个字节,所以最多可以传送2296个字节。防止分段必须在协议层加以处理。
802.11与其他链路层协议的不同:
1、802.11帧中并没有任何上层协议的标记。上层协议是以额外标头type位加以标记,同时将其作为802.11所承载数据的开始。
2、802.11通常不会将帧填补至最小长度。802.11所使用的帧并不大,随着芯片与电子技术的进展,目前已经没有填补的必要了。
帧尾是32比特的循环冗余校验码(Cyclic Redundancy Check,CRC码),也被成为帧校验序列(Frame Check Sequence,FCS)。CRC和FCS底层算法相同。
FCS计算范围涵盖MAC标头里所有位以及帧主体。如果FCS有误,随即丢弃。并且不进行应答。
此时数据帧已经做好向下传输的准备了。
物理层
与数据链路层相似,物理层也分为两个子层。上层为PLCP(Physical Layer Convergence Procedure,物理层汇聚协议)子层,下层为PMD(Physical Medium Dependent,物理媒介相关)子层。PLCP子层将数据链路层传来的数据帧变成了PLCP协议数据单元(PLCP Protocol Data Unit,PPDU),随后PMD子层将进行数据调制处理并按比特方式进行传输。
PLCP接收到PSDU(MAC层的MPDU)后,准备要传输的PSDU(PLCP Service Data Unit ,PLCP服务数据单元),并创建PPDU,将前导部分和PHY报头添加到PSDU上。前导部分用于同步802.11无线发射和接收射频接口卡。创建PPDU后,PMD子层将PPDU调制成数据位后开始传输。
802.11帧格式
帧结构
我们刚才说到,802.11的帧均有三部分组成:帧报头、帧主体和帧尾。下面将介绍帧报头的组成及相关含义。
帧报头,也就是MAC首部,最大30字节(IEEE 802.11n的帧MAC首部最大36字节)。
组成部分 | 帧控制 | 时长/ID | 地址1 | 地址2 | 地址3 | 序列控制 | 地址4 | QoS控制 | HT控制 | 数据载荷 | 帧校验 |
---|---|---|---|---|---|---|---|---|---|---|---|
字节数 | 2 | 2 | 6 | 6 | 6 | 2 | 6 | 2 | 4 | 0~7955 | 4 |
备注 | 802.11n新增 | 802.11n新增 |
帧控制字段
帧控制字段长2个字节,由16bit的各部分组成。
组成部分 | 协议版本 | 类型 | 子类型 | 到DS | 从DS | 更多分片 | 重传 | 功率管理 | 更多数据 | 受保护帧 | 排序 |
---|---|---|---|---|---|---|---|---|---|---|---|
bit | 2 | 2 | 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
(1)协议版本
因目前发布的IEEE 802.11系列协议均相互兼容,所以此版本字段被设置为“00”。
(2)类型与子类型
帧类型分为三类:管理帧、控制帧、数据帧。而每种类型的子类型代表了不同的含义。
下一部分将介绍三类帧的子类型代表的含义。
(3)到DS和从DS
到DS | 从DS | 含义 |
---|---|---|
0 | 0 | 在同一个IBSS中,从一个STA直接发往另一个STA的数据帧相关的管理与控制帧 |
0 | 1 | 一个离开DS或者由AP中端口接入实体所发送的数据帧 |
1 | 0 | 一个发往DS或者与AP相关联的STA发往AP中端口介入实体的数据帧 |
1 | 1 | 使用“地址4”字段,用于无线桥接 |
(4)更多分片
为了提高传输速率,在信道质量较差时,需要将一个较长的帧划分为许多较小的分片。此字段置位“1”时,代表这个帧属于一个帧的多个分片之一,但不是最后一个分片。
(5)重传字段
此字段在任何为前一个帧重传的数据帧或管理帧中被设置为“1”,在其他所有帧中被设置为“0”。
(6)功率管理
该字段值为“0”时,表示该站点处于活跃(active)状态,该字段值为“1”时,代表该站点将处于节能(PS)模式。
(7)更多数据
该字段只有在站点处于PS模式时才有意义,其标示在AP上为该站点缓存了更多的数据。
当AP向一个站点发送广播/多播帧时,如果在同一个信标间隔内AP还有额外的广播/多播帧要向该站点发送,则将该字段设置为“1”,已通知站点不要进入休眠。
(8)受保护帧
当该字段值设置为“1”时,标示帧体已经被加密。该字段只能在数据帧以及“认证”管理帧中被设置为“1”。
(9)排序
通过该字段,当向一个节能站点(可能处于休眠状态)发送时,AP可以改变广播及多播MSDU相对于单播MSDU的发送顺序。该字段在802.11n之前仅在QoS数据帧中作为保留字段,该值被恒定设置为0。在802.11n中,被重用于标示QoS数据帧中存在HT控制字段。
时长/ID
该字段占16位,有三种可能形式
1、 设定NAV:当第15bit被设定为0时表示持续期,duration/ID位会用来设定NAV,数值代表目前所进行的传输预计使用介质多少微秒。
2、 免竞争期间所传送的帧:14bit为0,15bit为1.其他位为0。因此duration/ID位为32768,这个值被解读为NAV。它让没有收到Beacon信标帧的工作站,得以公告免竞争期间,以便将NAV更新为适当的数值,避免干扰到免竞争传输。
3、 PS-poll帧(省电-轮询):14bit为1,15bit为1。移动工作站可以关闭天线以达到省电的目的。休眠的工作站必须定期醒来。确保不至于丢失任何帧,从休眠状态醒来的工作站和必须发送一个PS-poll帧,以便从基站取得以前暂存的帧。此外,醒来的工作站会在PS-poll帧中加入连接识别码(association ID,简称AID),以显示其所隶属的BSS,AID值介于1-2007之间。
地址
IEEE 802.11网络节点按照功能及位置可分为四类:源端,传输端,接收端及目的端。相对应的就是原地址、传输地址、接受地址及目的地址。802.11帧中四个地址字段可能为以下MAC地址:RA、TA、BSSID、DA和SA。通常情况下801.11帧只使用前三个地址字段,地址4字段仅用于无线分布系统(WNS)。各个地址字段的内容取决于前面“到DS”和“从DS”这两个字段的值。
场景 | 到DS | 从DS | 地址1 | 地址2 | 地址3 | 地址4 |
---|---|---|---|---|---|---|
IBSS | 0 | 0 | DA/RA | SA/TA | BSSID | 未使用 |
从AP | 0 | 1 | DA/RA | BSSID/TA | SA | 未使用 |
到AP | 1 | 0 | BSSID/RA | SA/TA | DA | 未使用 |
WDS | 1 | 1 | BSSID/RA | BSSID/TA | DA | 未使用 |
注:地址3中BSSID用以过滤非次BSS的帧。
序列控制字段
序列控制字段占16位,其中序号子字段占12位,分片子字段占4位。重传的帧的序号和分片子字段的值都不变。序号控制的作用是使接收方能够区分开是新传送的帧还是因为出现差错而重传的帧。
数据帧
当帧控制字段中的“帧类型”字段值为“10”时,代表该帧为数据帧。
不同的子类型值代表了不同的数据帧。
子类型值 | 子类型描述 |
---|---|
0000 | 数据 |
0001 | 数据+CF-Ack |
0010 | 数据+CF-Poll |
0011 | 数据+CF-Ack+CF-Poll |
0100 | 空(数据) |
0101 | CF-Ack(无数据) |
0110 | CF-Poll(无数据) |
0111 | CF-Ack+CF-Poll(无数据) |
1000 | QoS数据 |
1001 | QoS数据+CF-Ack |
1010 | QoS数据+CF-Poll |
1011 | QoS数据+CF-Ack+CF-Poll |
1100 | QoS空(无数据) |
1101 | 保留 |
1110 | QoS CF-Poll(无数据) |
1111 | QoS CF-Ack+CF-Poll(无数据) |
802.11n MAC帧结构中地址4只有在Ad-hc组网时才出现。QoS字段只在子类型为“QoS数据”的数据帧中出现。HT字段只在“QoS数据”帧中出现,而且是在该帧中“帧控制”字段中的“排序”字段被设置为1时才存在。
1、IBSS帧
当无线MAC收到一个帧时,首先会去检查BSSID,只有BSSID与工作站相同的帧才会交由上层协议加以处理。
2、发送自基站(from AP)的帧
该帧会记载帧的源MAC地址。区分源与发送端是必要的,因为802.11MAC会将应答发送给帧的transmitter(发送端AP),而较上层协议会将应答发送给帧的source(源)。
基站只会应答来自工作站的NULL帧,而不会在应答中使用NULL
3、发送至基站(TO AP)的帧
4、WDS中的帧
当基站被部署为无线桥接器时,会用到四个地址位。
控制帧
当“帧控制”字段中的“帧类型”字段为“01”时,代表帧为控制帧。
不同的子类型数值代表了不同的控制帧。
子类型值 | 子类型描述 |
---|---|
0000~0110 | 保留 |
0111 | 控制包裹 |
1000 | 块确认请求 |
1001 | 块确认 |
1010 | PS-Poll |
1011 | RTS |
1100 | CTS |
1101 | ACK |
1110 | CF-End |
1111 | CF-End+CF-Ack |
子类型值为“0111”的“控制包裹”帧是在IEEE 802.11n中新引入的,其可以替换普通的控制帧。该帧复制了其所替换的控制帧中的所有字段,并在其基础上增加了一个“HT控制”字段,近似于将原先的帧包裹起来,所以得名 “控制包裹”。
控制帧也分为几类:RTS(请求发送)帧,CTS(允许发送)帧、ACK(确认)帧和PS-Poll(省电模式-轮询)帧
1、RTS/CTS:实现虚拟载波监听功能。
为防止冲突的发生,需要和以太网类似的冲突检测机制。
但是由于无线网络的特点,会产生隐藏节点,而物理载波监听无法发现隐藏节点,还是会产生冲突
因此出现虚拟载波监听机制。使用RTS/CTS以及NAV来实现这个功能
2、ACK:因为无线网络的特点,很难保证数据一定会到达目的地。为了确保数据一定到达。802.11采用确认、重传机制。
即每一个数据都必须确认ACK,如果未收到ACK,发送方重新发送。
这会导致信号差的时候,重传概率加大,造成传输速度下降
3、PS-poll:省电模式-轮询帧。这是考虑到使用无线网络的设备多数为移动设备,无法保证供电,为了尽量减少工作站的耗电,采取的一种模式。
*省电模式:工作站处于休眠状态(信号发射功率放大器关闭),基站为工作站暂存帧,然后定时发送Beacon(信标)帧,休眠的工作站定时醒来,获取信标帧,然后解析即可知道自己在基站中是否有暂存帧。如果有,则发送PS-poll帧,而且一个PS-poll只对应一个暂存帧,工作站会一直发送PS-poll帧,直至所有暂存帧全部取出。
所以PS-poll帧只能由工作站发送给基站。
RTS
请求发送帧用于对信道进行预约,其包括源地址、目的地址和本次通信所需的时间,RTS帧结构如下图
RTS帧结构 | 帧控制 | 时长 | 源地址 | 目的地址 | FCS |
---|---|---|---|---|---|
字节数 | 2 | 2 | 6 | 6 | 4 |
RTS帧的源地址代表接下来数据传送目的站点的地址,该站点为接下来的数据或者管理帧的直接接收方。RTS帧的目的地址部分为发送本RTS帧的站点的地址。时长以微秒为单位,总共为三个SIFS、一个CTS、一个ACK、第一个帧片段或帧的传送需要的时间。
RTS帧可用来取得介质的控制权,以便传输大型帧。至于多大为大型,是由网卡驱动程序的RTS threshold(门限)决定的。
CTS
允许发送帧用于对信道预约进行相应,其包括源地址和本次通信所需的时间,具体格式如下图
CTS帧结构 | 帧控制 | 时长 | 源地址 | FCS |
---|---|---|---|---|
字节数 | 2 | 2 | 6 | 4 |
CTS的源地址与之前RTS的目的地址相同,该站点为接下来的数据或者管理帧的直接发送方。
时长以微秒为单位,其值等于RTS帧中获得的值减去一个SIFS的时长,再减去CTS帧的时长。
ACK
当帧控制字段中“帧类型”值为“00”时,代表该帧为管理帧。不同的子类型值代表了不同的管理帧。
ACK帧结构 | 帧控制 | 时长 | 源地址 | FCS |
---|---|---|---|---|
字节数 | 2 | 2 | 6 | 4 |
ACK帧的源地址是从其前一个数据、管理、BAR、BA或PS-Poll帧的地址2字段中复制得到的,以确认对前一个帧的正确接收。
PS-Poll
省电模式-轮询
因为PS-Poll帧中并未包含duration信息,因此无法更新NAV。不过,所有收到PS-Poll帧的工作站,都会以短帧间隔加上发送ACK信号所需要的时间来更新NAV。使得基站在发送ACK信号时,不会与移动基站发生碰撞。
管理帧
当帧控制字段的“帧类型”字段为“00”时,代表该帧为管理帧。不同的子类型值标示了不同的管理帧。
子类型值 | 子类型描述 |
---|---|
0000 | 关联请求 |
0001 | 关联相应 |
0010 | 重关联请求 |
0011 | 重关联相应 |
0100 | 探询请求 |
0101 | 探询相应 |
0110~0111 | 保留 |
1000 | 信标 |
1001 | 广播业务量指示消息(ATIM) |
1010 | 去关联 |
1011 | 认证 |
1100 | 解除认证 |
1101 | 功能帧 |
1110 | 无需确认的功能帧 |
1111 | 保留 |
管理帧的帧格式与帧的子类型无关,且地址字段不随帧的子类型而该表。其中,帧主体由每个管理子类型帧定义的必须固定字段和信息元素组成,且它们只能以特定的顺序出现。
1、Beacon帧
信标帧是相当重要的维护机制,主要用来宣告某个网络的存在。定期发送的信标,可让移动工作站得知该网络的存在,从而调整加入该网络所必要的参数。
2、检测要求
移动工作站会利用probe request帧来扫描所在区域内有哪些802.11网络。Probe request帧包含两个位。SSID和移动工作站所支持的速率。收到Probe request帧的工作站会据此判断对方能否加入网络。
3、检测应答
如果检测要求所探查的网络与之相容,该网络就会以probe response帧应答。
4、 IBSS的数据待传指示通知信息(ATIM)帧
IBSS中的工作站如果为处于休眠状态的接收者暂存帧,就会在递送期间发送一个ATIM帧,通知对方有信息待传。
5、解除连接和解除认证(disassociation与 deauthentication)
6、连接要求帧
Capability information(性能信息)用来指出移动工作站所欲加入的网络类型
7、重新连接帧
位于相同的扩展服务区域,但在不同基本服务区域之间游走的移动工作站,若要再次使用传输系统,必须与网络重新连接。
8、连接应答与重新连接应答(associationresponse与reassociationresponse)
9、认证(authentication)
10、Action帧
802.11h加入了action帧的支持,用来触发测量动作
补充 802.11与以太网帧转换
无线基站的核心,其实就是桥接器,负责在有线与无线介质之间转换帧。
无线介质到有线介质
1、基站收到一个帧,会检测该帧是否完整。接下来,基站会帧对所使用的物理城,检视物理层标头,然后验证802.11帧上的帧检验码
2、该帧无误,基站会继续检视是否应该进一步处理
a:传送至基站的帧,会将基站的MAC地址(BSSID)放到802.11MAC标头的address1位。不符该基站BSSID的帧应予以丢弃。(有些产品并未实现此步骤)
b:802.11 MAC接着监测且移出重复的帧。产生重复帧的原因很多,不过最常见的情况是802.11应答信息在传递过程中丢失或有所损毁。为了简化上层协议的工作,因此由802.11MAC负责剔除重复的帧
3、一旦决定处理该帧,就必须进行解密,因为该帧会收到链路层安全算法的保护
4、解密之后,判断该帧是否为帧片段,是否重组。完整性保护针对重组后完整帧,而不是个别的帧片段。(完整性保护ICV在数据中,也被加密)
5、经过步骤2的检验,判定基站必须桥送该帧,较复杂的802.11MAC标头就会被转换为较简单的以太网MAC标头。
a:记录在802.11MAC标头的address3的目的地址,会被复制到以太网的目的地址。
b:记录在802.11MAC标头的address2位的源地址,会被复制到以太网的源地址
c:从802.11data位里的SNAP标头,将TYPE类型代码复制到以太网帧里的type位。如果该以太网帧亦使用SNAP,就复制整个SNAP标头
d:顺序信息主要供帧片段重组之用,不过当帧被桥送之后即立即丢弃
e:如果有标准的服务质量处理程序,即在此进行无线与有线的Qos对应。不过到目前为止,用来表示服务质量的形式,通常就是在有线帧中使用的802.1p优先级等级bit,或者其他的控制形式。
6、重新计算帧校验码。以太网与802.11使用相同的算法来计算FCS,不过802.11帧多出一些位,同时为FCS所保护。
7、将产生的新帧交付以太网界面传送
有线介质至无线介质
1、验证以太网FCS后,基站首先会检视是否需要进一步处理所接收到的帧,也检视该帧的目的地址是否属于目前与基站连接的工作站。
2、将SNAP标头加入以太网帧的数据之前。上层封包是以SNAP标头进行封装,而其type位是自以太网里的类型代码复制而来。如果该以太网帧也使用SNAP,则复制整个SNAP标头
3、对帧的传送进行排程。802.11包含复杂的省电过程,将帧置于传送序列之前,基站可能会将帧暂存于缓存区。
4、一旦帧被置于序列待传,就会被赋予一个顺序编号。如有必要,所产生的数据可以用完整性检测值加以保护。如果帧需要分段,则会根据事先设定好的分段门限进行分段。分段帧时,将会在sequence control位指定片段编号
5、如果帧需要保护,对帧的本体进行加密
6、802.11MAC标头根据以太网MAC首部产生
a:将以太网的目的地址复制到802.11MAC标头的address1位
b:将BSSID置于MAC标头的address2位,以作为帧的发送者
c:将帧的源地址复制到MAC标头的address3
d:将其它位填入802.11MAC标头。也就是把预计传送时间填入duration位,并把适当的标志填入到frame control 位
7、重新计算帧校验码。以太网与802.11使用相同的算法来计算FCS,不过802.11帧多出一些位,同时为FCS所保护
8、所产生的新帧交付802.11界面传送界面
————————————————
本文将持续补充并修改相关内容,若有错误或疏漏请指正,感谢。
感谢以下文章,部分内容取自各链接。
《HCNA-WLAN 学习指南》 高峰、李盼星等人编著
https://blog.csdn.net/u012503786/article/details/78783874
上一篇: Visio/project安装问题
下一篇: MySQL5.7.21解压版安装详细教程
推荐阅读
-
苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?
-
程序员应了解的那些事(25)X86-64架构下 寄存器和栈帧说明
-
【CWNA官方学习指南 第3版】第十章 802.11 无线局域网架构
-
软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)
-
arm架构函数帧栈分析
-
Mac OS X 10.2 系统架构和功能介绍
-
Mac OS X 10.2 系统架构和功能介绍
-
苹果Mac换用ARM架构:M1跑X86软件为什么不会卡?
-
802.11 帧(MAC架构)
-
【CWNA官方学习指南 第3版】第十章 802.11 无线局域网架构