本文内容转自: http://www.cnblogs.com/LittleHann/p/3700357.html
平时如果不做wifi底层协议的话,可能会比较少接触到控制和管理帧的格式,而实际上对wifi底层帧多了解一点,对于理解wifi通信会很有帮助。以下会主要列举802.11协议格式所规定的一系列帧格式
wifi技术和802.11协议并不完全相同,常说的wifi是802.11的一个子集
802.11协议数据包类型
802.11标准将所有的数据包分为3种:
-
数据: 数据数据包的作用是用来携带更高层次的数据(如IP数据包,ISO7层协议)。
它负责在工作站之间传输数据 -
管理: 管理数据包控制网络的管理功能
- 信标帧(Beacons): 在无线设备中,定时依次按指定间隔发送的有规律的无线信号(类似心跳包),主要用于定位和同步使用
- 解除认证(Deauthentication)数据包
- Probe(request and response)
- Authenticate(request and response)
- Associate(request and response)
- Reassociate(request and response)
- Dissassociate(notify)
管理帧负责监督,主要用来加入或退出无线网络,以及处理接入点之间连接的转移事宜
-
控制: 控制数据包得名于术语"媒体接入控制(Media Access Control, MAC)",是用来控制对共享媒体(即物理媒介,如光缆)的访问
- 请求发送(Request To Send,RTS)数据包
- 清除发送(Clear To Send,CTS)数据包
- ACK确认(RTS/CTS)
- PS-Poll: 当一部移动工作站从省电模式中苏醒,便会发送一个 PS-Poll 帧给基站,以取得任何暂存帧
控制帧通常与数据帧搭配使用,负责区域的清空、信道的取得以及载波监听的维护,并于收到数据时予以正面的应答,借此促进工作站间数据传输的可靠性
802.11协议管理帧
数据链路层是一个很靠近底层的通信协议,它使用Bit来表示信息(也使用Bit来标识数据包的开始和结束),所以数据链路层的协议格式并没有强制要求一个固定的长度,即802.11协议长度是可变的。不同功能的数据帧长度会不一样。这一特性说明mac802.11数据帧显得更加灵活,然而,也会更加复杂。
管理帧大致有以下几种:
beacon帧:
beacon帧.jpg-37.4kB
探测请求帧:
探测请求.jpg-14.3kB
探测响应帧:
探测响应.jpg-44.5kB
ATIM帧:
ATIM.jpg-10.5kB
- 帧控制结构(Frame Control)
- Protocol Version: (协议版本)通常为0
- Type: 帧类型,数据帧: 10
- Subtype: 进一步判断帧的子类型,不同类型的数据帧这个字段的格式是不同的
3.1) IBSS帧
3.1.1) 0000: Data
3.1.2) 0010: Null
3.2) From AP帧
3.2.1) 0000: Data
3.2.2) 1000: Data+CF+ASK
3.2.3) 0100: Data+CF+Poll
3.2.4) 1100: Data+CF+ACK+CF+Poll
3.2.5) 1010: CF+ACK
3.2.6) 0110: CF+Poll
3.2.7) 1110: ACK+CF+Poll
3.3) To AP帧
3.3.1) 0000: Data
3.3.2) 1000: Data+CF+ACK
3.3.3) 0010: Null
3.3.4) 1010: CF+ACK(no data)
3.4) WDS帧
null- To DS: 表明该帧是否是BSS向DS发送的帧时
4.1) IBSS: 设置为0
4.2) To AP: 设置为1
4.3) From AP: 设置为0
4.4) WDS: 设置为1- From DS: 表明该帧是否是DS向BSS发送的帧时
5.1) IBSS: 设置为0
5.2) To AP: 设置为0
5.3) From AP: 设置为1
5.4) WDS: 设置为1- More Fragment: 用于说明长帧被分段的情况,是否还有其它的帧,如果有则该值设置为1
- Retry(重传域): 表示该分段是先前传输分段的重发帧。
- Power Management: 表示传输帧以后,站所采用的电源管理模式
8.1) 为1: STA处于power_save模式
8.2) 为0: STA处于active模式- More Data: 表示有很多帧缓存到站中。即至少还有一个数据帧要发送给STA是设置为1。
- Protected Frame: 表示根据WEP(Wired Equivalent Privacy)算法对帧主体进行加密。如果帧体部分包含被密钥套处理过的数据,则设置为1,否则设置为0
- Order(序号域): 在长帧分段传送时,该域设置为1表示接受者应该严格按照顺序处理该帧,否则设置为0
- Duration/ID(持续时间/标识) 表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算
- Address Fields(地址域): 这个域的具体格式和控制帧的子类型有关,不同的子类型会有一些微小的差别
- IBSS
1.1) Destination Address
1.2) Source Address
1.3) BSSID
每个BSS都会被赋予一个BSSID,它是一个长度为48个bit的二进制识别码,用来辨识不同的BSS- From AP
2.1) Destination Address
2.2) BSSID
2.3) Source Address- To AP
3.1) BSSID
3.2) Source Address
3.3) Destination Address- WDS
4.1) BSSID
4.2) Source Address
4.3) Destination Address- Sequence Control(序列控制域): 用于过滤重复帧
- MSDU(MAC Server Data Unit), 12位序列号(Sequence Number)
- MMSDU(MAC Management Server Data Unit), 4位片段号(Fragment Number)组成 [SA,只有WDS中的帧有这个字段]
- Frame Body(Data): 发送或接收的信息。
- FCS(CRC): 包括32位的循环冗余校验(CRC),用于检错,注意是检错不是纠错
802.11协议控制帧格式
控制帧可分为以下几种:
RTS帧:
RTS帧.jpg-23.7kB
CTS帧:
CTS帧.jpg-20.1kB
ACK帧:
ACK帧.jpg-20.3kB
ps-poll帧:
ps-poll帧.jpg-21.3kB
- 帧控制结构(Frame Control)
- Protocol Version: (协议版本)通常为0
- Type: 帧类型,控制帧: 01
- Subtype: 进一步判断帧的子类型:
控制帧
3.1) 请求发送(Request To Send,RTS)数据包
3.2) 清除发送(Clear To Send,CTS)数据包
数据帧
3.3) ACK确认(RTS/CTS)
3.4) PS-Poll: 当一部移动工作站从省电模式中苏醒,便会发送一个 PS-Poll 帧给基站,以取得任何暂存帧 - To DS: 表明该帧是BSS向DS发送的帧时,该值设置为1
- From DS: 表明该帧是DS向BSS发送的帧时,该值设置为1
控制帧负责处理无线介质的访问,因此只能够由无线工作站产生。传输系统并不会收送控制帧,因此这两个Bit必然为0 - More Fragment: 用于说明长帧被分段的情况,是否还有其它的帧,如果有则该值设置为1。
控制帧不可能被切割,这个Bit必然为0 - Retry(重传域): 表示该分段是先前传输分段的重发帧。
控制帧不像管理或数据帧那样,必须在序列中等候重送,因此这个 Bit必然为0 - Power Management: 表示传输帧以后,站所采用的电源管理模式
8.1) 为1: STA处于power_save模式
8.2) 为0: STA处于active模式 - More Data: 表示有很多帧缓存到站中。即至少还有一个数据帧要发送给STA是设置为1。
More Data bit只用于管理数据帧,在控制帧中此Bit必然为0 - Protected Frame: 表示根据WEP(Wired Equivalent Privacy)算法对帧主体进行加密。如果帧体部分包含被密钥套处理过的数据,则设置为1,否则设置为0。
控制帧不会经过加密。因此对控制帧而言,Protected Frame bit必然为0。 - Order(序号域): 在长帧分段传送时,该域设置为1表示接受者应该严格按照顺序处理该帧,否则设置为0。
控制帧是基本帧交换程序(atomic frame exchange operation)的组成要件,因此必须依序发送。所以这个Bit必然为0
- Duration/ID(持续时间/标识)
表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算。
注意: 在PS-Poll帧中不包含Duration/ID这个字段 - Address Fields(地址域):
这个域的具体格式和控制帧的子类型有关,不同的子类型会有一些微小的差别
3.1) RTS(请求发送帧)
3.1.1) Receiver Address(接收端地址)
接收大型帧的工作站的地址
3.1.2) Transmitter Address(发送端地址)
RTS帧的发送端的地址
3.2) CTS(允许发送)
3.2.1) Receiver Address(接收端地址)
3.3) ACK(应答)
3.3.1) Receiver Address(接收端地址)
3.4) PS-Poll(省电模式一轮询)
3.4.1) AID(连接识别码 association ID)
连接识别码是接入点所指定的一个数值,用以区别各个连接。将此识别码置入帧,可让接入点找出为其(移动工作站)所暂存的帧
3.4.2) BSSID
此位包含发送端目前所在 BSS(AP)的BSSID ,此BSS 建立自目前所连接的AP
3.4.3) Transmitter Address(发送端地址)
此为PS-Poll帧之发送端的 MAC地址 - FCS(CRC): 包括32位的循环冗余校验(CRC),用于检错,注意是检错不是纠错
网友评论