发布时间:2023-06-08 13:00
RTS/CTS协议,即请求发送、允许发送协议,相当于一种握手协议,主要用来解决“隐藏终端”问题。
协议精读
隐藏终端信号覆盖范围
STA 1和STA 2向基站AP发送信息,STA 1未检测到STA 2也向AP发送,所以STA 1和STA 2同时将信号发送到AP,引起信号冲突,最终导致STA 1和STA 2的信号都丢失了。 隐藏节点:由于距离太远而导致一个站点无法检测到介质竞争对手的存在。
"隐藏终端"多发生在大型单元中(一般在室外环境),这将带来效率损失,并且需要错误恢复机制。当需要传送大容量文件时,尤其需要杜绝"隐藏终端"现象的发生。
从图中,我们可以得知,由于两个节点的发送范围无法互相覆盖,从而两者在发送数据时,是无法通过物理监听的方法,探测对方是否有发送数据。
IEEE802.11提供了如下解决方案。
在参数配置中,若使用RTS/CTS协议,同时设置传送上限字节数----一旦待传送的数据大于此上限值时,即启动RTS/CTS握手协议:
RTS:Request To Send,即请求发送。RTS帧是一个单播帧,没有加密,其duration字段中填充包含后续发送过程中总体所需要时间。
CTS:Clear To Send,即信道清除帧。节点在收到CTS后,确认信道是空闲的,可以发送。CTS也是一个单播帧,没有加密,其duration字段包含除去RTS以及一个SIFS后,发送过程总体所需要时间。
RTS/CTS工作机制对应的时序图如下:
注意:NAV:虚拟载波监听。图上画错了,STA 1在重新backoff的时候,从3直接开始倒数而不是6。
在实际的路由器中,RTS/CTS模式不是以开关的形式存在,而是以RTS_threshold的形式存在的。RTS/CTS另外一个思维就是通过短的控制包来预留出带宽,即 “采用小的数据包碰撞,来避免大的数据包碰撞” ,从而如果数据包太小,那么则不需要采用RTS/CTS机制。设置RTS_threshold的范围一般为2347,其单位是byte,即如果数据包大小如果大于2347 byte,那么才会采用RTS/CTS模式,在现实应用中,可以根据具体的情况,设置一个最适合的值。
本文描述了RTS/CTS的定义,它是一种握手协议,用于解决“隐藏终端”问题。我们还介绍了什么是隐藏终端,RTS/CTS是如何解决隐藏终端问题的。隐藏终端问题是由于信号源之间无法互相通讯而发生碰撞引起的。RTS/CTS通过某一个基站向终端发送RTS,终端从而广播CTS清除信道内其他信号,让其他信号进行NAV等待,最后成功发送PACKAGE。