0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文匯總wifi的802.11協(xié)議中比較常見(jiàn)的知識(shí)點(diǎn)

Dbwd_Imgtec ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:工程師陳翠 ? 2018-07-23 10:07 ? 次閱讀

本文對(duì)wifi的802.11協(xié)議中比較常見(jiàn)的知識(shí)做一個(gè)基本的總結(jié)和整理,便于后續(xù)的學(xué)習(xí)。因?yàn)闊o(wú)線網(wǎng)絡(luò)中涉及術(shù)語(yǔ)很多,并且許多協(xié)議都是用英文描述,所以有些地方翻譯出來(lái)會(huì)有歧義,這種情況就直接英文來(lái)描述了。

一、基本概述

1、有線和無(wú)線網(wǎng)絡(luò)

目前有線網(wǎng)絡(luò)中最著名的是以太網(wǎng)(Ethenet),但是無(wú)線網(wǎng)絡(luò)WLAN是一個(gè)很有前景的發(fā)展領(lǐng)域,雖然可能不會(huì)完全取代以太網(wǎng),但是它正擁有越來(lái)越多的用戶,無(wú)線網(wǎng)絡(luò)中最有前景的是Wifi。本文介紹無(wú)線網(wǎng)絡(luò)相關(guān)內(nèi)容。

無(wú)線網(wǎng)絡(luò)相比有線網(wǎng)絡(luò),還是有許多的缺點(diǎn)的:

通信雙方因?yàn)槭峭ㄟ^(guò)無(wú)線進(jìn)行通信,所以通信之前需要建立連接;而有線網(wǎng)絡(luò)就直接用線纜連接,不用這個(gè)過(guò)程了。

通信雙方通信方式是半雙工的通信方式;而有線網(wǎng)絡(luò)可以是全雙工。

通信時(shí)在網(wǎng)絡(luò)層以下出錯(cuò)的概率非常高,所以幀的重傳概率很大,需要在網(wǎng)絡(luò)層之下的協(xié)議添加重傳的機(jī)制(不能只依賴上面TCP/IP的延時(shí)等待重傳等開(kāi)銷來(lái)保證);而有線網(wǎng)絡(luò)出錯(cuò)概率非常小,無(wú)需在網(wǎng)絡(luò)層有如此復(fù)雜的機(jī)制。

數(shù)據(jù)是在無(wú)線環(huán)境下進(jìn)行的,所以抓包非常容易,存在安全隱患。

因?yàn)槭瞻l(fā)無(wú)線信號(hào),所以功耗較大,對(duì)電池來(lái)說(shuō)是一個(gè)考驗(yàn)。

相對(duì)有線網(wǎng)絡(luò)吞吐量低,這一點(diǎn)正在逐步改善,802.11n協(xié)議可以達(dá)到600Mbps的吞吐量。

2、協(xié)議

Ethenet和Wifi采用的協(xié)議都屬于IEEE 802協(xié)議集。其中,Ethenet以802.3協(xié)議做為其網(wǎng)絡(luò)層以下的協(xié)議;而Wifi以802.11做為其網(wǎng)絡(luò)層以下的協(xié)議。無(wú)論是有線網(wǎng)絡(luò),還是無(wú)線網(wǎng)絡(luò),其網(wǎng)絡(luò)層以上的部分,基本一樣。

這里主要關(guān)注的是Wifi網(wǎng)絡(luò)中相關(guān)的內(nèi)容。Wifi的802.11協(xié)議包含許多子部分。其中按照時(shí)間順序發(fā)展,主要有:

802.11a,1999年9月制定,工作在5gHZ的頻率范圍(頻段寬度325MHZ),最大傳輸速率54mbps,但當(dāng)時(shí)不是很流行,所以使用的不多。

802.11b,1999年9月制定,時(shí)間比802.11a稍晚,工作在2.4g的頻率范圍(頻段寬度83.5MHZ),最大傳輸速率11mbps。

802.11g,2003年6月制定,工作在2.4gHZ頻率范圍(頻段寬度83.5MHZ),最大傳輸速率54mbps。

802.11n,2009年才被IEEE批準(zhǔn),在2.4gHZ和5gHZ均可工作,最大的傳輸速率為600mbps。

這些協(xié)議均為無(wú)線網(wǎng)絡(luò)的通信所需的基本協(xié)議,最新發(fā)展的,一般要比最初的有所改善。

另外值得注意的是,802.11n在MAC層上進(jìn)行了一些重要的改進(jìn),所以導(dǎo)致網(wǎng)絡(luò)性能有了很大的提升例如:

因?yàn)閭鬏斔俾试诤艽蟮某潭壬先Q于Channel(信道)的ChannelWidth有多寬,而802.11n中采用了一種技術(shù),可以在傳輸數(shù)據(jù)的時(shí)候?qū)蓚€(gè)信道合并為一個(gè),再進(jìn)行傳輸,極大地提高了傳輸速率(這又稱HT-40,high through)。

802.11n的MIMO(多輸入輸出)特性,使得兩對(duì)天線可以在同時(shí)同Channel上傳輸數(shù)據(jù),而兩者卻能夠不相互干擾(采用了OFDM特殊的調(diào)制技術(shù))

3、術(shù)語(yǔ)

講述之前,我們需要對(duì)無(wú)線網(wǎng)絡(luò)中一些常用的術(shù)語(yǔ)有所了解。這里先列出一些,后面描述中出現(xiàn)的新的術(shù)語(yǔ),將會(huì)在描述中解釋。

? LAN:即局域網(wǎng),是路由和主機(jī)組成的內(nèi)部局域網(wǎng),一般為有線網(wǎng)絡(luò)。

? WAN:即廣域網(wǎng),是外部一個(gè)更大的局域網(wǎng)。

? WLAN(Wireless LAN,即無(wú)線局域網(wǎng)):前面我們說(shuō)過(guò)LAN是局域網(wǎng),其實(shí)大多數(shù)指的是有線網(wǎng)絡(luò)中的局域網(wǎng),無(wú)線網(wǎng)絡(luò)中的局域網(wǎng),一般用WLAN。

? AP(Access point的簡(jiǎn)稱,即訪問(wèn)點(diǎn),接入點(diǎn)):是一個(gè)無(wú)線網(wǎng)絡(luò)中的特殊節(jié)點(diǎn),通過(guò)這個(gè)節(jié)點(diǎn),無(wú)線網(wǎng)絡(luò)中的其它類型節(jié)點(diǎn)可以和無(wú)線網(wǎng)絡(luò)外部以及內(nèi)部進(jìn)行通信。這里,AP和無(wú)線路由都在一臺(tái)設(shè)備上(即Cisco E3000)。

? Station(工作站):表示連接到無(wú)線網(wǎng)絡(luò)中的設(shè)備,這些設(shè)備通過(guò)AP,可以和內(nèi)部其它設(shè)備或者無(wú)線網(wǎng)絡(luò)外部通信。

? Assosiate:連接。如果一個(gè)Station想要加入到無(wú)線網(wǎng)絡(luò)中,需要和這個(gè)無(wú)線網(wǎng)絡(luò)中的AP關(guān)聯(lián)(即Assosiate)。

? SSID:用來(lái)標(biāo)識(shí)一個(gè)無(wú)線網(wǎng)絡(luò),后面會(huì)詳細(xì)介紹,我們這里只需了解,每個(gè)無(wú)線網(wǎng)絡(luò)都有它自己的SSID。

? BSSID:用來(lái)標(biāo)識(shí)一個(gè)BSS,其格式和MAC地址一樣,是48位的地址格式。一般來(lái)說(shuō),它就是所處的無(wú)線接入點(diǎn)的MAC地址。某種程度來(lái)說(shuō),它的作用和SSID類似,但是SSID是網(wǎng)絡(luò)的名字,是給人看的,BSSID是給機(jī)器看的,BSSID類似MAC地址。

? BSS(Basic Service Set):由一組相互通信的工作站組成,是802.11無(wú)線網(wǎng)絡(luò)的基本組件。主要有兩種類型的IBSS和基礎(chǔ)結(jié)構(gòu)型網(wǎng)絡(luò)。IBSS又叫ADHOC,組網(wǎng)是臨時(shí)的,通信方式為Station<->Station,這里不關(guān)注這種組網(wǎng)方式;我們關(guān)注的基礎(chǔ)結(jié)構(gòu)形網(wǎng)絡(luò),其通信方式是Station<->AP<->Station,也就是所有無(wú)線網(wǎng)絡(luò)中的設(shè)備要想通信,都得經(jīng)過(guò)AP。在無(wú)線網(wǎng)絡(luò)的基礎(chǔ)形網(wǎng)絡(luò)中,最重要的兩類設(shè)備:AP和Station。

? DS(Distributed System):即分布式系統(tǒng)。分布式系統(tǒng)屬于802.11邏輯組件,負(fù)責(zé)將幀轉(zhuǎn)發(fā)至目的地址,802.11并未規(guī)定其技術(shù)細(xì)節(jié),大多數(shù)商業(yè)產(chǎn)品以橋接引擎合分步式系統(tǒng)媒介共同構(gòu)成分布式系統(tǒng)。分步式系統(tǒng)是接入點(diǎn)之間轉(zhuǎn)發(fā)幀的骨干網(wǎng)絡(luò),一般是以太網(wǎng)。其實(shí),骨干網(wǎng)絡(luò)并不是分步系統(tǒng)的全部,而是其媒介。

主要有三點(diǎn):骨干網(wǎng)(例如以太網(wǎng))、橋接器(具有有線無(wú)線兩個(gè)網(wǎng)絡(luò)接口的接入點(diǎn)包含它)、屬于骨干網(wǎng)上的接入點(diǎn)所管轄的基礎(chǔ)性網(wǎng)絡(luò)的station通信(和外界或者BSS內(nèi)部的station)必須經(jīng)過(guò)DS、而外部路由只知道station的mac地址,所以也需要通過(guò)分布式系統(tǒng)才能知道station的具體位置并且正確送到。分步式系統(tǒng)中的接入點(diǎn)之間必須相互傳遞與之關(guān)聯(lián)的工作站的信息,這樣整個(gè)分步式系統(tǒng)才能知道哪個(gè)station和哪個(gè)ap關(guān)聯(lián),保證分步式系統(tǒng)正常工作(即轉(zhuǎn)達(dá)給正確的station)。

分步式系統(tǒng)也可以是使用無(wú)線媒介(WDS),不一定一定是以太網(wǎng)??傊?,分步式系統(tǒng)骨干網(wǎng)絡(luò)(例如以太網(wǎng))做為媒介,連接各個(gè)接入點(diǎn),每個(gè)接入點(diǎn)與其內(nèi)的station可構(gòu)成BSS,各個(gè)接入點(diǎn)中的橋接控制器有到達(dá)骨干網(wǎng)絡(luò)和其內(nèi)部BSS無(wú)線網(wǎng)的接口(類似兩個(gè)MAC地址),station通信需要通過(guò)分布式系統(tǒng)。

二、實(shí)踐基礎(chǔ)

1、一些參數(shù)

MAC

MAC(即Medium/MediaAccess Control, 介質(zhì)訪問(wèn)控制),是數(shù)據(jù)鏈路層的一部分。MAC地址是燒錄在NetworkInterfaceCard(即網(wǎng)卡,簡(jiǎn)稱NIC)里的,它也叫硬件地址,是由48位(即bit,一字節(jié)為8位,即1byte=8bits)16進(jìn)制的數(shù)字組成。其中0-23位叫做組織唯一標(biāo)志符(organizationally unique,簡(jiǎn)稱OUI),是識(shí)別LAN(局域網(wǎng))節(jié)點(diǎn)的標(biāo)識(shí)(在有些抓包工具抓包的時(shí)候會(huì)將前三個(gè)字節(jié)映射成某種組織名稱的字符,也可以選擇不顯示這種映射)。24-47位是由廠家自己分配。

SSID

表示一個(gè)子網(wǎng)的名字,無(wú)線路由通過(guò)這個(gè)名字可以為其它設(shè)備標(biāo)識(shí)這個(gè)無(wú)線路由的子網(wǎng)。設(shè)備進(jìn)行掃描的時(shí)候,就會(huì)將相應(yīng)SSID掃描到,然后就能夠選擇相應(yīng)的SSID連接到相應(yīng)的無(wú)線網(wǎng)絡(luò)(當(dāng)然不掃描,理論上也可以直接指定自己事先已經(jīng)知道的ssid進(jìn)行連接)。SSID可以和其它的重復(fù),這樣掃描的時(shí)候會(huì)看到兩個(gè)同樣SSID的無(wú)線網(wǎng)絡(luò),其實(shí)這一般用于將一個(gè)無(wú)線網(wǎng)絡(luò)擴(kuò)大的情況(畢竟無(wú)線路由器無(wú)線信號(hào)的覆蓋范圍是有線的):當(dāng)想要擴(kuò)大一個(gè)無(wú)線網(wǎng)絡(luò)(即SSID固定)的范圍的時(shí)候,可以給多個(gè)路由設(shè)置相同的SSID來(lái)達(dá)到這個(gè)目的。(這也是漫游的原理,漫游的時(shí)候,我們可以在遠(yuǎn)方或者本地都能夠打電話,也就是訪問(wèn)移動(dòng)通信網(wǎng)絡(luò))。

SSID和BSSID不一定一一對(duì)應(yīng),一個(gè)BSSID在不同的Channel上面可能會(huì)對(duì)應(yīng)到多個(gè)SSID,但是它們?cè)谝粋€(gè)Channel是一一對(duì)應(yīng)的;另外,漫游的時(shí)候,雖然SSID不變,但是BSSID一定是會(huì)變化的。我們經(jīng)??梢钥吹綄?shí)際數(shù)據(jù)包中的AP的MAC地址和BSSID只差幾位,其實(shí)實(shí)際設(shè)備的MAC地址可能只有一個(gè),和BSSID沒(méi)什么對(duì)應(yīng)關(guān)系。在一個(gè)包含了路由功能和AP功能的無(wú)線路由器(Fat AP)上面,很可能是:路由器有兩個(gè)MAC地址,一個(gè)用于外網(wǎng)(WAN),一個(gè)用于內(nèi)網(wǎng)(WLAN和LAN),一般路由器上面或者配置路由器的網(wǎng)頁(yè)上面只標(biāo)注外網(wǎng)的MAC地址;內(nèi)網(wǎng)的MAC地址和外網(wǎng)MAC地址一般只有幾位不同(甚至連續(xù),也有些相差很多的例外)。

Band(頻率范圍)

一般ap可以支持5g或2.4g兩個(gè)頻率范圍段的無(wú)線信號(hào)。如果兩者同時(shí)可以設(shè)置,而不是互斥那么,這個(gè)路由器還能夠同時(shí)支持兩種頻段(頻段即Band),這相當(dāng)于這個(gè)ap可建立兩個(gè)無(wú)線網(wǎng)絡(luò),它們采用不同的頻段(這類似收音機(jī)在長(zhǎng)波范圍內(nèi)收音和短波范圍內(nèi)收音)。

Channel(信道)

Channel是對(duì)頻段的進(jìn)一步劃分(將5G或者2.4G的頻段范圍再劃分為幾個(gè)小的頻段,每個(gè)頻段稱作一個(gè)Channel),有”5.18GHZ“,“Auto(DFS)”等等,處于不同傳輸信道上面的數(shù)據(jù),如果信道覆蓋范圍沒(méi)有重疊,那么不會(huì)相互干擾。對(duì)于信道的使用,在國(guó)際上有所規(guī)定。其中有些信道是無(wú)需授權(quán)即可直接使用的(究竟是那個(gè)頻段的那個(gè)信道,依照各個(gè)國(guó)家而不同),無(wú)需授權(quán)使用的意思是,傳輸數(shù)據(jù)的時(shí)候(無(wú)論以哪種無(wú)線方式),可以讓設(shè)備收發(fā)的功率導(dǎo)致傳輸時(shí)的數(shù)據(jù)進(jìn)入該信道的頻率并在該信道所在頻段寬度內(nèi)進(jìn)行傳輸;授權(quán)的使用的意思是,不允許傳輸時(shí)使用授權(quán)信道進(jìn)行,否則會(huì)違反規(guī)定,并且干擾該信道上其他數(shù)據(jù)的傳輸。另外,除了wifi,微波紅外線、藍(lán)牙(使用802.15協(xié)議)的工作頻段也都有在2.4gHZ范圍內(nèi)的,所以,它們傳輸?shù)臅r(shí)候會(huì)對(duì)wifi傳輸造成干擾,因?yàn)閮烧咴诓煌膮f(xié)議下進(jìn)行通信,所以互相將對(duì)方傳輸?shù)男盘?hào)識(shí)別為噪聲。有時(shí)候配置AP的時(shí)候,Channel中有一個(gè)類似“Auto”的選項(xiàng)值,這表示打開(kāi)AP的時(shí)候,AP自己Scan周圍的環(huán)境,選擇一個(gè)干擾最小的Channel來(lái)進(jìn)行通信,當(dāng)選擇好了一個(gè)Channel的時(shí)候,一般就不會(huì)改變了。

Channel Width(信道寬度)

這里的Channel Width是信道的帶寬,有”20M HZ“、”40M HZ“等,它表示一個(gè)Channel片段的寬度(假設(shè)5g的頻段寬度總共為100M,平均劃分為互不干擾的10個(gè)Channel,那么每個(gè)Channel的Channel Width就為100M/10=10M,實(shí)際Channel并不一定是完全不重疊的)。這個(gè)參數(shù)可能依賴于一些其它的選項(xiàng),例如不是802.11N的協(xié)議,就可能不會(huì)有40M HZ的Channel Width(N模式有一個(gè)特點(diǎn)就是可以把兩個(gè)Channel合并,通過(guò)提高ChannelWidth來(lái)提高吞吐量)。例如選擇了"20M HZ"這個(gè)Channel Width之后,后面再選擇一個(gè)“5.18GHZ”的Channel,則表示以5.18GHZ為中心的前"10M HZ"以及其后面的"10M HZ"頻帶范圍被占用。

至此可知,配置無(wú)線AP的時(shí)候,如果屋子里面有很多的AP(也就是無(wú)線路由接入點(diǎn))的話,仔細(xì)設(shè)置它們的Channel Width和Channel可以保證它們相互之間的干擾(類似收音機(jī)里面的串臺(tái))盡可能小。當(dāng)然,如果相互干擾了,那么Net Mode所指定的協(xié)議也會(huì)有相應(yīng)的處理方式讓他們之間進(jìn)行協(xié)調(diào)(例如讓誰(shuí)先通信誰(shuí)等一會(huì)再通信之類的),但是這樣網(wǎng)絡(luò)的性能就不如沒(méi)有干擾的時(shí)候好了。

Wireless Security(無(wú)線網(wǎng)絡(luò)的安全性)

這里主要涉及WEP、WPA、WPA2和RC4、TKIP、AES。

IEEE 802.11 所制定的是技術(shù)性標(biāo)準(zhǔn) ,Wi-Fi 聯(lián)盟所制定的是商業(yè)化標(biāo)準(zhǔn) , 而 Wi-Fi 所制定的商業(yè)化標(biāo)準(zhǔn)基本上也都符合 IEEE 所制定的技術(shù)性標(biāo)準(zhǔn)。WEP 是1999年9月通過(guò)的 IEEE 802.11 標(biāo)準(zhǔn)的一部分;WPA(Wi-Fi Protected Access) 事實(shí)上就是由 Wi-Fi 聯(lián)盟所制定的安全性標(biāo)準(zhǔn) , 這個(gè)商業(yè)化標(biāo)準(zhǔn)存在的目的就是為了要支持 IEEE 802.11i 這個(gè)以技術(shù)為導(dǎo)向的安全性標(biāo)準(zhǔn);而 WPA2 其實(shí)就是 WPA 的第二個(gè)版本。直觀點(diǎn)說(shuō),WEP是較老的認(rèn)證方法它有好幾個(gè)弱點(diǎn),因此在2003年被WPA淘汰,WPA又在2004年由完整的 IEEE 802.11i 標(biāo)準(zhǔn)(又稱為 WPA2)所取代。

WEP(Wired Equivalent Privacy),采用名為RC4的RSA加密技術(shù);WPA(Wi-Fi Protected Access) ,采用新的TKIP算法,TKIP算法保留了RC4所以也有其弱點(diǎn),但是這個(gè)時(shí)候更好的CCMP還沒(méi)完成,所以先在WPA上用TKIP技術(shù);WPA2是WPA的第2個(gè)版本,采用CCMP加密協(xié)定(在有些路由器等設(shè)備上設(shè)定加密協(xié)定或者加密算法的時(shí)候,可能會(huì)用類似AES之類的字眼替代CCMP)。所以WPA2+AES是安全性最強(qiáng)的。

另外,在有些無(wú)線網(wǎng)路設(shè)備的參數(shù)中會(huì)看到像 WPA-Enterprise / WPA2-Enterprise 以及 WPA-Personal / WPA2-Personal 的字眼 , 其實(shí) WPA-Enterprise / WPA2-Enterprise 就是 WPA / WPA2 ; WPA-Personal / WPA2-Personal 其實(shí)就是 WPA-PSK / WPA2-PSK, 也就是以 ”pre-share key” 或 ” passphrase” 的驗(yàn)證 (authentication) 模式來(lái)代替 IEEE 802.1X/EAP 的驗(yàn)證模式 ,PSK 模式下不須使用驗(yàn)證服務(wù)器 ( 例如 RADIUS Server), 所以特別適合家用或 SOHO 的使用者。

還有,wep是舊的加密方式,工作于802.11B/G模式下而802.11N草案并不支持此加密方式,所以如果802.11N的設(shè)備采用wep加密方式后,它也只會(huì)工作在802.11b/g模式下,N的性能發(fā)揮不出來(lái)。

實(shí)際中,在有些路由器上面,設(shè)置的時(shí)候,可能不是嚴(yán)格按照這個(gè)規(guī)定來(lái)設(shè)置的(例如設(shè)定了采用WPA方式,還可以選擇AES),但是大體一樣。

Region(區(qū)域)

一般在無(wú)線網(wǎng)絡(luò)中的AP上都有一個(gè)參數(shù),表明它是處于哪個(gè)Region(地區(qū))。Station根據(jù)AP中設(shè)置的Region調(diào)整其相應(yīng)的發(fā)射功率以遵守該地區(qū)的規(guī)定。AP的調(diào)整過(guò)程一般都是手動(dòng)設(shè)定,設(shè)置好AP所處的Region之后,這些信息就會(huì)在AP發(fā)送的Beacon幀(后面會(huì)說(shuō)到)中包含了;通過(guò)這個(gè)AP連接到無(wú)線網(wǎng)絡(luò)上的Station,從Beacon幀中了解到這些Region信息,并且根據(jù)這些信息中的規(guī)定和AP進(jìn)行通信。如果AP開(kāi)始設(shè)置錯(cuò)了,那么Station和AP通信的時(shí)候,采用的將會(huì)是不符合Region規(guī)定的頻段,可能會(huì)對(duì)該Region中的其它傳輸網(wǎng)絡(luò)造成干擾,這應(yīng)當(dāng)是“非法”的。

Transmission Rate

設(shè)置傳輸速率。這里采用不同的無(wú)線網(wǎng)絡(luò)傳輸協(xié)議(802.11a,802.11b,802.11g等),那么可以設(shè)置的速率范圍有所不同,這里的速度是指理論的速度,實(shí)際中,由于各種干擾因素,傳輸?shù)乃俾士赡軙?huì)比設(shè)置的小。

一般而言,在無(wú)線網(wǎng)絡(luò)中,對(duì)于某種協(xié)議的性能進(jìn)行描述時(shí),我們需要注意的是,描述時(shí)提到的傳輸速率(Datarate)和吞吐量(Throughput)是不同的。Datarate是理論上面最大數(shù)據(jù)傳輸速率,而Throughput是數(shù)據(jù)的實(shí)際最大吞吐量。因?yàn)閺S家以及傳輸時(shí)所使用的協(xié)議等各種因素造成的開(kāi)銷,會(huì)導(dǎo)致實(shí)際吞吐量比理論吞吐量要小,一般實(shí)際最大吞吐為理論最大的50%左右(一個(gè)不太準(zhǔn)確但是相對(duì)直觀的估計(jì):在網(wǎng)絡(luò)中,高清視頻所需的Throughput也就30mbps左右,網(wǎng)絡(luò)上一般的視頻也就4mbps左右)。

Qos(質(zhì)量保證)

無(wú)線網(wǎng)絡(luò)中的QOS是質(zhì)量保證,大致的意思是,傳輸數(shù)據(jù)的時(shí)候,考慮各種因素(例如收費(fèi)策略,所處地區(qū)等),以一定的優(yōu)先級(jí)來(lái)保證傳輸?shù)奶囟ㄒ螅ㄒ话憔褪撬俣龋绻麕捵銐虻脑?,QOS反而不需要了。

RTS Threshold / CTS Protection Mode:

這里的RTS是Request-To-Send的簡(jiǎn)寫,CTS是Clear-To-Send的簡(jiǎn)寫。設(shè)置好RTS的閾值之后,如果超過(guò)這個(gè)閾值就會(huì)在發(fā)送信息之前先發(fā)送RTS,以減少干擾,相應(yīng)的CTS會(huì)回應(yīng)之前的RTS。一般都是AP發(fā)送CTS數(shù)據(jù),而Station發(fā)送RTS數(shù)據(jù)。

這里對(duì)RTS和CTS做一個(gè)簡(jiǎn)單解釋:假設(shè)在同一個(gè)AP所覆蓋的無(wú)線網(wǎng)絡(luò)范圍內(nèi)的兩個(gè)Station A和B,它們之間可能會(huì)因?yàn)榫嚯x的原因互相不可見(jiàn)(例如它們?cè)贏P網(wǎng)絡(luò)范圍的兩端,而這兩端的距離大于兩者的信號(hào)覆蓋范圍),但是AP卻知道它們是在自己的范圍內(nèi)。當(dāng)一個(gè)A想要在AP的網(wǎng)絡(luò)中進(jìn)行通信的時(shí)候,必定要經(jīng)過(guò)AP轉(zhuǎn)發(fā)它的信息,由于A不知道B的存在,所以如果同時(shí)B也通過(guò)AP進(jìn)行網(wǎng)絡(luò)通信,那么會(huì)出現(xiàn)AP同時(shí)收到A、B兩個(gè)Station的通信請(qǐng)求,而這在無(wú)線網(wǎng)絡(luò)中是不允許的(無(wú)線網(wǎng)絡(luò)中,同一時(shí)刻不能有多個(gè)人傳輸數(shù)據(jù))。在這種情況下,B和A互相干擾了對(duì)方的通信,但是卻互相不可見(jiàn)(不可見(jiàn)的節(jié)點(diǎn)互相被稱作隱藏節(jié)點(diǎn))。如果在一個(gè)網(wǎng)絡(luò)中,這樣的隱藏節(jié)點(diǎn)很多,那么勢(shì)必會(huì)影響網(wǎng)絡(luò)的性能(因?yàn)閿?shù)據(jù)一旦發(fā)送失敗,就要重傳,隱藏節(jié)點(diǎn)會(huì)導(dǎo)致重傳的機(jī)率增大)。這個(gè)時(shí)候,可采用RTS和CTS機(jī)制。即:在A想要通信的時(shí)候,先廣播發(fā)送RTS給AP,告訴AP“它想要通信”,同時(shí)接受到RTS的別的Station(它們對(duì)發(fā)送RTS的Station而言可見(jiàn))會(huì)知道A將要發(fā)送數(shù)據(jù),于是它們不會(huì)發(fā)送數(shù)據(jù)以免干擾A;AP收到RTS之后,會(huì)廣播發(fā)送CTS,告訴所有在AP范圍內(nèi)的Station(包括對(duì)A而言的隱藏節(jié)點(diǎn)B)”A將要通信(同時(shí)也相當(dāng)于告訴A,A可以無(wú)干擾的發(fā)送信息了)”,這樣對(duì)A而言的隱藏節(jié)點(diǎn)B也知道有一個(gè)A的存在并且要發(fā)送信息了,于是B就不會(huì)干擾A了。 這里,A和B兩者可以在不同的網(wǎng)絡(luò)上,也就是說(shuō),不同網(wǎng)絡(luò)的工作站之間也可以通過(guò)RTS/CTS來(lái)清除相互的干擾。

Beacon Interval:

表示無(wú)線路由定期廣播其SSID的時(shí)間間隔。這個(gè)一般不會(huì)特別設(shè)置,就采用默認(rèn)值即可。如果不廣播了,那么Station端掃描的時(shí)候可能會(huì)發(fā)現(xiàn)不定期廣播的AP對(duì)應(yīng)的SSID的網(wǎng)絡(luò)不見(jiàn)了,所以可能會(huì)斷開(kāi)連接。這里定期廣播,表示AP會(huì)定時(shí)向其范圍內(nèi)廣播SSID的信息,以表示AP的存在,這樣Station進(jìn)入一個(gè)區(qū)域之后,就能夠通過(guò)掃描知道這個(gè)區(qū)域是否有AP的存在。當(dāng)然,除了AP廣播SSID以告知其無(wú)線網(wǎng)絡(luò)存在之外,Station也可主動(dòng)廣播探尋包,在其能夠覆蓋的范圍內(nèi)詢問(wèn)是否有AP存在(即我們通常所說(shuō)的掃描尋找接入點(diǎn))。

DTIM Interval:

DTIM/TIM表示告訴Station,AP在為Station做package buffer(例如Station睡眠的時(shí)候)的緩存時(shí)間。為了節(jié)省電池使用時(shí)間,處于無(wú)線網(wǎng)絡(luò)中的Station可能會(huì)在一定時(shí)間之后自動(dòng)進(jìn)入休眠狀態(tài)。這個(gè)時(shí)候,AP會(huì)為這個(gè)Station緩存發(fā)送給它的數(shù)據(jù),而處于休眠狀態(tài)的Station只會(huì)在一定時(shí)間間隔內(nèi)給AP發(fā)送一個(gè)數(shù)據(jù)幀,以確認(rèn)是否有發(fā)送給自己的數(shù)據(jù)存在。例如,當(dāng)我們?cè)谥鳈C(jī)上ping另外一臺(tái)睡眠的機(jī)器的時(shí)候,收到另外一臺(tái)機(jī)器響應(yīng)的時(shí)間,要比它不睡眠的時(shí)候響應(yīng)的時(shí)間長(zhǎng)很多。

Fragmentation Threshold:

表示一個(gè)package的分片閾值。我們可以設(shè)置分片大小,當(dāng)發(fā)送的數(shù)據(jù)包超過(guò)這個(gè)閾值之后,802.11協(xié)議會(huì)自動(dòng)對(duì)這個(gè)數(shù)據(jù)包進(jìn)行分割。如果設(shè)置的這個(gè)分片值越小,那么整個(gè)數(shù)據(jù)包越容易傳輸成功(因?yàn)槿绻鲥e(cuò),那么只需要傳送一個(gè)片段而不是整個(gè)包,無(wú)線wifi網(wǎng)絡(luò)中數(shù)據(jù)傳輸時(shí)出錯(cuò)的概率比有線的以太網(wǎng)要大的多的多),當(dāng)然開(kāi)銷也越大(因?yàn)樾枰~外的信息標(biāo)記每個(gè)分片,以及各個(gè)分片傳輸成功之后涉及到的重組問(wèn)題)。

2、抓包

一般來(lái)說(shuō),我們的機(jī)器上面的軟件抓取無(wú)線網(wǎng)卡上面的包的時(shí)候,其實(shí)這些包的目標(biāo)地址都是這個(gè)機(jī)器的無(wú)線網(wǎng)卡,因?yàn)椴皇前l(fā)給這個(gè)機(jī)器無(wú)線網(wǎng)卡的包都被網(wǎng)卡過(guò)濾了。所以如果我們想要抓取所處無(wú)線網(wǎng)絡(luò)環(huán)境下所有的包的時(shí)候,需要給機(jī)器配備一種特殊的設(shè)備(sniffer就是嗅探器),然后再通過(guò)抓包工具抓取并分析。有一個(gè)硬件設(shè)備叫做AirPcap,就是做這個(gè)用的,大有幾百到上千美金,它可以同時(shí)做為嗅探器或者無(wú)線網(wǎng)卡使用,不過(guò)做為嗅探器的時(shí)候,會(huì)抓取所有經(jīng)過(guò)它的包。這個(gè)工具目前只有Windows上面的驅(qū)動(dòng),所以使用這個(gè)工具,只能在Windows上面,配合Wireshark抓包軟件進(jìn)行抓包。

這里假設(shè)采用AirPcap嗅探,Wireshark軟件抓包(其它抓包軟件,例如linux下面的tcpdump等分析類似)。不用圖形方式詳細(xì)展示具體的抓包過(guò)程以及分析方法了,主要說(shuō)一下抓包(這里的包實(shí)際主要指的是網(wǎng)絡(luò)層以下的包,更常見(jiàn)的稱呼應(yīng)該是數(shù)據(jù)幀)時(shí)候需要注意的問(wèn)題。

Wireshark展示包的時(shí)候,大致都是按照協(xié)議規(guī)定的字段展示,也些地方按照它自己特定的方式展示。因?yàn)檫@里著重講述一些抓包時(shí)注意的基本原理上面的東西,所以不會(huì)對(duì)此進(jìn)行過(guò)多闡述。大致就是:Wireshark軟件中,對(duì)包展示的時(shí)候,按照協(xié)議規(guī)定的字段分別用Header和Body兩個(gè)部分展示;另外,在Header之前還有兩個(gè)部分是Wireshark為方便用戶而展示的包的大小、時(shí)間等全局信息(例如見(jiàn)過(guò)表示這個(gè)包在B和G mode中的Channel 1時(shí),用"BG1"表示)。所以,其實(shí)我們分析的時(shí)候,實(shí)際應(yīng)該按照后面的Header和Body兩個(gè)部分進(jìn)行。 后面將基于以上所述,進(jìn)行進(jìn)一步的講解。

抓包的時(shí)候,需要首先確認(rèn)這個(gè)包是否是完整、正確的包。只要是校驗(yàn)位(checksum)不對(duì)的,就是錯(cuò)誤的包,也無(wú)法確定接收的時(shí)候那里出了差錯(cuò),所以這個(gè)包是應(yīng)該忽略的,幾乎沒(méi)有分析的價(jià)值。另外,抓包的時(shí)候,由于干擾等原因,抓取的內(nèi)容可能不是在實(shí)際傳輸所處的Channel上的包(例如在Channel 1上面嗅探,卻嗅探到了Channel 2上的包)。

抓取授權(quán)階段的包,需要注意實(shí)際的授權(quán)是在后面進(jìn)行的。Authentication的時(shí)候,開(kāi)始階段實(shí)際是Open的(即無(wú)授權(quán)),也就是說(shuō),開(kāi)始實(shí)際已經(jīng)建立好了連接,所以我們?cè)谧グ臅r(shí)候,開(kāi)始看到的一般都是通過(guò)驗(yàn)證,但是在后面緊接著采用了類似802.11x等安全加強(qiáng)的協(xié)議,來(lái)進(jìn)行再次鑒權(quán)認(rèn)證,如果這里無(wú)法通過(guò)則立即將已經(jīng)建立的Association斷開(kāi)。這樣的機(jī)制,是因?yàn)樵瓉?lái)的802.11沒(méi)有充分考慮安全才會(huì)這樣的,這樣也兼容了以前的802.11。

抓取的包的數(shù)據(jù),要注意這個(gè)包是否是被加過(guò)密的。根據(jù)協(xié)議標(biāo)準(zhǔn)的描述,包中如果有dataprotected字段,則表示這個(gè)數(shù)據(jù)本身是被加了密的,不知道這個(gè)數(shù)據(jù)具體是什么,當(dāng)然,如果有密碼,wireshark也有一個(gè)可以按照這個(gè)密碼解密的工具,有時(shí)候不好用。這里所說(shuō)的數(shù)據(jù)加密和網(wǎng)絡(luò)的加密不一樣,可能訪問(wèn)網(wǎng)絡(luò)本身是需要密碼(網(wǎng)絡(luò)是security的),而數(shù)據(jù)本身沒(méi)有crpted(加密)。對(duì)于一個(gè)加了密的數(shù)據(jù)包,我們一般看不出來(lái)這個(gè)包到底是做什么用的或者什么類型的等等。

抓包的時(shí)候,要注意包中指示的源和目的地址以及包的序號(hào)。在無(wú)線網(wǎng)絡(luò)中通信的時(shí)候,我們抓包的時(shí)候可能會(huì)看到被抓取的包對(duì)應(yīng)AP的MAC地址是不存在的,其實(shí)抓包時(shí)AP的MAC是BSSID,它和實(shí)際標(biāo)注的MAC地址不一定一樣(但是一般都差不多,也就是之后最后面的幾位不一樣)。有時(shí)候,我們看到抓取的包中的MAC地址有許多只相差幾位,那么可能它們都屬于一個(gè)設(shè)備(因?yàn)殡m然設(shè)備可能只標(biāo)注了一個(gè)網(wǎng)卡的MAC地址,但是它卻“虛擬”出或者實(shí)際有多個(gè)MAC地址),所以當(dāng)我們看到包中對(duì)應(yīng)兩個(gè)AP的MAC地址幾乎一樣的時(shí)候,一般來(lái)說(shuō),這兩個(gè)MAC地址很可能就是一個(gè)設(shè)備的。還有在抓包的時(shí)候,一個(gè)地址上面的包的sequence(序號(hào))是連續(xù)的,除非丟包了導(dǎo)致重復(fù)或者缺失。如果一個(gè)設(shè)備虛擬出來(lái)兩個(gè)地址,那么也可能由于沒(méi)有經(jīng)過(guò)什么處理,導(dǎo)致這兩個(gè)地址上面的包共同起來(lái)是連續(xù)的(如前所述,這兩個(gè)地址和MAC很接近,應(yīng)該是BSSID)。

抓取的數(shù)據(jù)幀如果是廣播幀則不需要確認(rèn)(ACK),如果是單播幀,則一般需要確認(rèn)(ACK)。例如,Probe幀是廣播幀,所以它無(wú)對(duì)應(yīng)的ACK確認(rèn)幀,對(duì)Probe的回復(fù)則叫做Probe Response;注意ACK幀本身用于確認(rèn),是單播的,但是它本身卻不需要再被確認(rèn)了。從包中的目的MAC地址中,可以看出這個(gè)包是廣播/多播幀還是單播幀。MAC第一個(gè)字節(jié)的第一個(gè)位是1,表示組播,前兩位是1表示廣播,第一個(gè)字節(jié)第一個(gè)位是0表示單播。這里注意,MAC不是值,而是一個(gè)Pattern,所以沒(méi)有Endian之說(shuō),也沒(méi)有那個(gè)位高,那個(gè)MAC大之說(shuō)。例如:“a8:27:26:....:b7”,這里第一個(gè)字節(jié)就是a8(10101000),其第一個(gè)字節(jié)的第一位就是8的最“右”位,即“0”,所以它的第一個(gè)字節(jié)的第一個(gè)位是0,是一個(gè)單播地址。其實(shí),這里涉及到大端小端問(wèn)題,后面也會(huì)講到,總之,以太網(wǎng)線路上按“Big Endian”字節(jié)序傳送報(bào)文(也就是最高字節(jié)先傳送),而比特序是”Little Endian”(也就是字節(jié)內(nèi)最低位先傳送)所以,一個(gè)十六進(jìn)制表示法表示的MAC地址01-80-C2-00-00-00,傳送時(shí)的bit順序就是:1000 0000 0000 0001 0100 0011 0000 0000 0000 0000 0000 0000。

使用Wire Shark在抓包或者顯示包的時(shí)候,都可以設(shè)置過(guò)濾器(filter)。抓包時(shí)候設(shè)置的過(guò)濾器叫做capture filter,它是用BPF(berkerley package filter)這個(gè)比較通用的語(yǔ)言來(lái)描述(注意這不是Wireshark專用的filter語(yǔ)言,而是一個(gè)通用的語(yǔ)言)。但是抓包期間的過(guò)濾,有時(shí)候不準(zhǔn),所以我們一般先將所有的包抓取下來(lái),然后用WireShark中顯示的過(guò)濾器(即view filter)來(lái)顯示我們關(guān)注的包,這里我們可以用macro來(lái)定義比較復(fù)雜的顯示過(guò)濾條件。保存的時(shí)候,可以用按照顯示過(guò)濾還是抓取過(guò)濾的方式保存內(nèi)容。

盡量不要抓取Channel Width為40MHZ的Channel上的幀。我們還需要注意的是,使用Sniffer抓取無(wú)線網(wǎng)絡(luò)包的時(shí)候,AirPcap無(wú)法正常抓取40MHZ Channel Width的包,或者說(shuō)對(duì)抓取這個(gè)Channel Width上面的包支持不好。如果非要抓取40MHZ Channel Width的包,那么就在40或者36號(hào)Channel上面進(jìn)行抓取,并在Wireshark上面設(shè)置“channel=36,offset+1”(平時(shí)offset都是0),這樣能夠抓取 Channel Width為40MHZ的包(但是,其他Channel上面的40mHZ的包還是無(wú)法抓取),這是由AirPcap內(nèi)部的芯片固件的問(wèn)題決定的(估計(jì)broad com芯片公司也不愿花過(guò)多的精力來(lái)支持這個(gè)很少有人用的抓包工具的這個(gè)功能)。

另外,假設(shè)一個(gè)無(wú)線工作站是基于Android系統(tǒng)的(例如智能手機(jī)或者平板電子書(shū))那么我們可以利用“wpa_cli status”命令來(lái)可以查看當(dāng)前設(shè)備的連接的SSID,BSSID,MAC,IP等信息,(這里“cli”=“command line interface”)。 還有更“復(fù)雜”的命令“wc”和“wl”,其中wc是比較上層的命令,wl是下層的命令(是基于芯片是否支持的,例如wl在broadcom芯片上支持,但是在ti上面就沒(méi)有了)。

三、一些原理

1、常見(jiàn)的幀

在802.11中的幀有三種類型:管理幀(Management Frame,例如Beacon幀、Association幀)、控制幀(Control Frame,例如RTS幀、CTS幀、ACK幀)、數(shù)據(jù)幀(Data Frame,承載數(shù)據(jù)的載體,其中的DS字段用來(lái)標(biāo)識(shí)方向很重要)。幀頭部中的類型字段中會(huì)標(biāo)識(shí)出該幀屬于哪個(gè)字段。

? ACK幀

單播(unicast)幀都需要用ACK來(lái)確認(rèn),ACK本身不是廣播幀,ACK在MAC上是unicast的,幀中有receive地址字段(用來(lái)標(biāo)識(shí)是對(duì)誰(shuí)的確認(rèn)),但是它卻不需要再確認(rèn)了。ACK只有接收地址(receive)而無(wú)源地址(src)和序號(hào)(sequence),因?yàn)榘l(fā)送和接受是一個(gè)整體,發(fā)送之后,其他人(除了這個(gè)發(fā)送的接受者)都不會(huì)再發(fā)送數(shù)據(jù)了(無(wú)線協(xié)議中的沖突避免機(jī)制),所以接受者會(huì)發(fā)送一個(gè)沒(méi)有src的ack幀給receiver,而接收ACK的一端會(huì)根據(jù)這個(gè)知道它收到了一個(gè)ACK幀(其實(shí)根據(jù)協(xié)議,應(yīng)當(dāng)把發(fā)送單播幀和收到它相應(yīng)的ACK看作一個(gè)原子的不可分割的整體,表示一次成功的通信)。

? Beacon幀

Beacon幀定時(shí)廣播發(fā)送,主要用來(lái)通知網(wǎng)絡(luò)AP的存在性。Station和AP建立Association的時(shí)候,也需要用到Beacon。Station可以通過(guò)Scan來(lái)掃描到Beacon,從而得知AP的存在,也可以在掃描的時(shí)候通過(guò)主動(dòng)發(fā)送Probe來(lái)探尋AP是否存在。也就是說(shuō),建立Association的時(shí)候有主動(dòng)的掃描或者被動(dòng)的掃描兩種方式。另外,Beacon還包含了關(guān)于Power Save、以及地區(qū)等信息。

? Association幀

通常Association幀都有Probe Request和相應(yīng)的Probe Response。Association的Request中有其所需要的Channel以及Data Rate等狀態(tài),以便讓AP決定是否讓它與自己建立Association。而關(guān)聯(lián)是否成功,主要是看Response中的Status code是否為Success。

? Data幀

Data Frame具有方向,這個(gè)方向用DS(分布式系統(tǒng))字段來(lái)標(biāo)識(shí),以區(qū)分不同類型幀中關(guān)于地址的解析方式;其它的類型Frame例如Control Frame或者管理幀中,這個(gè)字段是全零。這個(gè)字段用兩位表示,這兩個(gè)位的含義分別表示“To Ds”和“From Ds”,大致含義如下:

To DS:表示Station->AP,一般也叫Upload。

From DS表示AP->Station,一般也叫Download。

這里,我們可以大致將DS看做AP,To/From是從AP的角度來(lái)考慮的。To DS就是讓AP干活。另外Data Frame中還有一個(gè)比較重要的字段就是Sequence,表示幀的序號(hào)。重傳幀序號(hào)一樣,但是多了一個(gè)Retry的字段表示該幀是重傳的。

為了便于理解,這里再次詳細(xì)解釋一下DS字段的含義:

To DS=0,From DS=0:表示Station之間的AD Hoc類似的通信,或者控制偵、管理偵。

To DS=0,From DS=1:Station接收的偵。

To DS=1,From DS = 0:Station發(fā)送的偵。

To DS=1,From DS = 1:無(wú)線橋接器上的數(shù)據(jù)偵。

這里,我們主要關(guān)注To DS和From DS分別是01和10的情況,DS雖然大致等于AP但是它不是AP,它其實(shí)是一個(gè)系統(tǒng),從Station的角度來(lái)看,比較容易理解。并且To DS和From DS一定是無(wú)線網(wǎng)絡(luò)上面數(shù)據(jù)偵才有的字段。

2、幀和大端小端

Ethernet和802.11都是按照Little Endian的方式來(lái)傳輸數(shù)據(jù),也就是說(shuō),而MAC層傳輸?shù)臅r(shí)候,是采用Little Endian的方式,一個(gè)字節(jié)一個(gè)字節(jié)的傳輸?shù)?,前面的低位字?jié)先傳輸,后面的高位字節(jié)后傳輸(傳輸單位不是按位而是字節(jié));在協(xié)議標(biāo)準(zhǔn)上描述一個(gè)幀的時(shí)候,一般是先按照Little Endian的方式對(duì)其進(jìn)行總體描述,然后具體細(xì)節(jié)說(shuō)每個(gè)字段的值,這時(shí)候這個(gè)字段值是Big Endian方式表示的,這一點(diǎn)應(yīng)當(dāng)注意。

例如,協(xié)議標(biāo)準(zhǔn)中可能能對(duì)某個(gè)幀格式做如下的描述:

|b0|b1|b2|b3|b4|b5|b6|b7|b8|b9|...|...|

這里,最低位b0在最前面,所以這里采用的就是小端的方式來(lái)描述幀的總體格式信息。傳輸?shù)臅r(shí)候,就按照這里的方式,以字節(jié)為單位向物理層進(jìn)行傳輸(先傳b0~b7然后b8~b16等等)。 但是,在解釋這個(gè)幀的各個(gè)域的時(shí)候卻采用大端的方式進(jìn)行描述。假設(shè)b3=0,b2=1,b1=0,b0=0四者共同組成一個(gè)名字為“FLAG”的域,那么會(huì)有類似如下的描述:

FLAG=4(即FLAG為0100):表示XXX。

所以,協(xié)議標(biāo)準(zhǔn)中具體描述某個(gè)域的時(shí)候,一般直接用大端方式表示的數(shù)值(b3b2b1b0=0100)來(lái)描述;而傳輸數(shù)據(jù)幀或者在協(xié)議標(biāo)準(zhǔn)中描述整體幀的時(shí)候,中給出的卻是小端的方式(b0b1b2b3=0010)。 這里的每個(gè)字段都是幀的一個(gè)部分,在管理幀(后面會(huì)說(shuō))中長(zhǎng)度不固定的部分又叫IE(information Element) 。

另外注意,內(nèi)存地址是用來(lái)標(biāo)記每個(gè)字節(jié)的而不是位,所以內(nèi)存里面大端小端也是以字節(jié)而不是位為單位的(前面描述“大端“、”小端”的時(shí)候卻以位序而非字節(jié)序,這一點(diǎn)需要明辨,不要混淆)。假設(shè)奔騰的機(jī)器,CPU為32位,采用Little Endian方式,那么表示1這個(gè)int類型整數(shù)的時(shí)候,假設(shè)它在數(shù)值上是十六進(jìn)制的"00000001",那么存放在內(nèi)存中卻是由低位到高位依次存放的,由低到高地址依次為:"01"、"00"、"00"、"00"(也就是說(shuō)小端方式存放在內(nèi)存中的時(shí)候,是按照含有最低位的字節(jié)存放在低地址,注意是字節(jié),在內(nèi)存中“位”沒(méi)有地址,所以沒(méi)有大端小端一說(shuō))。在傳遞幀的時(shí)候,也是按照一個(gè)字節(jié)一個(gè)字節(jié)的傳輸,而一個(gè)字節(jié)內(nèi)部在實(shí)際上其實(shí)沒(méi)有什么端的分別,但是wireshark一律使用“b7b6b5b4b3b2b1b0”這樣的方式來(lái)用大端的方式顯示。

總之,需要注意網(wǎng)絡(luò)層下面的幀的大端小端問(wèn)題(不是網(wǎng)絡(luò)中的字節(jié)序,TCP/IP中規(guī)定的網(wǎng)絡(luò)字節(jié)序是Big Endian),大致就是:協(xié)議規(guī)定,傳輸?shù)臅r(shí)候使用Little Endian;標(biāo)準(zhǔn)描述的時(shí)候用Big Endian和Little Endian都用;另外,Wire shark軟件抓的包中,好象全都用Big Endian來(lái)進(jìn)行標(biāo)示(無(wú)論是信息窗口還是內(nèi)存窗口都這樣展示)。

3、CSMA/CA的機(jī)制

與以太網(wǎng)的CSMA/CD機(jī)制(沖突檢測(cè))相對(duì),802.11采用的CSMA/CA機(jī)制(沖突避免)。采用這個(gè)機(jī)制,可以保證每次通信的原子性(即每次通信所需要傳輸?shù)亩喾N不同類型的幀之間沒(méi)有夾雜其它通信的幀的干擾),大體過(guò)程是:

(a)鏈路空閑下來(lái)之后,所有Station在發(fā)送幀之前都首先等待一段時(shí)間(即DIFS,又稱幀間隔時(shí)間);

(b)到達(dá)DIFS之后,所有的Station進(jìn)入競(jìng)爭(zhēng)時(shí)間窗口(就是競(jìng)爭(zhēng)期間),將這個(gè)競(jìng)爭(zhēng)時(shí)間窗口分割成多個(gè)Slot(退避時(shí)間間隔),然后每個(gè)Station隨機(jī)選擇一個(gè)Slot;

(c)當(dāng)某個(gè)Station到達(dá)它的Slot對(duì)應(yīng)的時(shí)間之后,就開(kāi)始發(fā)送數(shù)據(jù)。這里,選擇的Slot越靠前,則表示Station在DIFS之后再等待的時(shí)間(退避時(shí)間)越短,也就會(huì)越早發(fā)送實(shí)際數(shù)據(jù);

(d)退避窗口的Slot有多個(gè),選擇的時(shí)候,可能某個(gè)Slot被多個(gè)站點(diǎn)同時(shí)選取,這個(gè)時(shí)候發(fā)送會(huì)產(chǎn)生真正的數(shù)據(jù)沖突(如果多個(gè)人同時(shí)發(fā)送,那么它們都要經(jīng)過(guò)AP來(lái)轉(zhuǎn)發(fā),AP無(wú)法同時(shí)聽(tīng)見(jiàn)多個(gè)人的“說(shuō)話聲音”)那么Station就會(huì)再重新選擇并發(fā)送;

(e)當(dāng)一個(gè)Station發(fā)送數(shù)據(jù)之后,所有Station會(huì)檢測(cè)到鏈路忙,于是放棄嘗試發(fā)送,等那個(gè)Station發(fā)送完數(shù)據(jù)之后,鏈路開(kāi)始空閑,于是又進(jìn)入到(a)重新開(kāi)始這個(gè)過(guò)程。

對(duì)于以上的機(jī)制,如果我們讓某個(gè)Station經(jīng)過(guò)DIFS之后,選擇的Slot越小,就意味著它發(fā)送幀的機(jī)會(huì)越大,也就是說(shuō)這個(gè)Station的優(yōu)先權(quán)越高。這就是Qos(質(zhì)量保證)的基本,前面也說(shuō)過(guò),Qos就是“以一定的優(yōu)先級(jí)來(lái)保證傳輸?shù)奶囟ㄒ蟆?,要獲得這種優(yōu)先級(jí),就要有相應(yīng)的條件(例如“花錢”)(有一種不常用的無(wú)競(jìng)爭(zhēng)發(fā)送,其實(shí)就是DIFS之后,不退避而直接發(fā)送)。

另外,其實(shí)對(duì)物理層上來(lái)說(shuō),所有的發(fā)送都是廣播,單播與否只是在鏈路層以上分辨的。上面提到的檢測(cè)鏈路是否忙,可以從鏈路上用軟件方式進(jìn)行(例如增加幀的特殊字段),也可以直接在物理層上進(jìn)行,實(shí)際因?yàn)樵谖锢韺由铣杀据^高,經(jīng)常用的是前者,具體參見(jiàn)協(xié)議。軟件檢測(cè)大致的思路就是,進(jìn)行一個(gè)通信的時(shí)候,這個(gè)通信包含多個(gè)幀,每個(gè)幀有不同的作用,發(fā)送的第一幀的時(shí)候,會(huì)通過(guò)其中的某個(gè)特殊字段(Duration字段,也叫NAV,即網(wǎng)絡(luò)分配向量,是一個(gè)延遲時(shí)間值)告訴所有其它Station,在未來(lái)的一段時(shí)間內(nèi),鏈路被占用,以完成整個(gè)通信過(guò)程。這樣,其它Station在此期間就不會(huì)發(fā)送數(shù)據(jù)干擾這次通信了,以后這個(gè)通信的每一幀以及其ACK確認(rèn)幀之間都會(huì)有一個(gè)很小的時(shí)間間隔(小于DIFS,即SIFS),并且每幀會(huì)視情況延長(zhǎng)那個(gè)Duration字段,保證整個(gè)通信期間確實(shí)不會(huì)有其它人干擾,這樣整個(gè)通信就是原子性的了。

4、幀的來(lái)源和目的地址

因?yàn)闊o(wú)線網(wǎng)絡(luò)中沒(méi)有采用有線電纜而是采用無(wú)線電波做為傳輸介質(zhì),所以需要將其網(wǎng)絡(luò)層以下的幀格式封裝的更復(fù)雜,才能像在有線網(wǎng)絡(luò)那樣傳輸數(shù)據(jù)。其中,僅從標(biāo)識(shí)幀的來(lái)源和去向方面,無(wú)線網(wǎng)絡(luò)中的幀就需要有四個(gè)地址,而不像以太網(wǎng)那樣簡(jiǎn)單只有有兩個(gè)地址(源和目的)。這四個(gè)地址分別是:

SRC:源地址(SA),和以太網(wǎng)中的一樣,就是發(fā)幀的最初地址,在以太網(wǎng)和wifi中幀格式轉(zhuǎn)換的時(shí)候,互相可以直接復(fù)制。

DST:目的地址(DA),和以太網(wǎng)中的一樣,就是最終接受數(shù)據(jù)幀的地址,在以太網(wǎng)和wifi中幀格式轉(zhuǎn)換的時(shí)候,互相可以直接復(fù)制。

TX:也就是Transmiter(TA),表示無(wú)線網(wǎng)絡(luò)中目前實(shí)際發(fā)送幀者的地址(可能是最初發(fā)幀的人,也可能是轉(zhuǎn)發(fā)時(shí)候的路由)。

RX:也就是Receiver(RA),表示無(wú)線網(wǎng)絡(luò)中,目前實(shí)際接收幀者的地址(可能是最終的接收者,也可能是接收幀以便轉(zhuǎn)發(fā)給接收者的ap)。

注意,其實(shí),還有一個(gè)BSSID,用來(lái)區(qū)分不同網(wǎng)絡(luò)的標(biāo)識(shí)。在802.11幀中,有四個(gè)地址字段,一般只用到其中的三個(gè),并且,這四個(gè)字段對(duì)應(yīng)哪種地址或者使用哪些地址,根據(jù)幀中的另外一個(gè)DS字段以及幀的類型而有不同的解釋。

舉例:

(1)無(wú)線網(wǎng)絡(luò)中的Station和以太網(wǎng)中的Host進(jìn)行通信:

Station<- - - - ->AP<---------->Host

a)當(dāng)Station->Host的時(shí)候:

首先Station->AP,這時(shí)候Src=Station,Dst=Host,Tx=Station,Rx=AP,然后AP->Host,這時(shí)候Src=Station,Dst=Host,因?yàn)锳P轉(zhuǎn)發(fā)的時(shí)候,是在以太網(wǎng)中,所以沒(méi)有Tx和Rx。

b)當(dāng)Host->Station的時(shí)候:

首先Host->AP,這時(shí)候Src=Host,Dst=Station,然后AP->Station,這時(shí)候,Src=Host,Dst=Station,Tx=AP,Rx=Station。

(2)無(wú)線網(wǎng)絡(luò)中的Station之間進(jìn)行通信:

Station1<- - - - ->AP<- - - - ->Station2

a)當(dāng)Station1->Station2時(shí)

首先Station1->AP,Src=Station1,Dst=Station2,Tx=Station1,Rx=AP,然后AP->Station2,Src=Station1, Dst=Station2, Tx=AP, Rx=Station2。

可見(jiàn),在無(wú)線網(wǎng)絡(luò)中,始終存在Tx和Rx,但是,這四個(gè)地址中還是只有三個(gè)地址足矣。

(3)當(dāng)兩個(gè)無(wú)線網(wǎng)絡(luò)中的Station進(jìn)行通信的時(shí)候:

Station1<- - - - ->AP1<- - - - ->AP2<- - - - - ->Station2

當(dāng)Station1->Station2時(shí):

首先Station1->AP1,Src=Station,Dst=Station2,Tx=Station1,Rx=AP1,然后AP1->AP2,Src=Station, Dst=Station2, Tx=AP1, Rx=AP2,然后AP2->Station2,Src=Station1,Dst=Station2,Tx=AP2,Rx=Station2。

注意,這個(gè)時(shí)候,AP起到橋接的作用,所以四個(gè)地址各不相同,同時(shí),AP之間或者Station和AP之間的那部分連接,也可以是以太網(wǎng)。

綜上可知,無(wú)線網(wǎng)絡(luò)中的Station想要通信,必須經(jīng)過(guò)AP來(lái)進(jìn)行“轉(zhuǎn)發(fā)”,其實(shí),Tx和Rx是無(wú)線網(wǎng)絡(luò)中的發(fā)和收,也就是Radio;而Src和Dst是真正的發(fā)送源和接收者。

5、Sleep和Power save(節(jié)電)

其實(shí),無(wú)線網(wǎng)絡(luò)中的Power save是指Station的Sleep(睡眠),并且這個(gè)Sleep并不是整個(gè)系統(tǒng)的Sleep,確切來(lái)說(shuō),應(yīng)該是其wifi中Receiver(接收天線)的Sleep。Station在睡眠的期間還是可以Transmit(發(fā)送)的,只是當(dāng)AP知道Station的Receiver處于Sleep狀態(tài)時(shí),就不會(huì)給Station發(fā)送幀了。Station在Sleep之前,會(huì)給AP發(fā)送一個(gè)特殊的幀,告訴AP說(shuō)它(Station)要睡眠了,AP通過(guò)這個(gè)幀來(lái)記住是這個(gè)Station睡眠了,然后AP就不會(huì)給這個(gè)Station單獨(dú)發(fā)送數(shù)據(jù)了。

當(dāng)有和這個(gè)Station通信的包想通過(guò)AP轉(zhuǎn)達(dá)的給這個(gè)Station時(shí)候,AP會(huì)幫這個(gè)Station將它們緩存起來(lái),然后在Beacon廣播幀中添加一個(gè)特殊的位(實(shí)際這個(gè)位是一個(gè)bitmap中的位,這個(gè)bitmap表示所有和該AP建立了關(guān)聯(lián)的Station,而這個(gè)睡眠的Station的相應(yīng)位為被置1則表示有消息要傳達(dá)給這個(gè)Station),來(lái)表示這個(gè)Station有數(shù)據(jù)到達(dá)了(Beacon是定時(shí)廣播的幀,前面說(shuō)過(guò)它是用來(lái)通知無(wú)線網(wǎng)絡(luò),這個(gè)AP的狀態(tài)),而不是直接發(fā)送給Station。而這個(gè)睡眠的Station,會(huì)在睡眠期間不時(shí)地醒來(lái),以檢查Beacon幀中的狀態(tài),當(dāng)發(fā)現(xiàn)有給它的數(shù)據(jù)的時(shí)候,就會(huì)通過(guò)發(fā)送一個(gè)Power Poll的幀來(lái)收取數(shù)據(jù),收取之后繼續(xù)睡眠(所以ping一個(gè)睡眠狀態(tài)的Station,響應(yīng)的時(shí)間要慢好多)。

對(duì)于發(fā)送給這個(gè)Station的廣播幀,其處理方式和普通幀有一點(diǎn)不同:當(dāng)有廣播幀要傳達(dá)給這個(gè)Station的時(shí)候,AP會(huì)為這個(gè)Station緩存發(fā)送給它的廣播幀,但是緩存的時(shí)間是DTIM(一般為300ms)。注意:?jiǎn)尾彺娴臅r(shí)間不一定是多少,廣播幀卻緩存DTIM的時(shí)間。AP每發(fā)送一個(gè)Beacon的時(shí)候,都會(huì)將Dtim減少1,而Station睡眠的時(shí)候,會(huì)不時(shí)地醒來(lái),查看一下Beacon幀中的dtim值。當(dāng)Station發(fā)現(xiàn)其DTIM值變成0的時(shí)候,就醒來(lái)長(zhǎng)一些的時(shí)間,看看有沒(méi)有廣播給它的數(shù)據(jù),如果有的話就用類似Power Save Poll的幀接受,沒(méi)有則繼續(xù)睡眠。

這里,接收數(shù)據(jù)是根據(jù)是否有more data類似的字段來(lái)確認(rèn)是否有更多的數(shù)據(jù)的;重發(fā)的幀是用類似retry的字段來(lái)標(biāo)記。另外注意,當(dāng)Station進(jìn)行Sleep的時(shí)候,還是可以主動(dòng)Tranmit消息的,當(dāng)Station主動(dòng)Transmit消息的時(shí)候,它會(huì)等待Reply,所以這個(gè)時(shí)候,Receiver是on的狀態(tài)。用一個(gè)圖示來(lái)標(biāo)識(shí)Sleep,Receive,Transmit時(shí)的電源消耗狀況,大致如下:

一文匯總wifi的802.11協(xié)議中比較常見(jiàn)的知識(shí)點(diǎn)

可見(jiàn)不同狀態(tài),電源消耗狀態(tài)不同(傳送比接收更耗電),另外,如果電源供電不足,在某個(gè)狀態(tài)中就會(huì)出現(xiàn)通信失敗的情況。(好像ap上面broadcom芯片中的睡眠之后,醒來(lái)立即重新發(fā)送的時(shí)候經(jīng)常開(kāi)始會(huì)失敗,可能就是這個(gè)原因)。

6、建立Association

下面是Station和Ap建立開(kāi)放Association的過(guò)程:

Ap周期性地廣播Beacon幀

Station廣播Probe Request到達(dá)Ap

Ap向Station發(fā)送Probe Reponse

Station向Ap發(fā)送ACK

Station向Ap發(fā)送Authentication Request

Ap向Station發(fā)送ACK

Ap向Station發(fā)送Authentication Reponse

Station向Ap發(fā)送ACK

Station向Ap發(fā)送Association Request

Ap向Station發(fā)送ACK

Ap向Station發(fā)送Association Reponse

Station向Ap發(fā)送ACK

Station和Ap開(kāi)始相互通信。

可見(jiàn),廣播幀不用回復(fù),單播幀需要用ACK確認(rèn),ACK本身不用被確認(rèn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 無(wú)線網(wǎng)絡(luò)

    關(guān)注

    6

    文章

    1435

    瀏覽量

    65945
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5297

    瀏覽量

    203757

原文標(biāo)題:總結(jié):wifi的802.11協(xié)議中比較常見(jiàn)的知識(shí)

文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    重磅!文匯總50家造車新勢(shì)力

    文匯總50家造車新勢(shì)力
    的頭像 發(fā)表于 07-16 11:27 ?4412次閱讀

    串口通信協(xié)議知識(shí)點(diǎn)匯總,錯(cuò)過(guò)絕對(duì)后悔

    串口通信協(xié)議知識(shí)點(diǎn)匯總,錯(cuò)過(guò)絕對(duì)后悔
    發(fā)表于 12-13 07:25

    GDB的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用

    GDB的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
    發(fā)表于 12-24 06:01

    JTAG調(diào)試的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用

    JTAG調(diào)試的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
    發(fā)表于 12-24 06:09

    STM32定時(shí)器中斷的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用

    STM32定時(shí)器中斷的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
    發(fā)表于 01-20 06:06

    外部中斷的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用

    外部中斷的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
    發(fā)表于 01-21 07:39

    PS2通訊協(xié)議知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用

    PS2通訊協(xié)議知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
    發(fā)表于 02-07 07:50

    DBC編輯的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用

    DBC編輯的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
    發(fā)表于 02-09 08:02

    STM32時(shí)鐘樹(shù)的基礎(chǔ)知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用

    STM32時(shí)鐘樹(shù)的基礎(chǔ)知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
    發(fā)表于 02-14 07:49

    三極管的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用

    三極管的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
    發(fā)表于 02-15 06:23

    知識(shí)普及:wifi802.11協(xié)議中比較常見(jiàn)知識(shí)大盤點(diǎn)

    本文對(duì)wifi802.11協(xié)議中比較常見(jiàn)知識(shí)
    發(fā)表于 07-23 09:29 ?3204次閱讀

    PHP基礎(chǔ)學(xué)習(xí)知識(shí)點(diǎn)匯總免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是PHP基礎(chǔ)學(xué)習(xí)知識(shí)點(diǎn)匯總免費(fèi)下載。
    發(fā)表于 04-24 16:45 ?6次下載
    PHP基礎(chǔ)學(xué)習(xí)<b class='flag-5'>知識(shí)點(diǎn)</b><b class='flag-5'>匯總</b>免費(fèi)下載

    數(shù)字電子技術(shù)重要知識(shí)點(diǎn)匯總

    數(shù)字電子技術(shù)重要知識(shí)點(diǎn)匯總免費(fèi)下載。
    發(fā)表于 07-06 17:06 ?50次下載

    高速電路設(shè)計(jì)常見(jiàn)知識(shí)點(diǎn)

    為了方便初次接觸高速信號(hào)的朋友們能快速入門,并應(yīng)用到實(shí)際的電路設(shè)計(jì)中。作者特地整理了高速電路設(shè)計(jì)中常見(jiàn)知識(shí)點(diǎn),具有較強(qiáng)的工程性、實(shí)用性,能直接應(yīng)用到嵌入式硬件、手機(jī)等設(shè)計(jì)中。(有關(guān)詳細(xì)的
    的頭像 發(fā)表于 02-13 11:00 ?1455次閱讀

    文匯總常見(jiàn)的通訊協(xié)議

    在我們?nèi)粘_M(jìn)行硬件電路設(shè)計(jì)以及選用各種模擬IC的時(shí)候經(jīng)常會(huì)遇到這些RS485, IIC, SMBus, PMBus, SPI, RS232, CAN, LIN, UART, PHY通訊協(xié)議接口,今天我們匯總了這些主要的協(xié)議。
    的頭像 發(fā)表于 05-12 17:39 ?1.5w次閱讀