目的: 明瞭CSMA / CA的工作原理 解析無線網路協定下框架資料傳送的格式 二‧802.11x無線網路協定分析 目的: 明瞭CSMA / CA的工作原理 解析無線網路協定下框架資料傳送的格式
背景資料 維基百科(http://zh.wikipedia.org)對IEEE 802.11的說明如下:「無線區域網路的第一個版本發表於1997年,其中定義了介質訪問接入控制層(MAC層)和物理層。物理層定義了工作在2.4 GHz的ISM頻段上的兩種無線調頻方式和一種紅外傳輸的方式,總數據傳輸速率設計為2Mbit/s。兩個設備之間的通信可以自由直接(ad hoc)的方式進行,也可以在基站(BaseStation;BS)或者訪問點(Access Point;AP)的協調下進行。為了在不同的通訊環境下取得良好的通訊品質,採用 CSMA / CA(Carrier Sense Multiple Access / Collision Avoidance)硬體溝通方式。」
802.11家族協定規格
802.11規範兩種無線網路架構 Ad-Hoc(點對點)模式:Ad-Hoc結構是一種省去無線AP(Access Point,稱為基地台或存取點)而建立起的對等網路結構,只要安裝了無線網路裝置的電腦,彼此之間即可實現無線互連,其原理是網路中的一台電腦主機建立點對點連接相當於虛擬AP,而其它電腦就可以直接通過這個點對點連接進行網路互連與共享。由於省去了無線AP,Ad-Hoc無線區域網路的架設過程十分簡單,不過一般的無線網路裝置在室內環境下傳輸距離通常為40公尺左右,若超過此有效傳輸距離,就不能實現彼此之間的通訊,因此該種模式非常適合一些簡單甚至是臨時性的無線互連需求。
802.11規範兩種無線網路架構
802.11規範兩種無線網路架構 Infrastructure(基礎)模式:所謂Infrastructure是在一種整合有線與無線區域網架構的應用模式,與Ad Hoc模式不同的是,配備無線網路裝置的電腦必須通過AP來進行無線通訊,如圖所示。通過這種架構模式,即可實現網路資源的共享。
802.11規範兩種無線網路架構
802.11規範兩種無線網路架構 Infrastructure模式其實還可以分為「無線AP+無線網卡」模式和「無線路由器+無線網卡」模式兩種。 「無線AP+無線網卡」模式裡,當網路中存在一個AP時,無線網卡的覆蓋範圍將變為原來的兩倍,並且還可以增加無線區域網路所容納的網路設備。無線AP的加入,豐富了組網的方式,但是無線AP的作用類似於有線網路中的集線器,只有單純的無線覆蓋功能。 「無線路由器+無線網卡」模式是現在很多家庭採用的無線組網模式,這種模式的無線路由器就相當於一個無線AP加路由的功能。無線網路可以做到一種有線+無線的寬帶混合網絡。雖然無線網路很自由,但有時候還是會出現信號不太好的狀況,此時這種模式的有線網絡優勢就突顯出來了。
隱藏節點(Hidden Node)的問題 802.11無線網路由於無線電波在空氣中進行傳遞時,訊號的強度會隨距離增加而不斷衰減,加上干擾的加入,所以對傳送站台而言,在它發送訊號的同時,並無法保證能確實偵測到其他站台的訊號。 無線網路有隱藏節點(Hidden Node)的問題,也就是說雖同屬於一個無線網路的站台也不見得能查覺對方傳送的訊號。
隱藏節點(Hidden Node)的問題 站台A可以偵測到AP,站台B也可以偵測到AP,但由於訊號強度的問題,站台A與站台B並無法互相偵測到,若此時它們同時傳送訊號,它們自己不會發現有碰撞,但在AP 將會發生碰撞。
802.11 無線區域網路的資料連結層 無線網路不易偵測碰撞 DCF - CSMA/CA 機制 PCF - 無需競爭的資料傳送方式 802.11 無線區域網路的資料連結層 無線網路不易偵測碰撞 DCF - CSMA/CA 機制 PCF - 無需競爭的資料傳送方式 封包的分割與重組
DCF - CSMA/CA 機制 在 802.11 規格中, 提供 CSMA/CA 機制的功能稱為 Distributed Coor-dination Function (散協調功能, 簡稱 DCF)。DCF 提供的 CSMA/CA 機制如下:
DCF - CSMA/CA 機制 1. 傳送端要傳送資料前, 先進行載波感知 (Carrier Sense) 的動作, 也就是偵測它所用的頻道是否有別人正在使用。偵測的期間需為 DIFS (Distributed InterFrame Space 或 DCF InterFrame Space) 時間加上一個亂數時間, 若在此時間內都沒人使用, 就進行下一步;否則重新開始下一次的偵測。
DCF - CSMA/CA 機制 2. 傳送端送出 RTS 封包給接收端, 告訴對方它想要傳送資料。 3. 接收端收到 RTS 封包後, 會在 SIFS 時間內回應 CTS 封包給接收端。 4. 傳送端收到 CTS 封包後, 會開始傳送資料封包, 若發生碰撞, 回到第 1 步重新嘗試。 5. 接收端收到資料後會回應 ACK 封包進行確認, 若傳送失敗, 回第 1 步重新嘗試。
RTS/CTS 封包 在 RTS/CTS 封包中也會包含隨後的傳送過程會花多少時間的資訊, 因此未參與此次傳輸的站台, 也會由 RTS/CTS 封包中得知接下來的一段時間內別人會使用傳輸介質, 因此若它們也要傳送資料, 會自動多等這段時間:
RTS/CTS 封包
隱藏節點傳送的問題
例外情況, 可省略傳送 RTS/CTS 封包的動作 在部分型號的 AP 的設定項目中, 有一項 RTS Threshold 欄位, 如果要傳送的封包長度小於這個欄位的設定值 (以 Byte 為單位), 便不會傳送 RTS封包, 以提高網路效率。但要注意的是, 若網路中有隱藏站台, 則設太大的RTS Threshold, 將導致時常發生碰撞。
例外情況, 可省略傳送 RTS/CTS 封包的動作 進行廣播或多點傳送 (Multicast) 時。若每個收到廣播封包的站台都要回應 CTS/ACK 封包的話, 豈不是要搶用傳輸介質搶瘋了;而發出廣播的站台若沒在特定時間內收到某幾個站台的 ACK, 難不成要再廣播一次?因此在進行廣播或多點傳送 (Multicast) 時, 不會用到 RTS/CTS/ACK 等封包。
PCF - 無需競爭的資料傳送方式 802.11 MAC 層提供了另一種無需競爭 (Contention Free, 簡稱CF) 的傳輸介質存取控制方式, 由 Point Coordination Function (PCF) 所提供。 PCF 功能為 AP 的選用功能 (Optional), 因此只能在 Infrastructure 模式中使用, 且必須 AP 有提供此功能才行。 在 CF 模式下, 能否傳送資料是由 AP (稱為協調者 (Point Coordinator)) 所決定。
進入 CF 模式的情形 1. AP 會定時廣播 Beacon 封包以宣傳它的存在, Beacon 封包內含 ESSID、目前使用的頻道編號 (Channel) 等資訊。要進入 CF 模式時, AP 會在 Beacon 封包中加入使用 CF 模式的時間。各站台收到此封包時, 會將此時間加入它們的等待時間, 因此接下來不會有人搶用媒體, 整個網路就進入 CF 模式。
進入 CF 模式的情形 2. AP 開始依照其內部清單的順序, 用 CF-Poll 封包輪流詢問各站台是否有需要傳送資料。如果在詢問時, 恰好有資料需傳給該站台, AP 會將資料連同詢問一起送出, 稱為 Data + CF-Poll 封包。 3. 被詢問的站台會在 PIFS (PCF InterFrame Space) 時間內回應, 回應的內容有下列 4 種:
進入 CF 模式的情形 若沒有資料需傳送, 則回應不含資料的空封包。 若有資料需傳送, 則回應資料封包。 若站台收到的是 Data+CF-Poll 封包, 但沒有資料要傳送, 則回應 CF 模式下的 ACK 封包 (稱為 CF-Ack)。 若站台收到的是 Data+CF-Poll 封包, 且有資料要傳送, 則回應含資料及確認資訊的 Data+CF-Ack 封包。
進入 CF 模式的情形 4. AP 繼續詢問清單中的下一個站台, 若在前一步 AP 收到的是 Data+CF-Ack 封包, 則 AP 會將回應前一站台的 ACK 訊息和詢問下一個站台的 CFPoll 放在同一個封包中送出, 稱為 CF-oll+CF-Ack 封包。同理, 若剛好有資料要傳給下一個站台, 也會一併送出, 形成 Data+CF-Poll+CF-Ack 封包。
進入 CF 模式的情形 5. 重複 3、4 步, 直到 CF 時間結束為止。 6. AP 送出 CF-End 或 CF-End + CF-Ack 封包公告 CF 模式結束, 接下來各站台又要以 DCF 提供的機制來競爭媒體存取權了。
封包的分割與重組 802.11 MAC 層提供 2 種機制以確保資料傳送的正確性: 在封包結尾加上以 CRC (Cyclic Redundancy Check) 演算法算出的錯誤檢查碼, 讓接收端可以檢查收到的封包內容是否正確無誤。 將超過一定大小的封包切割成較小的封包分開傳送, 以降低長時間傳送可能受到的干擾影響。
封包的分割與重組 在大多數的無線網路卡和 AP 設定中, 會有個 Fragmentation Threshold 的設定值 (單位為 Byte), 其功用就是設定當封包超過多少 Byte 時, 就要切割成小封包來傳送。而接收端在收到切割過的小封包時, 也會自動將收到的小封包重組回原來的狀態, 再進行處理。
封包的分割與重組 在 DCF 模式下, 傳送一連串切割過的封包時, 只需在開始時傳送一次RTS/ CTS 封包, 其過程如下: 2. 傳送端送出第 1 個切割封包。 3. 接收端收到後回應 ACK 封包。
封包的分割與重組 至於在 PCF 模式下, 各分割封包仍需依照原有的 CF 輪詢機制一一傳送, 無法一次接連送出。 4. 傳送端送出第 2 個分割封包, 接收端回應第 2 個 ACK 封包。傳送端送出第 3 個分割封包,接收端回應第 3 個 ACK 封包..., 直到所有分割封包都送完為止。 至於在 PCF 模式下, 各分割封包仍需依照原有的 CF 輪詢機制一一傳送, 無法一次接連送出。
802.11 封包內容 封包的種類 封包的結構 表頭的欄位結構
封包的種類 資料 (Data) 封包:用來傳送資料的封包。但請注意, 不含任何資料的空封包也屬於資料封包。 控制 (Control) 封包:控制媒體存取的各種封包。 管理 (Management) 封包:其它有關無線區域網路運作的封包, 像是站台與站台之間的連接、身份驗證等等, 都屬於管理封包。
封包的結構 表頭 (Header):包含了位址、控制碼等資訊, 長度為 30 bytes。 本體 (Body):此部分為存放要傳送的資料, 因此長度會隨資料量變動 (0 ~ 2312 bytes)。
封包的結構 錯誤檢查碼 (FCS, Frame Check Sequence):MAC 層會根據封包的內容 (包含表頭和封包本體), 代入特定的公式計算出 4 bytes 的錯誤檢查碼, 然後附加在封包最後面。
表頭的欄位結構 表頭包含了位址、控制碼等資訊, 長度為 30 bytes, 以下是組成表頭的各個欄位。
封包控制 (Frame Control) 細分成 11 個欄位, 總長度為 2 bytes。 用來標示封包的各項基本資訊, 像是封包的種類、封包本體中的資料是否有加密、是否還有後續的封包 (使用分割封包功能時) 等等。
封包控制的欄位 Protocol Version:長度為 2 Bits, 存放協定版本。 Type:長度為 2 Bits, 存放封包的類型。 Subtype:長度為 4 Bits。細分成數種不同的子類型。 To DS:長度為 1 Bit, 如果資料封包是要送往 AP, 此欄位才會是 1。 From DS:長度為 1 Bit, 如果資料封包是來自 AP, 此欄位會是 1。
Type 與 Subtype 欄位配合
Type 與 Subtype 欄位配合
Type 與 Subtype 欄位配合
封包控制的欄位 More Fragments:長度為 1 Bit, 如果資料封包或管理封包後續還有其他的封包, 此欄位則為 1;反之為 0。 Retry:長度為1 Bit, 對資料封包或管理封包來說, 如果是重新傳送的封包, 此欄位為 1;反之為 0。 Power Management:長度為 1 Bit, 用來識別站台的電源管理模式。
封包控制的欄位 More Data:長度為 1 Bit, 此欄位資料是由 AP 傳送給處於省電模式的站台。 Wired Equivalent Privacy:長度也是 1 Bit。當封包本體經過 WEP 加密之後, 此欄位的值為 1, 沒有 WEP 加密則為 0。 Order:長度為 1 Bit, 如果值為 1, 表示封包是依照順序傳送;如果值為 0 則表示沒有按照順序傳送。
時間長度 (Duration/ID) 此欄位記錄封包傳送過程所需要的時間, 詳細的用途說明, 請參閱 DCF-CSMA/CA 機制。
位址 (Address) 由於在 Infrastructure 網路中, 需透過 AP 或 DS 轉送, 才能將資料送達目的地。因此封包中除了一般通訊協定都有的來源和目的位址外, 也需記錄 AP、DS 這些轉運站的位址, 所以封包中有多達 4 個位址欄。
位址存放的資訊
序號 (Sequence Control) 使用封包分割功能時, 此欄位會記錄這個封包是屬於所有分割封包中的第幾個, 以利接收端的 MAC 層能依正確的順序將封包重新組合。
實驗方法 由於802.11框架內容較為複雜,而且要擷取框架需要有特殊的軟體(如OmniPeek ,網址為http://www.wildpackets.com)並搭配特定的無線網路裝置(http://www.wildpackets.com/support/downloads/drivers),一般實驗室並無此設備,有需要的讀者可上網搜尋相關資訊。 在此依然使用Wireshark來擷取框架,不過要注意的是需將無線網路裝置的雜亂模式關閉,否則是無法擷取到任何框架的。
關閉無線網路裝置的雜亂模式
擷取的框架 擷取的框架跟先前的Ethernet是相通的,雖然不是完整的802.11框架內容,但是對一般的應用而言,算是差強人意了。
WinAirCrackPack破解WEP WPA WinAirCrackPack工具包是一款無線局域網掃描和密鑰破解工具,主要包括airodump和aircrack等工具。它可以監視無線網路中傳輸的資料,收集資料包,並能計算出WEP/WPA密鑰。 http://cofe6.blogspot.com/2008/05/winaircrackpack-wifi.html http://dreamyeh.pixnet.net/blog/post/25241380 BackTrack
學習評量 可支援無線網路協定解析軟體還有哪些? 無線網路位於OSI網路協定的第幾層? 請說明CSMA/CA通訊協定的運作原理。 干擾無線網路通訊品質的因素有哪些? Ad Hoc無線網路的應用場合有哪些? 何謂超級訊框?何謂免競爭模式? IEEE 802.11的訊框間隔有哪些種類型?分別應用在哪些場合? 說明IEEE 802.11的重傳機制。 說明IEEE 802.11訊框內有幾個位址欄位?有何用途? 市調:針對不同廠牌的無線網路卡做價格和品質間的分析。