Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1919399
  • 博文数量: 376
  • 博客积分: 2147
  • 博客等级: 大尉
  • 技术积分: 3642
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-06 10:47
文章分类

全部博文(376)

文章存档

2019年(3)

2017年(28)

2016年(15)

2015年(17)

2014年(182)

2013年(16)

2012年(115)

我的朋友

分类: 嵌入式

2014-10-30 09:48:21

1 MAC802.11数据帧格式

首先要说明的是mac802.11的帧格式很特别,它与TCP/IP这一类协议不同,它的长度是可变的。不同功能的数据帧长度会不一样。这一特性说明mac802.11数据帧显得更加灵活,然而,也会更加复杂。mac 802.11的数据帧长度不定主要是由于以下几点决定的

 

1.1 mac地址数目不定,根据帧类型不同,mac 802.11的mac地址数会不一样。比如说 ACK帧仅有一个mac地址,而数据帧有3个mac地址,在WDS模式(下面要提到)下,帧头竟然有4个mac地址。

 

1.2 802.11的管理帧所携带的信息长度不定,在管理帧中,不仅仅只有一些类似于mac地址,分片标志之类的这些信息,而且另外还会包括一些其它的信息,这些信息有关于安全设置的,有关于物理通信的,比如说我们的SSID名称就是通过管理帧获得的。AP会根据不同的情况发送包含有不同信息的管理帧。管理帧的细节问题我们会在后面的文章中讨论,这里暂时跳过。

 

1.3 加密(wep,wpa等)信息,QOS(quality of service)信息,若有加密的数据帧格式和没有加密的数据帧格式还不一样,加密数据帧格式还多了个加密头,用于解密用。然则QOS也是同样道理。

 

竟然mac 802.11数据帧那么复杂,我们就先从通用的格式开始说吧

.

 

帧控制(2 bytes):

用于指示数据帧的类型,是否分片等等信息,说白了,这个字段就是记录了mac 802.11的属性。

*Protocol version:表明版本类型,现在所有帧里面这个字段都是0x00

*Type:指明数据帧类型,是管理帧,数据帧还是控制帧

*Subtype:指明数据帧的子类型,因为就算是控制帧,控制帧还分RTS帧,CTS帧,ACK帧等等,通过这个域判断出该数据帧的具体类型

*To DS/From DS:这两个数据帧表明数据包的发送方向,分四种可能情况讨论

**若数据包To DS为0,From DS为0,表明该数据包在网络主机间传输

 

**若数据包To DS为0,From DS为1,表明该数据帧来自AP

**若数据包To DS为1,From DS为0,表明该数据帧发送往AP

**若数据包To DS为1,From DS为1,表明该数据帧是从AP发送自AP的,也就是说这个是个WDS(Wireless Distribution System)数据帧,至于什么是WDS,可以参考下这里的介绍 

*Moreflag:分片标志,若数据帧被分片了,那么这个标志为1,否则为0

*Retry:表明是否是重发的帧,若是为1,不是为0

*PowerManage:当网络主机处于省电模式时,该标志为1,否则为0.

*Moredata:当AP缓存了处于省电模式下的网络主机的数据包时,AP给该省电模式下的网络主机的数据帧中该位为1,否则为0

*Wep:标志,若为1表示数据内容加密,否则为0

*Order 这个表示用于PCF模式下,这里不予讨论

 

生存周期/Associate ID (2 bytes):

先前不是讲过虚拟载波监听的一个机制么,他的Network Allocation Vector(NAV)就存在这里,这里叫duration,即生存周期。当然不是所有时候这个字段存放的NAV值。在特定类型数据帧中,它也可能表示Associate ID。一旦有主机关联到AP了,AP都会为主机分配一个Associate ID。比如在网络主机通知AP自己要进入省电模式(power saving)的时候,网络主机发给AP的通知数据帧里面,这个域就表示的是Associate ID而不是NAV了。当然还可以通过最高位来判断这个域的含义:

*在15bit为0的时候,该域表示duration

*在15bit为1,14bit为1的时候,表示Associate ID。

 

序列控制(2 bytes:4 bits/12 bits):这个域分2部分,一个是分片序列号和标识帧列号。分片序列号就是记录分片序号的。比如一个帧A被分片成a1,a2,a3,那么a1,a2,a3这三个分片帧的分片序列分别是0,1,2。这个和IP分段原理一样的,该域占4个比特位。剩下的12个比特位就用于标识帧的序号,这个跟IP头里面的序列号一样。

 

MAC地址 1-4

这四个地址在不同帧中有不同含义。这些以后会讨论。

以后我们可能会碰到以下类型的mac地址

RA(receiver address):无线网络中,该数据帧的接收者

TA(transmitter address):无线网络中,该数据帧的发送者

BSSID(Basic Service Set ID):在infrastructure BBS中,BSSID就是AP的mac地址。但是在IBBS中,它是一个随机即生成的46位二进制序列,还有最高两位分别是Universal/Local标志位和Individual/Group标志位。IBBS的BSSID中,Universal/Local标志位为1,表示本地MAC,Individual/Group标志位为0,表示是个人MAC。也就是说在IBBS中,BSSID地址应该类如 10xxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx(x表示随机数要么0要么1, 2进制表示)

DA(destine address):该帧的目的mac地址

SA(source address):该帧的源mac地址

这里的DA和SA含义和普通以太网中的含义一样,在无线网络中可能我们需要通过AP把数据发送到其它网络内的某台主机中。但是有的人会奇怪,直接在RA中填这台主机的mac地址不就久好了么。但是请注意RA的含义,说的是无线网络中的接收者,不是网络中的接收者,也就是说这台目的主机不再无线网络范围内。在这种情况下我们的RA只是一个中转,所以需要多出一个DA字段来指明该帧的最终目的地,当然,如果有了DA那必须有SA,因为若目的主机要回应的话,SA字段是必不可少的。(假设没有SA字段,那么目的主机回应的数据包就只能发送到源主机所属的AP上了~)

 

最典型的一个例子就是在WDS模式下,数据帧会有4个地址,RA,TA表示接收端和发送端,这两个地址用于无线传输的时候。还有2个地址是DA和SA,分别跟以太网中一样表示源地址和目的地址。WDS帧的格式如下图:

.
打个比方说,AP1有主机A,AP2有主机B。如果A要和B同学,那么A会首先发送数据帧给AP1,然后AP1发送帧给AP2 。这个时候帧里面会有4个地址,分别是RA=mac(AP2),TA=mac(AP1),DA=mac(B),SA=mac(A)。

阅读(3651) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~