无线报文头学习

无线报文格式的前2个字节用来描述帧控制信息。在驱动中用如下数据结构来描述:
struct ieee80211_frame{
u_int8_t i_fc[2];
u_int8_t i_dur[2];
union {
struct {
u_int8_t i_addr1[IEEE80211_ADDR_LEN];
u_int8_t i_addr2[IEEE80211_ADDR_LEN];
u_int8_t i_addr3[IEEE80211_ADDR_LEN];
};
u_int8_t i_addr_all[3*IEEE80211_ADDR_LEN];
};

i_fc[0]对应的是第一个字节,是网络字序。
第一个字节各位的含义是:
从最高位7开始,到第0位分别代表:
|-7-|-6-|-5-|-4-|-3-|-2-|-1-|-0-|
|– subtype –|-type -|- ver -|
即:
位7至位4,共4位,表示子类型subtype
位3至位2,共2位,表示类型type
位1至位0,共2位,表示协议版本,目前为0
type和subtype的取值范围是:
type的两位都填0,即type=00时,代表管理帧,进一步的子类型
subtype 4位可取值如下:
0000,0x0 Association request关联请求
0001,0x1 Association response关联响应
0010,0x2 Reassociation request重新关联
0011,0x3 Reassociation response重新关联响应
0100,0x4 probe request帧请求
0101,0x5 probe response响应
1000,0x8 beacon
1001,0x9 ATIM(通知传输指示消息)
1010,0xa Disassociation取消关联
1011,0xb Authentication身份认证
1100,0xc Deauthentication解除身份认证
1101,0xd Action
1110,0xe Action_NO_ACK
这里写图片描述
控制帧和管理帧类型对应上述2位取值分别是:01 和10
控制帧子类型分别有:
1001,9, BA
1010,a poll
1011,b rts
1100,c cts
1101,d ack
1110,e CF-End
1111,f CF-End
data帧子类型:
0000,0 data(非QOS)
0100,4 Null Data
1000 qos data
1001 qos data + cf - ack

说明:
1、身份认证请求无对应的身份认证响应帧,通过下面的控制帧ACK帧来确认。
2、无线连接过程是:先发认证帧(类型为0x0,子类型为0xb),得到ACK帧(类型为0x1,子类型为0xd)之后,再发关联帧(类型为0,子类型为0x0) 得到关联响应帧(类型为0x0,子类型为0x0)。
3、所有这类管理帧,都可以使用wlan.fc.type==0x0条件在wireshark中过滤出来。
4、可以通过指定wlan.fc.subtype==0xb && wlan.fc.type==0x0来过滤具体子类型为0xb认证帧。可以将两个条件合并成一个,书写方式是先写类型,再写子类型,过滤条件是:wlan.fc.type_subtype==0x0b。即第一个0代表类型0,管理帧,第二个b代表子类型为0xb,即身份认证子类型。

下图是一个标准的无线连接过程:
STA —-> AP (wlan.fc.type_subtype取值)
1.[STA–>AP] Probe request(wlan.fc.type_subtype==0x04)
2.[STA<–AP] Probe response(wlan.fc.type_subtype==0x05)
3.[STA–>AP] Authentication (wlan.fc.type_subtype==0x0b)
4.[STA<–AP] ACK(wlan.fc.type_subtype==0x1d)
5.[STA–>AP] Association request(wlan.fc.type_subtype==0x00)
6.[STA<–AP] Association response(wlan.fc.type_subtype==0x01)

驱动中定义了如下的类型:
这里写图片描述
忽略最低2位的话,实际管理帧是0000,控制0100,数据:1000
为了获取QOS帧,拿0xc|0x80与第0字节相与,结果如果与0x80|0x08相等,就是QOS数据帧。
0xc定义为掩码
0x08定义为type为数据类型
0x80则是QOS的公共头
所有1xxx的数据均为QOS帧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值