802.11规范为MAC协议定义了5类时序间隔,其中两类是由物理层决定的基本类型:短帧空间(SIFS)和时隙 (slot time)。其余3类时序间隔则基于以上两种基本的时序间隔:优先级帧间空间(PIFS)、分散帧间空间(DIFS)和扩展帧间空间(EIFS)。 SIFS是最短的时序间隔,其次为时隙。时隙可视为MAC协议操作的时间单元,尽管802.11信道就整体而言并不工作于时隙级时序间隔上。对于 802.11b网络(即具有DSSS物理层的网络),SIFS和时隙分别为10和20μs。考虑到信号的传播和处理延迟,通常将时隙选择为20μs。 PIFS等于SIFS加1个时隙,而DIFS等于SIFS加2个时隙。EIFS比上述4类时序间隔都长得多,通常在当收到的数据帧出现错误时才使用。
802.11 MAC支持两种操作模式:单点协调功能(PCF)和分散协调功能(DCF)。PCF提供了可避免竞争的接入方式,而DCF则对基于接入的竞争采取带有冲突避免的载波检测多路访问(CSMA/CA)机制。上述两种模式可在时间上交替使用,即一个PCF的无竞争周期后紧跟一个DCF的竞争周期。
PCF协议
在PCF协议中,AP通过向相关的移动站发送轮询消息依次对这些移动站进行轮询。如果AP需要将数据发送至正被轮询的移动站,那么数据可包含在轮询消息中。如果轮询的基站需要将数据发送至AP,则可将数据包含在轮询响应消息中。在适当情况下,确认信息(确认收到了上一个来自 AP的数据帧)也可包含在响应消息中。
图1给出了一个示例,AP首先将轮询消息和数据(如果存在)发送至移动站1(用S1表示)。移动站1应当在SIFS时序间隔内,立即发送确认消息或数据帧(如果数据帧存在)至AP。在收到来自移动站1的ACK消息或数据后,AP将在SIFS时序间隔内轮询移动站2。在本例中,由于轮询消息丢失或者移动站不需要发送数据至AP,因此移动站2并未作出响应。这种情形中,由于在SIFS截止之前AP未收到来自移动站2的响应, AP将在PIFS时序间隔内继续轮询移动站3。PIFS开始于移动站2最后一条轮询消息的末尾。
DCF协议
DCF采用CSMA/CA机制,其工作原理如下:带有准备传送的新分组数据的移动站(包括AP)首先检测信道是否繁忙,如果信道在DIFS时序间隔(对于802.11b网络为50μs)内为空闲状态,那么移动站将开始传送分组数据。否则,移动站继续检测信道。如果信道在 DIFS时序间隔内空闲,那么移动站:a)开始将信道时间分为多个时隙单元;b)生成以时隙为单位的随机退避间隔(random backoff interval);c)继续检测信道。接着,在信道仍保持空闲的每个时隙中,退避间隔值减1。当间隔值为0时,移动站将开始传送分组数据。
在退避期间,如果在一个时隙中检测到信道繁忙,那么退避间隔将保持不变,并且只当检测到在DIFS间隔及其下一时隙内信道持续保持空闲,才重新开始减少退避间隔值。当退避间隔为0,将再次传送分组数据。退避机制有助于避免冲突,因为信道可在最近时刻被检测为繁忙。更进一步,为了避免信道被捕获,在两次连续的新分组数据传送之间,移动站还必须等待一个退避间隔,尽管在DIFS间隔中检测到信道空闲。图2描述了上述过程。
DCF的退避机制具有指数特征。对于每次分组传送,退避时间以时隙为单位(即是时隙的整数倍),统一地在0至n-1之间进行选取,n表示分组数据传送失败的数目。在第一次传送中,n取值为CWmin=32,即所谓的最小竞争窗(minimum contention window)。每次不成功的传送后,n将加倍,直至达到最大值CWmax=1024。
对于每个成功接收的分组数据,802.11规范要求向接收方发送ACK消息。而且为了简化协议头,ACK消息将不包含序列号,并可用来确认收到了最近发送的分组数据。也就是说,移动站根据间断停起(stop-and-go)协议进行数据交换。如图2所示,一旦分组数据传送结束,发送移动站将在10μs SIFS间隔内收到ACK。如果ACK不在指定的ACK_timeout周期内到达发送移动站,或者检测到信道上正在传送不同的分组数据,最初的传送将被认为是失败的,并将采用退避机制进行重传。
除了物理信道检测,802.11图3:ACK/CTS延迟分配。 MAC协议还实现了网络向量分配(NAV),NAV的值向每个移动站指示了信道重新空闲所需的时间。所有的分组数据均包含一个持续时间字段,而且NAV将对传送的每个分组数据的持续时间字段进行更新。因此,NAV实际上表示了一种虚拟的载波检测机制。MAC就采用物理检测和虚拟检测的组合以避免冲突。
上面描述的协议称为双向握手机制,此外,MAC也包含4通(four-way)帧交换协议。实际上,4通协议利用上述竞争过程获得信道接入之后,要求移动站向AP发送一个特殊信号:发送请求(RTS)信号,而不是实际的数据分组包。与此相呼应,AP将在适当的时候,在 SIFS间隔内发送清除-发送(Clear-to-Send, CTS)消息,以通知请求的移动站立即开始分组数据传送。RTS/CTS握手的主要目的是解决所谓的隐藏终端(hidden terminal)问题。
802.11 标准规范了一个通用的媒体访问层,提供了支持基于 802.11 无线网络的操作的多种功能。一般地说, MAC 层用来在 802.11 基站之间通过在共享信道上的访问和协议管理和维护通信。作为网络的大脑, 802.11 MAC 层使用了 802.11 物理层,如 802.11b 或者 802.11a ,来执行载波监听、 802.11 帧的传送和接收。
媒体访问层基础
在传输帧的时候,一个基站首先要获取共享的信道的访问。 802.11 标准定义了两种媒体访问形式:分布式协调功能( DCF )和集中式协调功能(PCF )。 DCF 基于 CSMA/CA (载波监听多路访问 / 冲突防止)协议,且是强制的。在 DCF 模式下, 802.11 主机将竞争获取访问权,并且在发送无线帧的时候,其他站点是不会传输的。如果其他站点需要传输,则此站点将等待直到信道空闲。
作为访问媒介的条件, MAC 层检查其网络分配矢量( NAV )的值,这在每个站点中都存在,用来表示前一帧需要发送此帧的时间。网络分配矢量在站点试图发送帧之前必须置为零。在传输帧之前,站点根据帧长和传输速率计算发送帧所需的时间。站点将表示此时间的值放在帧头的 duration域中。当站点收到此帧后,检查 duration 域并作为设置对应 NAV 的基础。这个操作将为发送站点预留媒介。
DCF 的一个重要方面是随机退避时间。站点在检测到忙信道的时候使用此值。如果信道正在被使用,站点必须在下一次访问媒介之前等待一个随机的时间。这保证了多个想要发送数据的站点不会在同一时间来发送。随机退避时间使得站点等待不同的时间,避免了站点继续在同一时间来访问媒介、查看信道是否空闲、传输并冲突。随机退避时间明显的降低了无线帧冲突的数量,特别是在用户增多的情况下。
基于 radio 的局域网中,一个发送站点不能在发送数据的时候同时监听冲突,主要是因为站点不能在传输无线帧的时候使得其接收器开启。作为结果,接收站点如果检测到没有错误的时候需要发送一个 ACK 。如果发送站点在指定的时间后没有收到 ACK ,发送站点将假设发生了冲突(或者RF 干扰),并重传此帧。
为了能够支持数据帧的实时业务传输, 802.11 标准定义了一种可选的集中式协调功能( PCF ): AP 在竞争空闲期间内对站点进行轮询。站点只有在 ap 轮询到的时候才能够传输。基于 PCF 的数据传输时间(如果已启用)将在 DCF 竞争时间中发生(?)。
ap 基于轮询列表来对站点进行轮询,如果站点使用 DCF 的话则切换到竞争时间。这个过程支持操作的同步( VoIP )和不同步模型( Email 和Web 浏览)。
802.11 MAC 层函数
下面总结了 802.11 MAC 功能,特别是和基础架构无线站点相关的内容:
- 扫描 : 802.11 标准定义了被动和主动扫描,也就是说,一个 radio NIC 可以搜索 AP 。被动扫描是强制的,每个 NIC 搜索单独的信道来发现最好的信号。 AP 定期的发送 beacon , radio NIC 在扫描的时候接收此 beacon 并记录相应的信号强度。 beacon 中包含了 AP 的相关信息,如服务集标识符( SSID )、支持的速率等。 Radio NIC 可以使用这些信息和信号强度来比较 AP 并决定使用哪个 AP 。可选的主动扫描是类似的,除了 radio NIC 通过广播 rpobe 帧来初始化过程,而在区域内的 AP 则通过探测响应回复此报文。主动扫描使得 radio NIC 不需要经过一个 beacon 传输时间而直接从 AP 获取响应。尽管如此,问题在于主动扫描为网络增加了额外的开销,因为额外的探测和探测响应报文的传输开销。
- 认证 :认证实际上就是提供证明的过程, 802.11 标准中指定了两种形式的认证:开放系统认证和共享密钥认证。开放系统认证是强制的,包含了两个步骤:一个 radio NIC 首先通过发送认证请求帧到 AP 来初始化此过程, AP 则在响应帧的 Status COde 中设置同意或者拒绝的信息。共享密钥认证是可选的,包含了四个步骤。这是基于 WEP 密钥的认证方式。 Radio NIC 首先发送认证请求帧到 AP 上, AP 然后在响应帧中包含挑战码。 NIC 使用 WEP 密钥对此挑战码进行加密并发送到 AP 上, AP 将此密钥解密并与原来的挑战码进行比较。如果结果相同,则 AP 认为 NIC 有着同样的密钥。 AP 通过发送认证成功或者失败的帧来完成此过程。
- 关联 :一旦认证成功, NIC 在发送数据帧之前必须要和此 AP 关联。关联对于 NIC 和 AP 之间的信息同步是必要的,如支持的数据传输速率。 NIC 通过发送关联请求来初始化此过程,其中包含了 SSID 和支持的速率等信息。 AP 通过关联响应帧来响应此报文,其中包含关联的ID 以及 AP 的其他信息。一旦 NIC 和 AP 完成关联过程,双方就可以互相发送数据帧了。
- WEP :如果可选的 WEP 启用的话,无线网卡 NIC 在发送数据帧的时候将使用公共密钥对数据加密(不包括帧头),接收站点将采用同样的密钥对数据进行解密。 802.11 标准指定了 40 比特长度的密钥,并且没有制定密钥分发方法,这使得 802.11 无线局域网容易被攻击。尽管如此, 802.11i 工作组将 802.1X 和更强的加密结合起来为无线网络提供安全保障。
- RTS/CTS :可选的 RTS/CTS (request-to-send 和clear-to-send)功能为 AP 提供了对媒介的控制。对于大部分的 NIC ,用户在激活RTS/CTS 的时候可以设置一个最大的帧长门限值。例如, 1000 字节的帧长门限长度可以使得对于所有帧长大于 1000 字节的帧数据都将激活 RTS/CTS 功能。 RTS/CTS 功能缓解了隐藏终端问题:两个或者更多的 NIC 在关联到同一个 AP 的时候不能够互相知道对方。如果 NIC激活了 RTS/CTS ,在发送数据帧之前首先发送一个 RTS 帧, AP 将响应一个 CTS 帧,表示可以发送帧数据。在 CTS 帧的 duration 域中,包含了站点可以发送数据帧的时间。 AP 将会保留此时间直到站点发送数据完毕。这种方法避免了隐藏终端之间的冲突。对于每个帧,RTS/CTS 的握手过程将继续,直到帧长超过对应的门限值。
- 节能模式 :可选的节能模式使得用户可以在没有必要传送数据的时候启用从而减少电池能量的消耗。在节能模式下, NIC 通过每个报文帧头的 Status 比特位告诉 AP 自己将进入休眠模式。 AP 维护每个站点的休眠模式信息,并将对应的报文缓存。为了能够接收数据帧,休眠的NIC 必须定期(在正确的时间)的唤醒,来接收 AP 的正常的 beacon 。这些 beacon 将指示是否有报文需要传送到此站点。如果有的话,无线站点则从 AP 上获取数据。当接收完数据后,站点可以继续进入休眠模式。
- 分片 :可选的分片功能可以使得 802.11 站点将数据分为更小的帧。这使得有可能发生 RF 干扰错误的时候,不需要重传大的帧。因为比特错误总是影响一个数据帧,所以重传一个小的数据帧比重传大的数据帧开销要小。在 RTS/CTS 环境下,用户可以设置在超过帧长门限值的时候进行分片,也就是说,在超过门限值的时候, NIC 将会将报文分成多个小的报文。