802.11的隐藏节点和RTS/CTS机制(二)

目录:

1、无线传输相关范围

2、隐藏节点

3、暴露节点

4、RTS/CTS机制

 

4RTS/CTS机制

        上面的暴露节点和隐藏节点问题是无线局域网802.11特有的,802.3是没有的,所以对于802.11有一种特殊的解决隐藏节点问题的机制,也就是RTSCTS。通信协议中的RTS/CTS协议:即请求发送/允许发送协议,相当于一种握手协议,主要用来解决"隐藏终端"问题。"隐藏终端"多发生在大型单元中(一般在室外环境),这将带来效率损失,并且需要错误恢复机制。当需要传送大容量文件时,尤其需要杜绝"隐藏终端"现象的发生。

IEEE802.11提供了如下解决方案。在参数配置中,若使用RTS/CTS协议,同时设置传送上限字节数----一旦待传送的数据大于此上限值时,即启动RTS/CTS握手协议用户可以通过调整RTS阈值,来控制RTS/CTS交换过程。只要大于此阈值,RTS/CTS交换过程就会进行,小于该阈值就会直接传送帧。

对应的SOCK字段如下:

#define SIOCSIWRTS 0x8B22 /* set RTS/CTS threshold (bytes) */

#define SIOCGIWRTS 0x8B23 /* get RTS/CTS threshold (bytes) */

两个帧的过程如图:

RTS(Request-to-Send):预约无线链路的使用权,要求接收到这一帧的其他工作站保持沉默。

CTS(Clear-to-Send):另其他工作站保持沉默,清空传送区域

                                                                      802.11的隐藏节点和RTS/CTS机制(二)_第1张图片

 RTS/CTS机制的基本思想是:通过短的控制包来预留出带宽。方法如下:

        发送方通过发送RTS请求请求发送。

        接收方用CTS回应发送请求

        CTS为发送方预留带宽的同时通告所有节点

        发送方A如果想给接受方B发送消息,那么首先要发送一个RTS控制帧。那么在发送方周围的主机,收到了这个RTS之后,就知道他周围有人要发送消息了,那么它会保持静默,不发送任何消息,直到接收到BA发送消息确认,那么直到AB发送消息这个过程完全结束了,这些周围的主机就可以发送了,周围主机这个沉默状态叫做NAV状态。

        接收方接收到A给他发送的RTS之后,首先它先回复一个CTS确认控制消息。B周围的机子接收到这个CTS之后,那么就知道它周围有人要接受消息,所以也设定为NAV静默状态,防止干扰到接收方B,直到接收到B回给AACK,确定数据发送完毕,于是它们也可以收发消息了。

        示例图如下所示:

                                                 802.11的隐藏节点和RTS/CTS机制(二)_第2张图片

        上面是发送方,下面是接受方。第一组节点是发送方周围的节点,它们从接收到RTS之后就开始静默,直到接收到ACK. 第二组节点是接受方周围的节点,它们收到CTS之后也开始静默,直到接收到ACKDIFSSIFS是帧间间隔,它们大小不同,都是无线局域网802.11所规定的,可以理解为先等一个DIFS或者SIFS再发送RTS或者CTS,至于为什么这样,需要具体去了解CSMA/CA协议。

       当其他STA收到CTS时,将延后数据包的发送。而具体延迟多久,由正在传输的MAC头中的持续时间决定(Duration ID)。

双方在成功交换RTS/CTS信号(即完成握手)后才开始真正的数据传递,保证了多个互不可见的发送站点同时向同一接收站点发送信号时,实际只能是收到接收站点回应CTS的那个站点能够进行发送,避免了冲突发生。即使有冲突发生,也只是在发送RTS时,这种情况下,由于收不到接收站点的CTS消息,大家再回头用DCF协议提供的竞争机制,分配一个随机退守定时值,等待下一次介质空闲DIFSDistributed Inter-Frame Space)后竞争发送RTS,直到成功为止。

 总之,接收方发送的CTS和发送方的RTS能有效避免它们周围节点发送消息,从而避免隐藏节点造成的冲突,这也是RTSCTS机制的作用。

你可能感兴趣的:(【WIFI】)