初探802.11协议(3)——RTS/CTS控制帧
创始人
2025-05-29 09:19:25

目录

目录

一. Frame Format

1.1 RTS Duration

1.2 CTS Duration

二. 隐藏节点问题与RTS/CTS

2.1 RTS/CTS流程

三. 暴露节点问题


一. Frame Format

  • RTS:Request To Send,即请求发送,是一个单播帧,没有加密。
  • CTS:Clear To Send,即信道清除,也是一个单播帧。节点在收到CTS后,确认信道是空闲的,可以发送,没有加密。

RTS和CTS这两个控制帧的格式很简单,主要就是Duration字段,后面会介绍,然后就是RTS比CTS多了一个TA字段。

1.1 RTS Duration

RTS 帧会试图预定介质使用权,供帧交换程序使用,因此 RTS 帧发送者必须计算 RTS 帧 结束后还需要多少时间(单位us)。总共需要3个SIFS、1个 CTS、1个ACK,加上发送第一个帧或帧片段所需要的时间。如果计算的结果不是整数,就会被修正为下一个整数微秒。

1.2 CTS Duration

用来应答 RTS 时,CTS 帧的发送端会以 RTS 帧的 duration 值作为持续时间的计算基准。CTS帧发送端会将 RTS 帧的 duration 值减去发送CTS帧及其后短帧间隔所需的时间,然后将计算结果置于 CTS 的 Duration 位。

二. 隐藏节点问题与RTS/CTS

节点2可以跟节点1和节点3通信,不过某些因素(例如距离远)导致节点1与节点3无法直接通信,节点1和3就互为隐藏节点。如果使用简单的transmit-and-pray协议,节点1与节点3有可能在同一时间传送数据,这会造成节点2无法正确接收数据,但是节点1与节点3也无从得知错误发生,只有节点2知道有冲突发生,节点2不会反馈ACK,最终这一轮传输失败。这一轮失败之后,节点1与节点3采用BEB算法重新选择随机数进行回退,但是由于两者没有办法互相监听,所以很容易再次出现同时传输的现象。所以在隐藏终端的情况下,网络性能最差时是无法传递数据包的,换言之,节点1与节点3的吞吐量都趋近于0。

在DCF中,引入了RTS/CTS机制来解决“隐藏节点”的问题。

2.1 RTS/CTS流程

1. 节点1已经breakoff至0,其首先发送RTS数据帧给节点2;

2. 若在节点2处没有冲突,即节点2成功解调出节点1的RTS,节点2会在等待SIFS之后发送CTS帧给节点1。由于无线信道是一个广播信道,要是帧没有加密的话,那么所有节点都是可以解析其信息的,所以这里节点2虽然是发送CTS给节点1,但其他节点也是也可以解析CTS信息:

(1) 当节点1接收到CTS后,其发现该CTS是之前自己发送RTS的反馈,即节点1知道信道空闲。再等待SIFS后,节点1发送数据frame,当数据传输完成之后,节点2向节点1反馈ACK,从而最终完成一次传输。

(2) 当其他节点接收到CTS之后,会发现该CTS不是我请求获得。它们会将CTS数据帧的duration给提出,并设置在自己本地的NAV(Network Allocation Vector)上。若NAV没有倒数到0,那么其会主动暂停其随机回退计数值。

两个节点发RTS也是会出现冲突的,所以RTS/CTS的思维就是 "采用小的数据包碰撞,来避免大的数据包碰撞" 。因此如果数据包太小,则不需要采用RTS/CTS机制了。

RTS Threadshold

如果802.11 网卡的驱动程序支持,用户可通过调整 RTS阈值 (RTS threshold) 来控制RTS/CTS 交换过程。只要大于此阈值,RTS/CTS 交换过程就会进行,小于此阈值则会直接传送帧。此阈值一般应该设定为2347 byte ,如果网络吞吐相当低或重传比例偏高,可以降低 RTS 阈值值以启动 RTS 清空机制。

Fragmentation Threshold

相匹配的还有个分片阈值(fragmentation threshold),用来进行MAC 层级的帧分片,该阈值默认值是2346,或物理层所容许的 MAC最大长度,如果帧超过这个阈值则会进行分片。RF物理层所使用的MAC长度通常是4096个字节,因此这个参数通常默认为2346 byte。这个分片阈值通常与RTS/CTS经常一并运行。这个参数设得太低,有效吞吐量反而会下降,因为确认每个片段必须用掉额外的时间,同样地,设得太高也会降低有效吞吐量,因为较大帧一旦损毁,便会增加无线信道重传的负担。

Retry Limit
1. 长帧重传限制 (long retry limit) :适合大于RTS阈值的帧,默认值为4。需要用到RTS/CTS 清空机制的有4 次重传机会,如果该遭丢弃,就会通知较上层的协议。

2. 短帧重传限制(short retry limit):适合小于RTS阈值的帧,默认值为7。

RTS Threadshold、Fragmentation Threshold、Retry Limit的默认值说明均来自《OReilly-802.11_Definitive Guide》,可以调整。

三. 暴露节点问题

相关内容

热门资讯

玩家必看“福建大菠萝开挂透视软... 您好:福建大菠萝这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5951795】很多玩家在福建大...
辅助教程“Wepoke靠谱怎么... 辅助教程“Wepoke靠谱怎么开挂作弊”原来真可以开挂是一款可以让一直输的玩家,快速成为一个“必胜”...
分享实测“拱趴游戏其实是有透视... 您好:拱趴游戏这款游戏可以开挂,确实是有挂的,需要软件加微信【5951795】,很多玩家在拱趴游戏这...
辅助教程“(GG扑克)怎么开挂... 亲,(GG扑克)这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好...
玩家必看“十三十三水究竟有透视... 您好:十三十三水这款游戏可以开挂,确实是有挂的,需要软件加微信【5951795】,很多玩家在十三十三...