一.什么是CSMA/CA协议
既然CS MA/CD协议已经成功地应用于使用广播信道的有线局域网,那么同样使用广播信道的无线局域网能不能也使用CSMA/CD协议呢?
· 在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进
行载波监听。若发现有其他站在发送帧,就推迟发送以免发生碰撞。
· 在无线局域网中,不能使用碰撞检测CD,原因如下:
1.由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求非常高。
2.即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在
隐蔽站问题),进行碰撞检测的意义也不大。
(a)
· 在无线局域网中,不能使用碰撞检测CD,原因如下:
1.由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号
强度往往会远远小于发送信号的强度(可能相差百万倍)。如果要在无线网卡.上实现碰撞
检测CD,对硬件的要求非常高。
2.即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在
隐蔽站问题),进行碰撞检测的意义也不大。
分析图(a)A和C互为隐蔽站。1.A和C都检测不到对方的无线信息;2.A和C都给B发送帧时,产生碰撞;3.A和C无法检测到碰撞。
· 802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了-个碰撞避免CA功能, 而不再实现碰撞检测功能。
· 由于不可能避免所有的碰撞,并且无线信道误码率较高,802.11标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收。
· 802.11的MAC层标准定义了两种不同的媒体接入控制方式:
1.分布式协调功能DCF(Dstributed Coordination Function)。在DCF方式下,没有中心控制站点,每个站点使用CSMA/CA协议通过争用信道来获取发送权,这是802.11定义的默认方式。
2.点协调功能PCF(Point Coordination Function)。PCF方式使用集中控制的接入算法(一般在接入点AP实现集中控制),是802.11定义的可选方式,在实际中较少使用。
· 802.11标准规定,所有的站点必须在持续检测到信道空闲一-段指定时间后才能发送帧,这段
时间称为帧间间隔IFS。
· 帧间间隔的长短取决于该站点要发送的帧的类型:
1.高优先级帧需要等待的时间较短, 因此可优先获得发送权;
2.低优先级帧需要等待的时间较长。若某个站的低优先级帧还没来得及发送,而其他站的高优先级帧已发送到信道上,则信道变为忙态,因而低优先级帧就只能再推迟发送了。这样就减少了发生碰撞的机会。
· 常用的两种帧间间隔如下:
1.短帧间间隔SIFS(28μs),是最短的帧间间隔,用来分隔开属于一次对话的各帧。-个站点应当能够在这段时间内从发送方式切换到接收方式。使用SIFS的帧类型有ACK帧、CTS帧、 由过长的MAC帧分片后的数据帧、以及所有回答AP探询的帧和在PCF方式中接入点AP发送出的任何帧。
2.DCF帧间间隔DIFS(128μs), 它比短帧间间隔SIFS要长得多,在DCF方式中用来发送数据帧和管理帧。
二.时间间隔DIFS的重要性
任图(b)中,站点A要向站点B发送数据。A监听信道。若信道在时间间隔DIFS内-直都是空闲的(理由下面就要讲到),A就可以在to时间发送数据帧DATA。B收到后立即发回确认ACK。B开始发送确认的时刻,实际上必然略滞后于B收完DATA的时间,滞后的时间是SIFS。这是因为B收到数据帧后,必须进行CRC检验。若检验无差错,再从接收状态转为发送状态,这些动作不可能在瞬间完成。SIFS 值在802.11 标准中均有规定。因此,从A发送数据帧DATA开始,到收到确认ACK为止的这段时间(DATA+ SIFS + ACK),必须不允许任何其他站发送数据,这样才不会发生碰撞。为此, 802.1 标准规定了每个站必须同时使用以下的两个方法。
(b)A向B发送数据,B发回确认
这是我们会想A为什么会在检测到信道空闲还要等待一段时间DIFS呢?
就是考虑到可能有其他站有高优先级的帧要发送,若有,就让高优先级的帧先发送。
解决了这个问题我们又会想为什么要等待一段时间SIFS才能发送ACK帧呢?
SIFS是最短的帧间间隔,用来分隔开属于一次对话的各帧。在这段时间里,一个站点应该能从发送方式转变为接收方式。
当我们看到第二个DIFS是会问,既然信道已经由忙转化为空闲,那为什么还要退避一段时间才能使用信道呢?
防止多个站点同时发送数据而产生碰撞。
三.争用信道
当站点检测到信道是空闲的, 并且所发送的数据帧不是成功发送完上一个数据帧之后立即连续发送的数据帧则不使用退避算法。
以下情况必须使用退避算法:
1.在发送数据帧之前检测到信道处于忙状态时;
2.在每一次成功发送后要连续发送下一个帧时(这是为了避免-一个站点长时间占用信道)。
3.在每一次重传一个数据时。
(c)
■在执行退避算法时, 站点为退避计时器设置一个随机的退避时间:
口当退避计时器的时间减小到零时, 就开始发送数据;
口当退避计时器的时间还未减小到零时而信道又转变为忙状态, 这时就冻结退避计时器的数值,重新等待信道变为空闲,再经过时间DIFS后,继续启动退避计时器。
■在进行第i次退避时, 退避时间在时隙编号{0, 1, ... 2^2+i -1}中随机选择一个,然后乘以基本退避时间(也就是一个时隙的长度)就可以得到随机的退避时间。这样做是为了使不同站点选择相同退避时间的概率减少。当时隙编号达到255时(对应于第6次退避)就不再增加了。
四.对信道进行预约
· 为了尽可能减少碰撞的概率和降低碰撞的影响,802.1 1标准允许要发送数据的站点对信道进行预约。
(1)源站在发送数据帧之前先发送一个短的控制帧,称为请求发送RTS(Request To Send),它包括源地址、目的地址以及这次通信(包括相应的确认帧)所需的持续时间。
(2)若目的站正确收到源站发来的RTS帧,且媒体空闲,就发送一个响应控制帧,称为允许发送CTS(Clear To Send),它也包括这次通信所需的持续时间(从RTS帧中将此持续时间复制到CTS帧中)。
(3)源站收到CTS帧后,再等待-段时间SIFS后,就可发送其数据帧。
(4)若目的站正确收到了源站发来的数据帧,在等待时间SIFS后,就向源站发送确认帧ACK。
■除源站和目的站以外的其他各站, 在收到CTS帧(或数据帧)后就推迟接入到无线局域网中。这样就保证了源站和目的站之间的通信不会受到其他站的干扰。
■如果RTS帧发生碰撞,源站就收不到CTS帧,需执行退避算法重传RTS帧。
■由于RTS帧和CTS帧很短,发送碰撞的概率、碰撞产生的开销及本身的开销都很小。而对于一般的数据帧,其发送时延往往大于传播时延(因为是局域网),碰撞的概率很大,且一旦发生碰撞而导致数据帧重发,则浪费的时间就很多,因此用很小的代价对信道进行预约往往是值得的。
802.11标准规定了3种情况供用户选择:
口使用RTS帧和CTS帧
口不使用RTS帧和CTS帧
口只有当数据帧的长度超过某-数值时才使用RTS帧和CTS帧
(d)
■除RTS帧和CTS帧会携带通信需要持续的时间,数据帧也能携带通信需要持续的时间,这称为802.11的虚拟载波监听机制。
■由于利用虚拟载波监听机制,站点只要监听到RTS帧、CTS帧或数据帧中的任何一个,就能知道信道被占用的持续时间,而不需要真正监听到信道上的信号,因此虚拟载波监听机制能减少隐蔽站带来的碰撞问题。