Probe Request帧结构
概述
probe request属于管理帧,其遵循管理帧的一般格式,在《802.11无线权威指南》中管理帧的一般格式为:
因为probe request属于管理帧,所以其也遵循这个格式。但是不同的是不同的管理帧的Frame Body是不同的。下图是Probe Request帧的组成细节:
帧主体中大部份的数据,如果使用长度固定的位,就称为固定式位。
如果位长度不定,就称为信息元素( information element)。所谓信息元素,是指长度不定的数据区块。 每个数据区块均会标注上类型编号与大小, 各种信息元素的数据位都有特定的解释方式。
下面结合抓取的报文,来仔细分析下Probe Request帧各部分内容和含义。
MAC Header(24字节)
下图截取的是利用Omnipeek抓取的Probe Request帧,已经将其MAC Header标记起来。
对应于右边的16进制格式,我们可以看到MAC Header刚好是24字节(即2+2+6+6+6+2)这和802.11 协议规定的是一致的。
Frame Control(2字节)
先看frame control板块内容:
这两个字节的内容主要包含了一下内容:
- version:版本,802.11定义了版本1,0表示保留未用,2未定义。
- Type:帧类型,这里显示是管理帧
- Subtype:那种帧,即Probe Request
- Frame Control Flags:1个字节表示出帧的一些属性,如会否是重传帧,是否分段、设备是否处于power save mode 。
Duration(2字节)
因为这里属于管理帧,无需等待回复ACK所以这里该值为0。
DA(6字节)
即目的MAC地址,因为是广播这里可以看到它是:FF:FF:FF:FF:FF:FF
SA(6字节)
即源MAC地址,就是我们发出这包帧的设备的地址。
BSSID(6字节)
我们所在的BSS网络的MAC地址,简单来说就是AP的MAC地址。因为现在还未连上网络,且是以广播的形式发送帧,所以这里是FF:FF:FF:FF:FF:FF。
seq_ctrl(2字节)
当前帧的编号。
Frame Body(0~2312字节)
这部分是可变的,会根据填写的长度的大小来改变其大小。
Frame Body部分携带了Probe request帧所包含的所有信息,Probe request 会携带当前设备所具有的一些能力信息。主要有一下三个部分:
- 想要加入的AP的SSID(可变的,根据实际情况选择)
- 支持的速率(supported rate)(可变的,根据硬件和驱动的支持情况改变)
- 扩展支持速率(Extended Supported Rate)
FCS(4字节)
帧校验序列,是802.11为了提高通信的可靠性提出的。比如说数据帧在空气中传播的时候受到了干扰而改变了数据的内容(我们知道无线通信属于不可靠通信,这种情况是比较常见的),那么在进行FCS校验的时候MAC层会将FCS校验不合格的帧丢弃掉。