802.11無線網路學習(三):802.11 MAC基礎
1. 無線媒介控制
同乙太網一樣,802.11使用載波監聽多路訪問(CSMA)機制來控制對傳輸媒介的訪問;但802.11使用衝突避免(CSMA/CA),而乙太網使用衝突檢測(CSMA/CD)。
2. 隱藏節點
為了避免隱藏節點引起的衝突,採用RTS/CTS幀來清空傳送區域。 具體過程如下:
如果節點1有幀要傳,先發出一個RTS幀(兩個目的:預約無線鏈路;要求接收到這一幀的其它工作站保持沉默),收到RTS後,接收端發出CTS幀(CTS也會讓附近工作站沉默)應答。收到CTS後,節點1可開始傳輸資料幀了。
由於開啟RTS/CTS功能,會消耗一定頻寬,所以可以調整RTS閥值,只有幀大於該值時才進行RTS/CTS交換過程,小於則直接傳送幀。(hostapd.conf中的 rts_threshold 指定該值,預設2347;也可用 “iwconfig wlan0 rts ” 設定)
3. 協調功能
協調功能分為3種,如下:
- DCF(分散式協調功能)
傳輸資料前先檢查鏈路是否空閒,不空閒則STA會隨機為每個幀待定一個退避時間。可用RTS/CTS清空技術進一步減少衝突的發生。
- PCF(點協調功能)
提供無競爭服務,點協調都位於AP,故只有基礎結構性BSS中才可使用PCF。PCF允許STA經過一段較短時間後即可傳送幀。
- HCF(混合協調功能)
4. 載波監聽
兩各載波監聽方式:
- 物理載波監聽:由物理層提供,昂貴;
- 虛擬載波監聽:由網路分配向量(NAV)提供,幀中有一個Duration欄位,用來預約一段媒介使用時間(微秒)。其它STA會將NAV的值倒數至0,在不為0前,媒介忙碌。
NAV由RTS和CTS幀載送。
利用NAV進行虛擬載波監聽過程如下:
其中傳送端傳送的RTS中有Duration欄位[NAV(RTS)],表示要佔用鏈路的時間,在該時間內其它STA只能等待,由於可能有的STA不能收到該RTS,所以接收端發出的CTS中也有個時間值[NAV(CTS)],當時間到達時(ACK傳送完成),進行一段退避時間(DIFS:分散式幀間間隔)後,重新進入競爭視窗。
注:處於相同通道上的STA(即使在不同網路中)均會收到NAV,因而會適當地延遲對媒介的訪問。
5. 幀間間隔
幀間間隔是固定的,與傳輸率無關,但不同物理層可以指定不同的幀間間隔。802.11有四種幀間間隔,如下:
- 短幀間間隔(SIFS) —— 用於高優先順序的傳輸,如RTS/CTS/ACK。
- PCF幀間間隔(PIFS) —— 用於無競爭操作中,其優先順序高於任何競爭式傳輸。
- DCF幀間間隔(DIFS) —— 競爭服務中最短的媒介閒置時間
- 擴充套件幀間間隔(EIFS) —— 幀傳輸出錯時使用。
6. 利用DCF進行基於競爭的訪問
- DCF不用中心控制節點,所以可用於IBSS網路和基礎結構型網路;
- 傳送資料前,工作站必須檢查媒介狀態,如果忙碌則工作站必須延遲並利用指數退避演算法來避免衝突;
- DCF傳輸中的規則:
1. 如果媒介閒置時間長於DIFS,則可立即傳輸。如果之前的幀接收無誤,則媒介必須至少空出一段DIFS;如果出錯,則至少空出EIFS。
2. 如果忙碌,則必須等待到通道閒置,工作站必須等待媒介閒置一段DIFS,同時準備指數退避過程。 - 工作站有兩個重試計數器,短/長幀計數器 (長度小於RTS閥值的幀為短幀),同時每個幀片段有個最長的生存時間,一旦超過該時間,該幀被丟棄,其它幀片段也不會重試。
- DCF退避演算法
DIFS後為競爭視窗(退避視窗),將其進一步分割為時隙。如DSSS中,競爭視窗大小通常為2的指數倍減1(如31,63,127,…),每當重試計數器累計,競爭視窗移到下一個值(DSSS物理層最多為1023),如果到達重試計數器上限,則丟棄該幀。
7. 幀的分段與重組
通過設定分段閥值來確定好長的幀需要分段傳送。每個幀片段有相同幀序號和一個遞增的幀片段編號。還有幀控制資訊用來指示是否還有其它幀片段待發。其過程如下:
8. 幀格式
一般幀格式如下:
- Frame Control (幀控制欄位)
1. protocol (協議版本)
目前只有1個版本(0)
2. Type/Subtype
指定幀型別,其中b7位(QoS subfield)為1,則該幀中有QoS Control欄位,如下:
3. To DS/From DS 欄位
指定幀的目的地是否為分散式系統(DS),如下:
aaa | To DS=0 | To DS=1 |
---|---|---|
From DS=0 | 無DS(所有管理、控制幀及IBSS中的資料幀) | 基礎型網路中STA發出的幀(STA -> AP) |
From DS=1 | 基礎型網路中STA收到的幀(AP -> STA) | 無線橋接器上的幀(DS之間) |
4. More Fragments
是否之後還有幀片段,除最後一個幀片段,其它都為1。
5. Retry位
重傳幀該位為1
6. Power Management
為1,表示STA傳送完該幀後將進行省電模式(PS)(AP不能進行省電模式,所以都為0)
7. More Data
AP發出的幀中該位若為1,表示快取中有要發到處於PS模式的STA的幀。
8. Protected Frame
設為1,表示幀受鏈路層安全協議保護
9. Order位
設為1,對於no-QoS資料幀,表示所有幀片段嚴格依次傳送
對於QoS資料幀和管理幀設為1,且帶有HT_GF或者HT_MF,表示該幀包含HT控制欄位。
- Duration/ID 欄位
該欄位有三種形式,如下:
- 設定NAV值(微秒),工作站必須監視任何幀頭並據此更新NAV;(0 - 32767)
- 無競爭週期(CFP)中,該值被解讀為NAV,它讓沒收到beacon的所有工作站都得以公告無競爭週期;(32768)
- 用於PS-Poll幀,PS中的工作站會定期醒來,此時會發送一個PS-Poss,其中有關聯識別符號(AID),以表示其所屬的BSS。(1 - 2007)
-
- 目的地地址(DA)
- 來源地址(SA)
- 接收端地址(RA)
- 傳送端地址(TA)
Address1:接收端;Address2:傳送端;Address3:被接收端拿過濾地址,如下:
功能 | ToDs | FromDS | Addr1 | Addr2 | Addr3 | Addr4 |
---|---|---|---|---|---|---|
IBSS | 0 | 0 | DA(AP) | SA(AP) | BSSID | 未使用 |
To AP(基礎型) | 1 | 0 | BSSID(AP) | SA(STA) | DA(Server) | 未使用 |
From AP(基礎型) | 0 | 1 | DA(STA) | BSSID(AP) | SA(Server) | 未使用 |
WDS(橋接器) | 1 | 1 | RA | TA | DA | SA |
To AP:STA(SA/TA) -> AP(RA) -> DS -> Server(www.xxxx.com)(DA)
From AP:Server(www.xxxx.com)(SA) -> DS -> AP(TA) -> STA(DA/RA)
WDS : STA <-> AP <-> DS <-> Server(www.xxxx.com)(DA)
在基礎型網路中,BSSID即為AP的MAC地址;而獨立型(ad hoc)網路中則產生一個隨機的BSSID,並將Univeral/Local位(Mac中第46位,見:MAC地址格式)設為1,以防止與官方指定的MAC地址衝突。
- 順序控制欄位(Sequence Control)
其由4位片段編號和12位順序編號組成,如下:
控制幀未使用順序編號,所以無順序控制欄位。
所有幀片段有相同的順序編號,重傳幀的順序編號不改變;片段編號從0開始,依序加1。
- QoS Control欄位
有該欄位,則Type/SubType中的b7必為1。QoS控制欄位如下: