MAC802.11數據幀格式

1 MAC802.11數據幀格式

首先要說明的是mac802.11的幀格式很特別,它與TCP/IP這一類協議不同,它的長度是可變的。不同功能的數據幀長度會不一樣。這一特性說明mac802.11數據幀顯得更加靈活,然而,也會更加複雜。mac 802.11的數據幀長度不定主要是由於以下幾點決定的

 

1.1 mac地址數目不定,根據幀類型不同,mac 802.11的mac地址數會不一樣。比如說 ACK幀僅有一個mac地址,而數據幀有3個mac地址,在WDS模式(下面要提到)下,幀頭竟然有4個mac地址。

 

1.2 802.11的管理幀所攜帶的信息長度不定,在管理幀中,不僅僅只有一些類似於mac地址,分片標誌之類的這些信息,而且另外還會包括一些其它的信息,這些信息有關於安全設置的,有關於物理通信的,比如說我們的SSID名稱就是通過管理幀獲得的。AP會根據不同的情況發送包含有不同信息的管理幀。管理幀的細節問題我們會在後面的文章中討論,這裏暫時跳過。

 

1.3 加密(wep,wpa等)信息,QOS(quality of service)信息,若有加密的數據幀格式和沒有加密的數據幀格式還不一樣,加密數據幀格式還多了個加密頭,用於解密用。然則QOS也是同樣道理。

 

竟然mac 802.11數據幀那麼複雜,我們就先從通用的格式開始說吧

.

 

幀控制(2 bytes):

用於指示數據幀的類型,是否分片等等信息,說白了,這個字段就是記錄了mac 802.11的屬性。

*Protocol version:表明版本類型,現在所有幀裏面這個字段都是0x00

*Type:指明數據幀類型,是管理幀,數據幀還是控制幀

*Subtype:指明數據幀的子類型,因爲就算是控制幀,控制幀還分RTS幀,CTS幀,ACK幀等等,通過這個域判斷出該數據幀的具體類型

*To DS/From DS:這兩個數據幀表明數據包的發送方向,分四種可能情況討論

**若數據包To DS爲0,From DS爲0,表明該數據包在網絡主機間傳輸

 

**若數據包To DS爲0,From DS爲1,表明該數據幀來自AP

**若數據包To DS爲1,From DS爲0,表明該數據幀發送往AP

**若數據包To DS爲1,From DS爲1,表明該數據幀是從AP發送自AP的,也就是說這個是個WDS(Wireless Distribution System)數據幀,至於什麼是WDS,可以參考下這裏的介紹 #傳送門

*Moreflag:分片標誌,若數據幀被分片了,那麼這個標誌爲1,否則爲0

*Retry:表明是否是重發的幀,若是爲1,不是爲0

*PowerManage:當網絡主機處於省電模式時,該標誌爲1,否則爲0.

*Moredata:當AP緩存了處於省電模式下的網絡主機的數據包時,AP給該省電模式下的網絡主機的數據幀中該位爲1,否則爲0

*Wep:加密標誌,若爲1表示數據內容加密,否則爲0

*Order 這個表示用於PCF模式下,這裏不予討論

 

生存週期/Associate ID (2 bytes):

先前不是講過虛擬載波監聽的一個機制麼,他的Network Allocation Vector(NAV)就存在這裏,這裏叫duration,即生存週期。當然不是所有時候這個字段存放的NAV值。在特定類型數據幀中,它也可能表示Associate ID。一旦有主機關聯到AP了,AP都會爲主機分配一個Associate ID。比如在網絡主機通知AP自己要進入省電模式(power saving)的時候,網絡主機發給AP的通知數據幀裏面,這個域就表示的是Associate ID而不是NAV了。當然還可以通過最高位來判斷這個域的含義:

*在15bit爲0的時候,該域表示duration

*在15bit爲1,14bit爲1的時候,表示Associate ID。

 

序列控制(2 bytes:4 bits/12 bits):這個域分2部分,一個是分片序列號和標識幀列號。分片序列號就是記錄分片序號的。比如一個幀A被分片成a1,a2,a3,那麼a1,a2,a3這三個分片幀的分片序列分別是0,1,2。這個和IP分段原理一樣的,該域佔4個比特位。剩下的12個比特位就用於標識幀的序號,這個跟IP頭裏面的序列號一樣。

 

MAC地址 1-4

這四個地址在不同幀中有不同含義。這些以後會討論。

以後我們可能會碰到以下類型的mac地址

RA(receiver address):無線網絡中,該數據幀的接收者

TA(transmitter address):無線網絡中,該數據幀的發送者

BSSID(Basic Service Set ID):在infrastructure BBS中,BSSID就是AP的mac地址。但是在IBBS中,它是一個隨機即生成的46位二進制序列,還有最高兩位分別是Universal/Local標誌位和Individual/Group標誌位。IBBS的BSSID中,Universal/Local標誌位爲1,表示本地MAC,Individual/Group標誌位爲0,表示是個人MAC。也就是說在IBBS中,BSSID地址應該類如 10xxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx(x表示隨機數要麼0要麼1, 2進製表示)

DA(destine address):該幀的目的mac地址

SA(source address):該幀的源mac地址

這裏的DA和SA含義和普通以太網中的含義一樣,在無線網絡中可能我們需要通過AP把數據發送到其它網絡內的某臺主機中。但是有的人會奇怪,直接在RA中填這臺主機的mac地址不就久好了麼。但是請注意RA的含義,說的是無線網絡中的接收者,不是網絡中的接收者,也就是說這臺目的主機不再無線網絡範圍內。在這種情況下我們的RA只是一箇中轉,所以需要多出一個DA字段來指明該幀的最終目的地,當然,如果有了DA那必須有SA,因爲若目的主機要回應的話,SA字段是必不可少的。(假設沒有SA字段,那麼目的主機迴應的數據包就只能發送到源主機所屬的AP上了~)

 

最典型的一個例子就是在WDS模式下,數據幀會有4個地址,RA,TA表示接收端和發送端,這兩個地址用於無線傳輸的時候。還有2個地址是DA和SA,分別跟以太網中一樣表示源地址和目的地址。WDS幀的格式如下圖:

.
打個比方說,AP1有主機A,AP2有主機B。如果A要和B同學,那麼A會首先發送數據幀給AP1,然後AP1發送幀給AP2 。這個時候幀裏面會有4個地址,分別是RA=mac(AP2),TA=mac(AP1),DA=mac(B),SA=mac(A)。

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