有關802.11的Beacon幀
其次Beacon幀是802.11系列幀中間最為繁雜的一個幀,所以完全理解Beacon該如何設定也是一個非常繁雜的過程。以下按照個人理解整理一些。(注:Beacon在不同的場合下,還有很多區別,如IBSS模式【Ad-hoc】,基礎架構模式,802.11s mesh模式,這裡僅僅關注基礎架構模式。)
1.首先從Beacon幀的結構上而言,如下圖
其實從wireshark來看802.11的幀會感覺嚴謹一些(相對於omnipeek而言),wireshark是按照幀的結構來分析的,而omnipeek更偏向於裡面的欄位(換言之,從omnipeek所看beacon的結構不是這樣)。
-
從該圖上可以看到,Beacon幀從MAC來看,主要就是由802.11頭部(對應圖中IEEE 802.11 Beacon frame)和Beacon資訊(對應圖中IEEE 802.11 wireless LAN management frame)組成。
- 在Beacon的MAC header中,大部分的欄位都是和標準802.11協議是相同的,唯一需要關注的就是這個Duration欄位。在802.11的接入協議中,我們知道存在PCF和DCF兩種模式,實際上在具體接入的時候是採用一種HCF的模式(
(上面這裡有不少細節帶過,有興趣可以看下,有點繞,首先該NAV不一定完全是由Duration欄位設定,說先Duration一定會設定,Duartion一共有16個位元組[0:15],其中倒數2個位元組,即第14,15位是當做標誌位。若普通的NAV即第15置0,其他按2進位制。如果CFP的標識的話,那麼第14位置0,15位置1,預設是32768us(microsecond)。如果是PS-POll的話,14,15置1。這裡還需要注意的是,只要在CFP週期內,傳送一個CFP
frames,那麼NAV又是被設定32768。如果CFP時間結束,啟動DCF時間的話,那麼NAV會被置0。
同時,上述方法是通過Duration設定,以保證所有節點,包含不能夠識別Beacon中內容的節點。如果能識別Beacon中內容的節點,那麼在Beacon中還包含一個叫做CF
Parameter Set的欄位。其具體如下,
【該欄位沒有抓到具體的資料包,應該對應的就是beacon中的TIM欄位,基本結構類似,TIM欄位之後進行分析】,通過該欄位中的CFP
MaxDuration和CFP DurRemaining欄位,可以控制NAV的時間流程。)
- 在Beacon幀的內容中,我們可以看到包含兩部分,即Fixed parameters和Tagged parameters。這裡需要補充的是,該Beacon的抓取是來自於一個工作在802.11b/g/n mixed模式下的AP,其物理層是採用802.11b的最低速率1M模式進行傳送,整個幀長195Byte(未包含PLCP部分),傳輸大於1500us左右。換言之,其預設是一個802.11b的beacon,即對應的Fixed parameters,然後附加的部分顯示對802.11g/n的支援,即對應Tagged parameters。至於802.11ac這裡不加以討論。
2.有關Fixed parameters的結構,如下圖
這個欄位是802.11b預設的Beacon的欄位,也可以認為是較為初始的Beacon設計的欄位。由Timestamp時間戳,Beacon的週期,以及相應的Capabilities組成。
- 時間戳一共64位,單位是us,用來同步該BSS內的STA,貌似是從AP啟用開始,從0進行計時。(注:從這裡可以可以看出,Beacon幀也是負責網路中的時間同步功能的)。
- Beacon Interval,通常情況下100ms,即0.1s。如果看協議的話,這裡有個單位TU(time unit),TU是少有的按照1024進行步進的單位,1TU=1024us。通常情況下,網速都是按照10進位制進行步進的,即1kbps=1000bps這樣,k是kilo的意思(即國際單位),而硬碟之類的儲存單元還是按照2進位制進行步進的,其中的k不是kilo,而是kilo-binary的縮寫。曾經知乎有一個帖子有關網速討論的也對這個內容加以詳述,這裡TU是按照kilo-binary的形式進行描述的,所以有些特殊,需要注意下。
- Capabilities information欄位,主要是描述AP,換言之是該BSS內能夠相容哪些工作模式的。0為不支援,1為支援。STA需要判斷自己是不是支援這些Capabilities,如果不支援,則無法關聯上該AP(即無法加入該BSS)。可以看到,CFP是否支援,即PCF模式也相應列在該區域內。至於一些具體含義的細節可以參考《802.11權威指南》中文版的第97~98頁的部分,寫的還是比較清楚的,英文版的由於看的不是pdf的版本,所以不知道具體的頁數。
3.有關Tagged parameters的結構,如下圖
基本的內容如上,紅色的箭頭代表這裡還缺了一個部分,即country部分,該部分在onmipeek中能夠解析出來。如下
這一塊內容由於很多,所以就直接從Tag上進行分析,就不開啟Tag裡面的內容了。
- 第一個部分:SSID,很簡單的一個欄位,其中SSID是一個[0:32]byte的欄位,其中如果全部置為0,即空SSID就是一個probe request幀,通過該幀做主動掃描。該欄位細節可以查閱《802.11權威指南》4.3.3.1節。
- 第二個部分:Supported Rates,所支援的速率部分。該欄位細節可以查閱《802.11權威指南》4.3.3.2節。
- 第三個部分:DS Parameter Set欄位,描述了當前工作的通道。實際上這個欄位在Radiotap中也有包含(Radiotap是網絡卡在接收訊號的時候,去除PLCP header部分後,在本地增加的頭部,其中就有包含功率,通道這樣的物理層資訊)。
- 這裡中間實際上還有一個描述跳頻引數的欄位,從Element ID中可以看到,DS Parameter Set的Element ID是3,TIM的Element ID是5,中間跳躍了一個。故說明跳頻引數的欄位是保留的,只是當前在AP中都沒有使用了。同時PS:這裡Element ID是用onmipeek才可解析出來的,在wireshark下,其將Element ID解析成Tag Number,不大明白為什麼這樣解析,按照協議應該是Element ID好一些。
- 第四個部分:TIM,這裡主要就是與DTIM有關了,換言之,有關Beacon週期設定與節能有關的部分,就與該欄位有關。這個欄位可以開啟如下
其中DTIM
count和DTIM period是和前面在描述CF Parameter Set中的CFP count和CFP period對應的,在這裡也是一個獨立的欄位。至於Bitmap control以及之後的欄位主要是用來描述STA工作在節能模式時候,對應在AP中的快取情況的。細節可以參考4.3.3.5節。這裡主要回來看下DTIM的概念【實際上這裡還有一個概念容易混,即ATIM,注ATIM是一個幀,而DTIM是一個時間週期。且ATIM一般在IBSS,也就是Ad-hoc的節能模式下使用,故這裡ATIM不進行展開】。在每一個TIM中不一定都包含DTIM,這兩個是不應樣的概念且主要由於DTIM
period決定,若DTIM period為1,則每一個TIM對應一個DTIM,若為0,則表示不使用。該位實際上也對應到路由器設定中的,DTIM間隔。而傳送站間隔對應的就是beacon週期(同時beacon的週期在協議中又被描述為TBTT週期,target Beacon transmission time),如下圖
為了理解DTIM的設定,我們需要簡述下802.11的節能模式,即PS模式(Power
saving)
按協議中(標準版本,非802.11n擴充套件,這裡僅僅討論了最簡單的PS模式,擴充套件模式簡單點可以參考CWNA的教材),在功率管理模式下,一共有兩種情況,STA要不是全速率工作,要不然就是出於休眠狀態,其中休眠是指的既不能發,又不能收。
即在PS工作模式下,節點大部分都是出於休眠模式下的,經過很久時間才醒一次,然後跟AP要資訊。在STA休眠這段時間內,AP負責快取該STA對應的資訊。這裡STA要睡多久才醒一次去跟AP要資訊,就是對應的DTIM週期。這裡可以直接貼下《802.11權威指南中》中的敘述,貌似本身就是寫的比較清楚的。在協議裡面圖基本也差不多,只不過考慮了兩個STA而已,用興趣可以參考協議第10.2.1.3節。
故上述表明,首先DTIM週期是以TIM週期,也就是Beacon週期為基準的,若Beacon週期越長,那麼睡眠時間就越長,從而達到節能的作用。
不過PS:從上面我抓的包上也可以看到,一般情況下,貌似STA和AP的節能模式都是沒有工作的,所以為了節能設定beacon,那麼首先要啟用節能模式才可以,且AP和終端處都要啟用。
- 第五個部分:ERP information部分,ERP全稱是Extended Rate PHY,就是802.11g對應的模式。在這裡主要是為了相容模式所存在,主要關注其中的Non ERP Present位,通過該位,可以同步全網開啟對802.11b的相容,否則就關閉相容。由於是beacon進行同步的,所以一旦開啟,全網所有的STA都是工作在相容模式下。有關相容模式的問題可以參考http://blog.csdn.net/rs_network/article/details/50362214
- 第六個部分:實際上這裡對應的country欄位。表面上這個欄位用處不大,僅僅表明了國家代號。實際上這個欄位是用來控制TPC,也就是傳送功率控制的。由於每一個國家都有相應的法律管理RF發射功率,不能夠違法。在beacon中,即通過country欄位來限制所有節點的發射功率。同樣的,也有限定能夠使用的信道範圍。
- 之後的幾個部分:RSN是用來做安全的,Extended Supported Rates是表明802.11g的擴充套件速率的,HT的兩個都是描述802.11n的,即high throughput模式,其中HT capabilities是用來描述802.11n預設的一些配置的,需要STA也包含這些效能,比如天線數量,鏈路所支援的速率,MCS方式等。HT information是用來描述一些接入細節的,比如primary channel是多少,secondary channel是多少。最後兩個,一個是廠家標識,一個也是安全的欄位。這裡有關安全的欄位都不展開了。
-------------------------------------------------------------------------------------------------------------------------------------------
目前還有些地方存在疑點,沒有確切考證,如下
其一,若開啟的PCF的模式,即包含CFP時間後,前面所述,網路工作是按照beacon-PCF-DCF這樣的順序周而復始是有些問題的。在協議中,該圖是一個一個示意,不一定按照這樣的結構,即也有可能出現beacon-PCF-beacon-DCF,或者隔幾個週期出現PCF週期的情況,故這裡實際上也有一個PCF週期的問題,只是一般在路由設定裡面沒有這個環節,故忽略了。PS:對於這一部分的理解暫時還有保留,我還需要再查一查資料確認下,比如在《計算機網路與因特網教程》
一書中,就把PCF部分的過程稱呼為超幀(superframe),其中該超幀就是按照beacon-PCF-DCF這樣的情況組成的。
其二,有關Duration欄位,在CFP週期內,上行幀(也就是STA發往AP的Polling幀)中,duration的前面幾個欄位是解析成AID的,該AID實際上對應STA的標號(即這裡就沒有采用BSSID的方法進行標識)。
-------------------------------------------------------------------------------------------------------------------------------- 繼續分界線,前面所述的Non-ERP Not Present是針對802.11g對802.11b的相容性而言的。在802.11n的相容這裡並沒有提及。目前發現應該是在802.11n的beacon中的HT Capability Info位,中有一位是Device is Not Able to Receive PPDUs with GF Preamble(這位好像沒有單獨命名,所以說法根據抓包軟體的描述而言) ,該中GF Preamble就是greenfield preamble,從而即是是否相容綠地模式,如下圖