本来对隐藏节点不太清楚,查了些资料了解后,对为什么会产生隐藏节点,如何解决该问题,产生了疑问,顺便又搜了些资料,这里做了个总结。首先介绍下802.11 MAC的CSMA/CA,接着讲述下隐藏节点的分类,最后讲述下如何通过RTS/CTS来解决该问题。
一 802.11MAC层介绍
IEEE802. 11协议的MAC层的有两种控制方式:中心控制(PCF)和分布控制(DCF) ,其中以DCF为主要介质访问控制方式.DCF以CSMA/ CA为主,以RTS/ CTS消息交换机制为辅。
802.11为半双工模式,采用时分模式,因此同一冲突域内存在多个用户时,只允许1个终端或者AP发送数据,其他终端必须处于空闲监听状态。
在802.11无线局域网协议中,冲突的检测存在一定的问题,为了要检测冲突,设备必须能够一边接受数据信号一边传送数据信号,而这在无线系统中是无法办到的。DCF不提供冲突检测功能,由于无线介质的特殊性,介质上的信号的动态范围很广,所以发送站点不能有效的识别出是噪音信号还是自己的传输。所以在无线局域网中检测冲突是不现实的。802.11采用了避免冲突的方式CSMA/ CA。
以太网中的CSMA/CD和802.11中CSMA/CA的主要差别对比如下:
CSMA/CD:即载波监听多路访问/冲突检测方法
CSMA/CA:带有冲突避免的载波侦听多路访问,发送包的同时不能检测到信道上有无冲突,只能尽量‘避免’;
1.两者的传输介质不同,CSMA/CD用于总线以太,而CSMA/CA则用于无线局域网802.11b;
2.检测方式不同,CSMA/CD通过电缆中电压的变化来检测,当数据发生碰撞时,电缆中的电压就会随着发生变化;而CSMA/CA采用能量检测(ED)、载波检测(CS)和能量载波混合检测三种检测信道空闲的方式;
3.WLAN中,对某个节点来说,其刚刚发出的信号强度要远高于来自其他节点的信号强度,也就是说它自己的信号会把其他的信号给覆盖掉;
4.本节点处有冲突并不意味着在接收节点处就有冲突;
基本的CSMA/CA流程
1、首先侦听这个信道有没有STA在用
2、没人用则进行随机等待DIFS时间,有人用则自己继续侦听
3、如果在等待DIFS的时候有数据传输,则自己从新回到等待DIFS时间,并且侦听
4、等DIFS时间过后自己开始进入倒计时状态,倒计时的过程中没有数据传输则,倒计时完后自己进行数据传输
5、如果倒计时的时候有数据传输则自己继续侦听,等待其他用户发送数据,并且记录倒计
时时间,比如倒计时时间是10,STA1数到7的时候发现有STA传输数据,则自己等待其他STA发完数据后再继续进行DIFS时间等待,等完DIFS时间后进入7这个倒计时状态,来倒数,直至数完再进行数据发送。
6、不管是单个STA发送数据还是多个STA发送数据都要经过DIFS分布式帧间隔和倒数这两个时间,各个厂商wlan设备都是基于这个协议的。
CSMA/CA示例
1、STA1