802.11的隐藏节点和RTS,CTS机制

        802.11协议适用于无线局域网,这一点和802.3有着本质性的不同。首先先了解一下无线传输相关的范围:

802.11的隐藏节点和RTS,CTS机制_第1张图片

        无线传输有三个非常重要的范围:传输范围,侦听范围和干扰范围。

        1.传输范围:传输范围(TX_range)指成功接收帧的通信范围,取决于发送能量和无线电波传输特性。

        2.侦听范围:侦听范围(PCS_range)可检测到传输的范围,取决于接收器灵敏度和无线电波传输特性。

        3.干扰范围:干扰范围(IF_range)此范围内节点发送帧将干扰接收方的接收并导致丢帧。

        前两个都是针对发送主机的,第三个是针对接收主机的。为什么会有这三个范围呢?这就涉及到无线局域网802.11和有限局域网802.3之间的区别。我们知道无线传输更容易衰减,而在有限传输介质中往往能传输的比无线介质更远。所以在有线局域网中,任何一个主机发送消息,在一个介质上面相连的所有主机都能收到。但是无线局域网就不一样了。因为在发送信号的一定范围内信号会衰减,减弱到无法成功接收,那么别的主机就不认为这是个有效信号了,无法接收,这个就是传输范围的来源。侦听范围要比传输范围远,因为只要能侦听到,都算侦听范围,但是有可能即使侦听到也无法还原。干扰范围同理,在这个范围之外有其他的信号发送不会影响到接收主机,但是在这个范围内有其他主机发送就会强到影响这个接收主机了,这就是干扰范围。

        懂得了这三个范围有助于了解隐藏节点和暴露节点的问题。

        隐藏节点:由于距离太远而导致一个站点无法检测到介质竞争对手的存在。 我们考虑下面一个图:

802.11的隐藏节点和RTS,CTS机制_第2张图片


        A在向B传输数据,如果C想向B传输数据,那么C首先监听,他发现在他的传输范围内有B,可以发送,但是它的侦听范围内没有A,也就是他不知道A在给B发送消息,于是他发送了。这时候问题就出现了,B同时接收到AC两个主机发送了数据,造成了冲突,传递失败,这就是隐藏节点的问题,C作为隐藏节点能够干扰接收方但是却不能侦听到发送方。ABC三个点三个范围的关系如下所示:

802.11的隐藏节点和RTS,CTS机制_第3张图片

        我们从隐藏节点中能够看出无线局域网和有线局域网的区别:无线局域网802.11中,没有监听到载波,不代表可以传输。

        同样,有隐藏节点就有暴露节点。暴露节点指由于侦听到其他站点的发送而误以为介质忙导致不能发送,和隐藏节点正好相反。考虑下面一种情况:

802.11的隐藏节点和RTS,CTS机制_第4张图片

        B正在向A发送数据。C想向D发送数据,但是他发现它的侦听范围内有B正在发送,那么他误认为自己不能给D发送,因为信道正忙。但是实际上D在B的干扰范围之外,C给D发送数据是完全可以的,这就是暴露节点。三个范围关系如下图所示。暴露节点告诉我们:侦听到信道忙,不代表不能发送

802.11的隐藏节点和RTS,CTS机制_第5张图片

        上面的暴露节点和隐藏节点问题是无线局域网802.11特有的,802.3是没有的,所以对于802.11有一种特殊的解决隐藏节点问题的机制,也就是RTS和CTS

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

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

        ②接收方用CTS回应发送请求

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

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

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

        示例图如下所示:

802.11的隐藏节点和RTS,CTS机制_第6张图片

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

        802.11的CSMA/CA协议

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

        延伸阅读(有关802.3和802.11避免冲突的协议):

        载波监听多路访问CSMA和CSMA/CD详解

        介质访问控制MAC以及ALOHA协议

        

你可能感兴趣的:(计算机网络)