802.11 帧格式
帧总体构成
802.11帧最长支持2346个字节
1、Frame Control
Frame control在802.11帧开头位置,占2个字节,16位
Protocol:
协议版本号:协议版本的值为0,因为这是目前唯一的版本,未来可能会出其他新的版本
Type:
帧类型
管理帧的Type值为00
控制帧的Type值为01
数据帧的Type值为10
Subtype(子类型):
此位代表发送帧的子类型
类型 | 说明 |
(type为00:管理帧) | |
0000 | Association request:连接请求 |
0001 | Association response:连接应答 |
0010 | Reassociation request:重连请求 |
0011 | Reassocaiation response:重连应答 |
0100 | Probe request:探测请求 |
0101 | Probe response:探测响应 |
0110~0111 | Reserved:保留 |
1000 | Beacon:信标探测 |
1001 | Announcement traffic indication message (ATIM) ( 数据代传指示通知信号) |
1010 | Disassociation:断开连接 |
1011 | Authentication :身份验证 |
1100 | Deauthentication :解除认证 |
1101 | Action:功能帧 |
1110 | Action No Ack:无需确认的功能帧 |
1111 | Reserved:保留 |
类型 | 说明 |
(Type值为01:控制帧) | |
0000-0110 | Reserved:保留 |
0111 | Control Wrapper:控制包裹 |
1000 | Block Ack Request:块确认请求 |
1001 | Block Ack:块确认 |
1010 | PS-Poll:PS-POLL |
1011 | RTS:RST |
1100 | CTS:CTS |
1101 | Ack:确认 |
1110 | CF -End: |
1111 | CF -End +CF-Ack llowing-It: |
类型 | 说明 |
(Type值为10:数据帧) | |
0000 | Data (simple data frame):数据 |
0001 | Data +CF -Ack:数据 + CF-Ack |
0010 | Data +CF -Poll:数据 + CF-Poll |
0011 | Data +CF-Ack +CF -Poll:数据 + CF-Ack + CF-Poll |
0100 | Null (no data):空(无数据) |
0101 | CF -Ack (no data):CF-Ack(无数据) |
0110 | CF -Poll (no data):CF-Poll(无数据) |
0111 | CF-Ack +CF -Poll (no data):CF-Ack + CF-Poll(无数据) |
1000 | QoS Data:QoS 数据 |
1001 | QoS Data +CF -Ack:QoS 数据 + CF-Ack |
1010 | QoS Data +CF -Poll:QoS 数据 + CF-Poll |
1011 | QoS Data +CF-Ack +CF -Poll:QoS 数据 + CF-Ack + CF-Poll |
1100 | QoS Null (no data):QoS 空(无数据) |
1101 | Reserved:保留 |
1110 | QoS CF -Poll (no data):QoS CF-Poll(无数据) |
1111 | QoS CF-Ack +CF-Poll (no data):QoS CF-Ack + CF-Poll(无数据) |
To DS 与From DS:
分别表示无线链路向无线工作站(如AP)发送的帧和无线工作站向无线链路发送的帧。
More Fragments(更多片段):
用于说明长帧被分段的情况,是否还有其它的帧。若较上层的封包经过MAC 分段处理,最后一个片段除外,其他片段均会将此bit 设定为1。
Retry(重试)
有时候可能需要重传帧。任何重传的帧会将此bit 设定为1,以协助接收端剔除重复的帧。
Power Management(电源管理)
此bit 用来指示、完成当前的帧交换过程后,发送端的电源管理状态。
为1表示STA处于Power_save模式,为0表示STA处于active模式。
More Data(尚有数据)
More Data bit 只用于管理数据帧,在控制帧中此bit 必然为0。
Protected Frame(受保护帧)
为1表示帧体部分包含加密处理过的数据,为0则表示没有进行加密处理。
Order(次序)
帧与帧片段可依序传送,不过发送端与接收端的MAC必须付出额外的代价,对帧片段进行严格编号。一旦进行“严格依序”传送,此bit被设定为1。
2、Duration/ID 位
在802.11帧第2位,占2个字节,共16bit位
Duration(持续时间)位用来记载网络分配矢量NAV得值。
访问介质时间限制是由NAV所指定。
当第15 个bit被设定为0时,Duration/ID位就会被用来设定NAV。此数值代表目前所进行的传输预计使用介质多少微秒。
工作站必须监视所收到的任何帧头,并据以更新NAV。
任何超出预计使用介质时间的数值均会更新NAV,同时阻止其他工作站访问介质
3、802.11帧—Address
地址字段包含不同类型的MAC地址,地址的类型取决于帧类型。
Address 1:目的地址
代表帧接收端的地址。
在某些情况下,接收端即为目的地,但不然如此。
目的地是负责处理帧中网络层封包的工作站。 而接收端是负责将无线电解码为802.11 帧的工作站。
如果Address 1 被设为广播或组播地址,则必须同时检查BSSID(基本服务组合识别码)。工作站只会应答来自同一个基本服务组合(basic service set,简称BSS)的广播或组播信息;至于来自其他不同BSS 者则加以忽略。
Address 2:源地址
发送端的地址,用来发送应答信息。
在某些情况下,发送端即为源地址,但不然如此。
源地址是指产生帧中网络层协议封包的工作站;而发送端则是负责将帧发送至无线链路。
Address 3
Address 3 位则是供基站与传输系统过滤之用,不过该位的用法,取决于所使用的网络类型。
Address 4
Address 4 一般不使用,只有在WDS(无线分布系统)中才会使用。
4、802.11帧—Seq-Ctl
此位占16bit位,用来重组帧片段以及丢弃重复帧。它由4个bit的fragment number(片段编码)位以及12个bit的sequence number(顺序编号)位所组成。
fragment number(片段编号)在上层封包被切割处理时使用,第一个片段的编号为0。其后每个片段依序累加1,方便帧进行重组。所有帧片段都会具有相同的顺序编号,如果是重传帧,则顺序编号不会有任何改变。
sequence number(顺序编号)位的作用,相当于已传帧的计数器取4096 的模(modulo)。此计数器由0 起算,MAC 每处理一个上层封包就会累加1。
如果发生重传,则顺序编号不变,便于进行帧处理,丢弃重复帧。
主要是将我们发送的帧进行编号,对重新传输的帧进行刷选,保证帧的正确性。
5、802.11帧—Frame Body(帧主体)
Frame Body 称为数据位,负责在工作站之间传输上层数据(payload)。
802.11帧最多可以传输2312个bit组的上层数据
Frame Body包含了SSID、Channel、TX、RX等信息
由于此截图的body为加密状态,所以无法了解三层数据包的内容。
6、802.11帧—FCS(帧检验序列)
802.11帧以FCS作为结束,FCS让工作站得以检查所收到的帧的完整性。
在以太网上,如果帧的FCS有误,则随即予以丢弃,否则就会传送给上层协议处理。在802.11网络上,通过完整性检验的帧还需接收端送出应答。
例如,接收无误的数据帧必须得到正面应答,否则就必须重传。
对于未能通过FCS检验的帧,802.11并未提供负面应答机制;在重传之前,工作站就必须等候应答超时。