802.11的隐藏节点和RTS,CTS机制
802.11協(xié)議適用于無(wú)線局域網(wǎng),這一點(diǎn)和802.3有著本質(zhì)性的不同。首先先了解一下無(wú)線傳輸相關(guān)的范圍:
????????無(wú)線傳輸有三個(gè)非常重要的范圍:傳輸范圍,偵聽(tīng)范圍和干擾范圍。
????????1.傳輸范圍:傳輸范圍(TX_range)指成功接收幀的通信范圍,取決于發(fā)送能量和無(wú)線電波傳輸特性。
????????2.偵聽(tīng)范圍:偵聽(tīng)范圍(PCS_range)可檢測(cè)到傳輸?shù)姆秶?#xff0c;取決于接收器靈敏度和無(wú)線電波傳輸特性。
????????3.干擾范圍:干擾范圍(IF_range)此范圍內(nèi)節(jié)點(diǎn)發(fā)送幀將干擾接收方的接收并導(dǎo)致丟幀。
????????前兩個(gè)都是針對(duì)發(fā)送主機(jī)的,第三個(gè)是針對(duì)接收主機(jī)的。為什么會(huì)有這三個(gè)范圍呢?這就涉及到無(wú)線局域網(wǎng)802.11和有限局域網(wǎng)802.3之間的區(qū)別。我們知道無(wú)線傳輸更容易衰減,而在有限傳輸介質(zhì)中往往能傳輸?shù)谋葻o(wú)線介質(zhì)更遠(yuǎn)。所以在有線局域網(wǎng)中,任何一個(gè)主機(jī)發(fā)送消息,在一個(gè)介質(zhì)上面相連的所有主機(jī)都能收到。但是無(wú)線局域網(wǎng)就不一樣了。因?yàn)樵诎l(fā)送信號(hào)的一定范圍內(nèi)信號(hào)會(huì)衰減,減弱到無(wú)法成功接收,那么別的主機(jī)就不認(rèn)為這是個(gè)有效信號(hào)了,無(wú)法接收,這個(gè)就是傳輸范圍的來(lái)源。偵聽(tīng)范圍要比傳輸范圍遠(yuǎn),因?yàn)橹灰軅陕?tīng)到,都算偵聽(tīng)范圍,但是有可能即使偵聽(tīng)到也無(wú)法還原。干擾范圍同理,在這個(gè)范圍之外有其他的信號(hào)發(fā)送不會(huì)影響到接收主機(jī),但是在這個(gè)范圍內(nèi)有其他主機(jī)發(fā)送就會(huì)強(qiáng)到影響這個(gè)接收主機(jī)了,這就是干擾范圍。
????????懂得了這三個(gè)范圍有助于了解隱藏節(jié)點(diǎn)和暴露節(jié)點(diǎn)的問(wèn)題。
????????隱藏節(jié)點(diǎn):由于距離太遠(yuǎn)而導(dǎo)致一個(gè)站點(diǎn)無(wú)法檢測(cè)到介質(zhì)競(jìng)爭(zhēng)對(duì)手的存在。 我們考慮下面一個(gè)圖:
????????A在向B傳輸數(shù)據(jù),如果C想向B傳輸數(shù)據(jù),那么C首先監(jiān)聽(tīng),他發(fā)現(xiàn)在他的傳輸范圍內(nèi)有B,可以發(fā)送,但是它的偵聽(tīng)范圍內(nèi)沒(méi)有A,也就是他不知道A在給B發(fā)送消息,于是他發(fā)送了。這時(shí)候問(wèn)題就出現(xiàn)了,B同時(shí)接收到AC兩個(gè)主機(jī)發(fā)送了數(shù)據(jù),造成了沖突,傳遞失敗,這就是隱藏節(jié)點(diǎn)的問(wèn)題,C作為隱藏節(jié)點(diǎn)能夠干擾接收方但是卻不能偵聽(tīng)到發(fā)送方。ABC三個(gè)點(diǎn)三個(gè)范圍的關(guān)系如下所示:
????????我們從隱藏節(jié)點(diǎn)中能夠看出無(wú)線局域網(wǎng)和有線局域網(wǎng)的區(qū)別:無(wú)線局域網(wǎng)802.11中,沒(méi)有監(jiān)聽(tīng)到載波,不代表可以傳輸。
????????同樣,有隱藏節(jié)點(diǎn)就有暴露節(jié)點(diǎn)。暴露節(jié)點(diǎn)指由于偵聽(tīng)到其他站點(diǎn)的發(fā)送而誤以為介質(zhì)忙導(dǎo)致不能發(fā)送,和隱藏節(jié)點(diǎn)正好相反。考慮下面一種情況:
????????B正在向A發(fā)送數(shù)據(jù)。C想向D發(fā)送數(shù)據(jù),但是他發(fā)現(xiàn)它的偵聽(tīng)范圍內(nèi)有B正在發(fā)送,那么他誤認(rèn)為自己不能給D發(fā)送,因?yàn)樾诺勒Α5菍?shí)際上D在B的干擾范圍之外,C給D發(fā)送數(shù)據(jù)是完全可以的,這就是暴露節(jié)點(diǎn)。三個(gè)范圍關(guān)系如下圖所示。暴露節(jié)點(diǎn)告訴我們:偵聽(tīng)到信道忙,不代表不能發(fā)送。
????????上面的暴露節(jié)點(diǎn)和隱藏節(jié)點(diǎn)問(wèn)題是無(wú)線局域網(wǎng)802.11特有的,802.3是沒(méi)有的,所以對(duì)于802.11有一種特殊的解決隱藏節(jié)點(diǎn)問(wèn)題的機(jī)制,也就是RTS和CTS。
????????RTS/CTS機(jī)制的基本思想是:通過(guò)短的控制包來(lái)預(yù)留出帶寬。方法如下:
????????①發(fā)送方通過(guò)發(fā)送RTS請(qǐng)求請(qǐng)求發(fā)送。
????????②接收方用CTS回應(yīng)發(fā)送請(qǐng)求
????????③CTS為發(fā)送方預(yù)留帶寬的同時(shí)通告所有節(jié)點(diǎn)
????????發(fā)送方A如果想給接受方B發(fā)送消息,那么首先要發(fā)送一個(gè)RTS控制幀。那么在發(fā)送方周圍的主機(jī),收到了這個(gè)RTS之后,就知道他周圍有人要發(fā)送消息了,那么它會(huì)保持靜默,不發(fā)送任何消息,直到接收到B給A發(fā)送消息確認(rèn),那么直到A給B發(fā)送消息這個(gè)過(guò)程完全結(jié)束了,這些周圍的主機(jī)就可以發(fā)送了,周圍主機(jī)這個(gè)沉默狀態(tài)叫做NAV狀態(tài)。
????????接收方接收到A給他發(fā)送的RTS之后,首先它先回復(fù)一個(gè)CTS確認(rèn)控制消息。B周圍的機(jī)子接收到這個(gè)CTS之后,那么就知道它周圍有人要接受消息,所以也設(shè)定為NAV靜默狀態(tài),防止干擾到接收方B,知道接收到B回給A的ACK,確定數(shù)據(jù)發(fā)送完畢,于是它們也可以收發(fā)消息了。
????????示例圖如下所示:
????????上面是發(fā)送方,下面是接受方。第一組節(jié)點(diǎn)是發(fā)送方周圍的節(jié)點(diǎn),它們從接收到RTS之后就開(kāi)始靜默,直到接收到ACK. 第二組節(jié)點(diǎn)是接受方周圍的節(jié)點(diǎn),它們收到CTS之后也開(kāi)始靜默,直到接收到ACK。DIFS和SIFS是幀間間隔,它們大小不同,都是無(wú)線局域網(wǎng)802.11所規(guī)定的,可以理解為先等一個(gè)DIFS或者SIFS再發(fā)送RTS或者CTS,至于為什么這樣,需要具體去了解CSMA/CA協(xié)議,可以參考這篇文章:
????????802.11的CSMA/CA協(xié)議
???????總之,接收方發(fā)送的CTS和發(fā)送方的RTS能有效避免它們周圍節(jié)點(diǎn)發(fā)送消息,從而避免隱藏節(jié)點(diǎn)造成的沖突,這也是RTS和CTS機(jī)制的作用。
????????延伸閱讀(有關(guān)802.3和802.11避免沖突的協(xié)議):
????????載波監(jiān)聽(tīng)多路訪問(wèn)CSMA和CSMA/CD詳解
????????介質(zhì)訪問(wèn)控制MAC以及ALOHA協(xié)議
————————————————
版權(quán)聲明:本文為CSDN博主「Wzning0421」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hanzhen7541/article/details/79022755
總結(jié)
以上是生活随笔為你收集整理的802.11的隐藏节点和RTS,CTS机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Win10下Wireshark找不到网卡
- 下一篇: 802.11ac/ax (wifi6)中