以太网的帧封装十分简单,只要为帧加上同步信号、一些地址信息,以及在结尾加上检验码即可。相对而言,802.11的帧封装就比较复杂,因为无线介质必须将有线网络所没有的帧类型,以及各式管理功能纳入考虑。
802.11帧主要有三种类型。数据帧好比 802.11的驮马,负责在工作站之间传输数据。数据帧可能会因为所处的网络环境不同而有所差异。控制帧通常与数据帧搭配使用,负责区域的清空、信道的取得以及载波监听的维护,并于收到数据时予以正面的应答,借此促进工作站间数据传输的可靠性。管理帧负责监督,主要用来加入或退出无线网络,以及处理接入点之间连接的转移事宜。
1.1 控制帧
控制帧主要在协助数据帧的传递。它们可用来监督无线介质的访问(但非介质本身),以及提供MAC层次的可靠性。
1.1.1 一般的帧控制位
为控制帧均使用相同的 Frame Control(帧控制)位,如图1-1所示。
图1-1:控制帧中的Frame Control 位
l Protocol(协议版本)
在图1-1 中,协议版本的值为 0 ,因为这是目前绝无仅有的版本。未来可能会出 其他新的版本。
l Type(类型)
控制帧的类型识别码为 01。定义上,所有控制帧均使用此识别码。
l Subtype(次类型)
此位代表发送控制帧的次类型。
l ToDS 与FromDS bit
控制帧负责处理无线介质的访问,因此只能够由无线工作站产生。传输系统并不会收送控制帧,因此这两个 bit必然为 0 。
l More Fragments(尚有片段)bit
控制帧不可能被切割,这个 bit必然为 0 。
l Retry(重试)bit
控制帧不像管理或数据帧那样,必须在序列中等候重送,因此这个 bit必然为0 。
l Power Management (电源管理)bit
此bit用来指示、完成当前的帧交换过程后,发送端的电源管理状态。
l More Data(尚有数据)bit
More Data bit 只用于管理数据帧,在控制帧中此 bit必然为0 。
l Protected Frame(受保护帧)bit
控制帧不会经过加密。因此对控制帧而言,Protected Frame bit 必然为 0。
l Order(次序)bit
控制帧是基本帧交换程序(atomic frame exchange operation )的组成要件,因此必须依序发送。所以这个 bit必然为 0 。
1.1.2 RTS (请求发送)
RTS帧可用来取得介质的控制权,以便传输「大型」帧。至于多大称之大型:是由网卡驱动程式中的 RTS threshold(门限)来定义。介质访问权只能保留给单点传播(unicast)帧使用,而广播(broadcast)与组播(multicast )帧只须发送便是了。RTS 帧的格式如图 1-2所示。
就和所有控制帧一样,RTS 帧只包含标头。帧主体中并未包含任何数据,标头之后即为FCS (帧检查码)。
图1-2:RTS帧
RTS的MAC标头由四个位构成:
l Frame Control(帧控制)
Frame Control位并没有任何特殊之处。帧的 subtype(次类型)位设定为 1011,代 表 RTS帧。除此之外,它与其他的控制帧具备相同位。(在 802.11规格书中,最高效 bit乃是最后一个bit,因此在 subtype 位中,第 7 个bit代表最高效 bit。)
l Duration (持续时间)
RTS帧会试图预定介质使用权,供帧交换程序使用,因此 RTS 帧发送者必须计算 RTS帧结束后还需要多少时间。图 1-3说明了整个交换过程,总共需要三个 SIFS、一个CTS、最后的ACK,加上发送第一个帧或帧片段所需要的时间。(fragmentation burst 〔片段宣泄期〕会使用后续的帧片段来更新 Duration 位。)传输所需要的微秒数经过计算后会置于 Duration 位。假使计算的结果不是整数,就会被修正为下一个整数微秒。
图1-3:RTS帧的Duration 位
Address 1 位;Receiver Address (接收端地址)
接收大型帧的工作站的地址。
Address -2 位:Transmitter Address (发送端地址)
RTS帧的发送端的地址。
1.1.3 CTS (允许发送)
CTS帧有两种目的,其格式如图 1-4 所示。起初,CTS帧仅用于应答 RTS帧,如果之前没有RTS出现,就不会产生 CTS 。后来,CTS帧被 802.11g 防护机制用来避免干扰较旧的工作站。
图1-4:CTS帧
CTS帧的 MAC标头由三个位构成:
l Frame Control( 帧控制)
帧的subtype(次类型)位被设定为 1100,代表 CTS 帧。
l Duration (持续时间)
用来应答 RTS 时,CTS帧的发送端会以 RTS 帧的 duration 值作为持续时间的计算基准。RTS会为整个 RTS-CTS-frame-ACK 交换过程预留介质使用时间。不过当 CTS 帧被发送出后,只剩下其他未帧或帧片段及其回应待传。CTS帧发送端会将 RTS 帧的duration 值减去发送CTS帧及其后短帧间隔所需的时间,然后将计算结果置于 CTS 的Duration 位。图 1-5显示了 CTS duration 与RTS diratopm的关系。
图1-5二CTS的持续时间
l Address 1 位:Receiver Address (接收端地址)
CTS帧的接收端即为之前 RTS帧的发送端,因此 MAC会将 RTS帧的发送端地址复制到CTS帧的接收端地址。802.11g保护操作所使用的 CTS 帧会被发送给发出 RTS 的工作站,而且只用来设定 NAV。
1.1.4 ACK (应答)
ACK帧(图 1-6 )就是 MAC以及任何数据传输(包括一般传输 RTS/CTS交换之前的帧、帧片段)所需要的正面应答(positive acknowledgment)。服务质量扩展功能放宽了个别数据帧必须各自得到应答的要求。
图1-6:ACK帧
ACK帧的 MAC标头由三个位构成:
l Frame Control(帧控制)
帧的subtype(次类型)位被设定为 1101,代表 ACK帧。
l Duration (持续时间)
依照ACK信号在整个帧交换过程中位居何处,duration 的值可以有两种设定方式。在完整的数据帧及一连串帧片段的最后一个片段中,duration 会被设定为 0。数据发送端会将 Frame Control(帧控制)位中的 More Fragments(尚有片段)bit设定为 0,表示数据传输已经结束。
如果More Fragments bit 为0 ,表示整个传输已经完成,没有必要再延长对无线信道的控制权,因此会将 duration 设定为 0 。
如果More Fragments bit为1 ,表示尚有帧片段仍在发送中。此时Duration 位的用法和 CTS帧中的Duration 位相同。发送ACK以及短帧间隔所需要的时间,将由最近帧片段所记载的duration 中减去。如果不是最后一个 ACK帧,duration 的计算方式类似 CTS duration 的计算方式。事实上,802.11的规格书将 ACK帧中的duration 设定称为虚拟 CTS。
l Address 1 位:Receiver Address (接收端地址)
接收端地址是由所要应答的发送端帧复制而来。技术上而言,它是由所要应答帧的Address 2 位复制而来。应答主要是针对数据帧、管理帧以及 PS-Poll帧。
图1-7:非最终ACK帧的Duration 位
1.1.5 PS-Poll (省电模式一轮询)
当一部移动工作站从省电模式中苏醒,便会发送一个 PS-Poll帧给接入点,以取得任何暂存帧。PS-Poll帧的格式如图 1-8 所示。
图1-8:PS-Poll帧
PS-Poll帧的 MAC标头由四个位构成:
l Frame Control(帧控制)
帧的subtype(次类型)位被设定为 1010,代表 PS-Poll帧。
l AID(连接识别码)
PS-Poll帧将会以 MAC标头的第三与第四 bit来代表连接识别码(association ID)。连接识别码是接入点所指定的一个数值,用以区别各个连接。将此识别码置入帧,可让接入点找出为其(移动工作站)所暂存的帧。
l Address 1 位:BSSID
此位包含发送端目前所在 BSS 的BSSID ,此BSS 建立自目前所连接的 AP。
l Address 2 位:Transmitter Address (发送端地址)
此为PS-Poll帧之发送端的 MAC地址
在PS-Poll帧中并未包含 duration 信息,因此无法更新 NAV。不过,所有收到 Ps-Poll帧的工作站,都会以短帧间隔加上发送 ACK信号所需要的时间来更新 NAV。此一自动调整机制使得接入点在发送 ACK信号时,比较不会与移动接入点发生碰撞。
【连接识别码(AID)在PS-Poll帧中,Duration/ID位是连接识别码,而非虚拟载波侦测功能所使用的数值。当移动工作站与接入点连接时,接入点会从1-2,007范围内指派一个值来做为连接识别码(AID)。】
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 ,至于帧主体,则是以加密标头起头,这取决于所使用的何种协议。