802.11无线帧协议分析(MAC架构)
【1】描述802.11 帧格式
1、802.11帧
802.11帧的最大长度2346个字节,结果如下:
1.1 802.11帧—Frame Control(控制帧)
在802.11帧的开头,占2个字节共8bit位。
所有帧的开头均是长度两个元组的Frame Control位,如下图所示:Frame Control位包含以下bit位。
Protocol(协议版本):上图中,协议版本的值为0,因为这是目前唯一的版本,未来可能会出其他新的版本。
Type(类型):用以区分帧类型。(数据,控制,管理三种类型帧)
管理帧的Type值为00。
控制帧的Type值为01。
数据帧的Type值为10。
帧类型11保留尚未使用。
Subtype(子类型):此位代表发送帧的子类型。
例如请求发送帧RTS的Type=01,Subtype=1011(RTS);
允许发送帧CTS的Type=01,Subtype=1100(CTS)。
Type类型与subtype类型来指定所使用的帧类型.
To DS 与From DS :分别表示无线链路向无线工作站(如AP)发送的帧和无线工作站向无线链路发送的帧。
More Fragments(更多片段):用于说明长帧被分段的情况,是否还有其它的帧。若较上层的封包经过MAC 分段处理,最后一个片段除外,其他片段均会将此bit 设定为1。
Retry(重试):有时候可能需要重传帧。任何重传的帧会将此bit 设定为1,以协助接收端剔除重复的帧。
Power Management(电源管理):此bit 用来指示、完成当前的帧交换过程后,发送端的电源管理状态。
为1表示STA处于Power_save模式,为0表示STA处于active模式。
More Data(尚有数据):More Data bit 只用于管理数据帧,在控制帧中此bit 必然为0。
Protected Frame(受保护帧):为1表示帧体部分包含加密处理过的数据,为0则表示没有进行加密处理。
Order(次序):帧与帧片段可依序传送,不过发送端与接收端的MAC必须付出额外的代价,对帧片段进行严格编号。一旦进行“严格依序”传送,此bit被设定为1。
1.2 802.11帧—Duration/ID
在802.11帧第2位,占2个字节,共8bit位。
Duration(持续时间)位用来记载网络分配矢量NAV得值。
访问介质时间限制是由NAV所指定。
当第15 个bit被设定为0时,Duration/ID位就会被用来设定NAV。此数值代表目前所进行的传输预计使用介质多少微秒。
工作站必须监视所收到的任何帧头,并据以更新NAV。
任何超出预计使用介质时间的数值均会更新NAV,同时阻止其他工作站访问介质
1.3 802.11帧—Address
地址字段包含不同类型的MAC地址,地址的类型取决于帧类型。
Address 1 代表帧接收端的地址。
在某些情况下,接收端即为目的地,但不然如此。
目的地是指负责处理帧中网络层封包的工作站。 而接收端则是负责将无线电解码为802.11 帧的工作站。
如果Address 1 被设为广播或组播地址,则必须同时检查BSSID(基本服务组合识别码)。工作站只会应答来自同一个基本服务组合(basic service set,简称BSS)的广播或组播信息;至于来自其他不同BSS 者则加以忽略。
Address 2 是发送端的地址,用来发送应答信息。
在某些情况下,发送端即为源地址,但不然如此。
源地址是指产生帧中网络层协议封包的工作站;而发送端则是负责将帧发送至无线链路。Address 3 位则是供基站与传输系统过滤之用,不过该位的用法,取决于所使用的网络类型。
Address 4 一般不使用,只有在WDS(无线分布系统)中才会使用。
1.4 802.11帧—Seq-Ctl(顺序控制位)
此位占16bit位,用来重组帧片段以及丢弃重复帧。它由4个bit的fragment number(片段编码)位以及12个bit的sequence number(顺序编号)位所组成。
fragment number(片段编号)在上层封包被切割处理时使用,第一个片段的编号为0。其后每个片段依序累加1,方便帧进行重组。所有帧片段都会具有相同的顺序编号,如果是重传帧,则顺序编号不会有任何改变。
sequence number(顺序编号)位的作用,相当于已传帧的计数器取4096 的模(modulo)。此计数器由0 起算,MAC 每处理一个上层封包就会累加1。
如果发生重传,则顺序编号不变,便于进行帧处理,丢弃重复帧。
主要是将我们发送的帧进行编号,对重新传输的帧进行刷选,保证帧的正确性。
1.5 802.11帧—Frame Body(帧主体)
Frame Body 称为数据位,负责在工作站之间传输上层数据(payload)。
802.11帧最多可以传输2312个bit组的上层数据
1.6 802.11帧—FCS(帧检验序列)
802.11帧以FCS作为结束,FCS让工作站得以检查所收到的帧的完整性。
在以太网上,如果帧的FCS有误,则随即予以丢弃,否则就会传送给上层协议处理。在802.11网络上,通过完整性检验的帧还需接收端送出应答。
例如,接收无误的数据帧必须得到正面应答,否则就必须重传。
对于未能通过FCS检验的帧,802.11并未提供负面应答机制;在重传之前,工作站就必须等候应答超时。
【2】区分802.11 的三种帧类型及作用
802.11帧主要有三种类型:
2.1 数据帧
数据帧会将上层协议的数据置于帧主体加以传递,会用到哪些位,取决于该数据帧所属的类型。
Type:10
数据帧—To DS 与From DS
DS(Distribution system)分布式系统是接入点间转发帧的骨干网络,因此通常就称为骨干网络。一般可以理解为以太网。
SA指源地址, DA指目的地址, RA指接收端, TA指发送端。
BSSID:一个AP所覆盖的范围构成一个BSS(基本服务集),而BSSID(基本服务集标识符)用来标识BSS,表示AP的数据链路层的MAC地址。
第一幅图源端和发送端都是终端,目的端和接收端都是AP,信号从终端发出,希望关联AP,BSSID用以过滤非此BSS的STA连接。
第二幅图源端和发送端都是终端,接收端是AP,信号是从无线链路向AP发送,所以ToDs为1,发送的目的端为与AP相连的交换机。
第三幅图源端是与AP相连的交换机,发送端是AP,信号是从AP向无线链路发送,所以From DS为1,目的端和接收端为STA。
第四幅图为WDS模型,上表第四列的情况只在这种模型中会有,即四个地址位都被使用。WDS模型既有无线链路向AP发送信号,又有AP向无线链路发送信号,所以To DS和From DS均为1。
2.2 控制帧:
2.2.1 控制帧—RTS(请求发送)
当AP向某个客户端发送数据时,AP会向客户端发送一个RTS报文,RTS帧的格式如下:
RTS 帧可用来取得介质的控制权,以便传输帧。
Frame Control(帧控制):值为:01
Frame Control 位并没有任何特殊之处。
帧的subtype(子类型)位设定为1011,代表RTS 帧。
除此之外,它与其他的控制帧具备相同位。Duration(持续时间):RTS 帧会试图预定介质使用权,供帧交换程序使用,因此RTS帧发送者必须计算RTS 帧结束后还需要多少时间。
传输所需要的微秒数经过计算后会置于Duration 位。假使计算的结果不是整数,就会被修正为下一个整数微秒。
Receiver Address(接收端地址):接收RTS 帧的工作站的地址。
Transmitter Address(发送端地址):RTS 帧的发送端的地址。
2.2.2 控制帧—CTS(允许发送)
目的客户端收到RTS后,发送一个CTS报文,这样在客户端覆盖范围内所有的设备都会在指定的时间内不发送数据,CTS报文格式如下:
和RTS 帧一样,CTS 帧也会令附近的工作站保持沉默,从而取得介质的控制权。
Frame Control(帧控制):值为:01
帧的**subtype(子类型)**位被设定为1100,代表CTS 帧。
Duration(持续时间):用来应答RTS 时,CTS 帧的发送端会以RTS 帧的duration 值作为持续时间的计算基准。
RTS会为整个RTS-CTS-frame-ACK 交换过程预留介质使用时间。不过当CTS 帧被发送出后,只剩下其他未帧或帧片段及其回应待传。
CTS 帧发送端会将RTS 帧的duration 值减去发送CTS 帧及其后短帧间隔所需的时间,然后将计算结果置于CTS的Duration 位。
Receiver Address(接收端地址):CTS 帧的接收端即为之前RTS 帧的发送端,因此MAC会将RTS 帧的发送端地址复制到CTS 帧的接收端地址。
2.2.3 控制帧—ACK(应答)
每个发送的单播报文,接收者在成功接收到发送报文后,都要发送一个应答ACK进行确认。
ACK帧就是MAC以及任何数据传输(包括一般传输RTS/CTS 交换之前的帧、帧片段)所需要的正面应答(positive acknowledgment)。
服务质量扩展功能放宽了个别数据帧必须各自得到应答的要求。
Frame Control(帧控制):值为:01
帧的subtype(子类型)位被设定为1101,代表ACK 帧。
Duration(持续时间):依照ACK 信号在整个帧交换过程中位居何处,在完整的数据帧及一连串帧片段的最后一个片段中,duration 会被设定为0。
Receiver Address(接收端地址):接收端地址是由所要应答的发送端帧复制而来。
2.2.4 控制帧----PS-Poll
当客户端省点模式中苏醒,并会发送一个PS-Poll帧给AP,以取得任何暂存帧,帧格式如下:
Frame Control(帧控制):01
帧的**subtype(子类型)**位被设定为1010,代表PS-Poll 帧。
AID(连接识别码):PS-Poll 帧将会以MAC 标头的第三与第四bit 来代表连接识别码(association ID)。
连接识别码是基站所指定的一个数值,用以区别各个连接。将此识别码置入帧,可让AP找出为其客户端所暂存的帧。
BSSID:此位包含发送端目前所在BSS 的BSSID,此BSS 建立自目前所连接的AP。
Transmitter Address(发送端地址):此为PS-Poll 帧之发送端的MAC 地址
2.3 管理帧
管理帧的目的是通过帧的使用,为网络提供相对简单的服务。
Type:00
管理帧有如下类型:
Beacon帧(信标帧):
1. Beacon帧主要来声明网络的存在。定期传送的信标可让移动式工作站该网络的存在,从而调整加入该网络所必需的参数。
2. 基础结构网络中,接入点负责传送Beacon帧。
3. IBSS网络中,工作站轮流送出Beacon帧。
Probe Request、Probe Response帧 :
1. 工作站通过Probe Request帧来扫描所在区域内的802.11网络。
2. 若Probe Request帧探查的网络与之兼容,该网络就会回复Probe Response帧给予响应。
Authentication帧、Deauthentication:
1.工作站通过共享密钥以及Authentication帧进行身份验证。
2.Deauthentication(解除身份验证)帧则用来终结认证关系。
Association Request帧:
一旦工作站找到兼容网络并且通过身份验证,便会发送Association Request(关联请求) 帧试图加入网络。
Disassociation帧:
Disassociation(取消关联)帧:用来终结一段关联关系。
Reassociation Request帧 :
位于相同ESS中,当在不同的BSS之间移动的工作站若要再次使用分布式系统(DS),必需与网络重新关联,区别于关联请求帧的是:它包含工作站当前所关联的接入点地址。
Association Response帧与Reassociation Response帧:
当工作站试图连接接入点时,接入点会回复一个Association Response帧或Reassociation Response帧,响应过程中,接入点会指定一个Association ID(关联标识符)。