1.1.1 冲突避免的无线局域网协议

传统的以太网是由IEEE 802.3的标准定义的,每条以太网的链接都必须在严格的条件下运行,尤其是物理链路本身。例如,链路状态、链路速度和双工模式都必须符合标准的规定,无线局域网使用类似的协议,由IEEE 802.11标准定义。

有线以太网设备必须采用载波侦听多路访问/冲突检测(CSMA/CD)方法来传输和接收以太网帧。在共享的以太网网段上,PC以半双工模式工作,每台PC都可以先“发言”,然后侦听是否同其他正在发言的设备发生冲突。整个检测冲突的过程是基于有线连接的最大长度,从网段的一端发送到另一端,检测到冲突之间的最大延迟是确定的。

在全双工或交换型以太网链路上,不存在冲突或争取带宽的问题,但它们必须遵循相同的规范。例如,在全双工链路上,必须在预期的时间内发送或接收以太网帧,这要求全双工双绞线的最大长度与半双工链路相同。

虽然无线局域网也基于一组严格的标准,但无线介质本身难以控制,一般而言,当PC连接到有线网络时,与其共享网络连接的其他设备的数量是已知的,而当PC使用无线网络时,使用的传输介质为空气,由于接入层没有电缆和插口,因此,无法限制其他最终用户使用相同频率无线电波。

无线局域网实际上是一种共享型网络,且争用相同频率电波的主机数量不是固定的。在无线局域网中,冲突犹如家常便饭,因为每条无线连接都是半双工模式的,IEEE 802.11 WLAN总是半双工模式的,因为传输站和接收站使用的频率相同。双方不能同时传输,否则将发生冲突。要实现全双工模式,必须在一个频率进行传输,在另一个频率进行接收,这类似于全双工以太网链路的工作原理,虽然这完全可行,但IEEE 802.11标准不允许采用全双工模式。

当多个无线工作站同时传输时,它们的信号将相互干扰,接收站收到的将是混乱的数据、噪声或错误信息。如果没有明确的方式来确定是否发生了冲突,传输站也无法知道发生了冲突,因为传输时将关闭其接收器,作为一个基本的反馈机制,每当无线工作站传输一帧后,接收工作站必须发送一个确认,确认已正确地收到该帧。确认帧充当了基本的冲突检测工具,然而,它并不能预先防止冲突的发生。

IEEE 802.11标准使用一种名为载波侦听多路访问/冲突避免(CSMA/CA)的方法来避免冲突。注意,IEEE 802.3有线网络是检测冲突,而IEEE 802.11网络是尽可能避免冲突。

为实现冲突避免,要求所有工作站在传输每帧前进行侦听,当工作站有帧需要发送时,面临的将是下列情况之一:

① 没有其他设备在传输数据,工作站可立刻传输其帧,接收工作站必须发送一个确认帧,确认原始帧已在没有发生冲突的情况下到达。

② 另一台设备正在传输,工作站必须等待,等到当前帧传输完毕后,它再等待一段随机时间,然后传输自己的帧。

无线帧的长度不是固定的,一个工作站传输其帧时,其他工作站如何知道该帧已传输完毕,可以使用无线介质呢?显然,工作站可以进行侦听,等待静默期的到来,但这样做并非总是有效的,其他工作站也在侦听,可能同时决定开始传输。IEEE 802.11 标准要求所有工作站在开始传输前等待一段时间,这段时间被称为DCF帧间间隔(DCF Interframe Space,DIFS)。

传输工作站可以在IEEE 802.11报头中包含一个持续时间值,以指出传输完当前帧所需的大概时间。持续时间值包含传输完当前帧所需要的时隙数(单位通常为毫秒),其他无线工作站必须查看持续时间值,并在考虑传输数据前等待相应的时间。

由于每个侦听站在传输的帧中看到的持续时间值相同,因此它们都可能在这段时间过去后决定传输自己的帧,这可能导致冲突。所以,在实际中,除持续定时器外,每个无线工作站还必须实现一个随机后退定时器,传输帧之前,工作站必须选择一个要等待的随机时隙数,这个数字位于0和最大争用窗口值之间。这里的基本思想是,准备传输的工作站必须等待一段随机时间,以减少试图立即传输的工作站数量。

这个过程被称为分布式协调功能(Distributed Coordination Function,DCF),图1-1对其进行了说明。三位无线用户都有一个帧需要发送,它们所需的时间各不相同。发生的情况如下所述。

图1-1 使用DCF过程避免冲突

① 用户A侦听并确定没有其他用户在传输,因此,传输自己的帧并通告持续时间。

② 用户B有一个帧需要传输,他必须等待用户A的帧传输完毕,再等待DIFS时间过去。

③ 用户B在传输前等待一段随机退避时间。

④ 在用户B等待期间,用户C有一个帧需要传输,他通过侦听发现没有人在传输,用户C等待一段随机时间,但比用户B的随机时间短。

⑤ 用户C传输一个帧,并通告其持续时间。

⑥ 用户B传输前必须等待该持续时间加上DIFS时间。

由于后退定时器是随机的,多台工作站仍可能选择相同的退避时间,因此,无法防止这些工作站同时传输数据,进而导致冲突。这样,在无线网络中将会出现传输错误,而接收站不会返回确认,为此发送站必须考虑重新发送其帧。

最后,工作站在其随机后退定时器过期后并准备传输数据时,如果发现有人正在传输,该如何办呢?它必须再等待当前正在传输的帧的持续时间、DIFS时间和随机后退时间。