https://zhuanlan.zhihu.com/p/20780796

序言

在无线通信中,有两个典型的问题,即隐藏终端和暴露终端问题。在802.11中,这些问题也是存在,同时也衍生出了一些新类型的隐藏和暴露终端问题。在前面描述DCF模式中,我们已经谈论了的隐藏终端问题。

实际上,隐藏终端和暴露终端都是由于CSMA/CA中所采用的LBT机制所引起。隐藏终端是由于监听到的信道空闲而不是真的空闲,故引发冲突。而暴露终端是由于监听到的信道忙而不是真的忙,故其可以传输而不传输。

在这里,综合之前的论述,我们对一般性的隐藏终端和暴露终端做一个简单的整理。

隐藏终端问题

隐藏终端问题可以简单定义为:节点之间无法互相监听对方。但当其不可以同时传输时,其同时传输,从而导致冲突发生。隐藏终端在单个AP(或者单个Receiver)时就有可能发生。

我们基于以上拓扑讨论基本的隐藏终端问题,在该拓扑中,STA 1与STA 2为两个节点,这两个节点都是关联在AP身上。图中蓝色虚线代表STA 1的发送范围,绿色虚线代表STA 2的发送范围。

由于图中STA 1与STA 2发送范围无法互相覆盖,即无法通过物理载波监听的方法,探测对方是否有发送数据。从而STA 1与STA 2可能会误以为信道空闲,从而同时发送,继而造成冲突。

如上图所述,根据DCF中CSMA/CA的工作机制,STA 1与STA 2在等待DIFS之后,分别选取一个随机数进行Backoff。STA 2由于随机数选择较少,从而首先倒数至0,并发送数据。当STA 2发送数据后,由于STA 1监听不到STA 2已经占用信道,其依旧误以为信道是空闲的,从而继续进行backoff。当STA 1的随机回退计数值倒数至0时,STA 1也会发送数据。

由于STA 1与STA 2的同时发送,即AP接收时存在重叠区域,即也是发生了冲突,最终这一轮传输失败。当这一轮传输失败之后,STA 1与STA 2采用BEB算法重新选择随机数进行回退,但后续过程中两者依旧无法互相监听,所以很容易再次出现同时传输的现象。在隐藏终端的情况下,网络是近似瘫痪的,换言之,STA 1与STA 2的吞吐量都趋近于0。

PS:除了RTS/CTS模式是在协议层面解决隐藏终端问题,实际情况下还有很多解决隐藏终端的问题,比如增加客户端功率,消除中间的障碍物,将造成隐藏终端问题的节点或者AP移动个位置之类的,实在不行的话,那么控制下原始AP的功率,再添加入一个新的接入点也行,不过最后个方法需要小心一些,因为搞不好会引起下面所述的暴露终端问题。

暴露终端问题

暴露终端问题可以简单定义为:节点之间能够互相监听对方。但其可以同时传输时,其不传输,从而造成浪费。暴露终端在多个AP(或者多个Receiver)时才有可能发生。


我们基于以上拓扑讨论基本的隐藏终端问题,在该拓扑中,STA 1与STA 2为两个节点,其中STA 1关联在AP1上,STA 2关联在AP2上。图中蓝色虚线代表STA 1的发送范围,绿色虚线代表STA 2的发送范围。

图中AP1处于STA 1的覆盖范围内,而不再STA 2的覆盖范围内。AP2处于STA 2的覆盖范围,而不在STA 1的覆盖范围内。换言之,AP1只能接受到STA 1的数据,AP2也只能接收到STA 2的数据。当STA 1与STA 2同时发送时,接受节点AP1或者AP2处均不会发生冲突,故其是可以同时传输的。但是由于这样的拓扑特殊性以及DCF中CSMA/CA的工作机制,造成STA 1与STA 2无法同时传输,该问题则是暴露终端问题。

在CSMA/CA中,接入是遵守LBT(Listen Before Talk)机制的。我们在DCF的介绍中所述,每一个节点在接入信道之前需要进行backoff。在该过程内,若信道空闲,则每经过1个slot,随机倒数计数器进行一次倒数。若信道非空闲,则节点不会对随机倒数计数器进行倒数,并对其进行悬挂。只有当其倒数至0时,才可以发起传输。其中信道空闲与否是通过载波监听机制进行判断的,而在DCF中,存在物理载波监听和虚拟载波监听两种模式,这两种监听方式都有可能引起暴露终端问题,以下我们分两种情况进行讨论。(有关DCF的接入过程,详细内容请查阅之前的文档)

  • 物理载波监听引起的暴露终端

如上图所示,由于STA 1与STA 2可以互相监听。由于STA 2选择了较小的随机数进行倒数,从而其最先倒数至0,并进行发送。当STA 2首先发送数据包给STA 2后,STA 1监听信道为忙状态,从而无法发送信息。故根据拓扑而言,STA 1是可以传数据给AP1的,但是由于监听STA 2正在传输,导致信道忙,故STA1悬挂随机倒数计数器,无法继续倒数,从而无法传输。

这里实际上我们还可以更深入了解一下,实际上STA1为什么需要在别人传输的时候,悬挂自己的随机倒数计数器。在CSMA/CD中,实际上是没有悬挂过程的,只有在CSMA/CA中才存在。在CSMA/CD中,若信道忙,节点就不停的去监听信道,一旦发现空闲就传输。而在CSMA/CA中,节点在中间实际上不是监听信道,而是接收数据。其主要原因在于,STA 1在检测到STA 2正在传输造成信道忙时,其立刻开始接收该STA 2的数据,因为STA 1不知道该数据是否是发给自己的。只有当完整接收数据,CRC校验通过后,STA 1才可以检查帧MAC头部所对应的目的BSSID地址,看是否是自己的数据包,若不是才可以丢包。换言之,CSMA/CA中,悬挂实际上是为了接收,从而导致的现象是悬挂而已。

  • 虚拟载波监听引起的暴露终端

如上图所示,在暴露终端场景中,若STA 2不仅选择了较小的随机数进行优先倒数,并且其发送的数据包是RTS数据包。当STA 1识别到该RTS数据包后,其就会被设置为NAV状态,无法在后面的过程主动竞争信道,进而无法传输。与之前描述用RTS/CTS解决隐藏终端问题时不同,在解决隐藏终端问题中,NAV是由AP所反馈的CTS帧所进行保护。而这里由于STA 1与STA 2能够互相监听,换言之,在暴露终端情况下,STA 1的NAV是被STA 2所发送的RTS帧进行保护的。在STA 1被NAV保护后,其也无法传输,最终导致暴露终端问题。

802.11协议精读5:隐藏终端和暴露终端相关推荐

  1. 802.11协议精读2:DCF与CSMA/CA

    序言 在802.11的MAC层中.分成了两种基本工作模式: DCF(Distributed Coordination Function) PCF(Point Coordination Function ...

  2. 802.11协议精读9:初探节能模式(PS mode)与缓存机制

    https://zhuanlan.zhihu.com/p/21505178 序言 由于802.11的协议工作机制,如果其一直处于工作状态下,那么能耗还是比较大的,尤其移动设备的电量有限,所以在802. ...

  3. 802.11协议精读10:节能模式(PSM)

    序言 在802.11主要的版本中,总共定义了四种节能模式,本文主要关注最初始的PSM模式,对于在802.11e中添加的ASPD以及802.11n中添加的PSMP,SMPS机制,我们在下一篇再进行论述. ...

  4. 802.11协议:wifi

    802.11协议 博客链接:https://www.blog.23day.site/articles/71 一.协议简介 IEEE 802协议簇是指IEEE标准中关于局域网(LAN)和城域网(MAN) ...

  5. 无线射频专题《IEEE 802.11协议讲解2@WiFi抓包分析之MAC_Header》

    前言: IEEE 802.11是IEEE最初制定的一个无线局域网标准,主要用于解决办公室局域网和校园网中,用户与用户终端的无线接入,业务主要限于数据存取,速率最高只能达到2Mbps.由于802.11在 ...

  6. 初探802.11协议(3)——RTS/CTS控制帧

    目录 一. Frame Format 1.1 RTS Duration 1.2 CTS Duration 二. 隐藏节点问题与RTS/CTS 2.1 RTS/CTS流程 三. 暴露节点问题 3.1 载 ...

  7. 802 11协议介绍

    802.11标准:规定了一个基站和无线客户端或两个无线客户端之间通过空气传输的接口 802.11 :工作在2.4G(2.4000-2.4835GHz )频段,提供了每秒1兆或2兆传输速率 802.11 ...

  8. 【Wi-Fi 802.11协议】管理帧 之 Beacon帧详解

    Beacon帧简介 信标帧,由AP以一定的时间间隔周期性发出,以此来告诉外界自己无线网络的存在. Beacon帧组成 下图为Beacon帧的组成 下图为抓包所得(AP为2.4g 11n模式),Pack ...

  9. WIFI基本知识及802.11协议整理

    WIFI基本知识及802.11协议整理 2015-11-11 fredzeng linux 主要内容: 一.基本概述 二.实践基础 三.一些原理 四.补充 五.其它 一.基本概述 ========== ...

最新文章

  1. 改变Eclipse主题颜色
  2. 用MS SQL 语句修改表中字段类型
  3. 下载 sdk struts java
  4. .NET 程序员十种常用辅助开发工具
  5. android unable to instantiate activity componentinfo
  6. 微信页面设计 小总结
  7. 一点对 KL 散度的理解
  8. 数据结构与算法笔记一:稀疏数组的应用
  9. 如何在系统设置mysql环境变量(win11)
  10. jquery中的ajax写法
  11. [Swift]集成京东联盟SDK
  12. 我的超长综合面经 ---- 北京大学 黄晔
  13. 怎样做50+女性的生意: 渠道变革/多品牌策略催生10亿元级中老年女装品牌
  14. IDEA开发Springboot时,远程使用企业内部不能连接数据库的解决方法
  15. 选字验证码破解思路:CTPN - 自然场景文本检测
  16. 使用Matlab调用动态链接库dll
  17. linux mysql 登录报1045_【mysql】linux登录MySQL_报错ERROR_1045_(28000)解决办法
  18. 微机保护装置智能操控及无线测温等产品在某助剂厂新建项目的应用
  19. dwr框架查看外放方法_硬核!教你三种方法,实现微信自定义修改地区!
  20. python 董付国程序设计基础与应用第三版pdf_Python 程序设计基础(董付国 著)完整版PDF[6MB]...

热门文章

  1. [团队项目]后续安排 Github
  2. 傲娇Android二三事之操蛋的开发日记(第一回)
  3. AT COMMAND的命令集
  4. 利用partial快乐驱动开发
  5. PHP7不能用string类名,thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法...
  6. tf.nn.softmax_cross_entropy_with_logits 和 tf.contrib.legacy_seq2seq.sequence_loss_by_example 的联系与区别
  7. acs880变频器选型手册_据说这是变频器知识里讲的最全的了,小编拿来分享给大家!...
  8. 【Matlab 图像】bwlabel() 连通域及图像分割
  9. 3.10 候选区域-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  10. 一起学nRF51xx 4 -  int