控制域的最后一个子域是1bit的顺序子域。该比特1指示帧使用严格顺序服务等级进行发送。该子域的使用是适应DEC LAT协议的,DEC LAT协议不允许单播和多播帧间顺序的变化。因此,对于大多数无线应用是不使用该子域。
以上是对控制域内的子域做了详细介绍,下面继续讨论MAC数据帧。 B 持续时间/标志符域
这个域的含义与帧类型有关。在一个节能轮询消息中,该域指示了站点标志符(ID)。在其他类型帧中,该域指出持续时间值,它表示发送一帧所需的时间间隔,单位是微秒。
C 地址域
一个帧可以包含多达4个地址,这与控制域中ToDS和FromDS比特设置有关。地址域被标识为地址1到地址4。
基于控制域中的ToDS和FromDS比特设置,地址域的应用情况见表2.2。注意表2.2中地址1总是指接受端地址,这个地址可以是目的地址DA、基本服务集ID(BSSID)或是接收地址RA。如果ToDS比特置“1”,那么地址1中含接入点地址;如果ToDS比特置“0”,那么地址1中是站点地址。所有站点按地址1域中的值进行过滤。
表2.2 基于控制域中的ToDS和FromDS比特设置的MAC地址域值 ToDS 0 0 1 1 From DS 0 1 0 1 地址1 DA DA BSSID RA 地址2 SA BSSID SA TA 地址3 BSSID SA DA DA 地址4 N/A N/A N/A SA 地址2总是用于标志发送分组的站点。如果From DS比特置“1”,那么地址2中是接入点地址;否则代表站点地址。地址3域也与ToDS和FromDS比特设置有关。当Fromds比特设置为“1”,地址3中就是原来的源地址。如果ToDS比特置“1”,则地址3中就是DA。
地址4用于特定情况,即使用了无线分布系统,并且一个帧从一个接入点正发往另一个接入点。在这种情况下,ToDS和FromDS比特设置都被置位。因此,原来的DA和SA都不可用了,地址4就仅限于标识有线DS帧的源地址。
D 序列控制域
2Byte的序列控制域用作表示所属帧的不同段顺序的机制。序列控制域中包含两个子域:段号和序列号。这些子域用于定义帧和所属帧的各段的段号。
E 帧正文域
帧正文域用于在站点间传送实际信息,这个域是可变长的,最长可达2312字节。
F CRC域
MAC数据帧中最后一个域是CTC域,这个帧长4字节,包含32比特的CRC。
2.2.1.2 数据传送前的握手过程
如前所述,IEEE802.11MAC采用了一个基本的介质访问协议即带有冲突避免的载波侦听多路访问机制(CSMA/CA)。所用的CSMA/CA协议要求一个有信息要发送的站点首先要对传输介质进行侦听,即发前侦听。如果介质忙,该站点就延迟发送。如果接着在某一特定的时间内是可用的,称之为分布的帧间间隔DIFS,则该站点可以发送数据。因为其他的站点可能几乎同时发送信息,接收站点就必须检验接收分组,并且发送一个确认消息ACK通知发送站点没有发生冲突。若发送站点没收到确认信息,他将进行重发,直到它收到一个确认消息或者其重发次数达到一定的极限。
CSMA/CA机制使介质访问中的冲突最小化。因为有可能会出现两个站点同时侦听信道,并发现介质空闲随后发送信息,或是两个站点没有互相侦听,就发送信息的情况,这时冲突就会发生。为减小冲突的可能性,IEEE802.11标准所用的CSMA/CA派生出一种称为虚拟载波侦听VCS的技术。在VCS中,要求发送信息的站点先发送一个请求发送帧RTS的分组。这个分组是一个相当短的控制包,它包含了DA和SA,以及随后的发送持续时间。这个持续时间是根据数据分组的传输和接收端分组确认的时间来规定的。接收端发出清除发送CTS分组作为响应。CTS分组指示了与RTS分组中相同的持续时间信息。收到RTS或CTS控制分组,或是收到两种分组的每个站点,将其VCS指示器设成传输持续时间。在IEEE802.11中,该指示器即为所谓的网络分配矢量NAV,其用作一种通知介质上所有其它站点后退或延迟其传送的机制。
如果在以预定的时间内未收到CTS,则发送站点就认为是发生了冲突,并且
重新开始这个过程,发送另一个RTS分组。一旦收到CTS帧,就发送数据帧,接收端回送一个ACK分组以确认一次成功的数据传输。
使用RTS和CTS控制分组减少了在接收端发生冲突的可能性,这种冲突来自发送端“隐藏”的站点。所谓“隐藏节点”指一个服务集的站点,它不能检测到另一个站点的传送数据,因而不能判断出介质忙。
现以图解的方式归纳使用RTS和CTS控制分组以及它们与数据流和NAV之间的关系,如图2.5所示:
为了更形象地说明问题,现举一个有五个工作站竞争信道的例子如下: 有A、B、C、D、E五个展位了发送自己的数据帧参与竞争信道。此时A站有一个帧在空中发射,BCD站侦听信道并且发现信道正忙,于是他们各自允许随机数发生器来随机产生一个后退时间。C站在D和B站之后得到一个最小的数。所有三个终端继续侦听信道并且推迟各自的发射,直到A终端的发射完成。完成后三个终端等候IFS周期,一旦此周期结束他们立即开始计数。第一个完成计数的终端,在本例中是C站,在等待时间计数完成后开始其帧发射。其余两个终端B和D,将各自计数器停止在C站开始发射时的计数值。在C站发射的过程中,E站开始侦听信道,运行自己的随机数发生器,在本例中得到一个比D站剩余计数大但是比B站剩余计数小的随机计数值,因此在C站传输完毕之后推迟自己的发射。按照和先前一样的方式,所有的终端要等待IFS周期,然后开始计数。D站最早完成自己的随机等候时间,开始发射自己的分组。同时B和E暂停自己的计数器,等待D站完成帧传输以及之后的IFS周期,然后他们再次启动计数,由于E站的计数器首先计数到零,于是E站开始发射数据,B站暂停计数。在E站完成帧传输以及IFS周期后,B站的计数器一直计数到零并且开始发射帧数据,这样的后退策罗比起IEEE802.3标准中的指数后退方案,其优势在于无需冲突检测程序,并且等候时间也是公平分布的,平均来说执行了先来先服务的原则。具体过程图解如下:
2.2.1.3 分段传输过程中的RTS/CTS用法
RTS/CTS帧定义了以下帧和ACK帧持续的时间。时间/标识域(在数据帧和
ACK帧中)详细指明了下一分段和ACK的时间。每一帧包括了定义下一次传输持续时间的信息,该信息帧从用来更新NAV值时介质忙的RTS帧开始直到ACK0的结束,从用来更新NAV值时介质忙的CTS帧开始直到ACK0的结束。分段0和ACK0中都包括时间信息以更新NAV值时介质忙直至ACK1的结束,这些均通过运用时间/地址域(数据帧和ACK)振中来实现。到最后一分段中,时间信息变为一个ACK时间加一个SIFS时间且在其ACK帧中将其时间/标识域设为零。每一分段和ACK均像RTS和CTS;因此,在以RTS/CTS开始一系列帧交换后,尽管分段的长度可能大于dot11RTS阈值,仍不再在分段的传送之间用RTS和CTS帧。在运用跳频技术的物理层的工作站中,当在下一时间边界前没有充足的时间传送随后的分段时,发动帧交换序列的工作站就在时间边界前将时间/标识域的值在最后一个数据帧或管理帧中设为一ACK时间加上一个SIFS时间。
万一ACK被送出而源工作站没收到,接收分段或ACK帧的工作站就把信道对下一帧交换标记为忙,因为NAV从这些帧的信息中一直被更新,这是最坏的情况,见下图。如目标工作站没送出ACK则仅能听到目标工作站的工作站不更新其NAV且可能试图访问信道当他们的从收到的前一帧的信息中被更新的NAV达到0时,所有能听到源工作站的工作站在其NAV期满时都将自由地访问信道。 在分段突发期间,源工作站仅仅在下列情况下才在SIFS后传送:
——工作站已经收到一需要ACK的分段。
——源工作站已经收到对前一分段的ACK,又有多个分段要传,在下一个居留时间边界之前,有足够的时间发送下一分段且能收到其确认信号。 另外还应遵守下列规则:
——当工作站已传完一帧,除了开始的或中间的分段,工作站不会在此信道中在不执行后延程序的情况下在紧跟着传输一ACK帧。
——MSDU成功传输或所有重传尝试都结束,而且该工作站还有一随后的MSDU待传时,工作站将执行补偿程序。
——仅仅没被确认的分段要重传。
2.2.1.4 广播和组播
PCF方式下,当一广播或多接收地址的MPDU被传送时,仅仅需要一基本
的介质访问程序,而不考虑帧的长度,也不用RTS/CTS帧交换。另外,也不用
ACK帧的传送。任何工作站要传送广播和多接收地址的MPDU时,除了要确认基本的CSMA/CA介质访问程序以外,还要服从RTS/CTS帧交换的规则,因为该MPDU时直接到达AP的。广播信息将被分发到BSS内,原来的工作站也将收到。因此,所有的工作站将过滤出包含他们自己地址的广播信息作为源地址。广播和多接收地址的MPDU将在一个ESS内被散播。
在广播和多接收地址的MPDU帧中无MAC层恢复功能,于是比起直接传送的可靠性,这样的传输的可靠性就降低了,因为在延迟、碰撞等情况下,帧丢失的可能性增大了。
2.2.1.5 恢复处理
本节主要讲述对错误帧地恢复程序、重传过程及其极限和对重复帧的处理过程。
a、 恢复程序和重传极限
导致错误发生而需要恢复的环境很多,例如,RTS被传送后,可能CTS没被返回,这有可能是因为与其他的传输发生了冲突,也可能因为信道中的干扰,或者因为收到RTS的STA正处于载波侦听状态(指示介质忙)。
对于一发起帧交换且被证明错误的工作站,错误恢复可以通过重传来进行。对于每个失败的帧交换序列,重传继续直到成功或者直到达到一个适当的重试极限。对于每个期待传送的MSDU或MMPDU工作站都包含一个短的和长的重试计数器,这些计数器在增加或者重设时是互相独立的。
一RTS帧被传送后,工作站将执行CTS(9.2.5.7)。如果RTS传输失败,则短重试计数器和长重试计数器增加,该过程继续直到尝试重传的次数达到dot11短重试极限。
传送一需要确认的帧后,工作站执行ACK程序(9.2.8)。对于MSDU或MMPDU来说,每一次传送的MAC帧(长度小于或等于dot11RTS阈值)失败,短重试计数器增加,成功的话,计数器被重置。而长度大于dot11RTS阈值的帧传送失败,长重试计数器增加,成功传输则长重试计数器被重置。直到长重试计数器或短重试计数器达到各自的重试极限,对失败传输的重传将继续。一旦达到极限,重传停止,该MSDU或MMPDU被丢弃。
在省电模式下的工作站,通过传送一轮询帧作为对来自AP数据的回答已开