一、IEEE 802.11的幀格式
1.1 IEEE 802.11是什麼?
802.11是國際電工電子工程學會(IEEE)爲無線局域網絡制定的標準。目前在802.11的基礎上開發出了802.11a、802.11b、802.11g、802.11n、802.11ac。並且爲了保證802.11更加安全的工作,開發出了802.1x、802.11i等協議
1.2 IEEE 802.11連接網絡的過程
使用802.11協議的設備連接到無線網絡需要三步
掃描(獲得網絡信息)
認證(確認身份)
連接(確定連接、交換數據)
1.3 IEEE 802.11的幀格式分類
802.11的幀格式類似於以太網,但是更加複雜。並且爲了解決無線網絡的缺陷,需要添加額外的功能。所有802.11的幀分爲三類:
管理幀
控制幀
數據幀
其中的管理幀最爲複雜
1.4 IEEE 802.11通用幀格式
802.11的幀格式十分複雜,但是大體上遵循一種格式
1、frame control 位
Protocol位:協議版本有連個bit構成,用以顯示該幀所使用的MAC版本:0
type與subtype位:類型與次類型位用來指定所使用的幀類型
TO DS與from DSbit:這兩個bit用來指示幀的目的地是否爲傳輸系統
Morefragments bit:這個功能類似與IP的更多片位。如果上層的封包經過MAC分段的處理,最後一個分段除外,其他片段均將此位置1。
Retrybit:重傳幀位。任何重傳的幀會將此bit置位1,以協助接收端剔除重複的幀。
Powermanagement bit:802.11網卡爲了提高電池的使用時間,通常可以關閉網卡以節省電力。此位用來指定傳送端在完成目前的基本幀交換之後是否進入省電模式,1代表工作站即將進入省電模式,而0則代表工作站一直保持清醒狀態。基站發出去的幀該位必爲0。
Moredata bit:爲服務處於省電模式的工作站,基站會將這些由“傳輸系統”接收而來的幀加以暫存。基站如果設定此位,代表至少有一個幀待傳送給休眠的工作站。
Protectedframe bit:之前該位爲WEP bit。如果幀受到鏈路層安全協議的保護,該位爲1.
Orderbit:幀和幀片段可以按序傳送,不過發送端與接收端的MAC必須付出額外的代價。一旦進行“嚴格依序”傳送,該位爲1。
2、duration/ID位
有三種可能形式
1、 設定NAV:當第15bit被設定爲0時,duration/ID位會用來設定NAV,數值代表目前所進行的傳輸預計使用介質多少微秒。
2、 免競爭期間所傳送的幀:14bit爲0,15bit爲1.其他位爲0。因此duration/ID位爲32768,這個值被解讀爲NAV。它讓沒有收到Beacon信標幀的工作站,得以公告免競爭期間,以便將NAV更新爲適當的數值,避免干擾到免競爭傳輸。
3、 PS-poll幀(省電-輪詢):14bit爲1,15bit爲1。移動工作站可以關閉天線以達到省電的目的。休眠的工作站必須定期醒來。確保不至於丟失任何幀,從休眠狀態醒來的工作站和必須發送一個PS-poll幀,以便從基站取得以前暫存的幀。此外,醒來的工作站會在PS-poll幀中加入連接識別碼(association ID,簡稱AID),以顯示其所隸屬的BSS,AID值介於1-2007之間。
3、address位
一個802.11幀最多可以包含四個地址位。這些地址爲經過編號,因爲隨着幀類型的不同,這些位的作用也有所差異。
基本上,address代表接收端,address2代表傳送端,address3代表被接收端拿過來的過濾地址。
在基礎網絡中,第三個地址位會被接收端用來判定該幀是否屬於其所連接網絡。
注意:802.11規定工作站應該忽略那些不屬於相同BSSID的幀,但大多數產品並未正確實現BSSID過濾功能,還是會將收到的所有幀傳送給上層協議。
802.11所使用的定位模式,乃是依循其他IEEE802網絡所使用的格式,包括以太網。地址位爲48bit。如果傳送給實際介質的第一個bit爲0,代表是單一工作站(單播地址)。1代表組播地址。如果全爲1代表廣播。
目的地址:代表最後的接收端,是負責將幀交付上層協議處理的工作站
源地址:代表傳輸的來源。
接收端地址:代表負責處理該幀的無線工作站。
如果是無線工作站,接收端地址即爲目的地址。
如果幀的目的地址是與基站連接的以太網節點,接收端即爲基站的無線界面,目的地址可能是連接到以太網的一臺路由器。
傳送端地址:代表將幀傳送至無線介質的無線界面。傳送端地址通常只用於無線橋接
4、basicservice set ID(BSSID)
在基礎網絡裏,BSSID(基本服務集標識)是基站無線界面所使用的MAC地址。而對等(adhoc)網絡則會產生一個隨機的BSSID,並將universal/localbit設定爲1,以防止與其他官方指定的MAC地址產生衝突。
要使用多少地址位,取決於幀類型。大部分的數據幀會使用三個位:來源,目的和BSSID。數據幀中,地址位的編號與排列方式取決於幀的傳送路徑。大部分的傳輸只會用到三個地址。這解釋了爲什麼幀格式中,四個地址位其中三個是相鄰的。
5、順序控制位
此位的長度爲16bit,用來重組幀片段以及丟棄重複幀。它由四個bit的frament number(片段編號)以及12bit的sequence number位組成。
當上層幀交付MAC傳送,會被賦予一個sequencenumber(順序編號)。此位的作用,相當於已傳幀計數器取4096的模
計數器從0開始,MAC每處理一個上層封包就會加1。如果上層封包被切割處理。所有幀片段都會具有相同的順序編號。如果是重傳幀。則編號不會改變。
該位不同於IP首部的標識字段。因爲IP首部的標識字段只是用來標識是同一數據報,而沒有排序功能,並且IP是無序的協議,也不用考慮順序。
幀片段之間的差異在於framentnumber。第一個片段遍號爲0,其後每個片段依次加1。
6、幀主體
幀主體(frameboby)又稱數據位。負責在工作站間傳送上層數據(payload)。在最初的指定的規格中,802.11幀最多可以傳送2034字節的數據。802.2LLC標頭具有八個字節,所以最多可以傳送2296個字節。防止分段必須在協議層加以處理。
802.11與其他鏈路層協議的不同:
1、802.11幀中並沒有任何上層協議的標記。上層協議是以額外標頭type位加以標記,同時將其作爲802.11所承載數據的開始。
2、802.11通常不會將幀填補至最小長度。802.11所使用的幀並不大,隨着芯片與電子技術的進展,目前已經沒有填補的必要了。
7、幀檢驗序列(FCS)
FCS通常被視爲循環冗餘碼(cyclic redundancy cheak,CRC),因爲底層的數學運算相同。
FCS計算範圍涵蓋MAC標頭裏所有位以及幀主體。如果FCS有誤,隨即丟棄。並且不進行應答。
1.5 數據幀
數據幀的格式如上圖所示,頭部長度爲24或30字節。主要功能是爲工作站與基站之間傳遞數據。
由於數據的發送方和接收方的不同,所以數據幀也會有小分類。主要可分爲四類
function |
To DS |
From DS |
Address1 |
Address2 |
Address3 |
Address4 |
IBSS |
0 |
0 |
DA |
SA |
BSSID |
Not use |
TO AP |
1 |
0 |
BSSID |
SA |
DA |
Not use |
FROM AP |
0 |
1 |
DA |
BSSID |
SA |
Not use |
WDS |
1 |
1 |
RA |
TA |
DA |
SA |
IBSS(Independent BasicService Set)獨立基本服務集
BSSID(Basic Service SetIdentifier)基本服務集標識符(爲AP的MAC地址)
DA(Destination Address)目的地址
SA(Sender Address)源地址
RA(Receiver Address)接收端地址
TA(Transmission Address)發送端地址
WDS(WirelessDistribution System)無線分佈式系統
* WDS(wireless distribution system),無線分佈系統:構建在FHSS或DSSS底下,可讓基地臺與基地臺之間得以溝通,比較不同的是有WDS的功能是可當做無線網絡的中繼器,且可多臺基地臺對一臺。
以下根據上述四種幀進行分析
1、IBSS幀
當無線MAC收到一個幀時,首先會去檢查BSSID,只有BSSID與工作站相同的幀纔會交由上層協議加以處理。
2、發送自基站(from AP)的幀
該幀會記載幀的源MAC地址。區分源與發送端是必要的,因爲802.11MAC會將應答發送給幀的transmitter(發送端AP),而較上層協議會將應答發送給幀的source(源)。
基站只會應答來自工作站的NULL幀,而不會在應答中使用NULL
3、發送至基站(TO AP)的幀
4、WDS中的幀
當基站被部署爲無線橋接器時,會用到四個地址位。
1.6 控制幀
控制幀常用的有四個。即RTS、CTS、ACK、PS-poll。
RTS/CTS:實現虛擬載波監聽功能。
l 爲防止衝突的發生,需要和以太網類似的衝突檢測機制。
l 但是由於無線網絡的特點,會產生隱藏節點,而物理載波監聽無法發現隱藏節點,還是會產生衝突
因此出現虛擬載波監聽機制。使用RTS/CTS以及NAV來實現這個功能
ACK:因爲無線網絡的特點,很難保證數據一定會到達目的地。爲了確保數據一定到達。802.11採用確認、重傳機制。
即每一個數據都必須確認ACK,如果未收到ACK,發送方重新發送。
這會導致信號差的時候,重傳概率加大,造成傳輸速度下降
PS-poll:省電模式-輪詢幀。這是考慮到使用無線網絡的設備多數爲移動設備,無法保證供電,爲了儘量減少工作站的耗電,採取的一種模式。
*省電模式:工作站處於休眠狀態(信號發射功率放大器關閉),基站爲工作站暫存幀,然後定時發送Beacon(信標)幀,休眠的工作站定時醒來,獲取信標幀,然後解析即可知道自己在基站中是否有暫存幀。如果有,則發送PS-poll幀,而且一個PS-poll只對應一個暫存幀,工作站會一直髮送PS-poll幀,直至所有暫存幀全部取出。
所以PS-poll幀只能由工作站發送給基站。
1、RTS(請求發送)
RTS幀可用來取得介質的控制權,以便傳輸大型幀。至於多大爲大型,是由網卡驅動程序的RTS threshold(門限)決定的。
Frame control:除subtype爲1101外,沒有不同
duration:設定一個時間,總共爲三個SIFS、一個CTS、一個ACK、第一個幀片段或幀的傳送需要的時間
2、CTS(允許發送)
3、ACK(應答)
4、PS-Poll(省電模式-輪詢)
BSSID:此位包含發送端所在的BSS的BSSID,此BSS建立自目前所連接的AP
Transmitter address(發送端地址):此爲PS-Poll幀發送端的MAC地址。
因爲PS-Poll幀中並未包含duration信息,因此無法更新NAV。不過,所有收到PS-Poll幀的工作站,都會以短幀間隔加上發送ACK信號所需要的時間來更新NAV。使得基站在發送ACK信號時,不會與移動基站發生碰撞。
因爲數據分爲普通數據和廣播組播數據。獲取方式也有細微不同。下次進行討論
1.7 管理幀
管理幀主要服務於掃描、認證和連接過程。Beacon幀也屬於管理幀。
1、管理幀的結構
地址位:爲了限制廣播或組播管理幀所造成的副作用,收到管理幀之後,工作站必須加以驗證,雖然不是所有實現均會進行這一BSSID過濾程序,例如Beacon幀。
計算持續時間:免競爭設置爲32768;
幀主體:如果使用長度固定的位,稱爲固定式位。如果長度不定,稱爲信息元素。
2、字類型(subtype)的說明
子類型Subtype值 |
代表的類型 |
0000 |
Association Request(關聯請求) |
0001 |
Association Response (關聯響應) |
0010 |
Reassociation Request(重關聯請求) |
0011 |
Reassociation Response(重關聯響應) |
0100 |
Probe Request(探測請求) |
0101 |
Probe Response(探測響應) |
1000 |
Beacon(信標幀) |
1001 |
ATIM(通知傳輸指示信息) |
1010 |
Disassociation(解除關聯) |
1011 |
Authentication(解除身份驗證) |
1100 |
Deauthentication(解除身份驗證) |
3、固定字段和信息元素
管理幀更加複雜的是,幀主體中還包括固定字段(fixed field)和長度不定的信息元素(information element)。
802.11規定這些固定字段和信息元素的位置是固定的,但是並不是每一個固定字段和信息元素都是必須存在的。分析起來更加複雜。
4、管理幀的不同幀的格式
A: Beacon(信標)幀
信標幀是相當重要的維護機制,主要用來宣告某個網絡的存在。定期發送的信標,可讓移動工作站得知該網絡的存在,從而調整加入該網絡所必要的參數。
B: 檢測要求(proberequest)
移動工作站會利用probe request幀來掃描所在區域內有哪些802.11網絡。
Probe request幀包含兩個位。SSID和移動工作站所支持的速率。收到Probe request幀的工作站會據此判斷對方能否加入網絡。
C: 檢測應答(proberesponse)
如果檢測要求所探查的網絡與之相容,該網絡就會以probe response幀應答。
D: IBSS的數據待傳指示通知信息(ATIM)幀
IBSS中的工作站如果爲處於休眠狀態的接收者暫存幀,就會在遞送期間發送一個ATIM幀,通知對方有信息待傳。
E: 解除連接和解除認證(disassociation與 deauthentication)
F: 連接要求(associationrequest)
一旦工作站找到相容的網絡並且通過身份認證,便會發送連接請求幀,試圖加入網絡
Capability information(性能信息)用來指出移動工作站所欲加入的網絡類型
G: 重新連接幀(reassociationrequest)
位於相同的擴展服務區域,但在不同基本服務區域之間遊走的移動工作站,若要再次使用傳輸系統,必須與網絡重新連接。
H: 連接應答與重新連接應答(associationresponse與reassociationresponse)
I: 認證(authentication)
J: Action
802.11h加入了action幀的支持,用來觸發測量動作
1.8 802.11與以太網幀轉換
無線基站的核心,其實就是橋接器,負責在有線與無線介質之間轉換幀
無線介質到有線介質
1、基站收到一個幀,會檢測該幀是否完整。接下來,基站會幀對所使用的物理城,檢視物理層標頭,然後驗證802.11幀上的幀檢驗碼
2、該幀無誤,基站會繼續檢視是否應該進一步處理
a:傳送至基站的幀,會將基站的MAC地址(BSSID)放到802.11MAC標頭的address1位。不符該基站BSSID的幀應予以丟棄。(有些產品並未實現此步驟)
b:802.11 MAC接着監測且移出重複的幀。產生重複幀的原因很多,不過最常見的情況是802.11應答信息在傳遞過程中丟失或有所損毀。爲了簡化上層協議的工作,因此由802.11MAC負責剔除重複的幀
3、一旦決定處理該幀,就必須進行解密,因爲該幀會收到鏈路層安全算法的保護
4、解密之後,判斷該幀是否爲幀片段,是否重組。完整性保護針對重組後完整幀,而不是個別的幀片段。(完整性保護ICV在數據中,也被加密)
5、經過步驟2的檢驗,判定基站必須橋送該幀,較複雜的802.11MAC標頭就會被轉換爲較簡單的以太網MAC標頭。
a:記錄在802.11MAC標頭的address3的目的地址,會被複制到以太網的目的地址。
b:記錄在802.11MAC標頭的address2位的源地址,會被複制到以太網的源地址
c:從802.11data位裏的SNAP標頭,將TYPE類型代碼複製到以太網幀裏的type位。如果該以太網幀亦使用SNAP,就複製整個SNAP標頭
d:順序信息主要供幀片段重組之用,不過當幀被橋送之後即立即丟棄
e:如果有標準的服務質量處理程序,即在此進行無線與有線的Qos對應。不過到目前爲止,用來表示服務質量的形式,通常就是在有線幀中使用的802.1p優先級等級bit,或者其他的控制形式。
6、重新計算幀校驗碼。以太網與802.11使用相同的算法來計算FCS,不過802.11幀多出一些位,同時爲FCS所保護。
7、將產生的新幀交付以太網界面傳送
有線介質至無線介質
1、驗證以太網FCS後,基站首先會檢視是否需要進一步處理所接收到的幀,也檢視該幀的目的地址是否屬於目前與基站連接的工作站。
2、將SNAP標頭加入以太網幀的數據之前。上層封包是以SNAP標頭進行封裝,而其type位是自以太網裏的類型代碼複製而來。如果該以太網幀也使用SNAP,則複製整個SNAP標頭
3、對幀的傳送進行排程。802.11包含複雜的省電過程,將幀置於傳送序列之前,基站可能會將幀暫存於緩存區。
4、一旦幀被置於序列待傳,就會被賦予一個順序編號。如有必要,所產生的數據可以用完整性檢測值加以保護。如果幀需要分段,則會根據事先設定好的分段門限進行分段。分段幀時,將會在sequence control位指定片段編號
5、如果幀需要保護,對幀的本體進行加密
6、802.11MAC標頭根據以太網MAC首部產生
a:將以太網的目的地址複製到802.11MAC標頭的address1位
b:將BSSID置於MAC標頭的address2位,以作爲幀的發送者
c:將幀的源地址複製到MAC標頭的address3
d:將其它位填入802.11MAC標頭。也就是把預計傳送時間填入duration位,並把適當的標誌填入到frame control 位
7、重新計算幀校驗碼。以太網與802.11使用相同的算法來計算FCS,不過802.11幀多出一些位,同時爲FCS所保護
8、所產生的新幀交付802.11界面傳送界面