首页 > 代码库 > 802.11成帧封装实现(二)

802.11成帧封装实现(二)

 1.2     数据帧

数据帧会将上层协议的数据置于帧主体加以传递。图 1-9 显示了数据帧的基本结构。会用到哪些位,取决于该数据帧所属的类型。

 技术分享

          图1-9 基本的数据帧

不同类型的数据帧可根据功能加以分类。其中一种方式,是将数据帧区分为竞争式服务及免竞争服务两种数据帧。只能在免竞争期间出现的帧,就不可能在IBSS(独立型基本服务组合)中使用。另一种区分方式,则是对携带数据与提供管理功能的帧加以区别。表1-1 显示了数据帧的分类方式。

表 4-1:数据帧的各种分类方式

 技术分享

1.2.1   Frame Control (帧控制)

Frame Control(帧控制)位各个 bit都可能影响到MAC标头其他位的解读方式。最值得注意的是那些地址位,它们的意义将因ToDS 及FromDSbit 的值而异。

1.2.2   Duration(持续时间)

Duration (持续时间)位用来记载网络分配矢量(NAV)的值。访问介质的时间限制是由NAV所指定。数据帧之 Duration 位的设定,必须依循四项规范:

 1.  免竞争期间所传递的任何帧,必须将Duration 位设定为32768 。此规范适用于免竞争期间所传递的任何数据帧。

2.  目的地为广播或组播地址的帧(Address 1 位设定了群组 bit),其持续时间为 0。此类帧并非基本交换过程的一部分,接收端也不会加以应答,因此竞争式介质访问可以在广播或组播数据帧结束后立即开始。NAV在帧交换过程中是用来保护传输介质。既然广播或组播帧之后不会有来自链路层的应答,因此没有必要为后续帧锁住介质使用权。

3.  如果Frame Control位中的More Fragments bit 为0,表示该帧已无其余片段。最后的帧片段只须为本身的应答预订介质使用权,之后就可以恢复竞争式访问了。Duration位会被设定为发送一个短帧间隔及片段应答所需要的时间。整个过程如图 1-10 所示。倒数第二个片段的Duration 位,会为最后一个片段锁住介质使用权。

 技术分享

        图1-10:最终片段的Duration 设定

4.  如果Frame Control位的More Fragmentsbit被设定为 1,表示其后还有帧片段。因此, Duration 位便会被设定为发送两个应答、加上三个短帧间隔及下一个帧片段所需要的时间。为非最终片段设定NAN 的方式本质上与 RTS 相同,所以亦称为虚拟RTS 。

 技术分享

          图1-11:非最终片段的Duration 设定

1.2.3   地址与DS Bit

地址位的编号与功能取决于设定了哪个 DS(分布式系统)bit,因此所使用的网络类型会间接影响到地址位的用法。表 1-2 列出了地址位在数据帧中的各种用法。只有无线桥接器才会使用第四个地址位,因此比较少见。

表 1-2:地址位在数据帧中的用法

 技术分享

Address 1 代表帧接收端的地址。在某些情况下,接收端即为目的地,但不总是这样。目的地是指负责处理帧中网络层封包的工作站;而接收端则是负责将无线电解码为 802.11帧的工作站。如果Address 1 被设为广播或组播地址,则必须同时检查 BSSID (基本服务组合识别码)。工作站只会应答来自同一个基本服务集(basic service set,简称 BSS )的广播或组播信息;至于来自其他不同 BSS 者则加以忽略。Address 2 是发送端的地址,用来发送应答信息。发送端就是源地址。源地址是指产生帧中网络层协议封包的工作站;而发送端则是负责将帧发送至无线链路。Address 3 位则是供接入点与分布式系统过滤之用,不过该位的用法,取决于所使用的网络类型。

由于IBSS 并未使用接入点,因此不会涉及分布式系统。发送端即为帧的源,而接收端即为帧的目的地。每个帧都会记载 BSSID ,因此工作站可以检查广播与组播信息。只有隶属同一个 BSS的工作站,才会处理该广播或组播信息。在 IBSS 中,BSSID 是由随机数产生器随机产生的。

BSSID

每个BSS都会被赋予一个BSSID,它是一个长度为48个bit的二进制识别码,用来辨识不同的BSS。BSSID的主要优点是,它可作为过滤之用。虽然不同的802.11网络彼此间可能重叠,但即使如此也不应该让相互重叠的网络收到彼此的链路层广播。

在 infrastructure BSS(基础架构型基本服务集)中,BSSID 就是建立该 BSS 的接入点上无线接口的MAC地址。而IBSS(独立型基本服务组合)则必须建立BSSID。方能产生网络。

为了让所建立的地址尽量不致重复,BSSID有46个bit是随机产生的。其所产生的BSSID,会将Universal/Local bit设定为1,代表这是一个区域地址,至 于vidual/Group bit则会设定为0。两个不同的IBSS,如果要产生相同的BSSID,它们所产生的46bit数必须完全相同。

有一个BSSID会被保留不用,就是所有bit均设定为1的BSSID,又称为广播型BSSID。使用广播型BSSID的帧,可以不被MAC中任何的BSSID filter所过滤。BSSID的广播只有在移动式工作站送出probe request(检测要求),试图找出有哪些网络可以加入时才会用到。probe帧要能够检测现存的网络,就不能被 BSSID filter过滤掉probe帧是惟一允许使用广播型BSSID的帧。

802.11对源与发送端以及目的地与接收端有明确的区分。将帧送至无线介质的发送端,不见得就是帧的产生者。目的地址与接收端地址同样有此区别。接收端可能只是中介目的地,而帧只有到达目的地,才会由较上层的协议加以处理。

图1-12 展示了一个简单的网络,其中有某个无线用户端通过 802.11网络连接至服务器。用户端将帧发送给服务器时,地址位的用法如表 1-2 第二列所示。

 技术分享

        图1-12:将帧发送至服务器时,地址位的用法

如果帧的目的地位于分布式系统,则用户端既是源亦是发送端。至于无线帧的接收端则是接入点,不过该接入点只是个中介目的地。当帧送到接入点时,该帧会经分布式系统转送给服务器。因此,接入点是接收端,而服务器才是最后的目的地。在基础架构型网络里,接入点会以其无线接口的地址建立相应的BSS ,这就是为什么接收端地址(Address 1)会被设定为 BSSID 的原因。

当服务器应答用户端时,帧会通过接入点发送给用户端,如图 1-13 所示。这种情况相当于表1-2 的第三列。

 技术分享

          图1-13:帧来自分布式系统时,地址位的用法

由于帧产生自服务器,所以服务器的 MAC地址即为该帧的来源地址(简称 SA)。当帧通过接入点转送出去时,接入点将会以自己的无线接口做为发送端地址(简称TA)。如同前一个例子,接入点的接口地址就是 BSSID 。帧最后会被送至用户端,此时用户端既是目的地又是接收端。

表1-2 的第四列展示了地址位在无线分布式系统(wireless distribution system 简称 WDS)中的用法。无线分布式系统有时也称为无线桥接器。如图1-14 所示,两条有线网络通过扮演无线桥接器角色的接入点彼此相连。从用户端送至服务器的帧会经过 802.11 WDS 。该无线帧的源与目的地址,依然对应到用户端与服务器的地址。不过,这些帧还是会区分无线接口上帧的发送端与接收端。对于由用户端送至服务器的帧而言,发送端就是用户端这边的接入点,而接收端就是服务器这边的接入点。将来源地与发送端分开的好处是,当服务器这边的接入点送出必要的 802.11应答给对方接入点时,不会干扰到有线链路层。

 技术分享

          图1-14:无线分布式系统

1.2.4   数据帧的次类型

802.11具有数种不同类型的数据帧。要使用何种帧,取决于服务是属于竞争式或免竞争式服务。基于效率上的考虑,免竞争帧中可以加入其他功能。只要改变帧的次类型,免竞争期间的数据帧即可用来应答其他帧,由此便可省去帧间隔以及一一应答所带来的负担。以下是常见的数据帧次类型:

l  Data(数据)

子类型为 Data的帧,只有在竞争访问期间才会传输。这类简单的帧只有一个目的,亦即在工作站间发送帧主体。

l  Null (空)

Null 帧看起来有点奇怪。它是由 MAC标头与 FCS 标尾所组成。在传统的以太网中,Null帧无非就是额外的负担;在 802.11网络中,移动工作站会利用 Null 帧来通知接入点省电状态的改变。当工作站进入休眠状态,接入点必须开始为之暂存帧。如果该移动式工作站没有数据要通过分布式系统传输,也可以使用 Null 帧,同时将 Frame Control(帧控制)位的 Power Management(电源管理)bit设定为1。接入点不可能进入省电模式,因此不会发送 Null 帧。Null 帧的用法,如图1-15 所示。此外尚有一些在免竞争期间使用的帧类型。不过,免竞争服务在实际上并不常见。

 技术分享

          图1-15:次类型为Null 的数据帧

1.2.5   数据帧的封装

数据帧的形式取决于网络的形式。帧究竟属于哪种类型,完全取决于subtype(子类型)位,而与其他位是否出现在帧中无关。

 1.2.5.1 IBSS帧

在IBSS 中,所使用的 address 位有三种,如图 1-16 所示。第一个地址代表接收端,同时也是IBSS 网络中的目的地址。第二个地址是源地址。在这些地址之后,伴随而来的是 IBSS 的BSSID 。当无线 MAC收到一个帧时,首先会去检查 BSSID ,只有BSSID 与工作站相同的帧,才会交由上层协议加以处理。

 技术分享

          图1-16:IBSS 数据帧

IBSS 数据帧的子类型不是 data 就是 Null ;后者只是用来告知目前的电源管理状态。

 1.2.5.2 发送自接入点(From AP )的帧

图1-17 显示了由接入点发送给移动工作站的帧格式。和所有数据帧一样,第一个位代表无线网络中接收该帧的接收端,亦即该帧的目的地。第二个位存放了发送端的地址。在基础网络中,发送端地址即为接入点(AP)上无线接口的地址,同时也是BSSID 。最后,该帧会记载帧的源MAC地址。区分源与发送端之所以必要,是因为 802.11 MAC 会将应答送给帧的 Transmitter(发送端AP),而较上层的协议会将应答送给帧的 source (来源地)。

 技术分享

          图1-17:发送自接入点的数据帧

在802.11的规格书中并未明文禁止接入点发送 Null 帧,不过这么做并没有任何意义。因为接入点禁止使用省电程序,所以接入点只会应答来自工作站的 Null 帧,而不会在应答中使用 Null 帧。

实际上,在竞争式访问期间,接入点会使用 Data帧,而在免竞争期间则是使用包含 CF-Poll功能的帧。

1.2.5.3 发送至接入点(To AP )的帧

图1-18 显示了,在 infrastructure (基础架构型)网络里,移动工作站发送给所连接接入点的帧格式。接收端地址(RA)为 BSSID 。在基础网络里,BSSID 即为接入点的 MAC地址。送至接入点的帧,其源/发送端地址(SA/TA )得自无线工作站的网络接口。接入点并未进行地址过滤的动作,而是使用第三个地址(DA ),将数据转送至位于分布式系统的适当位置。

 技术分享

          图1-18:发送至接入点的数据帧

发送至分布式系统(Ds)的帧其 ToDS bit 会被设定为 1,而 FromDS bit会被设定为 0 。在基础网络中,移动工作站不能扮演中枢协调者(point coordinato)的角色,因此不能发送含有CF-Poll(免竞争一轮询)功能的帧。

 1.2.5.4 WDS 中的帧

当接入点被部署成无线桥接器(或者 VUDS )时,就会用到四个地址位,如图 1-19 所示。和其他数据帧一样,WDS帧会使用第一个地址(RA)代表 receiver (接收端),第二个地址(TA)代表Transmitter(发送端)MAC层会使用这两个地址送出应答以及控制流量,例如 RTS 、CTS以及ACK帧。另外两个地址位(SA与DA)则是用来记载帧的 source(源)以及 destination(目的)地址,并且将之与无线链路所使用的地址区别开来。

 技术分享

          图1-19:WDS帧

在无线桥接链路中,通常不会存在移动工作站,也不会使用免竞争期间。接入点禁止进入省电模式,因此 power management (电源管理)bit必然设定为 0 。

1.2.5.5  经加密的帧

受到链路层安全协议保护的帧并不算新的帧类型。当帧经过加密处理,Frames Control (帧控制)位的 Protected Frame bit会被设定为 1 ,至于帧主体,则是以加密标头起头,这取决于所使用的何种协议。

 

 
 

802.11成帧封装实现(二)