WIFI基礎(chǔ)知識

轉(zhuǎn):https://blog.csdn.net/acs713/article/details/8740974?utm_source=blogxgwz0

主要內(nèi)容:

一伊磺、基本概述

二抡诞、實踐基礎(chǔ)

三距贷、一些原理

四、補充

五吟宦、其它



一樱蛤、基本概述

============================

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

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

??????? 無線網(wǎng)絡(luò)相比有線網(wǎng)絡(luò)歼疮,還是有許多的缺點的:

??????? (*)通信雙方因為是通過無線進行通信,所以通信之前需要建立連接诈唬;而有線網(wǎng)絡(luò)就直接用線纜連接韩脏,不用這個過程了。

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

??????? (*)通信時在網(wǎng)絡(luò)層以下出錯的概率非常高,所以幀的重傳概率很大愚屁,需要在網(wǎng)絡(luò)層之下的協(xié)議添加重傳的機制(不能只依賴上面TCP/IP的延時等待重傳等開銷來保證)济竹;而有線網(wǎng)絡(luò)出錯概率非常小,無需在網(wǎng)絡(luò)層有如此復(fù)雜的機制霎槐。

??????? (*)數(shù)據(jù)是在無線環(huán)境下進行的送浊,所以抓包非常容易,存在安全隱患丘跌。

??????? (*)因為收發(fā)無線信號袭景,所以功耗較大,對電池來說是一個考驗闭树。

??????? (*)相對有線網(wǎng)絡(luò)吞吐量低耸棒,這一點正在逐步改善,802.11n協(xié)議可以達到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ǎng)絡(luò)昼接,還是無線網(wǎng)絡(luò)爽篷,其網(wǎng)絡(luò)層以上的部分,基本一樣慢睡。

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

??????? (1)802.11a泪喊,1999年9月制定棕硫,工作在5gHZ的頻率范圍(頻段寬度325MHZ),最大傳輸速率54mbps窘俺,但當時不是很流行饲帅,所以使用的不多复凳。

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

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

??????? (4)802.11n膳犹,2009年才被IEEE批準,在2.4gHZ和5gHZ均可工作签则,最大的傳輸速率為600mbps须床。

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

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

??????? (*)因為傳輸速率在很大的程度上取決于Channel(信道)的ChannelWidth有多寬族阅,而802.11n中采用了一種技術(shù),可以在傳輸數(shù)據(jù)的時候?qū)蓚€信道合并為一個膝捞,再進行傳輸坦刀,極大地提高了傳輸速率(這又稱HT-40,high through)蔬咬。

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


3计盒、術(shù)語

??????? 講述之前渴频,我們需要對無線網(wǎng)絡(luò)中一些常用的術(shù)語有所了解。這里先列出一些北启,后面描述中出現(xiàn)的新的術(shù)語卜朗,將會在描述中解釋拔第。

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

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

??????? (*)WLAN(Wireless LAN泳猬,即無線局域網(wǎng)):前面我們說過LAN是局域網(wǎng),其實大多數(shù)指的是有線網(wǎng)絡(luò)中的局域網(wǎng)宇植,無線網(wǎng)絡(luò)中的局域網(wǎng)得封,一般用WLAN。

??????? (*)AP(Access point的簡稱指郁,即訪問點忙上,接入點):是一個無線網(wǎng)絡(luò)中的特殊節(jié)點,通過這個節(jié)點闲坎,無線網(wǎng)絡(luò)中的其它類型節(jié)點可以和無線網(wǎng)絡(luò)外部以及內(nèi)部進行通信障斋。這里脖捻,AP和無線路由都在一臺設(shè)備上(即Cisco E3000)。

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

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

??????? (*)SSID:用來標識一個無線網(wǎng)絡(luò)涮毫,后面會詳細介紹瞬欧,我們這里只需了解,每個無線網(wǎng)絡(luò)都有它自己的SSID罢防。

??????? (*)BSSID:用來標識一個BSS艘虎,其格式和MAC地址一樣,是48位的地址格式咒吐。一般來說野建,它就是所處的無線接入點的MAC地址。某種程度來說恬叹,它的作用和SSID類似候生,但是SSID是網(wǎng)絡(luò)的名字,是給人看的绽昼,BSSID是給機器看的唯鸭,BSSID類似MAC地址。

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

??????? (*)DS(Distributed System):即分布式系統(tǒng)河咽。分布式系統(tǒng)屬于802.11邏輯組件钠右,負責(zé)將幀轉(zhuǎn)發(fā)至目的地址赋元,802.11并未規(guī)定其技術(shù)細節(jié)忘蟹,大多數(shù)商業(yè)產(chǎn)品以橋接引擎合分步式系統(tǒng)媒介共同構(gòu)成分布式系統(tǒng)。分步式系統(tǒng)是接入點之間轉(zhuǎn)發(fā)幀的骨干網(wǎng)絡(luò)搁凸,一般是以太網(wǎng)媚值。其實,骨干網(wǎng)絡(luò)并不是分步系統(tǒng)的全部护糖,而是其媒介褥芒。主要有三點:骨干網(wǎng)(例如以太網(wǎng))、橋接器(具有有線無線兩個網(wǎng)絡(luò)接口的接入點包含它)嫡良、屬于骨干網(wǎng)上的接入點所管轄的基礎(chǔ)性網(wǎng)絡(luò)的station通信(和外界或者BSS內(nèi)部的station)必須經(jīng)過DS锰扶、而外部路由只知道station的mac地址,所以也需要通過分布式系統(tǒng)才能知道station的具體位置并且正確送到寝受。分步式系統(tǒng)中的接入點之間必須相互傳遞與之關(guān)聯(lián)的工作站的信息坷牛,這樣整個分步式系統(tǒng)才能知道哪個station和哪個ap關(guān)聯(lián),保證分步式系統(tǒng)正常工作(即轉(zhuǎn)達給正確的station)很澄。分步式系統(tǒng)也可以是使用無線媒介(WDS)京闰,不一定一定是以太網(wǎng)∷粒總之蹂楣,分步式系統(tǒng)骨干網(wǎng)絡(luò)(例如以太網(wǎng))做為媒介,連接各個接入點讯蒲,每個接入點與其內(nèi)的station可構(gòu)成BSS痊土,各個接入點中的橋接控制器有到達骨干網(wǎng)絡(luò)和其內(nèi)部BSS無線網(wǎng)的接口(類似兩個MAC地址),station通信需要通過分布式系統(tǒng)墨林。



二赁酝、實踐基礎(chǔ)

============================

1反浓、一些參數(shù)

(*)MAC

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

(*)SSID

??????? 表示一個子網(wǎng)的名字,無線路由通過這個名字可以為其它設(shè)備標識這個無線路由的子網(wǎng)划咐。設(shè)備進行掃描的時候拴念,就會將相應(yīng)SSID掃描到,然后就能夠選擇相應(yīng)的SSID連接到相應(yīng)的無線網(wǎng)絡(luò)(當然不掃描褐缠,理論上也可以直接指定自己事先已經(jīng)知道的ssid進行連接)政鼠。SSID可以和其它的重復(fù),這樣掃描的時候會看到兩個同樣SSID的無線網(wǎng)絡(luò)队魏,其實這一般用于將一個無線網(wǎng)絡(luò)擴大的情況(畢竟無線路由器無線信號的覆蓋范圍是有線的):當想要擴大一個無線網(wǎng)絡(luò)(即SSID固定)的范圍的時候公般,可以給多個路由設(shè)置相同的SSID來達到這個目的。(這也是漫游的原理胡桨,漫游的時候官帘,我們可以在遠方或者本地都能夠打電話,也就是訪問移動通信網(wǎng)絡(luò))昧谊。

??????? SSID和BSSID不一定一一對應(yīng)刽虹,一個BSSID在不同的Channel上面可能會對應(yīng)到多個SSID,但是它們在一個Channel是一一對應(yīng)的揽浙;另外状婶,漫游的時候,雖然SSID不變馅巷,但是BSSID一定是會變化的膛虫。我們經(jīng)常可以看到實際數(shù)據(jù)包中的AP的MAC地址和BSSID只差幾位钓猬,其實實際設(shè)備的MAC地址可能只有一個稍刀,和BSSID沒什么對應(yīng)關(guān)系。在一個包含了路由功能和AP功能的無線路由器(Fat AP)上面,很可能是:路由器有兩個MAC地址账月,一個用于外網(wǎng)(WAN)综膀,一個用于內(nèi)網(wǎng)(WLAN和LAN),一般路由器上面或者配置路由器的網(wǎng)頁上面只標注外網(wǎng)的MAC地址局齿;內(nèi)網(wǎng)的MAC地址和外網(wǎng)MAC地址一般只有幾位不同(甚至連續(xù)剧劝,也有些相差很多的例外)。


(*)Band(頻率范圍)

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


(*)Channel(信道)

??????? Channel是對頻段的進一步劃分(將5G或者2.4G的頻段范圍再劃分為幾個小的頻段蹋半,每個頻段稱作一個Channel)他巨,有”5.18GHZ“,“Auto(DFS)”等等减江,處于不同傳輸信道上面的數(shù)據(jù)染突,如果信道覆蓋范圍沒有重疊,那么不會相互干擾您市。對于信道的使用觉痛,在國際上有所規(guī)定役衡。其中有些信道是無需授權(quán)即可直接使用的(究竟是那個頻段的那個信道茵休,依照各個國家而不同),無需授權(quán)使用的意思是手蝎,傳輸數(shù)據(jù)的時候(無論以哪種無線方式)榕莺,可以讓設(shè)備收發(fā)的功率導(dǎo)致傳輸時的數(shù)據(jù)進入該信道的頻率并在該信道所在頻段寬度內(nèi)進行傳輸;授權(quán)的使用的意思是棵介,不允許傳輸時使用授權(quán)信道進行钉鸯,否則會違反規(guī)定,并且干擾該信道上其他數(shù)據(jù)的傳輸邮辽。另外唠雕,除了wifi,微波吨述、紅外線岩睁、藍牙(使用802.15協(xié)議)的工作頻段也都有在2.4gHZ范圍內(nèi)的,所以揣云,它們傳輸?shù)臅r候會對wifi傳輸造成干擾捕儒,因為兩者在不同的協(xié)議下進行通信,所以互相將對方傳輸?shù)男盘栕R別為噪聲。有時候配置AP的時候刘莹,Channel中有一個類似“Auto”的選項值阎毅,這表示打開AP的時候,AP自己Scan周圍的環(huán)境点弯,選擇一個干擾最小的Channel來進行通信扇调,當選擇好了一個Channel的時候,一般就不會改變了抢肛。


(*)Channel Width(信道寬度)

??????? 這里的Channel Width是信道的帶寬肃拜,有”20M HZ“、”40M HZ“等雌团,它表示一個Channel片段的寬度(假設(shè)5g的頻段寬度總共為100M燃领,平均劃分為互不干擾的10個Channel,那么每個Channel的Channel Width就為100M/10=10M锦援,實際Channel并不一定是完全不重疊的)猛蔽。這個參數(shù)可能依賴于一些其它的選項,例如不是802.11N的協(xié)議灵寺,就可能不會有40M HZ的Channel Width(N模式有一個特點就是可以把兩個Channel合并曼库,通過提高ChannelWidth來提高吞吐量)。例如選擇了"20M HZ"這個Channel Width之后略板,后面再選擇一個“5.18GHZ”的Channel毁枯,則表示以5.18GHZ為中心的前"10M HZ"以及其后面的"10M HZ"頻帶范圍被占用。

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


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

??????? 這里主要涉及WEP、WPA谴古、WPA2和RC4质涛、TKIP、AES掰担。

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

??????? WEP(Wired Equivalent Privacy),采用名為RC4的RSA加密技術(shù)孝宗;WPA(Wi-Fi Protected Access) 穷躁,采用新的TKIP算法,TKIP算法保留了RC4所以也有其弱點因妇,但是這個時候更好的CCMP還沒完成问潭,所以先在WPA上用TKIP技術(shù);WPA2是WPA的第2個版本婚被,采用CCMP加密協(xié)定(在有些路由器等設(shè)備上設(shè)定加密協(xié)定或者加密算法的時候狡忙,可能會用類似AES之類的字眼替代CCMP)。所以WPA2+AES是安全性最強的址芯。

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

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

??????? 實際中驶睦,在有些路由器上面,設(shè)置的時候画拾,可能不是嚴格按照這個規(guī)定來設(shè)置的(例如設(shè)定了采用WPA方式啥繁,還可以選擇AES),但是大體一樣青抛。


(*)Region(區(qū)域)

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


(*)Transmission Rate

??????? 設(shè)置傳輸速率坎怪。這里采用不同的無線網(wǎng)絡(luò)傳輸協(xié)議(802.11a罢坝,802.11b,802.11g等)搅窿,那么可以設(shè)置的速率范圍有所不同嘁酿,這里的速度是指理論的速度,實際中男应,由于各種干擾因素闹司,傳輸?shù)乃俾士赡軙仍O(shè)置的小。

??????? 一般而言沐飘,在無線網(wǎng)絡(luò)中开仰,對于某種協(xié)議的性能進行描述時,我們需要注意的是薪铜,描述時提到的傳輸速率(Datarate)和吞吐量( Throughput)是不同的众弓。Datarate是理論上面最大數(shù)據(jù)傳輸速率,而Throughput是數(shù)據(jù)的實際最大吞吐量隔箍。因為廠家以及傳輸時所使用的協(xié)議等各種因素造成的開銷谓娃,會導(dǎo)致實際吞吐量比理論吞吐量要小,一般實際最大吞吐為理論最大的50%左右(一個不太準確但是相對直觀的估計:在網(wǎng)絡(luò)中蜒滩,高清視頻所需的Throughput也就30mbps左右滨达,網(wǎng)絡(luò)上一般的視頻也就4mbps左右)。


(*)Qos(質(zhì)量保證)

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


(*)RTS Threshold / CTS Protection Mode:

??????? 這里的RTS是Request-To-Send的簡寫,CTS是Clear-To-Send的簡寫芹关。設(shè)置好RTS的閾值之后续挟,如果超過這個閾值就會在發(fā)送信息之前先發(fā)送RTS,以減少干擾侥衬,相應(yīng)的CTS會回應(yīng)之前的RTS诗祸。一般都是AP發(fā)送CTS數(shù)據(jù)跑芳,而Station發(fā)送RTS數(shù)據(jù)。

??????? 這里對RTS和CTS做一個簡單解釋:假設(shè)在同一個AP所覆蓋的無線網(wǎng)絡(luò)范圍內(nèi)的兩個Station A和B直颅,它們之間可能會因為距離的原因互相不可見(例如它們在AP網(wǎng)絡(luò)范圍的兩端博个,而這兩端的距離大于兩者的信號覆蓋范圍),但是AP卻知道它們是在自己的范圍內(nèi)际乘。當一個A想要在AP的網(wǎng)絡(luò)中進行通信的時候坡倔,必定要經(jīng)過AP轉(zhuǎn)發(fā)它的信息,由于A不知道B的存在脖含,所以如果同時B也通過AP進行網(wǎng)絡(luò)通信罪塔,那么會出現(xiàn)AP同時收到A、B兩個Station的通信請求养葵,而這在無線網(wǎng)絡(luò)中是不允許的(無線網(wǎng)絡(luò)中征堪,同一時刻不能有多個人傳輸數(shù)據(jù))。在這種情況下关拒,B和A互相干擾了對方的通信佃蚜,但是卻互相不可見(不可見的節(jié)點互相被稱作隱藏節(jié)點)。如果在一個網(wǎng)絡(luò)中着绊,這樣的隱藏節(jié)點很多谐算,那么勢必會影響網(wǎng)絡(luò)的性能(因為數(shù)據(jù)一旦發(fā)送失敗,就要重傳归露,隱藏節(jié)點會導(dǎo)致重傳的機率增大)洲脂。這個時候,可采用RTS和CTS機制剧包。即:在A想要通信的時候恐锦,先廣播發(fā)送RTS給AP,告訴AP“它想要通信”疆液,同時接受到RTS的別的Station(它們對發(fā)送RTS的Station而言可見)會知道A將要發(fā)送數(shù)據(jù)一铅,于是它們不會發(fā)送數(shù)據(jù)以免干擾A;AP收到RTS之后堕油,會廣播發(fā)送CTS潘飘,告訴所有在AP范圍內(nèi)的Station(包括對A而言的隱藏節(jié)點B)”A將要通信(同時也相當于告訴A,A可以無干擾的發(fā)送信息了)”馍迄,這樣對A而言的隱藏節(jié)點B也知道有一個A的存在并且要發(fā)送信息了福也,于是B就不會干擾A了。 這里攀圈,A和B兩者可以在不同的網(wǎng)絡(luò)上,也就是說峦甩,不同網(wǎng)絡(luò)的工作站之間也可以通過RTS/CTS來清除相互的干擾赘来。


(*)Beacon Interval:

??????? 表示無線路由定期廣播其SSID的時間間隔现喳。這個一般不會特別設(shè)置,就采用默認值即可犬辰。如果不廣播了嗦篱,那么Station端掃描的時候可能會發(fā)現(xiàn)不定期廣播的AP對應(yīng)的SSID的網(wǎng)絡(luò)不見了,所以可能會斷開連接幌缝。這里定期廣播灸促,表示AP會定時向其范圍內(nèi)廣播SSID的信息,以表示AP的存在涵卵,這樣Station進入一個區(qū)域之后浴栽,就能夠通過掃描知道這個區(qū)域是否有AP的存在。當然轿偎,除了AP廣播SSID以告知其無線網(wǎng)絡(luò)存在之外典鸡,Station也可主動廣播探尋包,在其能夠覆蓋的范圍內(nèi)詢問是否有AP存在(即我們通常所說的掃描尋找接入點)坏晦。


(*)DTIM Interval:

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


(*)Fragmentation Threshold:

??????? 表示一個package的分片閾值辽装。我們可以設(shè)置分片大小,當發(fā)送的數(shù)據(jù)包超過這個閾值之后相味,802.11協(xié)議會自動對這個數(shù)據(jù)包進行分割拾积。如果設(shè)置的這個分片值越小,那么整個數(shù)據(jù)包越容易傳輸成功(因為如果出錯丰涉,那么只需要傳送一個片段而不是整個包拓巧,無線wifi網(wǎng)絡(luò)中數(shù)據(jù)傳輸時出錯的概率比有線的以太網(wǎng)要大的多的多),當然開銷也越大(因為需要額外的信息標記每個分片一死,以及各個分片傳輸成功之后涉及到的重組問題)肛度。


2、抓包

??????? 一般來說投慈,我們的機器上面的軟件抓取無線網(wǎng)卡上面的包的時候承耿,其實這些包的目標地址都是這個機器的無線網(wǎng)卡冠骄,因為不是發(fā)給這個機器無線網(wǎng)卡的包都被網(wǎng)卡過濾了。所以如果我們想要抓取所處無線網(wǎng)絡(luò)環(huán)境下所有的包的時候加袋,需要給機器配備一種特殊的設(shè)備(sniffer就是嗅探器)凛辣,然后再通過抓包工具抓取并分析。有一個硬件設(shè)備叫做AirPcap职烧,就是做這個用的扁誓,大有幾百到上千美金,它可以同時做為嗅探器或者無線網(wǎng)卡使用蚀之,不過做為嗅探器的時候蝗敢,會抓取所有經(jīng)過它的包。這個工具目前只有Windows上面的驅(qū)動恬总,所以使用這個工具前普,只能在Windows上面,配合Wireshark抓包軟件進行抓包壹堰。

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

??????? (*)Wireshark展示包的時候惠桃,大致都是按照協(xié)議規(guī)定的字段展示,也些地方按照它自己特定的方式展示辖试。因為這里著重講述一些抓包時注意的基本原理上面的東西辜王,所以不會對此進行過多闡述。大致就是:Wireshark軟件中罐孝,對包展示的時候呐馆,按照協(xié)議規(guī)定的字段分別用Header和Body兩個部分展示;另外莲兢,在Header之前還有兩個部分是Wireshark為方便用戶而展示的包的大小汹来、時間等全局信息(例如見過表示這個包在B和G mode中的Channel 1時,用"BG1"表示)改艇。所以收班,其實我們分析的時候,實際應(yīng)該按照后面的Header和Body兩個部分進行谒兄。 后面將基于以上所述摔桦,進行進一步的講解。

??????? (*)抓包的時候承疲,需要首先確認這個包是否是完整酣溃、正確的包瘦穆。只要是校驗位(checksum)不對的纪隙,就是錯誤的包赊豌,也無法確定接收的時候那里出了差錯,所以這個包是應(yīng)該忽略的绵咱,幾乎沒有分析的價值碘饼。另外,抓包的時候悲伶,由于干擾等原因艾恼,抓取的內(nèi)容可能不是在實際傳輸所處的Channel上的包(例如在Channel 1上面嗅探,卻嗅探到了Channel 2上的包)麸锉。

??????? (*)抓取授權(quán)階段的包钠绍,需要注意實際的授權(quán)是在后面進行的。Authentication的時候花沉,開始階段實際是Open的(即無授權(quán))柳爽,也就是說搞莺,開始實際已經(jīng)建立好了連接焦辅,所以我們在抓包的時候,開始看到的一般都是通過驗證霞幅,但是在后面緊接著采用了類似802.11x等安全加強的協(xié)議娩脾,來進行再次鑒權(quán)認證赵誓,如果這里無法通過則立即將已經(jīng)建立的Association斷開。這樣的機制柿赊,是因為原來的802.11沒有充分考慮安全才會這樣的俩功,這樣也兼容了以前的802.11。

??????? (*)抓取的包的數(shù)據(jù)碰声,要注意這個包是否是被加過密的诡蜓。根據(jù)協(xié)議標準的描述,包中如果有dataprotected字段奥邮,則表示這個數(shù)據(jù)本身是被加了密的万牺,不知道這個數(shù)據(jù)具體是什么,當然洽腺,如果有密碼脚粟,wireshark也有一個可以按照這個密碼解密的工具,有時候不好用蘸朋。這里所說的數(shù)據(jù)加密和網(wǎng)絡(luò)的加密不一樣核无,可能訪問網(wǎng)絡(luò)本身是需要密碼(網(wǎng)絡(luò)是security的),而數(shù)據(jù)本身沒有crpted(加密)藕坯。對于一個加了密的數(shù)據(jù)包团南,我們一般看不出來這個包到底是做什么用的或者什么類型的等等噪沙。

??????? (*)抓包的時候,要注意包中指示的源和目的地址以及包的序號吐根。在無線網(wǎng)絡(luò)中通信的時候正歼,我們抓包的時候可能會看到被抓取的包對應(yīng)AP的MAC地址是不存在的,其實抓包時AP的MAC是BSSID拷橘,它和實際標注的MAC地址不一定一樣(但是一般都差不多局义,也就是之后最后面的幾位不一樣)。有時候冗疮,我們看到抓取的包中的MAC地址有許多只相差幾位萄唇,那么可能它們都屬于一個設(shè)備(因為雖然設(shè)備可能只標注了一個網(wǎng)卡的MAC地址,但是它卻“虛擬”出或者實際有多個MAC地址)术幔,所以當我們看到包中對應(yīng)兩個AP的MAC地址幾乎一樣的時候另萤,一般來說,這兩個MAC地址很可能就是一個設(shè)備的诅挑。還有在抓包的時候四敞,一個地址上面的包的sequence(序號)是連續(xù)的,除非丟包了導(dǎo)致重復(fù)或者缺失揍障。如果一個設(shè)備虛擬出來兩個地址目养,那么也可能由于沒有經(jīng)過什么處理,導(dǎo)致這兩個地址上面的包共同起來是連續(xù)的(如前所述毒嫡,這兩個地址和MAC很接近癌蚁,應(yīng)該是BSSID)。

??????? (*)抓取的數(shù)據(jù)幀如果是廣播幀則不需要確認(ACK)兜畸,如果是單播幀努释,則一般需要確認(ACK)。例如咬摇,Probe幀是廣播幀伐蒂,所以它無對應(yīng)的ACK確認幀,對Probe的回復(fù)則叫做Probe Response肛鹏;注意ACK幀本身用于確認逸邦,是單播的,但是它本身卻不需要再被確認了在扰。從包中的目的MAC地址中缕减,可以看出這個包是廣播/多播幀還是單播幀。MAC第一個字節(jié)的第一個位是1芒珠,表示組播桥狡,前兩位是1表示廣播,第一個字節(jié)第一個位是0表示單播。這里注意裹芝,MAC不是值部逮,而是一個Pattern,所以沒有Endian之說嫂易,也沒有那個位高兄朋,那個MAC大之說。例如:“a8:27:26:....:b7”炬搭,這里第一個字節(jié)就是a8(10101000)蜈漓,其第一個字節(jié)的第一位就是8的最“右”位,即“0”宫盔,所以它的第一個字節(jié)的第一個位是0,是一個單播地址享完。其實灼芭,這里涉及到大端小端問題,后面也會講到般又,總之彼绷,以太網(wǎng)線路上按“Big Endian”字節(jié)序傳送報文(也就是最高字節(jié)先傳送),而比特序是”Little Endian”(也就是字節(jié)內(nèi)最低位先傳送)所以茴迁,一個十六進制表示法表示的MAC地址01-80-C2-00-00-00寄悯,傳送時的bit順序就是:1000 0000 0000 0001 0100 0011 0000 0000 0000 0000 0000 0000。

??????? (*)使用Wire Shark在抓包或者顯示包的時候堕义,都可以設(shè)置過濾器(filter)猜旬。抓包時候設(shè)置的過濾器叫做capture filter,它是用BPF(berkerley package filter)這個比較通用的語言來描述(注意這不是Wireshark專用的filter語言倦卖,而是一個通用的語言)洒擦。但是抓包期間的過濾,有時候不準怕膛,所以我們一般先將所有的包抓取下來熟嫩,然后用WireShark中顯示的過濾器(即view filter)來顯示我們關(guān)注的包,這里我們可以用macro來定義比較復(fù)雜的顯示過濾條件褐捻。保存的時候掸茅,可以用按照顯示過濾還是抓取過濾的方式保存內(nèi)容。

?? ?????(*)盡量不要抓取Channel Width為40MHZ的Channel上的幀柠逞。我們還需要注意的是昧狮,使用Sniffer抓取無線網(wǎng)絡(luò)包的時候,AirPcap無法正常抓取40MHZ Channel Width的包边苹,或者說對抓取這個Channel Width上面的包支持不好陵且。如果非要抓取40MHZ Channel Width的包,那么就在40或者36號Channel上面進行抓取,并在Wireshark上面設(shè)置“channel=36慕购,offset+1”(平時offset都是0)聊疲,這樣能夠抓取 Channel Width為40MHZ的包(但是,其他Channel上面的40mHZ的包還是無法抓然Ρ)获洲,這是由AirPcap內(nèi)部的芯片固件的問題決定的(估計broad com芯片公司也不愿花過多的精力來支持這個很少有人用的抓包工具的這個功能)。

??????? 另外殿如,假設(shè)一個無線工作站是基于Android系統(tǒng)的(例如智能手機或者平板電子書)那么我們可以利用“wpa_cli status”命令來可以查看當前設(shè)備的連接的SSID贡珊,BSSID,MAC涉馁,IP等信息门岔,(這里“cli”=“command line interface”)。 還有更“復(fù)雜”的命令“wc”和“wl”烤送,其中wc是比較上層的命令寒随,wl是下層的命令(是基于芯片是否支持的,例如wl在broadcom芯片上支持帮坚,但是在ti上面就沒有了)妻往。



三、一些原理

============================

1试和、常見的幀

??????? 在802.11中的幀有三種類型:管理幀(Management Frame讯泣,例如Beacon幀、Association幀)阅悍、控制幀(Control Frame好渠,例如RTS幀、CTS幀溉箕、ACK幀)晦墙、數(shù)據(jù)幀(Data Frame,承載數(shù)據(jù)的載體肴茄,其中的DS字段用來標識方向很重要)晌畅。幀頭部中的類型字段中會標識出該幀屬于哪個字段。

(*)ACK幀

??????? 單播(unicast)幀都需要用ACK來確認寡痰,ACK本身不是廣播幀抗楔,ACK在MAC上是unicast的,幀中有receive地址字段(用來標識是對誰的確認)拦坠,但是它卻不需要再確認了连躏。ACK只有接收地址(receive)而無源地址(src)和序號(sequence),因為發(fā)送和接受是一個整體贞滨,發(fā)送之后入热,其他人(除了這個發(fā)送的接受者)都不會再發(fā)送數(shù)據(jù)了(無線協(xié)議中的沖突避免機制)拍棕,所以接受者會發(fā)送一個沒有src的ack幀給receiver,而接收ACK的一端會根據(jù)這個知道它收到了一個ACK幀(其實根據(jù)協(xié)議勺良,應(yīng)當把發(fā)送單播幀和收到它相應(yīng)的ACK看作一個原子的不可分割的整體绰播,表示一次成功的通信)。


(*)Beacon幀

??????? Beacon幀定時廣播發(fā)送尚困,主要用來通知網(wǎng)絡(luò)AP的存在性蠢箩。Station和AP建立Association的時候,也需要用到Beacon事甜。Station可以通過Scan來掃描到Beacon谬泌,從而得知AP的存在,也可以在掃描的時候通過主動發(fā)送Probe來探尋AP是否存在逻谦。也就是說掌实,建立Association的時候有主動的掃描或者被動的掃描兩種方式。另外跨跨,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具有方向齿兔,這個方向用DS(分布式系統(tǒng))字段來標識橱脸,以區(qū)分不同類型幀中關(guān)于地址的解析方式;其它的類型Frame例如Control Frame或者管理幀中分苇,這個字段是全零添诉。這個字段用兩位表示,這兩個位的含義分別表示“To Ds”和“From Ds”医寿,大致含義如下:

??????? (a)To DS:表示Station->AP栏赴,一般也叫Upload。

??????? (b)From DS表示AP->Station靖秩,一般也叫Download须眷。

??????? 這里,我們可以大致將DS看做AP沟突,To/From是從AP的角度來考慮的花颗。To DS就是讓AP干活。另外Data Frame中還有一個比較重要的字段就是Sequence惠拭,表示幀的序號扩劝。重傳幀序號一樣,但是多了一個Retry的字段表示該幀是重傳的。

??????? 為了便于理解棒呛,這里再次詳細解釋一下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:無線橋接器上的數(shù)據(jù)偵宰睡。

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


2、幀和大端小端

??????? Ethernet和802.11都是按照Little Endian的方式來傳輸數(shù)據(jù)抹沪,也就是說刻肄,而MAC層傳輸?shù)臅r候,是采用Little Endian的方式融欧,一個字節(jié)一個字節(jié)的傳輸?shù)拿羝懊娴牡臀蛔止?jié)先傳輸,后面的高位字節(jié)后傳輸(傳輸單位不是按位而是字節(jié))噪馏;在協(xié)議標準上描述一個幀的時候麦到,一般是先按照Little Endian的方式對其進行總體描述,然后具體細節(jié)說每個字段的值欠肾,這時候這個字段值是Big Endian方式表示的瓶颠,這一點應(yīng)當注意。

??????? 例如刺桃,協(xié)議標準中可能能對某個幀格式做如下的描述:

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

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

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

??????? 所以疮装,協(xié)議標準中具體描述某個域的時候,一般直接用大端方式表示的數(shù)值(b3b2b1b0=0100)來描述粘都;而傳輸數(shù)據(jù)幀或者在協(xié)議標準中描述整體幀的時候廓推,中給出的卻是小端的方式(b0b1b2b3=0010)。 這里的每個字段都是幀的一個部分翩隧,在管理幀(后面會說)中長度不固定的部分又叫IE(information Element) 樊展。

??????? 另外注意,內(nèi)存地址是用來標記每個字節(jié)的而不是位堆生,所以內(nèi)存里面大端小端也是以字節(jié)而不是位為單位的(前面描述“大端“专缠、”小端”的時候卻以位序而非字節(jié)序,這一點需要明辨淑仆,不要混淆)涝婉。假設(shè)奔騰的機器,CPU為32位蔗怠,采用Little Endian方式墩弯,那么表示1這個int類型整數(shù)的時候,假設(shè)它在數(shù)值上是十六進制的"00000001"寞射,那么存放在內(nèi)存中卻是由低位到高位依次存放的渔工,由低到高地址依次為:"01"、"00"桥温、"00"涨缚、"00"(也就是說小端方式存放在內(nèi)存中的時候,是按照含有最低位的字節(jié)存放在低地址策治,注意是字節(jié),在內(nèi)存中“位”沒有地址兰吟,所以沒有大端小端一說)通惫。在傳遞幀的時候,也是按照一個字節(jié)一個字節(jié)的傳輸混蔼,而一個字節(jié)內(nèi)部在實際上其實沒有什么端的分別履腋,但是wireshark一律使用“b7b6b5b4b3b2b1b0”這樣的方式來用大端的方式顯示。

??????? 總之惭嚣,需要注意網(wǎng)絡(luò)層下面的幀的大端小端問題(不是網(wǎng)絡(luò)中的字節(jié)序遵湖,TCP/IP中規(guī)定的網(wǎng)絡(luò)字節(jié)序是Big Endian),大致就是:協(xié)議規(guī)定晚吞,傳輸?shù)臅r候使用Little Endian延旧;標準描述的時候用Big Endian和Little Endian都用;另外槽地,Wire shark軟件抓的包中迁沫,好象全都用Big Endian來進行標示(無論是信息窗口還是內(nèi)存窗口都這樣展示)芦瘾。


3、CSMA/CA的機制

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

??????? (a)鏈路空閑下來之后祷愉,所有Station在發(fā)送幀之前都首先等待一段時間(即DIFS,又稱幀間隔時間)赦颇;

??????? (b)到達DIFS之后二鳄,所有的Station進入競爭時間窗口(就是競爭期間),將這個競爭時間窗口分割成多個Slot(退避時間間隔)沐扳,然后每個Station隨機選擇一個Slot泥从;

??????? (c)當某個Station到達它的Slot對應(yīng)的時間之后,就開始發(fā)送數(shù)據(jù)沪摄。這里躯嫉,選擇的Slot越靠前,則表示Station在DIFS之后再等待的時間(退避時間)越短杨拐,也就會越早發(fā)送實際數(shù)據(jù)祈餐;

??????? (d)退避窗口的Slot有多個,選擇的時候哄陶,可能某個Slot被多個站點同時選取帆阳,這個時候發(fā)送會產(chǎn)生真正的數(shù)據(jù)沖突(如果多個人同時發(fā)送,那么它們都要經(jīng)過AP來轉(zhuǎn)發(fā)屋吨,AP無法同時聽見多個人的“說話聲音”)那么Station就會再重新選擇并發(fā)送蜒谤;

??????? (e)當一個Station發(fā)送數(shù)據(jù)之后,所有Station會檢測到鏈路忙至扰,于是放棄嘗試發(fā)送鳍徽,等那個Station發(fā)送完數(shù)據(jù)之后,鏈路開始空閑敢课,于是又進入到(a)重新開始這個過程阶祭。

??????? 對于以上的機制,如果我們讓某個Station經(jīng)過DIFS之后直秆,選擇的Slot越小濒募,就意味著它發(fā)送幀的機會越大,也就是說這個Station的優(yōu)先權(quán)越高圾结。這就是Qos(質(zhì)量保證)的基本瑰剃,前面也說過,Qos就是“以一定的優(yōu)先級來保證傳輸?shù)奶囟ㄒ蟆币吒澹@得這種優(yōu)先級培他,就要有相應(yīng)的條件(例如“花錢”)(有一種不常用的無競爭發(fā)送鹃两,其實就是DIFS之后,不退避而直接發(fā)送)舀凛。

??????? 另外俊扳,其實對物理層上來說,所有的發(fā)送都是廣播猛遍,單播與否只是在鏈路層以上分辨的馋记。上面提到的檢測鏈路是否忙,可以從鏈路上用軟件方式進行(例如增加幀的特殊字段)懊烤,也可以直接在物理層上進行梯醒,實際因為在物理層上成本較高,經(jīng)常用的是前者腌紧,具體參見協(xié)議茸习。軟件檢測大致的思路就是,進行一個通信的時候壁肋,這個通信包含多個幀号胚,每個幀有不同的作用,發(fā)送的第一幀的時候浸遗,會通過其中的某個特殊字段(Duration字段猫胁,也叫NAV,即網(wǎng)絡(luò)分配向量跛锌,是一個延遲時間值)告訴所有其它Station弃秆,在未來的一段時間內(nèi),鏈路被占用髓帽,以完成整個通信過程菠赚。這樣,其它Station在此期間就不會發(fā)送數(shù)據(jù)干擾這次通信了郑藏,以后這個通信的每一幀以及其ACK確認幀之間都會有一個很小的時間間隔(小于DIFS锈至,即SIFS),并且每幀會視情況延長那個Duration字段译秦,保證整個通信期間確實不會有其它人干擾,這樣整個通信就是原子性的了击碗。


4筑悴、幀的來源和目的地址

??????? 因為無線網(wǎng)絡(luò)中沒有采用有線電纜而是采用無線電波做為傳輸介質(zhì),所以需要將其網(wǎng)絡(luò)層以下的幀格式封裝的更復(fù)雜稍途,才能像在有線網(wǎng)絡(luò)那樣傳輸數(shù)據(jù)阁吝。其中,僅從標識幀的來源和去向方面械拍,無線網(wǎng)絡(luò)中的幀就需要有四個地址突勇,而不像以太網(wǎng)那樣簡單只有有兩個地址(源和目的)装盯。這四個地址分別是:

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

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

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

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

??????? 注意欲间,其實,還有一個BSSID断部,用來區(qū)分不同網(wǎng)絡(luò)的標識猎贴。在802.11幀中,有四個地址字段蝴光,一般只用到其中的三個她渴,并且,這四個字段對應(yīng)哪種地址或者使用哪些地址蔑祟,根據(jù)幀中的另外一個DS字段以及幀的類型而有不同的解釋趁耗。


??????? 舉例:

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

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

??????? a)當Station->Host的時候:

??????? 首先Station->AP,這時候Src=Station,Dst=Host,Tx=Station,Rx=AP疆虚,然后AP->Host苛败,這時候Src=Station,Dst=Host,因為AP轉(zhuǎn)發(fā)的時候径簿,是在以太網(wǎng)中罢屈,所以沒有Tx和Rx。

??????? b)當Host->Station的時候:

??????? 首先Host->AP篇亭,這時候Src=Host缠捌,Dst=Station,然后AP->Station译蒂,這時候曼月,Src=Host,Dst=Station,Tx=AP,Rx=Station谊却。

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

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

??????? a)當Station1->Station2時

??????? 首先Station1->AP,Src=Station1,Dst=Station2,Tx=Station1,Rx=AP哑芹,然后AP->Station2炎辨,Src=Station1, Dst=Station2, Tx=AP, Rx=Station2。

??????? 可見绩衷,在無線網(wǎng)絡(luò)中蹦魔,始終存在Tx和Rx,但是咳燕,這四個地址中還是只有三個地址足矣勿决。

??????? (3)當兩個無線網(wǎng)絡(luò)中的Station進行通信的時候:

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

??????? 當Station1->Station2時:

??????? 首先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咆繁。

??????? 注意,這個時候顶籽,AP起到橋接的作用玩般,所以四個地址各不相同,同時礼饱,AP之間或者Station和AP之間的那部分連接坏为,也可以是以太網(wǎng)。

??????? 綜上可知镊绪,無線網(wǎng)絡(luò)中的Station想要通信匀伏,必須經(jīng)過AP來進行“轉(zhuǎn)發(fā)”,其實蝴韭,Tx和Rx是無線網(wǎng)絡(luò)中的發(fā)和收够颠,也就是Radio;而Src和Dst是真正的發(fā)送源和接收者榄鉴。


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

??????? 其實,無線網(wǎng)絡(luò)中的Power save是指Station的Sleep(睡眠)庆尘,并且這個Sleep并不是整個系統(tǒng)的Sleep蹬耘,確切來說,應(yīng)該是其wifi中Receiver(接收天線)的Sleep减余。Station在睡眠的期間還是可以Transmit(發(fā)送)的,只是當AP知道Station的Receiver處于Sleep狀態(tài)時惩系,就不會給Station發(fā)送幀了位岔。Station在Sleep之前如筛,會給AP發(fā)送一個特殊的幀,告訴AP說它(Station)要睡眠了抒抬,AP通過這個幀來記住是這個Station睡眠了杨刨,然后AP就不會給這個Station單獨發(fā)送數(shù)據(jù)了。

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

??????? 對于發(fā)送給這個Station的廣播幀剖煌,其處理方式和普通幀有一點不同:當有廣播幀要傳達給這個Station的時候,AP會為這個Station緩存發(fā)送給它的廣播幀献丑,但是緩存的時間是DTIM(一般為300ms)末捣。注意:單播幀緩存的時間不一定是多少,廣播幀卻緩存DTIM的時間创橄。AP每發(fā)送一個Beacon的時候箩做,都會將Dtim減少1,而Station睡眠的時候妥畏,會不時地醒來邦邦,查看一下Beacon幀中的dtim值。當Station發(fā)現(xiàn)其DTIM值變成0的時候醉蚁,就醒來長一些的時間署拟,看看有沒有廣播給它的數(shù)據(jù)流济,如果有的話就用類似Power Save Poll的幀接受,沒有則繼續(xù)睡眠。

??????? 這里娃殖,接收數(shù)據(jù)是根據(jù)是否有more data類似的字段來確認是否有更多的數(shù)據(jù)的齐蔽;重發(fā)的幀是用類似retry的字段來標記。另外注意,當Station進行Sleep的時候巍棱,還是可以主動Tranmit消息的,當Station主動Transmit消息的時候蛋欣,它會等待Reply航徙,所以這個時候,Receiver是on的狀態(tài)陷虎。用一個圖示來標識Sleep到踏,Receive,Transmit時的電源消耗狀況尚猿,大致如下:


????????? power

?????????????? ^

trans????? ??|?????????????????? ------------------------

?????????????? |?????????????????? |?????????????????????? |

receive???? |??????? -----------|?????????????????????? |

?????????????? |??????? |????????????????????????????????? |

sleep?????? |--------|?????? ???????????????????????????|--------------------

?????????????? |----------------------------------------------------------------------> time


??????? 可見不同狀態(tài)窝稿,電源消耗狀態(tài)不同(傳送比接收更耗電),另外谊路,如果電源供電不足讹躯,在某個狀態(tài)中就會出現(xiàn)通信失敗的情況。(好像ap上面broadcom芯片中的睡眠之后缠劝,醒來立即重新發(fā)送的時候經(jīng)常開始會失敗潮梯,可能就是這個原因)。


? 6惨恭、建立Association

??????? 下面是Station和Ap建立開放Association的過程:

??????? (0)Ap周期性地廣播Beacon幀

??????? (1)Station廣播Probe Request到達Ap

??????? (2)Ap向Station發(fā)送Probe Reponse

??????? (3)Station向Ap發(fā)送ACK

??????? (4)Station向Ap發(fā)送Authentication Request

??????? (5)Ap向Station發(fā)送ACK

??????? (6)Ap向Station發(fā)送Authentication Reponse

??????? (7)Station向Ap發(fā)送ACK

??????? (8)Station向Ap發(fā)送Association Request

??????? (9)Ap向Station發(fā)送ACK

??????? (10)Ap向Station發(fā)送Association Reponse

??????? (11)Station向Ap發(fā)送ACK

??????? (12)Station和Ap開始相互通信秉馏。

??????? 可見,廣播幀不用回復(fù)脱羡,單播幀需要用ACK確認萝究,ACK本身不用被確認。



四锉罐、補充

============================

??????? 有待添加帆竹。



五、其它

============================

??????? 本文內(nèi)容主要來自學(xué)習(xí)的總結(jié)以及網(wǎng)絡(luò)脓规,主要集中于無線網(wǎng)絡(luò)中物理層以上相對比較常見的部分栽连,如果想要理解更詳細和全面的內(nèi)容則需參考相關(guān)書籍以及網(wǎng)絡(luò)協(xié)議。由于對此方面的知識也是在初步學(xué)習(xí)之中侨舆,若文章中有錯誤和不完整之處秒紧,謝謝讀者指正。^_^

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挨下,一起剝皮案震驚了整個濱河市熔恢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌臭笆,老刑警劉巖叙淌,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秤掌,死亡現(xiàn)場離奇詭異,居然都是意外死亡鹰霍,警方通過查閱死者的電腦和手機机杜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衅谷,“玉大人,你說我怎么就攤上這事似将』袂” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵在验,是天一觀的道長玷氏。 經(jīng)常有香客問我,道長腋舌,這世上最難降的妖魔是什么盏触? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮块饺,結(jié)果婚禮上赞辩,老公的妹妹穿的比我還像新娘。我一直安慰自己授艰,他們只是感情好辨嗽,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淮腾,像睡著了一般糟需。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谷朝,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天洲押,我揣著相機與錄音,去河邊找鬼圆凰。 笑死杈帐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的送朱。 我是一名探鬼主播娘荡,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驶沼!你這毒婦竟也來了炮沐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤回怜,失蹤者是張志新(化名)和其女友劉穎大年,沒想到半個月后换薄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡翔试,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年轻要,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垦缅。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡冲泥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壁涎,到底是詐尸還是另有隱情凡恍,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布怔球,位于F島的核電站嚼酝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏竟坛。R本人自食惡果不足惜闽巩,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望担汤。 院中可真熱鬧涎跨,春花似錦、人聲如沸漫试。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驾荣。三九已至外构,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間播掷,已是汗流浹背审编。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留歧匈,地道東北人垒酬。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像件炉,于是被迫代替她去往敵國和親勘究。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 無線簡介:無線網(wǎng)概念I(lǐng)EEE 802.11是無線局域網(wǎng)通用的標準斟冕,它是由IEEE所定義的無線網(wǎng)絡(luò)通信的標準口糕。199...
    get0shell閱讀 2,614評論 0 1
  • 1、 國際電工電子工程學(xué)會(IEEE)為無線局域網(wǎng)絡(luò)制定的標準:802.11協(xié)議簇磕蛇。 目前使用最多的是 802.1...
    minlover閱讀 2,629評論 0 4
  • WiFi是一個無線網(wǎng)絡(luò)通信技術(shù)的品牌景描,由Wi-Fi聯(lián)盟(Wi-Fi Alliance)擁有十办,目的是改善基于IEEE...
    get0shell閱讀 506評論 0 0
  • 5.1數(shù)據(jù)鏈路層服務(wù) 概述 術(shù)語: v ■主機和路由器:結(jié)點(nodes) v ■連接相鄰結(jié)點的通信信道:鏈路(l...
    龜龜51閱讀 1,891評論 0 1
  • 文章圖片上傳不正常,如需文檔超棺,可聯(lián)系微信:1017429387 目錄 1 安裝... 4 1.1 配置探針... ...
    Mrhappy_a7eb閱讀 6,287評論 0 5