802.11 學習筆記

一、網絡服務

802 . 11 總共提供 9 種服務:

分佈式 distribution

接入點收到幀 , 就會使用分佈式服務將真傳送至目的地。

 

整合 ( integration )

該服務由分佈式系統提供,它讓分佈式系統得以鏈接至非 IEEE802.11 網絡

 

關聯( association

移動式工作站向接入點登記,分佈式系統即可根據登記信息判斷哪個移動式工作站該使用哪個接入點。只有關聯之後才能進行身份驗證。在身份驗證完成之前,接入點會丟棄來自工作站的所有數據。

 

重新關聯( association )

當移動式工作站在同一個擴展服務區域裏的基本服務區域之間移動時,它必須隨時評估信號的強度並在必要時切換所關聯的接入點。重新關聯是由移動式工作站所開啓,當信號強度現實最好切換關聯對象時便會重新關聯。

 

取消關聯 ( disassociation )

結束現有關聯。

 

身份驗證 authentication

認證是 STA 在掃描到合適的 AP 之後 , 只有通過認證該 STA 才能通過 AP 使用 WLAN 。

現有的認證方式有: (1)open ,即不需要認證,只要交互一個 null 幀 (2)shared key ,需要一個 4 次握手的過程 (3)802.11i ,需要到認證服務器認證

當 STA 完成認證之後只需要發送 ReAssociation Request 幀 , 然後等待 ReAssociationResponse 幀完成關聯也就完成了整個切換的過程。

 

 

解除身份驗證

 

機密性

Wep 等一些加密機制

 

MSDU 傳遞 ( MAC Service Data Unit )

負責將數據傳送給實際的接收端。

傳輸功率控制 ( Transmit Power Control 簡稱 TPC )

歐洲標準要求操作與 5G Hz 頻帶的工作站必須能夠控制顛簸的傳輸功率,避免干擾其他同樣使用 5G Hz 頻帶的用戶。

 

動態頻率選擇 ( Dynamic Frequency Selection 簡稱 DFS )

無線局域網必須能夠檢測到雷達系統並選擇未被雷達系統所使用的頻率。

 

二 . 網絡類型

 

基本服務集 ( basic service set , 簡稱 BBS ) 由一組相互通信的工作站構成。

 

BSS 分爲兩種 :

獨立型網絡 i ndependent BSS : 通常由少數幾個工作站爲了特定目的而組成的暫時性網絡。

基礎結構型網絡 Infrastructure networks : 有接入點。接入點負責基礎結構型網絡的所有通信。

 

 

擴展服務區域 extended service set ( ESS )

將幾個 BSS 串聯稱爲 extended service set 。所有位於同一個 ESS 的接入點使用相同的服務組標示符 ( service identifier , 簡稱 SSID )

三. MAC 層

數據鏈路層的兩個子層

邏輯鏈路控制 LLC (Logical Link Control) 子層

媒體接入控制 MAC (Medium Access Control) 子層

§    與接入到傳輸媒體有關的內容都放在 MAC 子層 LLC 子層則與傳輸媒體無關 不管採用何種協議的局域網對 LLC 子層來說都是透明的

 

 

網卡及其功能

§

§ 數據的封裝與解封 發送時將上一層交下來的數據加上首部和尾部, 成爲以太網的幀。接收時將以太網的幀剝去首部和尾部,   然後送交上一層

§ 鏈路管理 主要是 CSMA/CD 協議的實現

§ 編碼與譯碼 即曼徹斯特編碼與譯碼

§ 網卡從網絡上每收到一個 MAC 幀就首先用硬件檢查 MAC 幀中的 MAC 地址如果是發往本站的幀則收下,然後再進行其他的處理

  否則就將此幀丟棄,不再進行其他的處理

 

 

四 . 幀

802.11 幀主要有三種類型 : 數據幀、控制幀、管理幀

 

數據幀

幀格式:

Protocol :代表MAC 協議版本

Type 與Subtype :制定使用幀類型( 控制幀、數據幀、管理幀)

Address1 :幀接收端

Address2 :發送端的地址

Address3 :供接入點與分佈式系統過濾之用

Duration : 媒介使用權 ,RTS 傳送段計算 RTS 幀結束後還需要多長時間用於幀交換。

 

地址信息

功能

ToDS

FromDS

Address 1 ( 接收端)

Address 2 ( 發送端)

Address 3

Address 4

IBSS

0

0

DA

SA

BSSID

未使用

To AP ( 基礎結構型)

1

0

BSSID

SA

DA

未使用

From AP ( 基礎結構型)

0

1

DA

BSSID

SA

未使用

WDS ( 橋接器)

1

1

RA

TA

DA

SA

 

幀送至服務器

對應第二行

Address1 : RA/BSSID              Address2 :  SA/TA             Address3 :  DA

 

幀來自分佈式系統

對應第三行

Address1 : RA/DA              Address2 : TA/BSSID               Address3 : SA

 

控制幀:

通常與數據幀搭配使用,負責區域的清空、信道的取得、載波監聽的維護,並於收到數據時予以肯定確認,藉此提高工作站之間數據傳送的可靠性。

因爲無線收發器通常只有半雙工工作模式 即無法同時首發數據 爲防止衝突 802.11 允許工作站使用 request to send(RTS) clear to send CTS 信號來清空傳送區域。

RTS/CTS進行清空

節點1有個幀待傳,首先發送RTS幀,預約無線鏈路的使用權、要求接收到這一幀的其他工作站保持沉默。

接收到RTS幀,接收端會以CTS幀應答,RTS會令附近的工作站保持沉默。

RTS/CTS完成交換後,可發送frame。

 

媒介訪問權只留給單播幀使用,組播和廣播幀只是簡單的傳送。

這種機制一般只用在高用量的環境下以及傳輸競爭比較激烈的場合,對低用量環境而言,暫不需要。

 

 

RTS幀

Duration:媒介使用權,RTS傳送段計算RTS幀結束後還需要多長時間用於幀交換。

Address1:大型幀的工作站地址

Address2:RTS的發送端

Rts的Duration

 

CTS幀

Address1:接收端的字段,拷貝於RTS的發送端地址。

 

ACK幀

 

除了這 3 種控制幀,還有 PS-POLL 幀(省電輪詢)。

 

 

管理幀

負責監督,用來加入或退出無線網絡以及處理接入點之間關聯的轉移事宜。

爲了限制廣播或組播管理幀所造成的副作用,收到管理幀後,必須加以查驗。只有廣播或者組播幀來自工作站當前所關聯的BSSID時,它們纔會被送至MAC管理層。唯一例外是beacon幀。

 

幀主體分兩種:固定字段、信息元素。

固定字段( Fixed-Length Management Frame Components ):數據使用長度固定的字段。一共有10種。

 

1. Authentication Algorithm Number 身份驗證算法編號:

     0 :開放系統身份驗證

     1 :共享密鑰身份驗證

     2~65535; 保留

2. Authentication Transaction Sequence Number 身份驗證處理序列號

      用以追蹤身份驗證進度。

3.beacon interval 字段

      用來設定 beacon 信號之間相隔多少時間單位。

4. Capability Information 性能信息

傳送 beacon 信號的時候,它被用來通告網絡具備何種性能。

5. Current AP Address

移動式工作站用此字段表明當前關聯的接入點的 MAC 地址,便於關聯與重新關聯的進行。

6. Listen interval

      工作站爲節省電能,暫時關閉 802.11 的天線,休眠中的工作站會定期醒來聆聽往來消息,以判斷是否有幀緩存於接入點。

      其實就是以 Beacon interval 爲單位所計算出的休眠時間。

7. Association ID 關聯標示符

      工作站與接入點關聯時就會被賦予一個關聯標識符來協助控制和管理。

8. Timestamp 時間戳

      用來同步 BSS 中的工作站。

9. Reason Code 原因代碼

      對方不適合加入網絡時,工作站會發送 disassociation (取消關聯)或 deauthentication (解除身份驗證)幀作爲響應。該字段用以表示產生該原因代碼的理由。

10. Status Code

       表示某項操作成功或失敗。

信息元素:

管理幀的可變長組件。

一般管理幀的信息元素

Element ID

名稱

0

服務集標示符(SSID)

1

支持速率Supported Rates

2

跳頻參數集FH Parameter Set

3

直接序列參數集DS Parameter Set

4

無競爭參數集CF Parameter Set

5

傳輸指示映射Traffic Indication Map (TIM)

6

IBSS 參數集

7 (802.11d)

Country

8 (802.11d)

Hopping Pattern Parameters

9 (802.11d)

Hopping Pattern Table

10 (802.11d)

Request

11-15

Reserved; unused

16

Challenge text

17-31

保留

32 (802.11h)

功率限制Power Constraint

33 (802.11h)

Power Capability

34 (802.11h)

發送功率控制請求Transmit Power Control (TPC) Request

35 (802.11h)

發送功率控制報告TPC Report

36 (802.11h)

所支持的信道Supported Channels

37 (802.11h)

信道切換聲明Channel Switch Announcement

38 (802.11h)

測量請求Measurement Request

39 (802.11h)

測量報告Measurement Report

40 (802.11h)

靜默Quiet

41 (802.11h)

IBSS 動態選頻(DFS )

42 (802.11g)

ERP information

43-49

Reserved

48 (802.11i)

強健安全網絡Robust Security Network

50 (802.11g)

擴展支持速率Extended Supported Rates

32-255

Reserved; unused

221

Wi-Fi 保護訪問Wi-Fi Protected Access

 

管理幀類型

管理幀的主體包含的固定字段與信息元素是用來運送信息的。管理幀主要有以下幾種,負責鏈路層的各種維護功能。

1.    Beacon (信標)幀

主要用來聲明某個網絡的存在。定期傳送的信標可讓 station 得知網絡的存在,從而調整加入該網絡所必需的參數。

Beacon (信標)幀

2. Probe Request 探查請求

移動工作站利用 Probe Request 探查請求幀來掃描區域內目前有哪些 802.11 網絡。

Probe Request 幀

包含 2 個字段

SSID :可被設定爲特定網絡的 SSID 或任何網絡的 SSID 。

Support rates :移動工作站所支持的速率。

 

3.Probe Response 幀

如果 Probe Request 所探查的網絡與之兼容,該網絡就會以 Probe Response 幀響應。送出最後一個 beacon 幀的工作站必須負責響應所收到的探查信息。

Probe Request 幀中包含了 beacon 幀的所有參數, station 可根據它調整加入網絡所需要的參數。

Probe Request 幀

4. IBSS announcement traffic indication map (ATIM)

IBSS 的通知傳輸只是消息( ATIM )幀

 

5. Disassociation and Deauthentication 取消關聯、解除驗證

取消關聯、解除驗證幀

6. Association Request

關聯請求幀

7. Reassociation Request

重新關聯

 

8. Association Response and Reassociation Response

關聯響應,重新關聯響應

9. Authentication 身份驗證幀

身份驗證幀

Authentication Algorithm Number :用於算法選擇

 

10. Action frame

 

幀傳送、關聯與身份驗證的狀態

 

狀態圖

State1 :未經認證且尚未關聯

State2 :已經認證但尚未關聯

State3 :已經認證且已經關聯

 

幀等級分類

 

控制幀

管理幀

數據幀

第一級幀

Request to Send (RTS)

Probe Request

ToDS 或 FromDS 位都設爲 0 的所有幀

Clear to Send (CTS)

Probe Response

 

Acknowledgment (ACK)

Beacon

 

CF-End

Authentication

 

CF-End+CF-Ack

Deauthentication

 

 

Announcement Traffic Indication Message (ATIM)

 

第二級幀

None

Association Request/Response

None

 

Reassociation Request/Response

 

 

Disassociation

 

第三級幀

PS-Poll

Deauthentication

任何幀,包含 ToDS 或 FromDS 位都設爲 1 的所有幀

 

 

 

madwifi

 

 

1 .

madwifi 的結構,主要是有三層, hal 是硬件層,然後是 ath 層,在之上的是 802.11 層,整個 madwifi 源碼中重要的就是 hal 文件夾(硬件), ath 文件夾, ath_rate 文件夾 , net80211 文件夾( 802.11 協議相關), tools 文件夾(一些工具)

 

當驅動被加載的時候,它會取探測物理設備是否存在,然後通過 ath_attach() 函數安裝此設備。同時,驅動會自動創建一個虛擬的網絡接口,通過函數 ieee80211_create_vap( ) 實現。這個虛擬網絡接口的初始狀態爲 INIT ,在此狀態下硬件不會接收數據包。

 

當實際的 AP 接口開始工作(例如通過 ifconfig ath0 up 命令激活),驅動會將對硬件進行適當的設置並且進入 SCAN 狀態。

 

在 SCAN 狀態下, AP 會掃描所有它支持的通道。

掃描包括兩個方面,一個是主動掃描 ,即 AP 會發送適當的請求報文;一個是被動掃描 ,即 AP 監聽臨近 AP 的 beacons 。

 

在 SCAN 狀態下, AP 不會傳輸數據報。

在所有的通道都掃描完成以後, AP 選擇一個無線信號強度最低的通道然後進入 RUN 狀態( ap_end( ) )。

 

在 RUN 狀態下, AP 執行一個存取節點的普通操作。它約每隔 100ms 向外廣播一個 beacon 消息( ath_beacon_send( ) ) ,

 

應答其它 AP 發送的請求,應答終端發送來的認證消息和連接 / 重連接消息,並且傳輸數據包。

 

當接口被關閉的時候, AP 會發送取消認證消息到每一個連接了的終端,然後釋放所它們所佔有的資源並進入 INIT 狀態。

 

需要注意控制消息的使用,如: RTS 、 CTS 和 ACK ,它們是被驅動 HAL (硬件抽象層)控制的。

 

 

 

結構體 ieee80211com 中定義了各種幀處理函數指針

3 .   數據接收

 

大多數的 CSMA/CA 機制被貫徹在 HAL 或者硬件中。當一個新的包到達時,開源的驅動部分是通過中斷來獲取通知的 ( ath_intr( ) ) 。

 

包被 linux 的 tasklet 來處理( ath_rx_tasklet( ) ),這個包所在 skb 結構被找到並且

它的目標節點正確。

 

函數 ieee80211_input( ) 接收各種不同類型的包,在這個函數中管理報文包被傳遞給 ieee80211_recv_mgmt( ) 函數處理,數據包被做相關的處理後變成以太幀格式然後傳送給 linux 內核 ( netif_rx( ) ) 或者 , 如果工作在橋模式下 , 則通過 dev_queue_xmit( ) 發送此數據包

 

 

 

4 . 數據的發送

 

Linux 內核通過 dev->hard_start_xmit 輪流調用虛擬接口的 ieee80211_hardstart() 函數和物理接口的 ath_hardstart () 函數實現包的傳輸。

 

ath_hardstart () 函數將以太格式的包封裝成 802.11 格式的包。

 

ath_tx_start () 函數將需要加密的包進行加密處理 , 並將保存此包的 skb 映射到 DMA 緩衝 , 並根據包的優先級選定一個傳輸隊列 ( QoS control ) 。 ath_tx_txqaddbuf( ) 函數將映射後的緩衝 ( buffer ) 插入到選定的傳輸隊列裏面並通知 HAL 開始傳輸。

 

管理幀由 802.11 層產生。它們通過 ieee80211_mgmt_output ()函數發送。

 

Beacon 消息由 HAL 觸發。當發送 beacon 消息的時間到達 , HAL 會製造一箇中斷 , 然後調用函數 ath_beacon_send( ) 來發送。 Beacon 消息直接被傳遞到 HAL 併發送。

 

HAL 成功發送完一個包後也會產生一箇中斷來通知驅動。

 

 

函數 ath_tx_tasklet() 會更新發送相關的信息。如果有工作在監視模式 ( monitor mode ) 的虛擬端口存在 ,

 

這個包會在函數 ath_tx_capture() 中被傳遞給監視接口。

 

 

 

 

 

 

 

 

 

5  madwifi 加載到內核的順序

 

insmod wlan.o

insmod ath_hal.o

insmod ath_rate_amrr.o

insmod ath_rate_onoe.o

insmod ath_rate_sample.o

insmod wlan_acl.o

insmod wlan_ccmp.o

insmod wlan_scan_ap.o

insmod wlan_scan_sta.o

insmod wlan_tkip.o

insmod wlan_wep.o

insmod wlan_xauth.o

insmod ath_pci.o

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章