802.11 协议(wifi)格式

本文内容转自: http://www.cnblogs.com/LittleHann/p/3700357.html
平时如果不做wifi底层协议的话,可能会比较少接触到控制和管理帧的格式,而实际上对wifi底层帧多了解一点,对于理解wifi通信会很有帮助。以下会主要列举802.11协议格式所规定的一系列帧格式

wifi技术和802.11协议并不完全相同,常说的wifi是802.11的一个子集


802.11协议数据包类型

802.11标准将所有的数据包分为3种:

  1. 数据: 数据数据包的作用是用来携带更高层次的数据(如IP数据包,ISO7层协议)。
    它负责在工作站之间传输数据
  2. 管理: 管理数据包控制网络的管理功能
    1. 信标帧(Beacons): 在无线设备中,定时依次按指定间隔发送的有规律的无线信号(类似心跳包),主要用于定位和同步使用
    2. 解除认证(Deauthentication)数据包
    3. Probe(request and response)
    4. Authenticate(request and response)
    5. Associate(request and response)
    6. Reassociate(request and response)
    7. Dissassociate(notify)
      管理帧负责监督,主要用来加入或退出无线网络,以及处理接入点之间连接的转移事宜
  3. 控制: 控制数据包得名于术语"媒体接入控制(Media Access Control, MAC)",是用来控制对共享媒体(即物理媒介,如光缆)的访问
    1. 请求发送(Request To Send,RTS)数据包
    2. 清除发送(Clear To Send,CTS)数据包
    3. ACK确认(RTS/CTS)
    4. PS-Poll: 当一部移动工作站从省电模式中苏醒,便会发送一个 PS-Poll 帧给基站,以取得任何暂存帧
      控制帧通常与数据帧搭配使用,负责区域的清空、信道的取得以及载波监听的维护,并于收到数据时予以正面的应答,借此促进工作站间数据传输的可靠性

802.11协议管理帧

数据链路层是一个很靠近底层的通信协议,它使用Bit来表示信息(也使用Bit来标识数据包的开始和结束),所以数据链路层的协议格式并没有强制要求一个固定的长度,即802.11协议长度是可变的。不同功能的数据帧长度会不一样。这一特性说明mac802.11数据帧显得更加灵活,然而,也会更加复杂。

管理帧大致有以下几种:
beacon帧:


beacon帧.jpg-37.4kB
beacon帧.jpg-37.4kB

探测请求帧:


探测请求.jpg-14.3kB
探测请求.jpg-14.3kB

探测响应帧:
探测响应.jpg-44.5kB
探测响应.jpg-44.5kB

ATIM帧:
ATIM.jpg-10.5kB
ATIM.jpg-10.5kB
  1. 帧控制结构(Frame Control)
    1. Protocol Version: (协议版本)通常为0
    2. Type: 帧类型,数据帧: 10
    3. 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
    4. To DS: 表明该帧是否是BSS向DS发送的帧时
      4.1) IBSS: 设置为0
      4.2) To AP: 设置为1
      4.3) From AP: 设置为0
      4.4) WDS: 设置为1
    5. From DS: 表明该帧是否是DS向BSS发送的帧时
      5.1) IBSS: 设置为0
      5.2) To AP: 设置为0
      5.3) From AP: 设置为1
      5.4) WDS: 设置为1
    6. More Fragment: 用于说明长帧被分段的情况,是否还有其它的帧,如果有则该值设置为1
    7. Retry(重传域): 表示该分段是先前传输分段的重发帧。
    8. Power Management: 表示传输帧以后,站所采用的电源管理模式
      8.1) 为1: STA处于power_save模式
      8.2) 为0: STA处于active模式
    9. More Data: 表示有很多帧缓存到站中。即至少还有一个数据帧要发送给STA是设置为1。
    10. Protected Frame: 表示根据WEP(Wired Equivalent Privacy)算法对帧主体进行加密。如果帧体部分包含被密钥套处理过的数据,则设置为1,否则设置为0
    11. Order(序号域): 在长帧分段传送时,该域设置为1表示接受者应该严格按照顺序处理该帧,否则设置为0
  2. Duration/ID(持续时间/标识) 表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算
  3. Address Fields(地址域): 这个域的具体格式和控制帧的子类型有关,不同的子类型会有一些微小的差别
    1. IBSS
      1.1) Destination Address
      1.2) Source Address
      1.3) BSSID
      每个BSS都会被赋予一个BSSID,它是一个长度为48个bit的二进制识别码,用来辨识不同的BSS
    2. From AP
      2.1) Destination Address
      2.2) BSSID
      2.3) Source Address
    3. To AP
      3.1) BSSID
      3.2) Source Address
      3.3) Destination Address
    4. WDS
      4.1) BSSID
      4.2) Source Address
      4.3) Destination Address
  4. Sequence Control(序列控制域): 用于过滤重复帧
    1. MSDU(MAC Server Data Unit), 12位序列号(Sequence Number)
    2. MMSDU(MAC Management Server Data Unit), 4位片段号(Fragment Number)组成 [SA,只有WDS中的帧有这个字段]
  5. Frame Body(Data): 发送或接收的信息。
  6. FCS(CRC): 包括32位的循环冗余校验(CRC),用于检错,注意是检错不是纠错

802.11协议控制帧格式

控制帧可分为以下几种:
RTS帧:


RTS帧.jpg-23.7kB
RTS帧.jpg-23.7kB

CTS帧:


CTS帧.jpg-20.1kB
CTS帧.jpg-20.1kB

ACK帧:
ACK帧.jpg-20.3kB
ACK帧.jpg-20.3kB

ps-poll帧:
ps-poll帧.jpg-21.3kB
ps-poll帧.jpg-21.3kB
  1. 帧控制结构(Frame Control)
    1. Protocol Version: (协议版本)通常为0
    2. Type: 帧类型,控制帧: 01
    3. Subtype: 进一步判断帧的子类型:
      控制帧
      3.1) 请求发送(Request To Send,RTS)数据包
      3.2) 清除发送(Clear To Send,CTS)数据包
      数据帧
      3.3) ACK确认(RTS/CTS)
      3.4) PS-Poll: 当一部移动工作站从省电模式中苏醒,便会发送一个 PS-Poll 帧给基站,以取得任何暂存帧
    4. To DS: 表明该帧是BSS向DS发送的帧时,该值设置为1
    5. From DS: 表明该帧是DS向BSS发送的帧时,该值设置为1
      控制帧负责处理无线介质的访问,因此只能够由无线工作站产生。传输系统并不会收送控制帧,因此这两个Bit必然为0
    6. More Fragment: 用于说明长帧被分段的情况,是否还有其它的帧,如果有则该值设置为1。
      控制帧不可能被切割,这个Bit必然为0
    7. Retry(重传域): 表示该分段是先前传输分段的重发帧。
      控制帧不像管理或数据帧那样,必须在序列中等候重送,因此这个 Bit必然为0
    8. Power Management: 表示传输帧以后,站所采用的电源管理模式
      8.1) 为1: STA处于power_save模式
      8.2) 为0: STA处于active模式
    9. More Data: 表示有很多帧缓存到站中。即至少还有一个数据帧要发送给STA是设置为1。
      More Data bit只用于管理数据帧,在控制帧中此Bit必然为0
    10. Protected Frame: 表示根据WEP(Wired Equivalent Privacy)算法对帧主体进行加密。如果帧体部分包含被密钥套处理过的数据,则设置为1,否则设置为0。
      控制帧不会经过加密。因此对控制帧而言,Protected Frame bit必然为0。
    11. Order(序号域): 在长帧分段传送时,该域设置为1表示接受者应该严格按照顺序处理该帧,否则设置为0。
      控制帧是基本帧交换程序(atomic frame exchange operation)的组成要件,因此必须依序发送。所以这个Bit必然为0
  2. Duration/ID(持续时间/标识)
    表明该帧和它的确认帧将会占用信道多长时间,Duration 值用于网络分配向量(NAV)计算。
    注意: 在PS-Poll帧中不包含Duration/ID这个字段
  3. 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地址
  4. FCS(CRC): 包括32位的循环冗余校验(CRC),用于检错,注意是检错不是纠错

推荐阅读更多精彩内容