无线报文的简单分析

                              作者:杨孝卫
摘要:
     本文档在《无线关联的交互过程》基础上做简单的报文分析。了解无线关联过程中的一些相关报文分析。
关键字: Client AP


 

802.11帧分为三个部分: 帧头(Mac header)、帧实体(body)、FCS域。分为MAC header、Frame Body和FCS。MAC header由4个字段构成,分别为:Frame Control、Duration ID、Address、Seq ctl。一般情况是Address仅只有目的地址、源地址和BSSID。
一、Frame Control(帧控制)
所有帧的开头均是长为两个字节的Frame Control(帧控制)字段,Frame Control字段包括以下子字段:Protocol、Type、Subtype、To DS、From DS、More fragments、More fragments、Retry、Power management、More data、Protected Frame。
下面分别来介绍每个字段:
 

Protocol 字段
Protocol(协议版本)字段由两位构成,用显示该帧所使用的MAC版本。 目前802.11 MAC只有一个版本,它的协议编号为0。
 

 

 

Type Subtype 字段
Type(类型)与Subtype(子类型)字段用来指定使用的帧类型。为了提升可靠性,802.11 MAC内置了一些管理功能。如RTS/CTS操作与ACK(确认,acknowledgment)。802.11无线局域网的封包分为三种: 管理帧、控制帧和数据帧。
Type与Subtype字段的值与名称:

Management frame(管理帧:Type=00) a
0000
Association request(关联请求)
0001
Association response(关联响应)
0010
Reassociation request(重新关联请求)
0011
Reassociation response(重新关联响应)
0100
Probe request(探测请求)
0101
Probe response(探测响应)
1000
Beacon(信标)
1001
ATIM(通知传输指示消息)
1010
Disassociation(取消关联)
1011
Authentication(身份验证)
1100
Deauthentication(解除身份验证)
1101~1111
Reserved(保留,未使用)
Control frame(控制帧:Type=01) b
1010
Power Save(PS)- Poll(省电-轮询)
1011
RTS(请求发送)
1100
CTS(清除发送)
1101
ACK(确认)
1110
CF-End(无竞争周期结束)
1111
CF-End(无竞争周期结束)+CF-ACK(无竞争周期确认)
Data frame(数据帧:Type=10) c
0000
Data(数据)
0001
Data+CF-ACK
0010
Data+CF-Poll
0011
Data+CF-ACK+CF-Poll
0100
Null data(无数据:未传送数据)
0101
CF-ACK(未传送数据)
0110
CF-Poll(未传送数据)
0111
Data+CF-ACK+CF-Poll
1000
Qos Data c
1000~1111
Reserved(保留,未使用)
1001
Qos Data + CF-ACK c
1010
Qos Data + CF-Poll c
1011
Qos Data + CF-ACK+ CF-Poll  c
1100
QoS Null(未传送数据) c
1101
QoS CF-ACK(未传送数据) c
1110
QoS CF-Poll(未传送数据) c
1111
QoS CF-ACK+ CF-Poll(未传送数据) c
注:
a: 管理帧的Subtype值0110~0111与1101~1111目前并未使用。
b:控制帧的Subtype值0000~1001目前并未使用。
实例如下:
To DS From DS
这两个位用来指示帧的目的地是否为分布式系统(distribution system)。在基础结构型网络里,每个帧都会设定其中一个DS位。
To DS与From DS位所代表的意义

 
To DS=0
To DS=1
From DS=0
所有管理与控制帧。IBSS里的数据帧(非基础结构型数据帧)
基础结构型网络里无线工作站所传送的数据帧
From DS=1
基础结构型网络里无线工作站所收到的数据帧
无线桥接器上的数据帧
实例如下:
 

 

 

 

 

More fragments
此位的功能类似IP的“more fragments“位。若较上层的封包经过MAC分段处理,除了最后一个片段,其他片段均会将此位设定为1。大型的数据帧以及某些管理帧可能需要加以分段,除此之外的其他帧则会将此位设定为0。
Retry
有时候可能需要重传帧。任何重传的帧会将此位设定为1以协助接收端剔除重复的帧。
Power management
此位用来指出发送端在完成当前的原子帧交换之后是否进入省电(power-save)模式,1代表工作站即时入省电模式,而0则代表工作站会一直保持在清醒状态。
More data
为了服务处于省电模式中的工作站,接入点会将这些从分布式系统接收来的帧加以缓存。接入点如果设定此位,即代表至少有一个帧等待给休眠中的工作站。
Protected Frame
相对于固定式网络,无线传送本质上就比较容易被拦截。如果帧受到链路层安全协议的保护,则此位会被设定为1,而且该帧会略有不同。之前的Protected Frame位被称为WEP位。
Order
帧与帧片段可依次传送,不过发送端与接收端的MAC必须付出额外的代价。一旦进行严格依序(strict ordering)传送,则此位会被设定为1,否则这个位必然为0。
下图为以上的对所列出的控制帧对应的位:
 

Duration/ID (持续时间)
指一个原子操作的一个过程所需的时间,单位为微秒。RTS帧会试图预约媒介使用权,供帧交换过程使用,因此RTS帧传送者必须计算RTS帧结束后还需要多少时间用于帧交换。在下图交互过程中,总共需要3个SIFS周期、1个CTS持续时间、最后的ACK加上传送第一个帧或帧片段所需要的时间。其单位为微秒。
 

 

 

Address 字段
     一个802.11帧最多包含4个地址(Address)字段。因随着帧类型的不同,这些字段的作用也有所差异。Address 1代表接收端,Address 2代表发送端,Address 3代表被接收端拿 来过滤的地址。地址本身的长度有48位。如果传送给实际媒介的第一个位为0,则该地址为单播(unicast),如果第一位为1,则该地址为组播(multicast),如果所有的位均为1,则该地址为广播(broadcast)。
二、管理帧的结构
802.11管理帧的基本结构如下图所示(图3),所有管理帧的MAC标头都一样,与帧的子类型无关。管理帧会使用信息元素(带有数字卷标的数据块)来与其它系统交换信息。
 

Frame Control前面已经讲过
计算持续时间
管理帧使用Duration(持续时间)字段的方式。
(1)           无竞争周期内所传送的任何帧均会将持续时间设为32768。
(2)           基于竞争的访问周期内利用DCF所传送的帧会通过Duration字段防止别人访问媒介,以确保原子帧交换(atomic frame exchanges)得以完成。
a、 如果是广播或组播帧(目的地址为组地址),则持续时间会设定为0。广播与组播帧无需得到确认,因此NAV无需防止别人访问媒介。
b、 如果不是最终片段,则持续时间会设为3个SIFS加上下一个片段及其确认所需要的微秒数。
c、 最终帧片段的持续时间会设定为一个响应加上一个SIFS所需要的时间。
帧主体
管理帧十分灵活。帧主体(frame body)中的大部分数据如果使用长度固定的字段,就称为固定字段(fixed field);如果字段长度不定,就称为信息元素(information element)。所谓信息元素,是指长度不定的数据块(data block)。每个数据块均会标注类型编号和大小,各信息元素的数据字段元素都有特定的解释方式。
长度固定的管理帧组件
在管理帧中,可能出现的长度固定的字段有10种。长度固定的字段一般简称为字段(field),以便与长度不定的信息元素有所区别。字段本身并无标头可与帧主体的其它部分进行区别。因为长充与次序固定,所以不需要以字段元标头来界定。
Authentication Algorithm Number 字段
Authentication Algorithm Number(身份验证算法编号)字段占用了2个字节,此字段代表关联发生之前,802.11层(802.11-level)的最初认证过程所使用的认证类型。此字段容许的值范围如下表。目前只定义了两种值,其它保留给未来版本使用。

意义
0
开放系统身份验证(Open System authentication)
1
共享密钥身份验证(Shared Key authentication)
2~65535
保留
 

如上图所知,Authentication Algorithm的值为0为Open System。
Authentication Transacition Sequence Number 字段
身份验证过程分好几个步骤,其中包含接入点所发出来的质询(challenge)以及试图关联的移动式工作站所做出的响应。此字段由两个字节构成,用以追踪身份验证的进度。此字段值介于1到65535之间,其值不可为0。在Shared key中1表示请求,2表示响应,3表示再请求,4表示响应。
Beacon interval 字段
每隔一段时间就会发出一个Beacon(信标)信号用来宣布802.11网络的存在。Beacon帧中除了包含BSS参数的信息,也包含接入点缓存帧的信息,因此移动式工作站要仔细聆听Beacon信号。此帧长度为16位,用来设定Beacon信号之间相隔多少时间单位。时间单位通常缩写为TU,代表1024微秒(microsecond),相当于1毫秒(millisecond)。Beacon通常会被设定为100个时间单位,相当于每100毫秒,也就是0.1秒传送一次Beacon信号。
Capability Information 字段
长度为16位的Capability Information(性能信息)字段,传送Beacon信号的时候,它被用来通告网络具备何种性能。此字段应用于Beacon帧、Probe Response帧和Association帧。
ESS/IBSS (扩展服务集/ 独立基本服务集)
协调者所传送的 Beacon 帧及 Probe Response 帧中,ESS = 1, IBSS = 0。属于 IBSS 的工作站所传送的 Beacon 帧及Probe Response 帧中,ESS = 0, IBSS = 1。工作站为了侦测 ESSs 而传送的 Probe 帧中,ESS =1。工作站为了侦测 IBSSs 而传送的 Probe 帧中,IBSS =1。工作站如果想同时侦测所有存在的ESSs及IBSSs, 则可同时设定ESS =1, IBSS=1。
Privacy (保密性)
如果Privacy位设定为1,代表需要使用WEP以维持机密性。
Short Preamble (短前导码)
802.11b规范新增此字段是为了支持高速直接序列扩频物理层(high-rate DSSS PHY)。将之设定为1,代表此网络目前使用短前导码(short preamble),0代表不使用此项。
PBCC (封包二进制回旋码)
802.11b 规范新增此字段是为了支持高速直接序列扩频物理层(high-rate DSSS PHY) 。将之设置为1 ,代表目前使用封包二进制回旋码(packet binary convolution coding)调制机制。0代表不使用此项。
Channel Agility (机动信道转换)
802.11b规范新增此字段是为了支持高速直接序列扩频物理层(high-rate DSSS PHY)。将之设置为1,代表此网络使用机动信道转换(Channel Agility)选项。0代表不使用此项。
 

Short Slot Time (802.11g)
   此位若设定为1,代表使用802.11所支持的较短时隙。
Listen interval (聆听间隔)字段
此字段存在于Association Request帧中。此字段是表示该工作站每隔多少个Beacon间隔会醒来一次。工作站休眠时间越多,AP暂存的资料量越大,反之亦然,如果休眠时间越长还会错失AP所发出的广播信息。如下图所示:
 

Association ID (关联标识符)字段
  该字段存在于Association Response帧中。该字段长度为16位。
 

Reason Code(原因代码)字段
该字段存在于Deauthentication(解除身份验证)或Disassociation(取消关联)帧作为响应。其字段长度为16位。该字段表示为对方的做法有误。如图所示:

 

三、实例报文分析
1、 AP 与站点都配置为WPA 的情况下:
a、 首先查看AP发出的Beacon帧中,Privacy字段值为1表示为启用加密,则说明AP为加密模式。再查看Authentication帧中的Authentication Algorithm字段的值为Open System,则说明并非Shared加密模式,而是Open加密或WPA加密。
b、 查看站点向AP发起的Association Request帧中的Privacy字段,此字段的值为1则表示启用加密(说明AP与站点的加密方式一致)。如下图所示:
 
c、查看Vendor Specific字段中的值为WPA,unicast cipher suite: TKIP , auth key management suite 1:PSK等。再查看EAPOL Key帧的交互(六个EAPOL Key)。
2、             AP 与站点都配置为shared key
a、 与上面一样,首先查看Beacon 帧中的privacy 字段,再查看Authentication 帧中的Authentication Algorithm 字段的值为shared key。
b、 查看四个Authentication帧,第一个为认证请求帧,第二个帧中,会有一个challenge text字段。第三个帧中,会有一个WEP parameters字段,第四个字段为交互成功的帧。查看Authentication SEQ字段,根据其值便知在哪一个交互中,如果值为4则表示为Authentication Success。如下图所示:
 

 

  
3、             AP 配置为none 模式,站点配置为sharedkey 模式:
a、 与上面一样,首先查看Beacon帧中的privacy字段,其值应为0,再查看Authentication帧中的Authentication Algorithm字段的值为shared key,再查看;Status code。由此看出AP与站点的配置不一致。
 
b、 查看四个Authentication帧,第一个为认证请求帧,第二个帧主体状态码提示出错信息。如下图所示:表示AP与站点的认证不一致。
以上内容对我们分析AP与站点连接时出现异常时非常有用,分析在哪里出现问题了。
 

 

 

参考文档:《 802.11 无线网络》