WIFI基本知識整理

這里對 wifi802.11 協(xié)議中比較常見的知識做一個基本的總結和整理死姚,便于后續(xù)的學習臭觉。因為無線網絡中涉及術語很多考蕾,并且許多協(xié)議都是用英文描述甩苛,所以有些地方翻譯出來會有歧義,這種情況就直接英文來描述了赏参。

一志笼、基本概述

1、有線和無線網絡

目前有線網絡中最著名的是以太網( Ethenet )把篓,但是無線網絡 WLAN 是一個很有前景的發(fā)展領域纫溃,雖然可能不會完全取代以太網,但是它正擁有越來越多的用戶韧掩,無線網絡中最有前景的是 Wifi 紊浩。本文介紹無線網絡相關內容。

無線網絡相比有線網絡疗锐,還是有許多的缺點的:

  • 通信雙方因為是通過無線進行通信坊谁,所以通信之前需要建立連接;而有線網絡就直接用線纜連接滑臊,不用這個過程了口芍。
  • 通信雙方通信方式是半雙工的通信方式;而有線網絡可以是全雙工简珠。
  • 通信時在網絡層以下出錯的概率非常高阶界,所以幀的重傳概率很大,需要在網絡層之下的協(xié)議添加重傳的機制(不能只依賴上面 TCP/IP 的延時等待重傳等開銷來保證)聋庵;而有線網絡出錯概率非常小膘融,無需在網絡層有如此復雜的機制。
  • 數據是在無線環(huán)境下進行的祭玉,所以抓包非常容易氧映,存在安全隱患。
  • 因為收發(fā)無線信號脱货,所以功耗較大岛都,對電池來說是一個考驗律姨。
  • 相對有線網絡吞吐量低,這一點正在逐步改善臼疫, 802.11n 協(xié)議可以達到 600Mbps 的吞吐量择份。

2、協(xié)議

EthenetWifi 采用的協(xié)議都屬于 IEEE 802 協(xié)議集烫堤。其中荣赶, Ethenet802.3 協(xié)議做為其網絡層以下的協(xié)議;而 Wifi802.11 做為其網絡層以下的協(xié)議鸽斟。無論是有線網絡拔创,還是無線網絡,其網絡層以上的部分富蓄,基本一樣剩燥。

這里主要關注的是 Wifi 網絡中相關的內容。 Wifi802.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.4gHZ5gHZ 均可工作,最大的傳輸速率為 600mbps 蒂秘。

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

另外值得注意的是规丽, 802.11nMAC 層上進行了一些重要的改進蒲牧,所以導致網絡性能有了很大的提升例如:

  • 因為傳輸速率在很大的程度上取決于 Channel (信道)的 ChannelWidth 有多寬,而 802.11n 中采用了一種技術赌莺,可以在傳輸數據的時候將兩個信道合并為一個冰抢,再進行傳輸,極大地提高了傳輸速率(這又稱 HT-40 艘狭, high through )挎扰。
  • 802.11nMIMO (多輸入輸出)特性,使得兩對天線可以在同時同 Channel 上傳輸數據缓升,而兩者卻能夠不相互干擾(采用了 OFDM 特殊的調制技術)

3鼓鲁、術語

講述之前,我們需要對無線網絡中一些常用的術語有所了解港谊。這里先列出一些骇吭,后面描述中出現(xiàn)的新的術語,將會在描述中解釋歧寺。

  • LAN: 即局域網燥狰,是路由和主機組成的內部局域網,一般為有線網絡斜筐。

  • WAN: 即廣域網龙致,是外部一個更大的局域網。

  • WLANWireless LAN 顷链,即無線局域網): 前面我們說過 LAN 是局域網目代,其實大多數指有線網絡中的局域網,無線網絡中的局域網嗤练,一般用 WLAN 榛了。

  • APAccess point 的簡稱,即訪問點煞抬,接入點): 是一個無線網絡中的特殊節(jié)點霜大。

    通過這個節(jié)點,無線網絡中的其它類型節(jié)點可以和無線網絡外部以及內部進行通信革答。這里战坤, AP 和無線路由都在一臺設備上(即 Cisco E3000 )。

  • Station (工作站): 表示連接到無線網絡中的設備残拐,這些設備通過 AP 途茫,可以和內部其它設備或者無線網絡外部通信。

  • Assosiate: 連接蹦骑。如果一個 Station 想要加入到無線網絡中慈省,需要和這個無線網絡中的 AP 關聯(lián)(即 Assosiate )。

  • SSID: 用來標識一個無線網絡,后面會詳細介紹边败,我們這里只需了解袱衷,每個無線網絡都有它自己的 SSID

  • BSSID: 用來標識一個 BSS 笑窜,其格式和 MAC 地址一樣致燥,是 48 位的地址格式。

    一般來說排截,它就是所處的無線接入點的 MAC 地址嫌蚤。某種程度來說,它的作用和 SSID 類似断傲,但是 SSID 是網絡的名字脱吱,是給人看的, BSSID 是給機器看的认罩, BSSID 類似 MAC 地址箱蝠。

  • BSSBasic Service Set ): 由一組相互通信的工作站組成,是 802.11 無線網絡的基本組件垦垂。

    主要有兩種類型的 IBSS 和基礎結構型網絡宦搬。 IBSS 又叫 ADHOC ,組網是臨時的劫拗,通信方式為 Station<->Station 间校,這里不關注這種組網方式;我們關注的基礎結構形網絡页慷,其通信方式是 Station<->AP<->Station 憔足,也就是所有無線網絡中的設備要想通信,都得經過 AP 酒繁。在無線網絡的基礎形網絡中四瘫,最重要的兩類設備: APStation

  • DSDistributed System ): 即分布式系統(tǒng)欲逃。

    分布式系統(tǒng)屬于 802.11 邏輯組件,負責將幀轉發(fā)至目的地址饼暑, 802.11 并未規(guī)定其技術細節(jié)稳析,大多數商業(yè)產品以橋接引擎合分步式系統(tǒng)媒介共同構成分布式系統(tǒng)。分步式系統(tǒng)是接入點之間轉發(fā)幀的骨干網絡弓叛,一般是以太網彰居。其實,骨干網絡并不是分步系統(tǒng)的全部撰筷,而是其媒介陈惰。主要有三點:(1)骨干網(例如以太網)、(2)橋接器(具有有線無線兩個網絡接口的接入點包含它)毕籽、(3)屬于骨干網上的接入點抬闯。

    所管轄的基礎性網絡的 station 通信(和外界或者 BSS 內部的 station )必須經過 DS 井辆、而外部路由只知道 stationmac 地址,所以也需要通過分布式系統(tǒng)才能知道 station 的具體位置并且正確送到溶握。

    分步式系統(tǒng)中的接入點之間必須相互傳遞與之關聯(lián)的工作站的信息杯缺,這樣整個分步式系統(tǒng)才能知道哪個 station 和哪個 ap 關聯(lián),保證分步式系統(tǒng)正常工作(即轉達給正確的 station )睡榆。

    分步式系統(tǒng)也可以是使用無線媒介( WDS )萍肆,不一定一定是以太網。

    總之胀屿,分步式系統(tǒng)骨干網絡(例如以太網)做為媒介塘揣,連接各個接入點,每個接入點與其內的 station 可構成 BSS 宿崭,各個接入點中的橋接控制器有到達骨干網絡和其內部 BSS 無線網的接口(類似兩個 MAC 地址)亲铡, station 通信需要通過分布式系統(tǒng)。

二劳曹、實踐基礎

1奴愉、一些參數

MAC

MAC (即 Medium/MediaAccess Control , 介質訪問控制),是數據鏈路層的一部分铁孵。 MAC 地址是燒錄在 NetworkInterfaceCard (即網卡锭硼,簡稱 NIC )里的,它也叫硬件地址,是由 48 位(即 bit 蜕劝,一字節(jié)為8位檀头,即 1byte=8bits ) 16進制的數字組成。其中 0-23 位叫做組織唯一標志符( organizationally unique 岖沛,簡稱 OUI )暑始,是識別 LAN (局域網)節(jié)點的標識(在有些抓包工具抓包的時候會將前三個字節(jié)映射成某種組織名稱的字符,也可以選擇不顯示這種映射)婴削。 24-47 位是由廠家自己分配廊镜。

SSID

表示一個子網的名字,無線路由通過這個名字可以為其它設備標識這個無線路由的子網唉俗。設備進行掃描的時候嗤朴,就會將相應 SSID 掃描到,然后就能夠選擇相應的 SSID 連接到相應的無線網絡(當然不掃描虫溜,理論上也可以直接指定自己事先已經知道的 ssid 進行連接)雹姊。 SSID 可以和其它的重復,這樣掃描的時候會看到兩個同樣 SSID 的無線網絡衡楞,其實這一般用于將一個無線網絡擴大的情況(畢竟無線路由器無線信號的覆蓋范圍是有線的):當想要擴大一個無線網絡(即 SSID 固定)的范圍的時候吱雏,可以給多個路由設置相同的 SSID 來達到這個目的。(這也是漫游的原理,漫游的時候歧杏,我們可以在遠方或者本地都能夠打電話镰惦,也就是訪問移動通信網絡)。

SSIDBSSID 不一定一一對應得滤,一個 BSSID 在不同的 Channel 上面可能會對應到多個 SSID 陨献,但是它們在一個 Channel 是一一對應的;另外懂更,漫游的時候眨业,雖然 SSID 不變,但是 BSSID 一定是會變化的沮协。我們經沉浼瘢可以看到實際數據包中的 APMAC 地址和 BSSID 只差幾位,其實實際設備的 MAC 地址可能只有一個慷暂,和 BSSID 沒什么對應關系聘殖。在一個包含了路由功能和 AP 功能的無線路由器( Fat AP )上面,很可能是:路由器有兩個 MAC 地址行瑞,一個用于外網( WAN )奸腺,一個用于內網( WLANLAN ),一般路由器上面或者配置路由器的網頁上面只標注外網的 MAC 地址血久;內網的 MAC 地址和外網 MAC 地址一般只有幾位不同(甚至連續(xù)突照,也有些相差很多的例外)。

Band (頻率范圍)

一般 ap 可以支持 5g2.4g 兩個頻率范圍段的無線信號氧吐。如果兩者同時可以設置讹蘑,而不是互斥那么,這個路由器還能夠同時支持兩種頻段(頻段即 Band )筑舅,這相當于這個 ap 可建立兩個無線網絡座慰,它們采用不同的頻段(這類似收音機在長波范圍內收音和短波范圍內收音)。

Channel (信道)

Channel 是對頻段的進一步劃分(將 5G 或者 2.4G 的頻段范圍再劃分為幾個小的頻段翠拣,每個頻段稱作一個 Channel )版仔,有 5.18GHZAuto ( DFS )等等误墓,處于不同傳輸信道上面的數據邦尊,如果信道覆蓋范圍沒有重疊,那么不會相互干擾优烧。對于信道的使用,在國際上有所規(guī)定链峭。其中有些信道是無需授權即可直接使用的(究竟是那個頻段的那個信道畦娄,依照各個國家而不同),無需授權使用的意思是,傳輸數據的時候(無論以哪種無線方式)熙卡,可以讓設備收發(fā)的功率導致傳輸時的數據進入該信道的頻率并在該信道所在頻段寬度內進行傳輸杖刷;授權的使用的意思是,不允許傳輸時使用授權信道進行驳癌,否則會違反規(guī)定滑燃,并且干擾該信道上其他數據的傳輸。另外颓鲜,除了 wifi 表窘,微波、紅外線甜滨、藍牙(使用 802.15 協(xié)議)的工作頻段也都有在 2.4gHZ 范圍內的乐严,所以,它們傳輸的時候會對 wifi 傳輸造成干擾衣摩,因為兩者在不同的協(xié)議下進行通信昂验,所以互相將對方傳輸的信號識別為噪聲。 有時候配置 AP 的時候艾扮, Channel 中有一個類似 Auto 的選項值既琴,這表示打開 AP 的時候, AP 自己 Scan 周圍的環(huán)境泡嘴,選擇一個干擾最小的 Channel 來進行通信甫恩,當選擇好了一個 Channel 的時候,一般就不會改變了磕诊。

Channel Width (信道寬度)

這里的 Channel Width 是信道的帶寬填物,有 20M HZ40M HZ 等霎终,它表示一個 Channel 片段的寬度(假設 5g 的頻段寬度總共為 100M 滞磺,平均劃分為互不干擾的 10Channel ,那么每個 ChannelChannel Width 就為 100M/10=10M 莱褒,實際 Channel 并不一定是完全不重疊的)击困。這個參數可能依賴于一些其它的選項,例如不是 802.11N 的協(xié)議广凸,就可能不會有 40M HZChannel Width (N模式有一個特點就是可以把兩個 Channel 合并阅茶,通過提高 ChannelWidth 來提高吞吐量)。例如選擇了 20M HZ 這個 Channel Width 之后谅海,后面再選擇一個 5.18GHZChannel 脸哀,則表示以 5.18GHZ 為中心的前 10M HZ 以及其后面的 10M HZ 頻帶范圍被占用。

至此可知扭吁,配置無線 AP 的時候撞蜂,如果屋子里面有很多的 AP (也就是無線路由接入點)的話盲镶,仔細設置它們的 Channel WidthChannel 可以保證它們相互之間的干擾(類似收音機里面的串臺)盡可能小。當然蝌诡,如果相互干擾了溉贿,那么 Net Mode 所指定的協(xié)議也會有相應的處理方式讓他們之間進行協(xié)調(例如讓誰先通信誰等一會再通信之類的),但是這樣網絡的性能就不如沒有干擾的時候好了浦旱。

Wireless Security (無線網絡的安全性)

這里主要涉及 WEP 宇色、 WPAWPA2RC4 颁湖、 TKIP 宣蠕、 AES

IEEE 802.11 所制定的是技術性標準 , Wi-Fi 聯(lián)盟所制定的是商業(yè)化標準 , 而 Wi-Fi 所制定的商業(yè)化標準基本上也都符合 IEEE 所制定的技術性標準爷狈。 WEP 是1999年9月通過的 IEEE 802.11 標準的一部分植影; WPA ( Wi-Fi Protected Access ) 事實上就是由 Wi-Fi 聯(lián)盟所制定的安全性標準 , 這個商業(yè)化標準存在的目的就是為了要支持 IEEE 802.11i 這個以技術為導向的安全性標準;而 WPA2 其實就是 WPA 的第二個版本涎永。直觀點說思币, WEP 是較老的認證方法它有好幾個弱點,因此在2003年被 WPA 淘汰羡微, WPA 又在2004年由完整的 IEEE 802.11i 標準(又稱為 WPA2 )所取代谷饿。

WEPWired Equivalent Privacy ),采用名為 RC4RSA 加密技術妈倔; WPA ( Wi-Fi Protected Access ) 博投,采用新的 TKIP 算法, TKIP 算法保留了 RC4 所以也有其弱點盯蝴,但是這個時候更好的 CCMP 還沒完成毅哗,所以先在 WPA 上用 TKIP 技術; WPA2WPA 的第2個版本捧挺,采用 CCMP 加密協(xié)定(在有些路由器等設備上設定加密協(xié)定或者加密算法的時候虑绵,可能會用類似 AES 之類的字眼替代 CCMP )。所以 WPA2+AES 是安全性最強的闽烙。

另外翅睛,在有些無線網路設備的參數中會看到像 WPA-Enterprise/WPA2-Enterprise 以及 WPA-Personal/WPA2-Personal 的字眼 , 其實 WPA-Enterprise / WPA2-Enterprise 就是 WPA/WPA2WPA-Personal/WPA2-Personal 其實就是 WPA-PSK/WPA2-PSK, 也就是以 pre-share keypassphrase 的驗證 (authentication) 模式來代替 IEEE 802.1X/EAP 的驗證模式 , PSK 模式下不須使用驗證服務器 ( 例如 RADIUS Server), 所以特別適合家用或 SOHO 的使用者黑竞。

還有捕发, wep 是舊的加密方式,工作于 802.11B/G 模式下而 802.11N 草案并不支持此加密方式很魂,所以如果 802.11N 的設備采用 wep 加密方式后扎酷,它也只會工作在 802.11b/g 模式下, N 的性能發(fā)揮不出來遏匆。

實際中霞玄,在有些路由器上面骤铃,設置的時候,可能不是嚴格按照這個規(guī)定來設置的(例如設定了采用 WPA 方式坷剧,還可以選擇 AES ),但是大體一樣喊暖。

Region (區(qū)域)

一般在無線網絡中的 AP 上都有一個參數惫企,表明它是處于哪個 Region (地區(qū))。 Station 根據 AP 中設置的 Region 調整其相應的發(fā)射功率以遵守該地區(qū)的規(guī)定陵叽。 AP 的調整過程一般都是手動設定狞尔,設置好 AP 所處的 Region 之后,這些信息就會在 AP 發(fā)送的 Beacon 幀(后面會說到)中包含了巩掺;通過這個 AP 連接到無線網絡上的 Station 偏序,從 Beacon 幀中了解到這些 Region 信息,并且根據這些信息中的規(guī)定和 AP 進行通信胖替。如果 AP 開始設置錯了研儒,那么 StationAP 通信的時候,采用的將會是不符合 Region 規(guī)定的頻段独令,可能會對該 Region 中的其它傳輸網絡造成干擾端朵,這應當是“非法”的。

Transmission Rate

設置傳輸速率燃箭。這里采用不同的無線網絡傳輸協(xié)議( 802.11a 冲呢, 802.11b802.11g 等)招狸,那么可以設置的速率范圍有所不同敬拓,這里的速度是指理論的速度,實際中裙戏,由于各種干擾因素乘凸,傳輸的速率可能會比設置的小。

一般而言挽懦,在無線網絡中翰意,對于某種協(xié)議的性能進行描述時,我們需要注意的是信柿,描述時提到的傳輸速率( Datarate )和吞吐量( Throughput )是不同的冀偶。 Datarate 是理論上面最大數據傳輸速率,而 Throughput 是數據的實際最大吞吐量渔嚷。因為廠家以及傳輸時所使用的協(xié)議等各種因素造成的開銷进鸠,會導致實際吞吐量比理論吞吐量要小,一般實際最大吞吐為理論最大的 50% 左右(一個不太準確但是相對直觀的估計:在網絡中形病,高清視頻所需的 Throughput 也就 30mbps 左右客年,網絡上一般的視頻也就 4mbps 左右)霞幅。

Qos (質量保證)

無線網絡中的 QOS 是質量保證,大致的意思是量瓜,傳輸數據的時候司恳,考慮各種因素(例如收費策略,所處地區(qū)等)绍傲,以一定的優(yōu)先級來保證傳輸的特定要求(一般就是速度)扔傅,如果帶寬足夠的話, QOS 反而不需要了烫饼。

RTS Threshold/CTS Protection Mode

這里的 RTSRequest-To-Send 的簡寫猎塞, CTSClear-To-Send 的簡寫。設置好 RTS 的閾值之后杠纵,如果超過這個閾值就會在發(fā)送信息之前先發(fā)送 RTS 荠耽,以減少干擾,相應的 CTS 會回應之前的 RTS 比藻。一般都是 AP 發(fā)送 CTS 數據铝量,而 Station 發(fā)送 RTS 數據。

這里對 RTSCTS 做一個簡單解釋:假設在同一個 AP 所覆蓋的無線網絡范圍內的兩個 Station A和B韩容,它們之間可能會因為距離的原因互相不可見(例如它們在 AP 網絡范圍的兩端款违,而這兩端的距離大于兩者的信號覆蓋范圍),但是 AP 卻知道它們是在自己的范圍內群凶。當一個A想要在 AP 的網絡中進行通信的時候插爹,必定要經過 AP 轉發(fā)它的信息,由于A不知道B的存在请梢,所以如果同時B也通過 AP 進行網絡通信赠尾,那么會出現(xiàn) AP 同時收到A、B兩個 Station 的通信請求毅弧,而這在無線網絡中是不允許的(無線網絡中气嫁,同一時刻不能有多個人傳輸數據)。在這種情況下够坐,B和A互相干擾了對方的通信寸宵,但是卻互相不可見(不可見的節(jié)點互相被稱作隱藏節(jié)點)。如果在一個網絡中元咙,這樣的隱藏節(jié)點很多梯影,那么勢必會影響網絡的性能(因為數據一旦發(fā)送失敗,就要重傳庶香,隱藏節(jié)點會導致重傳的機率增大)甲棍。這個時候,可采用 RTSCTS 機制赶掖。即:在A想要通信的時候感猛,先廣播發(fā)送 RTSAP 七扰,告訴 AP “它想要通信”,同時接受到 RTS 的別的 Station (它們對發(fā)送 RTSStation 而言可見)會知道A將要發(fā)送數據陪白,于是它們不會發(fā)送數據以免干擾A颈走; AP 收到 RTS 之后,會廣播發(fā)送 CTS 咱士,告訴所有在 AP 范圍內的 Station (包括對A而言的隱藏節(jié)點B)”A將要通信(同時也相當于告訴A疫鹊,A可以無干擾的發(fā)送信息了)”,這樣對A而言的隱藏節(jié)點B也知道有一個A的存在并且要發(fā)送信息了司致,于是B就不會干擾A了。 這里聋迎,A和B兩者可以在不同的網絡上脂矫,也就是說,不同網絡的工作站之間也可以通過 RTS/CTS 來清除相互的干擾霉晕。

Beacon Interval

表示無線路由定期廣播其 SSID 的時間間隔庭再。這個一般不會特別設置,就采用默認值即可牺堰。如果不廣播了拄轻,那么 Station 端掃描的時候可能會發(fā)現(xiàn)不定期廣播的 AP 對應的 SSID 的網絡不見了,所以可能會斷開連接伟葫。這里定期廣播恨搓,表示 AP 會定時向其范圍內廣播 SSID 的信息,以表示 AP 的存在筏养,這樣 Station 進入一個區(qū)域之后斧抱,就能夠通過掃描知道這個區(qū)域是否有 AP 的存在。當然渐溶,除了 AP 廣播 SSID 以告知其無線網絡存在之外辉浦, Station 也可主動廣播探尋包,在其能夠覆蓋的范圍內詢問是否有 AP 存在(即我們通常所說的掃描尋找接入點)茎辐。

DTIM Interval

DTIM/TIM 表示告訴 Station 宪郊, AP 在為 Stationpackage buffer (例如 Station 睡眠的時候)的緩存時間。為了節(jié)省電池使用時間拖陆,處于無線網絡中的 Station 可能會在一定時間之后自動進入休眠狀態(tài)弛槐。這個時候, AP 會為這個 Station 緩存發(fā)送給它的數據慕蔚,而處于休眠狀態(tài)的 Station 只會在一定時間間隔內給 AP 發(fā)送一個數據幀丐黄,以確認是否有發(fā)送給自己的數據存在。例如孔飒,當我們在主機上 ping 另外一臺睡眠的機器的時候灌闺,收到另外一臺機器響應的時間艰争,要比它不睡眠的時候響應的時間長很多。

Fragmentation Threshold

表示一個 package 的分片閾值桂对。我們可以設置分片大小甩卓,當發(fā)送的數據包超過這個閾值之后, 802.11 協(xié)議會自動對這個數據包進行分割蕉斜。如果設置的這個分片值越小逾柿,那么整個數據包越容易傳輸成功(因為如果出錯,那么只需要傳送一個片段而不是整個包宅此,無線 wifi 網絡中數據傳輸時出錯的概率比有線的以太網要大的多的多)机错,當然開銷也越大(因為需要額外的信息標記每個分片,以及各個分片傳輸成功之后涉及到的重組問題)父腕。

2弱匪、抓包

一般來說馋吗,我們的機器上面的軟件抓取無線網卡上面的包的時候学歧,其實這些包的目標地址都是這個機器的無線網卡否过,因為不是發(fā)給這個機器無線網卡的包都被網卡過濾了穿仪。所以如果我們想要抓取所處無線網絡環(huán)境下所有的包的時候沃于,需要給機器配備一種特殊的設備( sniffer 就是嗅探器)蛋济,然后再通過抓包工具抓取并分析甜无。有一個硬件設備叫做 AirPcap 撒璧,就是做這個用的群扶,大有幾百到上千美金及刻,它可以同時做為嗅探器或者無線網卡使用,不過做為嗅探器的時候穷当,會抓取所有經過它的包提茁。這個工具目前只有 Windows 上面的驅動,所以使用這個工具馁菜,只能在 Windows 上面茴扁,配合 Wireshark 抓包軟件進行抓包。

這里假設采用 AirPcap 嗅探汪疮, Wireshark 軟件抓包(其它抓包軟件峭火,例如 linux 下面的 tcpdump 等分析類似)。不用圖形方式詳細展示具體的抓包過程以及分析方法了智嚷,主要說一下抓包(這里的包實際主要指的是網絡層以下的包卖丸,更常見的稱呼應該是數據幀)時候需要注意的問題。

  1. Wireshark 展示包的時候盏道,大致都是按照協(xié)議規(guī)定的字段展示稍浆,也些地方按照它自己特定的方式展示。因為這里著重講述一些抓包時注意的基本原理上面的東西,所以不會對此進行過多闡述衅枫。大致就是: Wireshark 軟件中嫁艇,對包展示的時候,按照協(xié)議規(guī)定的字段分別用 HeaderBody 兩個部分展示弦撩;另外步咪,在 Header 之前還有兩個部分是 Wireshark 為方便用戶而展示的包的大小、時間等全局信息(例如見過表示這個包在B和 G mode 中的 Channel 1 時益楼,用 BG1 表示)猾漫。所以,其實我們分析的時候感凤,實際應該按照后面的 HeaderBody 兩個部分進行悯周。 后面將基于以上所述,進行進一步的講解陪竿。

  2. 抓包的時候队橙,需要首先確認這個包是否是完整、正確的包萨惑。只要是校驗位( checksum )不對的,就是錯誤的包仇矾,也無法確定接收的時候那里出了差錯庸蔼,所以這個包是應該忽略的,幾乎沒有分析的價值贮匕。另外姐仅,抓包的時候,由于干擾等原因刻盐,抓取的內容可能不是在實際傳輸所處的 Channel 上的包(例如在 Channel 1 上面嗅探掏膏,卻嗅探到了 Channel 2 上的包)。

  3. 抓取授權階段的包敦锌,需要注意實際的授權是在后面進行的馒疹。 Authentication 的時候,開始階段實際是 Open 的(即無授權)乙墙,也就是說颖变,開始實際已經建立好了連接,所以我們在抓包的時候听想,開始看到的一般都是通過驗證腥刹,但是在后面緊接著采用了類似 802.11x 等安全加強的協(xié)議,來進行再次鑒權認證汉买,如果這里無法通過則立即將已經建立的 Association 斷開衔峰。這樣的機制,是因為原來的 802.11 沒有充分考慮安全才會這樣的,這樣也兼容了以前的 802.11 垫卤。

  4. 抓取的包的數據威彰,要注意這個包是否是被加過密的。根據協(xié)議標準的描述葫男,包中如果有 dataprotected 字段抱冷,則表示這個數據本身是被加了密的,不知道這個數據具體是什么梢褐,當然旺遮,如果有密碼, wireshark 也有一個可以按照這個密碼解密的工具盈咳,有時候不好用耿眉。這里所說的數據加密和網絡的加密不一樣,可能訪問網絡本身是需要密碼(網絡是 security 的)鱼响,而數據本身沒有 crpted (加密)鸣剪。對于一個加了密的數據包,我們一般看不出來這個包到底是做什么用的或者什么類型的等等丈积。

  5. 抓包的時候筐骇,要注意包中指示的源和目的地址以及包的序號。在無線網絡中通信的時候江滨,我們抓包的時候可能會看到被抓取的包對應 APMAC 地址是不存在的铛纬,其實抓包時 APMACBSSID ,它和實際標注的 MAC 地址不一定一樣(但是一般都差不多唬滑,也就是之后最后面的幾位不一樣)告唆。有時候,我們看到抓取的包中的 MAC 地址有許多只相差幾位晶密,那么可能它們都屬于一個設備(因為雖然設備可能只標注了一個網卡的 MAC 地址擒悬,但是它卻“虛擬”出或者實際有多個 MAC 地址),所以當我們看到包中對應兩個 APMAC 地址幾乎一樣的時候稻艰,一般來說懂牧,這兩個 MAC 地址很可能就是一個設備的。還有在抓包的時候尊勿,一個地址上面的包的 sequence (序號)是連續(xù)的归苍,除非丟包了導致重復或者缺失。如果一個設備虛擬出來兩個地址运怖,那么也可能由于沒有經過什么處理拼弃,導致這兩個地址上面的包共同起來是連續(xù)的(如前所述,這兩個地址和 MAC 很接近摇展,應該是 BSSID )吻氧。

  6. 抓取的數據幀如果是廣播幀則不需要確認( ACK ),如果是單播幀,則一般需要確認( ACK )盯孙。例如鲁森, Probe 幀是廣播幀,所以它無對應的 ACK 確認幀振惰,對 Probe 的回復則叫做 Probe Response 歌溉;注意 ACK 幀本身用于確認,是單播的骑晶,但是它本身卻不需要再被確認了痛垛。從包中的目的 MAC 地址中,可以看出這個包是廣播/多播幀還是單播幀桶蛔。 MAC 第一個字節(jié)的第一個位是1匙头,表示組播,前兩位是1表示廣播仔雷,第一個字節(jié)第一個位是0表示單播蹂析。這里注意, MAC 不是值碟婆,而是一個 Pattern 电抚,所以沒有 Endian 之說,也沒有那個位高竖共,那個 MAC 大之說喻频。例如:“ a8:27:26:....:b7 ”,這里第一個字節(jié)就是 a810101000 )肘迎,其第一個字節(jié)的第一位就是8的最“右”位,即“0”锻煌,所以它的第一個字節(jié)的第一個位是0妓布,是一個單播地址。其實宋梧,這里涉及到大端小端問題匣沼,后面也會講到,總之捂龄,以太網線路上按 Big Endian 字節(jié)序傳送報文(也就是最高字節(jié)先傳送)释涛,而比特序是 Little Endian (也就是字節(jié)內最低位先傳送)所以,一個十六進制表示法表示的 MAC 地址 01-80-C2-00-00-00 倦沧,傳送時的 bit 順序就是: 1000 0000 0000 0001 0100 0011 0000 0000 0000 0000 0000 0000 唇撬。

  7. 使用 Wire Shark 在抓包或者顯示包的時候,都可以設置過濾器( filter )展融。抓包時候設置的過濾器叫做 capture filter 窖认,它是用 BPFberkerley package filter )這個比較通用的語言來描述(注意這不是 Wireshark 專用的 filter 語言,而是一個通用的語言)。但是抓包期間的過濾扑浸,有時候不準烧给,所以我們一般先將所有的包抓取下來,然后用 WireShark 中顯示的過濾器(即 view filter )來顯示我們關注的包喝噪,這里我們可以用 macro 來定義比較復雜的顯示過濾條件础嫡。保存的時候,可以用按照顯示過濾還是抓取過濾的方式保存內容酝惧。

  8. 盡量不要抓取 Channel Width40MHZChannel 上的幀榴鼎。我們還需要注意的是,使用 Sniffer 抓取無線網絡包的時候系奉, AirPcap 無法正常抓取 40MHZ Channel Width 的包檬贰,或者說對抓取這個 Channel Width 上面的包支持不好。如果非要抓取 40MHZ Channel Width 的包缺亮,那么就在 40 或者 36Channel 上面進行抓取翁涤,并在 Wireshark 上面設置 channel=36,offset+1 (平時 offset 都是0)萌踱,這樣能夠抓取 Channel Width40MHZ 的包(但是葵礼,其他 Channel 上面的 40mHZ 的包還是無法抓取)并鸵,這是由 AirPcap 內部的芯片固件的問題決定的(估計 broad com 芯片公司也不愿花過多的精力來支持這個很少有人用的抓包工具的這個功能)鸳粉。

另外,假設一個無線工作站是基于 Android 系統(tǒng)的(例如智能手機或者平板電子書)那么我們可以利用 wpa_cli status 命令來可以查看當前設備的連接的 SSID 园担, BSSID 届谈, MACIP 等信息弯汰,(這里“cli”=“command line interface”)艰山。 還有更“復雜”的命令 wcwl ,其中 wc 是比較上層的命令咏闪, wl 是下層的命令(是基于芯片是否支持的曙搬,例如 wlbroadcom 芯片上支持,但是在 ti 上面就沒有了)鸽嫂。

三纵装、一些原理

1、常見的幀

802.11 中的幀有三種類型:管理幀( Management Frame 据某,例如 Beacon 幀橡娄、 Association 幀)、控制幀( Control Frame 癣籽,例如 RTS 幀瀑踢、 CTS 幀扳还、 ACK 幀)、數據幀( Data Frame 橱夭,承載數據的載體氨距,其中的 DS 字段用來標識方向很重要)。幀頭部中的類型字段中會標識出該幀屬于哪個字段棘劣。

ACK

單播( unicast )幀都需要用 ACK 來確認俏让, ACK 本身不是廣播幀, ACKMAC 上是 unicast 的茬暇,幀中有 receive 地址字段(用來標識是對誰的確認)首昔,但是它卻不需要再確認了。 ACK 只有接收地址( receive )而無源地址( src )和序號( sequence )糙俗,因為發(fā)送和接受是一個整體勒奇,發(fā)送之后,其他人(除了這個發(fā)送的接受者)都不會再發(fā)送數據了(無線協(xié)議中的沖突避免機制)巧骚,所以接受者會發(fā)送一個沒有 srcack 幀給 receiver 赊颠,而接收 ACK 的一端會根據這個知道它收到了一個 ACK 幀(其實根據協(xié)議,應當把發(fā)送單播幀和收到它相應的 ACK 看作一個原子的不可分割的整體劈彪,表示一次成功的通信)竣蹦。

Beacon

Beacon 幀定時廣播發(fā)送,主要用來通知網絡 AP 的存在性沧奴。 StationAP 建立 Association 的時候痘括,也需要用到 BeaconStation 可以通過 Scan 來掃描到 Beacon 滔吠,從而得知 AP 的存在纲菌,也可以在掃描的時候通過主動發(fā)送 Probe 來探尋 AP 是否存在。也就是說疮绷,建立 Association 的時候有主動的掃描或者被動的掃描兩種方式翰舌。另外, Beacon 還包含了關于 Power Save 矗愧、以及地區(qū)等信息。

Association

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

Data

Data Frame 具有方向,這個方向用 DS (分布式系統(tǒng))字段來標識酸役,以區(qū)分不同類型幀中關于地址的解析方式住诸;其它的類型 Frame 例如 Control Frame 或者管理幀中驾胆,這個字段是全零。這個字段用兩位表示贱呐,這兩個位的含義分別表示 To DsFrom Ds 丧诺,大致含義如下:

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

  2. 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: 無線橋接器上的數據偵。

這里养泡,我們主要關注 To DSFrom DS 分別是 0110 的情況嗜湃, DS 雖然大致等于 AP 但是它不是 AP ,它其實是一個系統(tǒng)澜掩,從 Station 的角度來看购披,比較容易理解。并且 To DSFrom DS 一定是無線網絡上面數據偵才有的字段肩榕。

2刚陡、幀和大端小端

Ethernet802.11 都是按照 Little Endian 的方式來傳輸數據,也就是說株汉,而 MAC 層傳輸的時候筐乳,是采用 Little Endian 的方式,一個字節(jié)一個字節(jié)的傳輸的乔妈,前面的低位字節(jié)先傳輸蝙云,后面的高位字節(jié)后傳輸(傳輸單位不是按位而是字節(jié));在協(xié)議標準上描述一個幀的時候路召,一般是先按照 Little Endian 的方式對其進行總體描述勃刨,然后具體細節(jié)說每個字段的值波材,這時候這個字段值是 Big Endian 方式表示的,這一點應當注意身隐。

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

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

這里,最低位 b0 在最前面抡医,所以這里采用的就是小端的方式來描述幀的總體格式信息躲因。傳輸的時候,就按照這里的方式忌傻,以字節(jié)為單位向物理層進行傳輸(先傳 b0~b7 然后 b8~b16 等等)大脉。

但是,在解釋這個幀的各個域的時候卻采用大端的方式進行描述水孩。假設 b3=0 , b2=1 , b1=0 , b0=0 四者共同組成一個名字為 FLAG 的域镰矿,那么會有類似如下的描述:

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

所以俘种,協(xié)議標準中具體描述某個域的時候秤标,一般直接用大端方式表示的數值( b3b2b1b0=0100 )來描述;而傳輸數據幀或者在協(xié)議標準中描述整體幀的時候宙刘,中給出的卻是小端的方式( b0b1b2b3=0010 )苍姜。 這里的每個字段都是幀的一個部分,在管理幀(后面會說)中長度不固定的部分又叫 IE ( information Element ) 悬包。

另外注意衙猪,內存地址是用來標記每個字節(jié)的而不是位,所以內存里面大端小端也是以字節(jié)而不是位為單位的(前面描述“大端“布近、”小端”的時候卻以位序而非字節(jié)序垫释,這一點需要明辨,不要混淆)撑瞧。假設奔騰的機器棵譬, CPU32 位,采用 Little Endian 方式预伺,那么表示1這個 int 類型整數的時候订咸,假設它在數值上是十六進制的" 00000001 ",那么存放在內存中卻是由低位到高位依次存放的酬诀,由低到高地址依次為: 01 脏嚷、 0000 料滥、 00 (也就是說小端方式存放在內存中的時候然眼,是按照含有最低位的字節(jié)存放在低地址艾船,注意是字節(jié)葵腹,在內存中“位”沒有地址高每,所以沒有大端小端一說)。在傳遞幀的時候践宴,也是按照一個字節(jié)一個字節(jié)的傳輸鲸匿,而一個字節(jié)內部在實際上其實沒有什么端的分別,但是 wireshark 一律使用 b7b6b5b4b3b2b1b0 這樣的方式來用大端的方式顯示阻肩。

總之带欢,需要注意網絡層下面的幀的大端小端問題(不是網絡中的字節(jié)序, TCP/IP 中規(guī)定的網絡字節(jié)序是 Big Endian )烤惊,大致就是:協(xié)議規(guī)定乔煞,傳輸的時候使用 Little Endian ;標準描述的時候用 Big EndianLittle Endian 都用柒室;另外渡贾, Wire shark 軟件抓的包中,好象全都用 Big Endian 來進行標示(無論是信息窗口還是內存窗口都這樣展示)雄右。

注:大端空骚、小端這里的端,為了便于記憶我們可以理解為起點擂仍。大端就是高位存放在前面囤屹,小端就是低位存放在前面。

3逢渔、 CSMA/CA 的機制

與以太網的 CSMA/CD 機制(沖突檢測)相對肋坚, 802.11 采用的 CSMA/CA 機制(沖突避免)。采用這個機制复局,可以保證每次通信的原子性(即每次通信所需要傳輸的多種不同類型的幀之間沒有夾雜其它通信的幀的干擾)冲簿,大體過程是:

  1. 鏈路空閑下來之后,所有 Station 在發(fā)送幀之前都首先等待一段時間(即 DIFS 亿昏,又稱幀間隔時間)峦剔;
  2. 到達 DIFS 之后,所有 Station 進入競爭時間窗口(就是競爭期間)角钩,將這個競爭時間窗口分割成多個 Slot (退避時間間隔)吝沫,每個 Station 隨機選擇一個 Slot
  3. 某個 Station 到達它 Slot 對應的時間后開始發(fā)送數據递礼。選擇的 Slot 越靠前惨险,則 StationDIFS 后等待的時間(退避時間)越短,也越早發(fā)送實際數據脊髓;
  4. 退避窗口的 Slot 有多個辫愉,選擇時可能某個 Slot 被多個站點同時選取,這時發(fā)送會產生真正的數據沖突(如果多個人同時發(fā)送将硝,那么它們都要經過 AP 來轉發(fā)恭朗, AP 無法同時聽見多個人的“說話聲音”)那么 Station 就會再重新選擇并發(fā)送屏镊;
  5. 當某 Station 發(fā)送數據之后,所有 Station 會檢測到鏈路忙痰腮,于是放棄嘗試發(fā)送而芥,等 Station 發(fā)送完數據之后,鏈路開始空閑膀值,于是又進入到1)重新開始這個過程棍丐。

對于以上的機制,如果我們讓某個 Station 經過 DIFS 之后沧踏,選擇的 Slot 越小歌逢,就意味著它發(fā)送幀的機會越大,也就是說這個 Station 的優(yōu)先權越高翘狱。這就是 Qos (質量保證)的基本趋翻,前面也說過, Qos 就是“以一定的優(yōu)先級來保證傳輸的特定要求”盒蟆,要獲得這種優(yōu)先級踏烙,就要有相應的條件(例如“花錢”)(有一種不常用的無競爭發(fā)送,其實就是 DIFS 之后历等,不退避而直接發(fā)送)讨惩。

另外,其實對物理層上來說寒屯,所有的發(fā)送都是廣播荐捻,單播與否只是在鏈路層以上分辨的。上面提到的檢測鏈路是否忙寡夹,可以從鏈路上用軟件方式進行(例如增加幀的特殊字段)处面,也可以直接在物理層上進行,實際因為在物理層上成本較高菩掏,經常用的是前者魂角,具體參見協(xié)議。軟件檢測大致的思路就是智绸,進行一個通信的時候野揪,這個通信包含多個幀,每個幀有不同的作用瞧栗,發(fā)送的第一幀的時候斯稳,會通過其中的某個特殊字段( Duration 字段,也叫 NAV 迹恐,即網絡分配向量挣惰,是一個延遲時間值)告訴所有其它 Station ,在未來的一段時間內,鏈路被占用憎茂,以完成整個通信過程唆涝。這樣,其它 Station 在此期間就不會發(fā)送數據干擾這次通信了唇辨,以后這個通信的每一幀以及其 ACK 確認幀之間都會有一個很小的時間間隔(小于 DIFS ,即 SIFS )能耻,并且每幀會視情況延長那個 Duration 字段赏枚,保證整個通信期間確實不會有其它人干擾,這樣整個通信就是原子性的了晓猛。

4饿幅、幀的來源和目的地址

因為無線網絡中沒有采用有線電纜而是采用無線電波做為傳輸介質,所以需要將其網絡層以下的幀格式封裝的更復雜戒职,才能像在有線網絡那樣傳輸數據栗恩。其中,僅從標識幀的來源和去向方面洪燥,無線網絡中的幀就需要有四個地址磕秤,而不像以太網那樣簡單只有有兩個地址(源和目的)。這四個地址分別是:

  • SRC: 源地址( SA )捧韵,和以太網中的一樣市咆,就是發(fā)幀的最初地址,在以太網和 wifi 中幀格式轉換的時候再来,互相可以直接復制蒙兰。
  • DST: 目的地址( DA ),和以太網中的一樣芒篷,就是最終接受數據幀的地址搜变,在以太網和 wifi 中幀格式轉換的時候,互相可以直接復制针炉。
  • TX: 也就是 TransmiterTA )挠他,表示無線網絡中目前實際發(fā)送幀者的地址(可能是最初發(fā)幀的人,也可能是轉發(fā)時候的路由)篡帕。
  • RX: 也就是 ReceiverRA )绩社,表示無線網絡中,目前實際接收幀者的地址(可能是最終的接收者赂苗,也可能是接收幀以便轉發(fā)給接收者的 ap )愉耙。

注意,其實拌滋,還有一個 BSSID 朴沿,用來區(qū)分不同網絡的標識。在 802.11 幀中,有四個地址字段赌渣,一般只用到其中的三個魏铅,并且,這四個字段對應哪種地址或者使用哪些地址坚芜,根據幀中的另外一個 DS 字段以及幀的類型而有不同的解釋览芳。

下面舉三個例子。

(1)無線網絡中的 Station 和以太網中的 Host 進行通信

Station<- - - - ->AP<---------->Host
  1. Station->Host 的時候

    • 首先 Station->AP 鸿竖,這時候 Src=Station , Dst=Host , Tx=Station , Rx=AP 沧竟,
    • 然后 AP->Host ,這時候 Src=Station , Dst=Host 缚忧,因為 AP 轉發(fā)的時候悟泵,是在以太網中,所以沒有 TxRx 闪水。
  2. Host->Station 的時候

    • 首先 Host->AP 糕非,這時候 Src=HostDst=Station 球榆,
    • 然后 AP->Station 朽肥,這時候, Src=Host , Dst=Station , Tx=AP , Rx=Station 持钉。

(2)無線網絡中的 Station 之間進行通信

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

Station1->Station2

  • 首先 Station1->AP 鞠呈, Src=Station1 , Dst=Station2 , Tx=Station1 , Rx=AP 呀打,
  • 然后 AP->Station2 哺呜, Src=Station1 , Dst=Station2 , Tx=AP , Rx=Station2

可見垦缅,在無線網絡中舀射,始終存在 TxRx 窘茁,但是,這四個地址中還是只有三個地址足矣脆烟。

(3)當兩個無線網絡中的 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->Station2Src=Station1 , Dst=Station2 , Tx=AP2 , Rx=Station2 拜鹤。

注意框冀,這個時候, AP 起到橋接的作用敏簿,所以四個地址各不相同明也,同時宣虾, AP 之間或者 StationAP 之間的那部分連接,也可以是以太網温数。

綜上可知绣硝,無線網絡中的 Station 想要通信,必須經過 AP 來進行“轉發(fā)”撑刺,其實鹉胖, TxRx 是無線網絡中的發(fā)和收,也就是 Radio 够傍;而 SrcDst 是真正的發(fā)送源和接收者甫菠。

5、 SleepPower save (節(jié)電)

其實王带,無線網絡中的 Power save 是指 StationSleep (睡眠),并且這個 Sleep 并不是整個系統(tǒng)的 Sleep 市殷,確切來說愕撰,應該是其 wifiReceiver (接收天線)的 SleepStation 在睡眠的期間還是可以 Transmit (發(fā)送)的醋寝,只是當 AP 知道 StationReceiver 處于 Sleep 狀態(tài)時搞挣,就不會給 Station 發(fā)送幀了。 StationSleep 之前音羞,會給 AP 發(fā)送一個特殊的幀囱桨,告訴 AP 說它( Station )要睡眠了, AP 通過這個幀來記住是這個 Station 睡眠了嗅绰,然后 AP 就不會給這個 Station 單獨發(fā)送數據了舍肠。

當有和這個 Station 通信的包想通過 AP 轉達的給這個 Station 時候, AP 會幫這個 Station 將它們緩存起來窘面,然后在 Beacon 廣播幀中添加一個特殊的位(實際這個位是一個 bitmap 中的位翠语,這個 bitmap 表示所有和該 AP 建立了關聯(lián)的 Station ,而這個睡眠的 Station 的相應位為被置1則表示有消息要傳達給這個 Station )财边,來表示這個 Station 有數據到達了( Beacon 是定時廣播的幀肌括,前面說過它是用來通知無線網絡,這個 AP 的狀態(tài))酣难,而不是直接發(fā)送給 Station 谍夭。而這個睡眠的 Station ,會在睡眠期間不時地醒來憨募,以檢查 Beacon 幀中的狀態(tài)紧索,當發(fā)現(xiàn)有給它的數據的時候,就會通過發(fā)送一個 Power Poll 的幀來收取數據菜谣,收取之后繼續(xù)睡眠(所以 ping 一個睡眠狀態(tài)的 Station 齐板,響應的時間要慢好多)。

對于發(fā)送給這個 Station 的廣播幀,其處理方式和普通幀有一點不同:當有廣播幀要傳達給這個 Station 的時候甘磨, AP 會為這個 Station 緩存發(fā)送給它的廣播幀橡羞,但是緩存的時間是 DTIM (一般為 300ms )。注意:單播幀緩存的時間不一定是多少济舆,廣播幀卻緩存 DTIM 的時間卿泽。 AP 每發(fā)送一個 Beacon 的時候,都會將 Dtim 減少1滋觉,而 Station 睡眠的時候签夭,會不時地醒來,查看一下 Beacon 幀中的 dtim 值椎侠。當 Station 發(fā)現(xiàn)其 DTIM 值變成0的時候第租,就醒來長一些的時間,看看有沒有廣播給它的數據我纪,如果有的話就用類似 Power Save Poll 的幀接受慎宾,沒有則繼續(xù)睡眠。

這里浅悉,接收數據是根據是否有 more data 類似的字段來確認是否有更多的數據的趟据;重發(fā)的幀是用類似 retry 的字段來標記。另外注意术健,當 Station 進行 Sleep 的時候汹碱,還是可以主動 Tranmit 消息的,當 Station 主動 Transmit 消息的時候荞估,它會等待 Reply 咳促,所以這個時候, Receiveron 的狀態(tài)勘伺。用一個圖示來標識 Sleep 等缀, ReceiveTransmit 時的電源消耗狀況娇昙,大致如下:

          power
            ^
trans       |                   ------------------------
            |                   |                       |
receive     |        -----------|                       |
            |        |                                  |
sleep       |--------|                                  |--------------------
            |----------------------------------------------------------------------> time

可見不同狀態(tài)尺迂,電源消耗狀態(tài)不同(傳送比接收更耗電),另外冒掌,如果電源供電不足噪裕,在某個狀態(tài)中就會出現(xiàn)通信失敗的情況。(好像 ap 上面 broadcom 芯片中的睡眠之后股毫,醒來立即重新發(fā)送的時候經常開始會失敗膳音,可能就是這個原因)。

6铃诬、建立Association

下面是 StationAp 建立開放 Association 的過程:

  1. Ap 周期性地廣播 Beacon
  2. Station 廣播 Probe Request 到達 Ap
  3. ApStation 發(fā)送 Probe Reponse
  4. StationAp 發(fā)送 ACK
  5. StationAp 發(fā)送 Authentication Request
  6. ApStation 發(fā)送 ACK
  7. ApStation 發(fā)送 Authentication Reponse
  8. StationAp 發(fā)送 ACK
  9. StationAp 發(fā)送 Association Request
  10. ApStation 發(fā)送 ACK
  11. ApStation 發(fā)送 Association Reponse
  12. StationAp 發(fā)送 ACK
  13. StationAp 開始相互通信祭陷。

可見苍凛,廣播幀不用回復,單播幀需要用 ACK 確認兵志, ACK 本身不用被確認醇蝴。

四、其它

如有更多補充性內容想罕,有待添加悠栓。

本文內容主要來自學習的總結以及網絡,主要集中于無線網絡中物理層以上相對比較常見的部分按价,如果想要理解更詳細和全面的內容則需參考相關書籍以及網絡協(xié)議惭适。由于對此方面的知識也是在初步學習之中,若文章中有錯誤和不完整之處楼镐,謝謝讀者指正癞志。_

?著作權歸作者所有,轉載或內容合作請聯(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
  • 文/不壞的土叔 我叫張陵洼滚,是天一觀的道長埂息。 經常有香客問我,道長遥巴,這世上最難降的妖魔是什么千康? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮铲掐,結果婚禮上拾弃,老公的妹妹穿的比我還像新娘。我一直安慰自己摆霉,他們只是感情好豪椿,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布奔坟。 她就那樣靜靜地躺著,像睡著了一般搭盾。 火紅的嫁衣襯著肌膚如雪咳秉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天增蹭,我揣著相機與錄音滴某,去河邊找鬼。 笑死滋迈,一個胖子當著我的面吹牛霎奢,可吹牛的內容都是我干的。 我是一名探鬼主播饼灿,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼幕侠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碍彭?” 一聲冷哼從身側響起晤硕,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庇忌,沒想到半個月后舞箍,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡皆疹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年疏橄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片略就。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡捎迫,死狀恐怖,靈堂內的尸體忽然破棺而出表牢,到底是詐尸還是另有隱情窄绒,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布崔兴,位于F島的核電站彰导,受9級特大地震影響,放射性物質發(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