一、網絡服務
802
.
11
總共提供
9
種服務:
分布式
(
distribution
)
接入點收到幀
,
就會使用分布式服務将真傳送至目的地。
整合
integration
該服務由分布式系統提供,它讓分布式系統得以連結至非
IEEE802.11
網絡
關聯(
association
移動式工作站向接入點登記,分布式系統就可以依據登記資訊推斷哪個移動式工作站該使用哪個接入點。僅僅有關聯之後才幹進行身份驗證。在身份驗證完畢之前,接入點會丢棄來自工作站的全部資料。
又一次關聯(
當移動式工作站在同一個擴充服務區域裡的基本服務區域之間移動時,它必須随時評估信号的強度并在必要時切換所關聯的接入點。又一次關聯是由移動式工作站所開啟,當信号強度現實最好切換關聯對象時便會又一次關聯。
取消關聯
disassociation
結束現有關聯。
身份驗證
authentication
認證是
STA
在掃描到合适的
AP
之後
僅僅有通過認證該
才幹通過
使用
WLAN
。
現有的認證方式有:
(1)open
,即不須要認證,僅僅要互動一個
null
幀
(2)shared key
,須要一個
4
次握手的過程
(3)802.11i
,須要到認證server認證
當
完畢認證之後僅僅須要發送
ReAssociation Request
然後等待
ReAssociationResponse
幀完畢關聯也就完畢了整個切換的過程。
解除身份驗證
機密性
Wep
等一些加密機制
MSDU
傳遞
MAC Service Data Unit
負責将資料傳送給實際的接收端。
傳輸功率控制
Transmit Power Control
簡稱
TPC
歐洲标準要求操作與
5G
Hz
頻帶的工作站必須可以控制颠簸的傳輸功率,避免幹擾其它相同使用
頻帶的使用者。
動态頻率選擇
Dynamic Frequency Selection
DFS
無線區域網路必須可以檢測到雷達系統并選擇未被雷達系統所使用的頻率。
二
網絡類型
基本服務集
basic service set ,
BBS
由一組互相通信的工作站構成。
BSS
分為兩種
:
獨立型網絡
i
ndependent BSS
通常由少數幾個工作站為了特定目的而組成的臨時性網絡。
基礎結構型網絡
Infrastructure networks
有接入點。接入點負責基礎結構型網絡的全部通信。
擴充服務區域
extended service set
ESS
将幾個
串聯稱為
。全部位于同一個
的接入點使用同樣的服務組标示符
service identifier
SSID
三.
MAC
層
資料鍊路層的兩個子層
邏輯鍊路控制
LLC (Logical Link Control)
子層
媒體接入控制
MAC (Medium Access Control)
§
與接入到傳輸媒體有關的内容都放在
而
LLC
子層則與傳輸媒體無關
無論採用何種協定的區域網路對
子層來說都是透明的
網卡及其功能
§
資料的封裝與解封
發送時将上一層交下來的資料加上首部和尾部,
成為以太網的幀。接收時将以太網的幀剝去首部和尾部,
然後送交上一層
鍊路管理
主要是
CSMA/CD
協定的實作
編碼與譯碼
即曼徹斯特編碼與譯碼
網卡從網絡上每收到一個
幀就首先用硬體檢查
幀中的
位址假設是發往本站的幀則收下,然後再進行其它的處理
否則就将此幀丢棄,不再進行其它的處理
四
802.11
幀主要有三種類型
資料幀、控制幀、管理幀
資料幀
幀格式:
Protocol
:代表MAC
協定版本号
Type
與Subtype
:制定使用幀類型(
控制幀、資料幀、管理幀)
Address1
:幀接收端
Address2
:發送端的位址
Address3
:供接入點與分布式系統過濾之用
Duration
媒介使用權
,RTS
傳送段計算
RTS
幀結束後還須要多長時間用于幀交換。
位址資訊
功能
ToDS
FromDS
Address 1 (
接收端)
Address 2 (
發送端)
Address 3
Address 4
IBSS
DA
SA
BSSID
未使用
To AP (
基礎結構型)
1
From AP (
WDS (
橋接器)
RA
TA
幀送至server
相應第二行
: RA/BSSID
Address2 :
SA/TA
Address3 :
幀來自分布式系統
相應第三行
: RA/DA
Address2 : TA/BSSID
Address3 : SA
控制幀:
通常與資料幀搭配使用,負責區域的清空、信道的取得、載波監聽的維護,并于收到資料時予以肯定确認,借此提高工作站之間資料傳送的可靠性。
由于無線收發器通常僅僅有半雙工工作模式
即無法同一時候首發資料
為防止沖突
同意工作站使用
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
身份驗證算法編号:
:開放系統身份驗證
:共享密鑰身份驗證
2~65535;
保留
2. Authentication Transaction Sequence Number
身份驗證處理序列号
用以追蹤身份驗證進度。
3.beacon interval
字段
用來設定
beacon
信号之間相隔多少時間機關。
4. Capability Information
性能資訊
傳送
信号的時候,它被用來通告網絡具備何種性能。
5. Current AP Address
移動式工作站用此字段表明目前關聯的接入點的
位址,便于關聯與又一次關聯的進行。
6. Listen interval
工作站為節省電能,臨時關閉
的天線,休眠中的工作站會定期醒來聆聽往來消息,以推斷是否有幀緩存于接入點。
事實上就是以
Beacon interval
為機關所計算出的休眠時間。
7. Association ID
關聯标示符
工作站與接入點關聯時就會被賦予一個關聯辨別符來協助控制和管理。
8. Timestamp
時間戳
用來同步
中的工作站。
9. Reason Code
原因代碼
對方不适合增加網絡時,工作站會發送
(取消關聯)或
deauthentication
(解除身份驗證)幀作為響應。該字段用以表示産生該原因代碼的理由。
10. Status Code
表示某項操作成功或失敗。
資訊元素:
管理幀的可變長元件。
一般管理幀的資訊元素
Element ID
名稱
服務集标示符(SSID)
支援速率Supported Rates
2
跳頻參數集FH Parameter Set
直接序列參數集DS Parameter Set
無競争參數集CF Parameter Set
5
傳輸訓示映射Traffic Indication Map (TIM)
6
參數集
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)
動态選頻(DFS
42 (802.11g)
ERP information
43-49
Reserved
48 (802.11i)
強健安全網絡Robust Security Network
50 (802.11g)
擴充支援速率Extended Supported Rates
32-255
221
Wi-Fi
保護訪問Wi-Fi Protected Access
管理幀類型
管理幀的主體包括的固定字段與資訊元素是用來運送資訊的。管理幀主要有下面幾種,負責鍊路層的各種維護功能。
1.
Beacon
(信标)幀
主要用來聲明某個網絡的存在。定期傳送的信标可讓
station
得知網絡的存在,進而調整增加該網絡所必需的參數。
2. Probe Request
探查請求
移動工作站利用
Probe Request
探查請求幀來掃描區域内眼下有哪些
網絡。
包括
個字段
:可被設定為特定網絡的
或不論什麼網絡的
Support rates
:移動工作站所支援的速率。
3.Probe Response
假設
所探查的網絡與之相容,該網絡就會以
Probe Response
幀響應。送出最後一個
幀的工作站必須負責響應所收到的探查資訊。
幀中包括了
幀的全部參數,
可依據它調整增加網絡所須要的參數。
4. IBSS announcement traffic indication map (ATIM)
的通知傳輸僅僅是消息(
ATIM
)幀
5. Disassociation and Deauthentication
取消關聯、解除驗證
取消關聯、解除驗證幀
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)
或
位都設為
的全部幀
Clear to Send (CTS)
Acknowledgment (ACK)
CF-End
Authentication
CF-End+CF-Ack
Deauthentication
Announcement Traffic Indication Message (ATIM)
第二級幀
None
Association Request/Response
Reassociation Request/Response
Disassociation
第三級幀
PS-Poll
不論什麼幀,包括
madwifi
的結構,主要是有三層,
hal
是硬體層,然後是
ath
層,在之上的是
層,整個
源代碼中重要的就是
目錄(硬體),
目錄,
ath_rate
目錄
net80211
目錄(
協定相關),
tools
目錄(一些工具)
當驅動被載入的時候,它會取探測實體裝置是否存在,然後通過
ath_attach()
函數安裝此裝置。同一時候,驅動會自己主動建立一個虛拟的網絡接口,通過函數
ieee80211_create_vap( )
實作。這個虛拟網絡接口的初始狀态為
INIT
,在此狀态下硬體不會接收資料包。
當實際的
接口開始工作(比如通過
ifconfig ath0 up
指令激活),驅動會将對硬體進行适當的設定而且進入
SCAN
狀态。
在
狀态下,
會掃描全部它支援的通道。
掃描包含兩個方面,一個是主動掃描
,即
會發送适當的請求封包;一個是被動掃描
監聽臨近
的
beacons
不會資料傳輸報。
在全部的通道都掃描完畢以後,
選擇一個無線信号強度最低的通道然後進入
RUN
狀态(
ap_end( )
)。
運作一個存取節點的普通操作。它約每隔
100ms
向外廣播一個
消息(
ath_beacon_send( )
,
應答其他
發送的請求,應答終端發送來的認證消息和連接配接
/
重連接配接消息,而且資料傳輸包。
當接口被關閉的時候,
會發送取消認證消息到每個連接配接了的終端,然後釋放所它們所占有的資源并進入
須要注意控制消息的使用,如:
、
ACK
,它們是被驅動
HAL
(硬體抽象層)控制的。
結構體
ieee80211com
中定義了各種幀處理函數指針
資料接收
大多數的
CSMA/CA
機制被貫徹在
或者硬體中。當一個新的包到達時,開源的驅動部分是通過中斷來擷取通知的
ath_intr( )
包被
linux
tasklet
來處理(
ath_rx_tasklet( )
),這個包所在
skb
結構被找到而且
它的目标節點正确。
函數
ieee80211_input( )
接收各種不同類型的包,在這個函數中管理封包包被傳遞給
ieee80211_recv_mgmt( )
函數處理,資料包被做相關的處理後變成以太幀格式然後傳送給
核心
netif_rx( )
或者
假設工作在橋模式下
則通過
dev_queue_xmit( )
發送此資料包
資料的發送
Linux
核心通過
dev->hard_start_xmit
輪流調用虛拟接口的
ieee80211_hardstart()
函數和實體接口的
ath_hardstart
()
函數實作包的傳輸。
函數将以太格式的包封裝成
格式的包。
ath_tx_start
函數将須要加密的包進行加密處理
并将儲存此包的
映射到
DMA
緩沖
并依據包的優先級標明一個傳輸隊列
QoS control
ath_tx_txqaddbuf( )
函數将映射後的緩沖
buffer
插入到標明的傳輸隊列裡面并通知
開始傳輸。
管理幀由
層産生。它們通過
ieee80211_mgmt_output
()函數發送。
消息由
觸發。當發送
消息的時間到達
會制造一個中斷
然後調用函數
來發送。
消息直接被傳遞到
并發送。
成功發送完一個包後也會産生一個中斷來通知驅動。
ath_tx_tasklet()
會更新發送相關的資訊。假設有工作在監視模式
monitor mode
的虛拟port存在
這個包會在函數
ath_tx_capture()
中被傳遞給監視接口。
5
載入到核心的順序
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