成帧细节
- 数据帧:好比802.11中的驮马,负责在工作站直接板运输数据。
- 控制帧:通常能够与数据帧搭配使用,负责区域的清空,信道的取得以及载波监听的维护并于收到数据时给予肯定确认,借此来增加数据传输的可靠性。
- 管理帧:负责监督,主要用来加入或者推出无线网络以及处理接入点直接关联的转移事宜
数据帧
会将上层协议的数据置于帧主体(frame body)中加以传递,会用到哪些字段,取决于该数据帧所属的类型。
下如图,则是数据真的分类方式:
Frame Control:
每个帧控制位都有可能会影响到MAC标头中其他字段的解读方式。最值得注意的是那些地址字段,他们的意义将因ToDS及FromDS位的值的不同而不同。
Duration:
用来记载网络分配适量(NAV)的值,访问媒介的时间限制有NAV指定。
-
无竞争周期所传递的任何帧必须将该字段设定为32768,此规范适用于无竞争周期所传递的任何数据帧。
-
目的地为广播或组播地址的帧的持续时间为0。此类帧并非原子交换过程的一部分,接收端也不会加以确认,因此给予竞争的媒介访问可以在广播或组播数据帧结束后立即开始。·NAV在帧交换过程中用来保护对传送媒介的访问。之后也没有来自链路层的确认,所以没有必要锁定媒介使用权。
-
Frame Control字段中的More Fragment位为0,最后的帧片段只需为本身的确认预定媒介使用权,之后就可以恢复基于竞争的访问。Duration字段会被设定为传送一个短帧间间隔及片段响应所需要的时间,如下图:
-
Frame Control字段中的More Fragment位为1,因此,Duration被设定为传送2个确认加上3个短帧间间隔及下一个帧片段所需要的时间。为最终片段设定NAV的方式本质上于RTS相同,所以也被称为虚拟RTS。
寻址与DS位:
如下图,列出了地址字段在数据帧中的各种用法:
-
Address 1
字段代表帧的接收端地址。再某些情况下,接收端即为目的地,但不总是这样,目的地是指负责处理帧中网络层封包的工作站,而接收端则是负责将无线电波解码为802.11帧的工作站。 -
Address
2字段是发送端地址,用来发送确认信息。发送端(transmitter)不见得就是来源地(sender)来源地是指产生帧中网络层协议封包的工作站;而发送端则是负责将顿传送至无线链路。 -
Address 3 字段则是供接入点与分布式系统过滤之用,不过该字段的用法取决于所使用的网络类型
由于IBSS并未使用接入点,因此不会涉及分布式系统。发送端即为帧的来源,而接收端即为帧的目的地。每个帧都会记载BSSID,因此工作站可以检查广播与组播信息。只有隶属同一个BSS的工作站才会处理该广播或组播信息。在IBSS 中,BSSID 是由随机数产生器随机产生的。
802.11对来源地与发送端以及目的地与接收端有明确的区别。将送至无线媒介的发送端不见得就是帧的产生者。目的地地址与接收端地址同样有此区别。接收端可能只是中间目的地,而帧只有到达目的地,才会由上层的协议加以处理。
BSSID
每个BSS都会被赋予一个BSSID,是一个长度为48位的二进制标识符,用来识别不同的BSS。BSSID 的主要优点是它可作为过滤之用。虽然不同的802.11网络彼此之间可能重叠,但即使如此也不应该让相互重叠的网络收到彼此的链路层广播。
在infrastructure BSS 中,BSSID就是创建该BSS的接入点上无线接口的MAC地址。而IBSS 则必须创建BSSID,才能产生网络。为了让所创建的地址尽量不重复,BSSID有46位是随机产生的。其所产生的 BSSID会将Universal/Local位设定为1,代表这是一个本地地址,至于Individual/Group位则会设定为0。两个不同的IBSS如果要产生相同的BSSID,那么它们所产生的 46位随机数必须完全相同。
有一个BSSID会被保留不用,就是所有位均设定为1的BSSID,又称为广播型BSSID。使用广播型 BSSID 的可以不被MAC中任何的 BSSID filter 所过滤BSSID 的广播只有在移动式工作站送出 probe request 以试图找出有哪些网络可以加入时才会被用到。probe 愤要能够探测现有的网络,就不能被BSSID filter过滤掉。probe 倾是唯一允许使用广播型 BSSID的。
举个例子
图4-4展示了一个网络,无线客户端通过 802.11 网络连接至服务器客户端将帧传送给服务器:
如果帧的目的地位于分布式系统 (distribution system,简称DS),则客户端既是来源地也是发送端。至于无线帧的接收端则是接入点,不过该接入点只是个中间目的地。当顿送达接入点时,该顿会经分布式系统转送给服务器。因此,分布式是接收端,而服务器才是最后的目的地。在基础结构型网络里,接入点会以其无线接口的地址创建相应的BSS,这就是为什么接收端地址 (Address 1) 会被设定为 BSSID 的原因。
当服务器响应客户端,帧会通过接入点被传送给客户端,如图4-5所示。
0.
帧产生自服务器,所以服务器的MAC 地址即为该的源地址 (source address,简称 SA)。当帧通过接入点转送出去时,接入点将会以自己的无线接口作为发送端地址(transmitter address,简称TA)。如同前一个例子,接入点的接口地址就是 BSSID。帧最后会被送至客户端,此时客户端既是目的地 (destination)也是接收端 (receiver)。
无线分布式系统 (wireless distribution system,简称WDS)
无线分布式系统有时也称为无线桥接器 (wireless bridge)。如图4-6所示,两条有线网络通过扮演无线桥接器角色的基站彼此相连。从客户端送至服务器的帧会经过 802.11 WDS。该无线的源地址与目的地地址依然对应到客户端与服务器的地址。不过,这些帧还是会区分无线媒介上帧的发送端与接收端。对于由客户端送至服务器的帧而言,发送端就是客户端这边的接入点,而接收端就是服务器这边的接入点将来源地与传送端分开的好处是,当服务器这边的接入点送出必要的802.11响应给对方的接入点时,不会干扰到有线链路层
数据帧的类型主题:
要使用何种帧,取决于服务是属于基于竞争的还是无竞争的。基于效率上的考虑,无竞争帧中可以纳入其他功能。只要改变帧的subtype,无竞争周期中的数据可用来确认其他,如此便可省去间间隔以及一一确认所带来的负担。以下是常见的数据帧类型:
data
子类型为 Data的顿只有在基于竞争的访问周期才会被传送。这类简单的顿只有一个目的,即在工作站间传送帧主体。
Null
它是由MAC 标头与FCS标尾所组成。在传统的Ethernet中,Null无非就是额外的负担。在802.11网络中,移动式工作站会利用Null顿来通知接入点改变省电状态。当工作站进入休眠状态时,接入点必须开始为之缓存帧。如果该移动式工作站没有数据要经分布式系统传送,也可以使用 Null帧,同时将 Frame Control (控制)字段的 Power Management (电源管理)位设定为1。接入点不可能进入省电模式,因此不会传送 Null。如下图:
不过在无竞争服务在实现上并不常见。
数据帧的封装
数据帧的形式取决于网络的类型。帧究竟属于何种类型,完全取决于subtype 字段,而与其他字段是否出现在帧中无关。
IBSS帧
在IBSS 中使用的address 字段有三种,如图-8 所示。第一个地址代表 receiver ,同时也是IBSS 网络中的destination地址。第二个地址是source地址。在这些地址之后,伴随而来的是IBSS的 BSSID。当无线 MAC 收到一个帧时,首先会去检查 BSSID,只有 BSSID 与工作站的相同的才会交由上层协议处理。
IBSS 数据帧的子类型不是 data 就是 Null,后者只是用来告知目前的电源管理状态。
传送来自接入点 (From AP)的帧
4-9显示了从接入点传送给移动式工作站的格式。
和所有数据一样,第一个地址字段代表无线网络中接收该帧的receiver (接收端),即该帧的目的地。第二个地址字段存放了transmitter(发送端)的地址。在infrastructure(基础结构型)网络中,发送端地址即为接入点(AP)上无线接口的地址,同时也是 BSSID最后,该会记载的来源MAC地址。区分source 与发送端之所以必要是因为802.11 MAC会将确认送给的transmitter,而较上层的协议会将回复送给帧的 source。
在802.11的规范说明书中并未明文禁止接入点传送 Null ,不过这么做并没有任何意义。因为接入点禁止使用省电例程,所以接入点只会确认来自工作站的Nul1顿,而不会在响应中使用Nul1帧。实际上,在基于竞争的访问周期,接入点会使用Data顿,而在无竞争周期,则是使用包含 CF-Pol1 功能的帧。
传送至接入点 (TOAP) 的帧
图4-10显示了在infrastructure网络里,移动式工作站传送给所连接的接人点的帧格式。
- 接收端地址 (RA)为BSSID。在基础结构型网络里,BSSID 即为接入点的MAC地址。送至接入点的帧,其来源地/发送端地址
(SA/TA)是无线工作站的网络接口。接入点并未进行地址过滤的动作,而是使用第三个地址(DA)将数据转送至位于分布式系统的适当位置。 - 传送至分布式系统(DS)的的TODS位会被设定为1,而FromDS位会被设定为0。在基础结构型网络中,移动式工作站不能扮演点协调者
(point coordinator)的角色,因此不能传送含有 CF-Poll(无竞争-轮询)功能的。
WDS中的帧
- source (来源地)以及destination (目的地)地址,并且将之与无线链路 (wireless link)所使用的地址区分开来。
- 在无线桥接链路中,通常不会存在移动式工作站,也不会使用无竞争周期。接入点禁止进入省电模式,因此Power Management (电源管理)位必然被设定为0。
经过加密的帧
- 受到链路层安全协议保护的并不算新的帧类型。当帧经过加密处理后,Frame Control(帧控制)字段的Protected Frame位会被设定为1,至于Frame Body (主体)字段则是以第五章或第七章所描述的加密标头开始,这取决于所使用的是何种协议。
控制帧
控制帧主要用于协助数据帧的传递。它们可用来管理无线媒介的访问 (但非媒介本身)以及提供 MAC 层的可靠性。
一般的帧控制字段:
所有控制帧均使用相同的Frame Control (控制)字段,如下图:
- Protocol:协议版本的值为0,因为这是目前绝无仅有的版本。
- Type:控制帧的类型标识符为01。定义时,所有控制均使用此标识符
- Subtype:此字段代表传送的控制帧的子类型
- ToDS与FromDS位:控制帧负责仲裁无线媒介的访问,因此只能够由无线工作站产生。分布式系统(DS) 并不会收发控制,因此这两个位必然为 0
- More Fragments位:控制帧不可能被分段,因此这个位必然为0。
- Retry位:控制帧不像管理帧或数据帧那样,必须在队列中等候重新发送,因此这个位必然为0.
- Power Management位:此位用来指示完成当前的帧交换过程后,传送端的电源管理状态
- More Data位:此位只用于管理帧及数据帧中,在控制帧中此位必然为 0
- Protected Frame位:控制帧不会经过加密,因此对控制帧而言,此位必然为 0。
- Order位:控制帧是原子帧交换程序 (atomic frame exchange operation)的组成要件,因此必须依序传送,所以这个位必然为 0。
RTS(请求发送)
RTS 可用来取得媒介的控制权,以便传送“大型”帧。至于多大可称为“大型”,则是由网卡驱动程序中的 RTS threshold来定义。媒介访问权只能保留给单播(unicast)帧使用,而广播(broadcast) 与组播(multicast)顿只是被简单地传送。
就和所有控制顿一样,RTS只包含头。顿主体中并未包含任何数据,帧头之后即为 FCS (校验码)。
RTS的MAC 标头由4个字段构成:
- Frame Control:Frame Control字段并没有任何特殊之处。帧的subtype字段被设定为1011,代表RTS 顿。除此之外,它与其他的控制帧有相同的字段。
- Duration:RTS 顿会试图预约媒介使用权,供交换过程使用,因此RTS 传送者必须计算RTS 顿结束后还需要多少时间用于顿交换。图 4-14说明了整个交换过程,总共需要3个SIFS 周期、1个CTS 持续时间、最后的ACK 加上传送第一个或片段所需要的时间。
- Receiver Address :接收大型帧的工作站地址。
- Transmitter Address :RTS 帧的发送端地址。
如图:
CTS(清除发送)
CTS 顿有两种目的,其格式如 4-15 所示。起初,CTS 仅用于回复 RTS ,如果之前没有RTS出现,就不会产生CTS。后来,CTS被 802.11g保护机制用来避免干扰较旧的工作站。
CTS帧的 MAC标头由3个字段构成:
- Frame Control:帧的 subtype (子类型) 字段被设定为 1100,代表 CTS 帧。
- Duration:用来响应RTS时,CTS 的发送端会以 RTS 的duration 值作为持续时间的计算基准。RTS帧会为整个RTS-CTS-frame-ACK 交换过程预留媒介使用时间。
图4-16显示了CTS duration 与RTSduration的关系:
- Receiver Address:CTS帧接收端即为之前 RTS 的发送端,因此MAC会将RTS 的发送端地址复制到CTS 帧的接收端地址。
ACK (确认)
ACK 就是MAC以及任何数据的传送 (包括一般传送、RTS/CTS 交换之前的帧、帧片段)所需要的肯定确认 (positive acknowledgment)。服务质量扩展功能放宽了对于数据帧的单一确认要求。要评估响应机制对净吞吐量 (net throughput)所造成的影响。
ACK帧的MAC标头由3个字段构成:
- Frame Control:帧的subtype (子类型)字段被设定为 1101,代表ACK 帧。
- Duration:根据ACK信号在整个帧交换过程中所处的位置,duration 的值可以有两种设定方式。
在完整的数据帧及一连串顿片段的最后一个片段中,duration会被设定为0。数据发送端会将Frame Control(控制)字段中的More Fragments位设定为0,表示数据传送已经结束。如果 More Fragments 位为0,表示整个传送已经完成,没有必要再延长对无线信道的控制权,因此会将duration设定为0。
如果More Fragments 位为1,表示尚有片段在传送中。此时 Duration 字段的用法和CTS 帧中的 Duration 字段相同。传送 ACK以及其短间间隔所需要的时间,将从最近的帧片段所记载的duration)中减去。如果不是最后一个ACK帧,duration的计算方式就类似CTS duration的计算方式。事实上,802.11的规范说明书将 ACK顺中的 duration 设定称为虚拟CTS
- Receiver Address:接收端地址是由所要确认的发送端帧复制而来。就技术而言,它是从所要确认的顿的 Address 2字段复制而来。确认主要是针对数据、管理以及 PS-PoIl 顿。
PS-POLL(省电-轮询):
当一个移动式工作站从省电模式中苏醒后,便会传送一个 PS-POIl 给接入点以取得任何缓存顿。
PS-Poll帧的格式如图 4-19 :
- Frame Control:字段被设定为 1010,代表PS-Pol1 帧。
- AID(关联标识符):PS-Poll帧会以MAC标头的第三位与第四位来代表关联标识符 (association ID)关联标识符是接入点指定的一个数值,用来识别关联。将此标识符放入帧中,可让接入点找出为其缓存的帧。
- BSSID:此字段包含发送端当前所在 BSS 的 BSSID,此BSS 由当前所关联的接入点创建
- Transmitter Address:此为PS-Pol1 顿发送端的 MAC 地址。
在PS-Poll 帧中并未包含 duration 信息,因此无法更新 NAV。不过,所有收到PS-Poll的工作站都会以短帧间间隔加上传送ACK信号所需要的时间来更新NAV。
关联标识符(AID)
在PS-Poll帧中,Duration/ID宇段是关联标识符,而非虚拟载波监听功能所使用的数值。当移动式工作站与接入点关联时,接入点会从1~2007这个范围内指派一个值来作为关联标识符。