開發與維運

802.11abgn協議學習總結

1 提筆

自己從事WiFi行業多年,說來慚愧,竟然沒有靜下心來給個總結。最近由於工作關係,又再次涉及WiFi相關內容,故而花了些時間總結出此文檔。分享給同學們,同時也算是給自己一個交代。一杯敬明天,一杯敬過往?哈!

當然,還是那句話,如有不準確之處,還望各位同學批評指正。

2 802.11家族演進史

IEEE 802.11是現今無線局域網通用的標準,它是由電氣和電子工程師協會(IEEE)所定義的無線網絡通信的標準。從1997最初版發展到現在,歷經20多年,儼然已是一個龐大的協議家族。從命名上就可以看出:a一直到z,單字母用完,aa一直到目前的ax,雙字母繼續發展。所以個人認為802.11是迄今為止局域網領域最為複雜的數據鏈路層協議,沒有之一。

如此龐大的協議家族,每個都可以拿出來細談,本文主要集中在802.11a/b/g/n上,也就是重要的幾個milestone,WiFi5(11ac)和WiFi6(11ax)會後續另論。

協議重要的幾個版本演進史:

image.png
圖表 1 802.11版本演進

那大家可能會問,發展的幕後推手是什麼呢?答案是速度。對,就是為了滿足人類不斷對速度的追求。這算不算是一種慾望呢?哈!不扯淡,看圖,看看速度是怎麼變快的。

image.png
圖表 2 802.11物理層技術演進

上面這張圖很重要,下面很大篇幅其實都是來解釋這張圖。

對了,有個小概念澄清下。雖然經常將Wi-Fi與802.11混為一談,但兩者並不等同。1999年工業界成立了Wi-Fi聯盟,致力解決匹配802.11標準的產品的生產和設備兼容性問題。

3 802.11abgn物理層

我的經驗是,要學習掌握某一數據通信協議,先找出其OSI模型,然後從底層(物理層)向上層層剝離。對於802.11來說,就2層:物理層和MAC層。

3.1 最初的802.11(July 1997)

主要提供三種物理層:紅外技術,跳頻擴頻和直接序列擴頻

  • 紅外技術,沒有實際使用,不在討論範圍內
  • FHSS+GFSK,得到1Mbps和2Mbps速率
  • DSSS+BPSK/QPSK,得到1Mbps和2Mbps速率

3.1.1 FHSS和GFSK

何為FHSS跳頻擴頻呢?看如下圖:

image.png
圖表3 跳頻

跳頻為啥得到1Mbps和2Mbps數據速率呢?原因是GFSK調製解調技術。GFSK是調頻,也就是說依靠不同頻率的載波來傳遞二進制1和0。分為二階式和4階式:

  • 1M的符號symbol率(每秒傳輸1M個symbol),採用二階GFSK調製,每個symbol攜帶一個bit信息,對應就是1Mbps
  • 採用四階GFSK,每個symbol可以攜帶2個bit信息,對應就是2Mbps

image.png
圖表4 二階式GFSK

image.png
圖表5 二階式GFSK頻域圖

image.png
圖表6 四階式GFSK

image.png
圖表7 四階式GFSK頻域圖

3.1.2 DSSS和BPSK/QPSK

802.11最初版也定義了另外一種物理層DSSS,速率也可以達到1Mbps和2Mbps。同時定義了2.4G頻段的頻道分佈。如圖:

image.png
圖表8 2.4GHz頻譜圖

那麼何為DSSS直接序列擴頻?如下圖:

image.png
圖表9 Barker碼擴頻原理1

image.png
圖表10 Barker碼擴頻原理2

可以看出,DSSS就是利用擴頻碼(圖中是11位的Barker碼)承載要傳輸的二進制信息。這樣做的目的其實就是把窄帶信號分佈在較寬的頻帶上,提高抗干擾能力。

編碼好了,那就開始載波調製,空中傳輸了。DSSS採用PSK調相技術,即用載波的不同相位來傳輸二進制0和1. 具體又分為BPSK和QPSK。如下圖:

image.png
圖表11 BPSK

image.png
圖表12 QPSK

可以看出,同樣的載波,同樣的週期裡BPSK能攜帶1bit信息,QPSK能攜帶2bit信息。

那麼 ==速率=符號速率x 單個符號編碼位數/擴頻碼位數==

符號率固定為11M。

單個符號編碼位數,BPSK=1,QPSK=2。

Barker碼為11位。

至此,==BPSK 速率=11x1/11=1Mbps== ==QPSK 速率=11x2/11=2Mbps==

3.2 802.11b物理層

提供4種物理層:

  • DSSS+BPSK/QPSK+Barker,沒有變化,繼續提供1Mbps和2Mbps物理層
  • DSSS+QPSK+4-Bits CCK,引進5.5Mbps物理層
  • DSSS+QPSK+8-Bits CCK,引進11Mbps物理層

可以看出,新增了5.5Mbps和11Mbps物理層。那怎麼實現的呢?這就要談到CCK擴頻,區別於Barker 11位擴頻,CCK採用8位擴頻,配合QPSK調製,可以做到每個symbol攜帶4bit和8bit信息。

Again, 依然是這個公式:速率=符號速率x 單個符號編碼位數/擴頻碼位數

不難得出,==4 bit CCK對應的速率=11MHz x 4 bit / 8 = 5.5Mbps==​ ==8 bit CCK對應的速率=11MHz x 8 bit / 8 = 11Mbps==

3.3 802.11a物理層

工作在5GHz,速率最高達到54Mbps,劃重點:

  • 開闢了新的頻段5G
  • 採用了OFDM
  • 更高階的QAM編碼

我們來一一介紹。首先是頻譜發生了變化。如下圖:

image.png
圖表13 802.11a頻譜與頻道

OFDM,正交頻分複用。基本原理:

將信號分割為N個子信號,然後用N個子信號分別調製N個相互正交的子載波。OFDM 物理層將每個頻寬20MHz 的頻道劃分52個子載波。其中有4 個子載波充當導波(pilot carrier),用以監控路徑偏移與 ICI。至於其餘 48 個子載波則是用來傳遞數據。子載波之問彼此相距0.3125MHz ,頻道編號從-26 至 26。這就好比同樣寬的馬路,以前是單車道,現在變成了48個車道,馬路沒變,但通行能力增大了。

image.png
圖表14 頻域中的正交性

QAM,正交幅度調製。也就是同時利用了載波的振幅和相位來傳遞信息。如下圖:

image.png
圖表15 16 QAM和64 QAM

可以看出,16 QAM可以做到每個符號symbol攜帶4位二進制信息;64 QAM可以攜帶6位二進制信息。

至此,我們來算筆賬,看看11a速率的組成和由來。

==物理層速率Mbps=子載波數x調製階數x編碼效率/OFDM符號發送間隔==

image.png
圖表16 802.11a速率表

==舉個栗子,對應調製方式16-QAM,編碼效率為1/2。速率怎麼算呢?在802.11a中,數據子載波是48個,16QAM調製對應的每個symbol可以攜帶4位信息,R=1/2是編碼率(為了能抗干擾增加糾錯能力,就要增加冗餘度,即1/2可以理解為1個bit用2個bit來傳輸),一個OFDM symbol的傳輸時間是4us(可以理解為每秒傳輸0.25M個OFDM symbol)。即48x4x(1/2)x0.25M=24Mbps。==

講到這兒,歇會兒,喝口水,讓我們在54Mbps的速率上躺會兒。

3.4 802.11g物理層

與11a的技術相同,區別是工作在2.4GHz頻段。==故最高速率也是54Mbps==。

但有一點要注意,11b也工作在2.4G頻段,那11g就要兼容11b(CCK DSSS)。 如何做到呢?方法有二:

  • 類似隱藏節點的解決辦法 RTS/CTS機制
  • CTS to Self機制

關於這兩點,涉及到MAC層,在此先記住就行了,後面MAC章節會講到。
3.5 802.11n物理層
革命尚未成功,同志還需努力,讓我們繼續攀升速率。802.11n關鍵技術:

  • MIMO
  • 40MHz信道
  • Short Guard Interval
  • OFDM改進
  • 編碼率的改進

啥?這麼多新名詞!淡定,讓我們一個個來講。


MIMO,多輸入多輸出。**MIMO是802.11n物理層的核心,指的是一個系統採用多個天線進行無線信號的收發。它是當今無線最熱門的技術,無論是3G、IEEE 802.16e WIMAX,還是802.11n,都把MIMO列入射頻的關鍵技術。MIMO主要有以下典型作用:

  • 提高吞吐量

通過多條通道,併發傳遞多條空間流,可以成倍提高系統吞吐。如圖17.

  • 提高無線鏈路的健壯性和改善SNR

通過多條通道,無線信號通過多條路徑從發射端到達接收端多個接收天線。由於經過多條路徑傳播,每條路徑一般不會同時衰減嚴重,採用某種算法把這些多個信號進行綜合計算,可以改善接收端的SNR。需要注意的是,這裡是同一條流在多個路徑上傳遞了多份,並不能夠提高吞吐。如圖18.

image.png
圖表17 併發2條空間流

image.png
圖表18 MIMO利用多徑傳輸數據

OFDM 改進。OFDM在802.11a/g時代已經成熟使用,到了802.11n時代,它將MIMO支持的子載體從52個提高到56個。需要注意的是,無論802.11a/g,還是802.11n,它們都使用了4個子載體作為pilot子載體,而這些子載體並不用於數據的傳遞。所以802.11n MIMO將物理速率從傳統的 ==54Mbps提高到了58.5 Mbps(即54*52/48)==

編碼率的改進

按照無線通信的基本原理,為了使信息適合在無線信道這樣不可靠的媒介中傳遞,發射端將把信息進行編碼並攜帶冗餘信息,以提高系統的糾錯能力,使接收端能夠恢復原始信息。802.11n所採用的QAM-64的編碼機制可以將編碼率(有效信息和整個編碼的比率)從3/4 提高到5/6。所以,對於一條空間流,在MIMO-OFDM基礎之上,==物理速率從58.5提高到了65Mbps(即58.5乘5/6除以3/4)==

Short Guard Interval

由於多徑效應的影響,信息符號(Information Symbol)將通過多條路徑傳遞,可能會發生彼此碰撞,導致ISI干擾。為此,802.11a/g標準要求在發送信息符號時,必須保證在信息符號之間存在800 ns的時間間隔,這個間隔被稱為Guard Interval (GI)。802.11n仍然使用缺省使用800 ns GI。當多徑效應不是很嚴重時,用戶可以將該間隔配置為400ns,即每個OFDM符號連續時間從4us縮短為3.6u。對於一條空間流,可以將吞吐提高近10%,即從 ==65Mbps提高到72.2 Mbps==。對於多徑效應較明顯的環境,不建議使用Short Guard Interval (GI)。

image.png
圖表19 SGI減小幀間距

40MHz 信道

這個比較好理解,對於無線技術,提高所用頻譜的寬度,可以最為直接地提高吞吐。就好比馬路拓寬了,車輛同行能力自然提高。傳統的802.11a/g使用的頻寬是20MHz,而802.11n支持將相鄰兩個頻道綁定為40MHz來使用,所以可以最直接地提高吞吐。

image.png
圖表20 40MHz信道

需要注意的是:對於一條空間流,並不是僅僅將吞吐從72.2 Mbps提高到144.4(即72.2×2 )Mbps。對於20MHz頻寬,為了減少相鄰信道的干擾,在其兩側預留了一小部分的帶寬邊界。而通過40MHz綁定技術,這些預留的帶寬也可以用來通訊,可以將子載體從104(52×2)提高到108。按照 ==72.2x2x108/104進行計算,所得到的吞吐能力達到了150Mbps==

總之,11n的速率就是這樣一步步提上來的。彙總如下圖:

image.png
圖表21 11n速率攀升圖

同樣,那我們總結下11n的速率如何計算。

==速率=子載波數目子載波攜帶的數據位碼率/每個OFDM符號持續時間*空間流數==

image.png
圖表22 802.11n MCS速率表

==舉個栗子,MCS 31,600Mbps怎麼算出來的。套用上面公式,子載波數目為108,子載波攜帶的數據位為6(64QAM攜帶6位信息),編碼率為5/6,每個OFDM符號持續時間3.6us,MIMO空間流為4. (108 x 6 x (5/6)/3.6) x 4 = 600Mbps==

4 802.11 MAC層

802.11 MAC層協議涉及的東西特別多,在這我就主要介紹以下幾點,以求能讓大家瞭解MAC層基本的工作原理:

  • DCF/PCF
  • CSMA/CA工作機制
  • RTS/CTS解決隱藏節點的問題
  • 802.11 MAC層幀格式

DCF(Distributed Coordination Function):廣泛使用的模式,主流模式,也就是AP和Station的通信模式。

image.png
圖表23 DCF通信模式

PCF(Point Coordination Function): 很少應用,也就是Station和Station直接wifi連接進行通信。

image.png
圖表24 PCF通信模式

CSMA/CA:
何為CSMA/CA?見下圖:

image.png
圖表25 CSMA/CA解決的問題

CSMA/CA工作原理:

image.png
圖表26 CSMA/CA工作機制

RTS/CTS解決隱藏節點的問題:
何為隱藏節點呢?見下圖:

image.png
圖表27 隱藏節點問題

解決辦法:

image.png
圖表28 RTS/CTS機制解決隱藏節點問題

802.11 MAC幀格式:

image.png
圖表29 802.11幀格式

繼續分解Type和Sub Type字段:

image.png
圖表30 Type和Sub Type字段分解

image.png
圖表31 802.11 Frame Control字段分解

image.png圖表32 802.11 Duration字段解釋

802.11幀有4個地址,如何應用呢?且聽我分解:

image.png
image.png
image.png
圖表33 802.11幀尋址機制

image.png
圖表34 802.11幀Sequence和FCS字段

講到這裡,是不是感覺自己的腦力算力不夠了呢?:) 沒關係,那我們就舉個栗子,講一個完整的802.11通信過程。

5 完整的一個802.11WPA/WPA2-PSK通信過程

假如你有一個AP,一個Station,AP上配了一個SSID,啟用了WPA2-PSK加密。這時候你在Station上點擊連接無線名字為SSID的網絡。之後發生了什麼呢?如下:

image.png
圖表35 STA連接AP

image.png
圖表36 4次握手

image.png
圖表37 四次握手續

image.png 圖表38 上網衝浪

Over,是不是感覺很high?很high就對了,快樂工作,認真生活!!!

6 End

WiFi還在繼續,因為人類對速度的追求是沒有止境的,11ac已經達到1Gbps,11ax還在標準化中,有望到達11Gbps。。。

關於11ac和11ax,且聽下回分解。。。

歡迎同學們批評指正,隨時拍磚!

原文作者:LG
點擊查看原文

Leave a Reply

Your email address will not be published. Required fields are marked *