1. 程式人生 > >802.11無線網路學習(三):802.11 MAC基礎

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 欄位

該欄位有三種形式,如下:

這裡寫圖片描述

  1. 設定NAV值(微秒),工作站必須監視任何幀頭並據此更新NAV;(0 - 32767)
  2. 無競爭週期(CFP)中,該值被解讀為NAV,它讓沒收到beacon的所有工作站都得以公告無競爭週期;(32768)
  3. 用於PS-Poll幀,PS中的工作站會定期醒來,此時會發送一個PS-Poss,其中有關聯識別符號(AID),以表示其所屬的BSS。(1 - 2007)
    1. 目的地地址(DA)
    2. 來源地址(SA)
    3. 接收端地址(RA)
    4. 傳送端地址(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位順序編號組成,如下:
](D:\data![QQ截圖20170623143339.png

控制幀未使用順序編號,所以無順序控制欄位。
所有幀片段有相同的順序編號,重傳幀的順序編號不改變;片段編號從0開始,依序加1。

  • QoS Control欄位
    有該欄位,則Type/SubType中的b7必為1。QoS控制欄位如下:
    ](D:\data![QQ截圖20170623171958.png這裡寫圖片描述

  QoS簡介