Wi-Fi 信号之间是如何防止干扰的? admin 102359文章 87评论 2024年3月15日19:28:21评论10 views字数 1831阅读6分6秒阅读模式 wi-fi的频段不是很宽,不同的wifi信号之间是如何抗干扰的?wi-fi信号没有像FM那样的有规定什么电台用什么频率的,但是我们任然能够收到不同的wi-fi信号。 Wi-Fi防止干扰的方法,就是发言(发射信号)之前,先听是否有人在发言,如果没有,那么再发言。如果每个人都严格遵守这个规则,可极大概率避免发言冲突(同时发射信号)。这个规则的名字就是CSMA/CA。 现在,假设有2个用户(Alex与Bob)需要发射信号,他们严格遵守以上的发言规则,发现信道忙,于是都耐心地等待直到信道空闲。 好,信道终于空闲了。于是乎, Alex将信号发射到信道上去。 Bob也将信号发射到信道上去。 冲突发生了,怎么办? CSMA/CA规则发现这个bug,于是定义了一个backoff机制。通俗地说, Alex、Bob在发现信道IDLE时,不能立即发射信号,而是要等待随机选取整数倍的backoff slot。假设 Alex选取的整数 = 6,Alex倒计时计数器=6 Bob选取的整数= 15,Bob倒计时计数器=15 Alex 计数器开始倒计时,6、5、4、3、2、1、0 与此同时 Bob 计数器同时倒计时,15、14、13、12、11、10、9 当Alex发现计数器=0时,此时检测信道依然空闲IDLE,Alex信号发射出去。 此时的Bob在干嘛? 当Bob的计数器=9时,检测信道忙BUSY,立马将倒数定时器按掉,计数器数字定格在9。 为何信道会忙啊? 当然是Alex在发射信号。 通过以上的CSMA/CA Backoff机制可以大概率避免Alex、Bob同时发射信号。 可是,既然Alex、Bob分别独立地、随机地挑选整数值(0-31),万一Alex、Bob挑选的整数相等,都是6,是否就无法避免Alex、Bob同时发射信号? 是的。两者的信号会同时出现在信道里,造成信号冲突。 假设以上冲突情况确实发生,且Alex、Bob的数据接收方无法正确接收数据。自然就无法ACK确认Alex、Bob。 Alex、Bob在ACK定时器结束时,没有收到ACK报文,会意识到自己的数据丢了。于是分别将随机整数的池子double到(0-63),然后再分别挑选随机整数。由于整数的池子双倍,挑选同一个整数的概率缩小1/2。 如果再发生类似情况,这个整数池子double的游戏会一直玩下去,冲突的概率不断在缩小1/4、1/8、1/16、1/32.。如果经过连续8轮的重传依然没有将数据成功发射出去,数据被Wi-Fi 的MAC层扔了(放弃),并耐心等待来自上层的数据重传。 如果Alex、Bob的独立的、随机数真的是独立的、随机的,那么经过1-2轮的冲突之后,大概率会重传成功,而不会一直冲突下去。 可是,这个游戏规则的第一轮整数池子位于(0-31)一共32个整数,意味着如果有>32个用户在同时竞争信道,无论他们如何随机挑选整数,总会发生冲突的情况发生。因为总会有至少2个用户挑选相同的整数。 没关系,发生冲突的用户会在失败之后的第二轮在(0-63)之间挑数,随着失败次数的增加,竞争(0-31)池子的用户不断减少,成功的概率在缓慢增大。 此时,用户的直观感受就是网速极其慢,慢的原因固然是因为信号同时传输造成冲突,信号无法成功发送(发送/ACK)。但造成这个信号冲突的本质原因是同时竞争信道的用户数量 > 32。 无线路由器无法限制用户同时竞争信道,但是无线路由器有一个朴素的价值观。 如果将接入(Associated)到无线路由器的用户限制在一个小范围,比如25、32,就可以将同时竞争信道的用户数量牢牢地按死在地板上摩擦。 可是,一个无线路由器可以限制自己的接入用户的数量。却无法限制与自己处于同一个空域信道(co-channel)的其它无线路由器的存在,数量可能1个、也可能2个或更多。以及他们接入的用户数量。 处于同一个channel的用户共同遵守CSMA/CA规则,即同时竞争信道的用户N个。这N个用户可能接入在同一个路由器,也可能是多个路由器。随着N的不断增长,冲突的概率越来越大。一旦用户超出32,冲突概率=100%,成功发射数据的概率=0,彻底内卷! 当用户抱怨网速越来越慢时,并不是网速在变慢,而是慢在内耗上。 解决方案 如果无线路由器工作的channel,没有其它路由器的信道竞争,那么同时竞争信道的只有接入本路由器的用户,这个数量通常为个位数,冲突为小概率事件,网速就会飞起! 原文始发于微信公众号(车小胖谈网络):Wi-Fi 信号之间是如何防止干扰的? 点赞 http://cn-sec.com/archives/2578485.html 复制链接 复制链接 左青龙 微信扫一扫 右白虎 微信扫一扫
评论