--- tags: vwifi --- # 802.11 Wireless Networks - The Definitive Guide 閱讀心得 #### 頻率 & 頻寬 每一對通訊使用者必須使用一個「頻率範圍」來通話:通訊時不能只使用一個「頻率」,必須使用一個「頻率範圍」,這個頻率範圍稱為「頻寬(Bandwidth)」。我們說話不可能只有一種頻率,而會有高音(高頻)與低音(低頻)的變化,因此我們說話其實是發出某一個頻率範圍(頻寬)的聲音(聲波)。同理,當我們以高頻電磁波來傳送語音訊號時,也必須使用某一個頻率範圍(頻寬)才行。 不同對的通訊使用者必須使用「不同的頻率範圍」來通話:假設甲和乙使用頻率 900~901MHz 的電磁波通話,則丙和丁使用頻率 901~902MHz 的電磁波通話。手機並不會分辨到底是誰和誰在通話,而是接收「某一個頻率範圍」,因此甲與乙的手機接收頻率 900~901MHz 的電磁波,而丙與丁的手機接收頻率 901~902MHz 的電磁波,換句話說,所有的通訊元件都是「只認頻率不認人」。如果甲的手機可以同時接收頻率 900~901MHz 與 901~902MHz 的電磁波,則他會同時聽到乙、丙、丁三個人的聲音。 #### 頻率愈低繞射效果愈好(KHz>MHz>GHz) 繞射效果愈好代表可以在傳遞途中繞過障礙物,因此雖然基地台在室外,但是頻率MHz的電磁波可以繞過牆壁進入室內,我們在室內可以講手機,收音機在室內可以聽音樂,而衛星通訊使用GHz的電磁波無法繞過屋頂,因此必須在屋頂安裝碟型天線接收訊號再傳送到室內 #### 頻率愈高可用頻寬愈寬(GHz>MHz>KHz) 頻寬的定義為「可以傳遞訊號的頻率範圍」,單位與頻率相同為「赫茲(Hz)」 頻寬就好像高速公路,頻寬愈寬就好像高速公路愈寛(車道愈多),代表行車速度愈快,也就是通訊時資料傳輸率愈高 IEEE 802 規格的重心放在 OSI 模型最底下的兩層,因為它們同時涵蓋了實體(physical,簡稱 PHY)與數據鏈路(data link)元件。只要是 802 網絡,就必然會同時具備 MAC 與 PHY 兩種元件。 ==MAC 是一組用以決定如何訪問介質與傳送數據的規則,至於傳送與接收的細節則交由 PHY 負責。== 802.11 基本規格涵蓋了 MAC 以及兩種物理層 (physical layer) * 跳頻展頻(frequency-hopping spread-spectrum ,簡稱 FHSS)物理層: 跳頻展頻 (FHSS) 是一種展頻模組結構,使用的窄頻會以傳輸器與接收器都知道的方法變更頻率。經過適當同步處理後,兩個裝置就會維持單一邏輯通道。對非目標接收器來說,FHSS 就像是短脈衝雜訊。更簡單地說,資料會分解成封包,並由多個「跳頻」(共 79 個) 以虛擬亂數的方式,將封包傳輸至其他裝置的接收器。只有在同一跳頻模式上同步的傳輸器及接收器,才能存取傳輸的資料。傳輸器每秒會切換跳頻達 1,600 次,以==確保資料維持安全==。 * 直接序列展頻(Direct Sequence Spread Spectrum) 的技術提供一個可靠的無線連結,其基本原理是將要發送的基頻(Base Band)訊號轉換能量降低,但是頻寬更寬的展頻 (Spreading Signal)訊號再傅迭出去,==直接序列(DSSS)展頻技術的優點抗干擾、防竊聽==。 #### 80211 網絡主要包含四個元件 * 工作站(Station): 配置網絡的目的,是為了在工作站間傳送數據。所謂的工作站(station),是指配備無線網絡界面的計算設備。 * 基站(Access Point):802.11 網絡所使用的訊框必須經過轉換,方能被傳遞至其他不同類型的網絡。具備無線至有線(wireless-to-wired)橋接功能的設備稱為基站(access point,簡稱 AP);基站的功能不僅於此,但橋接(bridging)最為重要 * 無線介質(Wireless medium):802.11 標準以無線介質(Wireless medium)在工作站之間傳遞訊框 * 傳輸系統(Distribution system):當幾部基站(AP)串連以覆蓋較大區域時,彼此之間必須相互通信,才能夠掌握移動式工作站的行踪。而傳輸系統(distribution system )屬於 802.11 的邏輯元件,負責將訊框(frame)轉送至目的地 #### 基本服務組合(basic service set 簡稱 BSS) 是 802.1 一網絡的基本元件,由一組彼此通信的工作站所構成。工作站之間的通信,在某個模糊地帶進行,稱為基本服務區域(basic service area),此區域受限於所使用無線介質的傳播特性 分為: * 獨立式基本服務組合(independent BSS):在 IBSS 中,工作站彼此可以直接通信,兩者問的距離必須在可以直接通信的範圍內。最低限度的 802.11 網絡,是由兩部工作站所組成的 IBSS。通常,IBSS 是由少數幾部工作站針對特定目的而組成的臨時性網絡。常見的情況是在會議室中支持個別會議之用。會議一開始,與會人員彼此會形成一個 IBSS 以便傳遞數據。當會議結束,IBSS 隨即瓦解 * 基礎型網絡(infrastructure BSS):判斷是否為基礎型網絡,只要檢視是否有基站參與其中。基站負責基礎型網絡所有的傳輸,包括同一服務區域中所有行動節點之間的通信。 位於基礎型基本服務組合(BSS)的移動式工作站,如有必要跟其他移動式工作站通信,必須經過兩個步驟。首先,由開始對話的工作站將訊框傳遞給基站(AP)。其次,由基站將此訊框轉送至目的地。 這麼做的優點有: * 所有移動式工作站都必須位於基站的傳輸範圍之內。允許移動式工作站彼此直接通信雖然可以省下一些頻寬,不過代價是相對提高了物理層的複雜度,因為每部工作站都必須維護與服務區域中其他工作站的鄰接關係。 * 基站在基礎型網絡裡的作用是協助工作站節省電力。基站(AP)可以記住有哪些工作站處於省電狀態,並且為之暫存訊框,以電池供電的工作站可以關閉無線收發器,只有在傳輸或接收來自基站的暫存訊框時才會加以開啟。 #### 延伸式服务區域 802.11 允許我們將數個 BSS 串聯為延伸式服務組合(extended serviceESS),藉此延伸無線網絡的覆蓋區域。所有位於同一個 ESS 的基站(AP)將會使用相同的服務組合識別碼(set identifier,簡稱 SSID),通常就是使用者所謂的網絡「名稱」。 延伸式服務區域是 802.11 網絡所支持的最高價抽象概念。 ESS 所屬的基站會彼此合作,讓外界能夠使用單一 MAC 地址與 ESS 裡其他工作站通信,不論其置身何處。在圖中,路由器可使用單一 MAC 地址傳遞訊框給移動式工作站;由該工作站所連接的基站負責傳送訊框。路由器無須在意移動式工作站位於何處,而是靠基站傳送幀。 ![](https://i.imgur.com/2YnoKOk.png) #### 再論傳輸系統 基站(AP)具備兩種不同的界面,分別連接至同一個橋接引擎。圖中的箭頭代表往返橋接引擎的可能路徑。訊框將會通過橋接器送至無線網絡;==任何由橋接器的無線點所送出的訊框都會傳給所有已連接的工作站==。每部已連接的工作站均可傳遞訊框至基站。最後,橋接器的骨干點可以直接與骨幹網絡互動。在圖中,傳輸系統是由橋接引擎及有線骨幹網絡所組成。 ![](https://i.imgur.com/qlpZ5mW.png) #### 基站間的通信是傳輸系統的一部分 傳輸系統包含了管理連接的方式。一部無線工作站在同一時問只能與一部基站連接。如果某工作站己經與某基站連接,位於同一個 ESS 的其他基站必須能夠得知此工作站。 下圖中 AP4 必須得知所有與 AP1 連接的工作站。如果一部與 AP4 連接的無線工作站送出訊框給一部與 AP1 連接的工作站,AP4 的橋接引擎必須通過 ==Ethernet 所構成的骨幹網絡==將此訊框送給 AP1,如此 AP1 才能夠將之傳遞至最終目的地。 ![](https://i.imgur.com/QJHncg9.png) #### 80211 提供的基本服務 ![](https://i.imgur.com/JvZLAaa.png) #### 工作站服務 移動式工作站與基站的無線界面都會提供工作站服務。工作站提供「訊框傳遞」(frame delivery)服務讓信息得以傳遞,此外工作站還必須以「身份認證」服務來建立連接。工作站或許也會利用「機密性」功能,在信息行經容易遭受侵害的無線鏈路時加以保護。 #### 傳輸系統服務 傳輸系統服務負責將基站連接至傳輸系統。基站的主要功能是將有線網絡所提供的服務延伸至無線網絡。 方法是對無線端提供「傳輸」與「整合」服務 傳輸系統另外一項重要的功能是管理移動式工作站的連接。為了維護連接數據以及工作站的位置信息,傳輸系統還提供了「連接」、「重新連接」以及「解除連接」等服務。 #### 機密性與訪問控制機密性與訪問控制 略 #### Mobility Support 移動性是採用 802.11 網絡的主要動機之所在行進間用手機通話。在工作站移動時傳送數據,就好比在移動時用手機通話。 就 802.11 而言,基站之間可能出現三種轉換: * 不轉換: 如果工作站並未離開目前基站的服務範圍,就無須轉換。這種狀態之所以發生,可能是因為工作站並未移動,或是仍在目前所連接之基站的基本服務區域中移動 * BSS 轉換: 下圖展示了 BSS 轉換的過程。本圖有三部基站被賦予相同的 ESS。一開始,以 t=1 表示,配備 802.11 無線網卡的筆記型電腦,位於 AP1 的基本服務區,並與 AP1 處於連接的狀態。當該筆記型電腦離開 AP1 的基本服務區,並於 t=2 進入 AP2 的範圍時,就發生所謂的 BSS 轉換。 該移動式工作站會使用「重新連接」服務與 AP2 連接,而 AP2 則會開始送出訊框給該移動工作站。 BSS 轉換必須通過基站彼此合作。在上述狀況下,AP2 必須通知 API 該移動式工作站現在已經與 AP2 連接。 ![](https://i.imgur.com/YUNBj7N.png) * ESS 轉換: 是指從某個 ESS 移動至另一個 ESS。 802.11 並未支持此類轉換,不過允許工作站在離開第一個 ESS 的範圍之後,與第二個 ESS 裡的基站連接。之所以支持 ESS 轉換,是因為移動式工作站會立即與第二個 ESS 裡的基站連接。只要離開第一個 ESS 的範圍,任何作用中的網絡連接都會隨之斷線。 ### MAC 802.11 規格的關鍵在於 MAC(介質訪問控制層)。 MAC 位於各種物理層之上,控制數據的傳輸。不同的物理層可以提供不同的傳輸速度,不過物理層之間必須彼此互通。 802.11 採用載波偵聽(carrier sense multiple access,簡稱 CSMA)機制,來控制傳輸媒質的訪問。不過,碰撞會浪費寶貴的傳輸資源,因此 802.11 轉而使用衝突避免(CSMA/CA)機制,而非使用以太網所採用的碰撞檢測(CSMA/CD)機制。 #### 訊框的傳送 指不可分割的單一處理單元。雖然整個處理過程包含 好幾個步驟,但還是會被視為單一不可分割的過程。基本處理單元可說是“非成即敗”。若不完成所有步驟,整個過程就被視為失敗。數據幀的傳送者必須收到應答,否則該幀即被視為已經丟失。從傳送者的角度而言,究竟是一開始的數據幀,或者是回應信息在傳輸過程中丟失並不重要。因為無論如何,數據幀還得必須重傳。 #### 隱藏節點問題 (hidden node) ![](https://i.imgur.com/7cdJshq.png) 節點 2 可以之間跟節點 1 和節點 3 通信,不過某些因素導致節點 1 與節點 3 無法直接通信。 從節點 1 的角度來看,節點 3 屬於隱藏節點。 節點 1 與節點 3 有可能在同一時間傳送數據,這會造成節點 2 無法辨識任何信息。此外,節點 1 與節點 3 將無從得知錯誤發生,因為只有節點 2 才知道有衝突發生。 解決辦法: RTS/CTS ![](https://i.imgur.com/bSjTwS7.png) 節點 1 有個 frame 待傳送,因此送出一個 RTS 幀啟動整個過程。 RTS frame 本身帶有兩個目的:預約無線網路的使用權,並要求接收到這一消息的其他的工作站停止發言。一旦收到 RTS frame,接收端會以 CTS 應答。和 RTS frame 一樣,CTS frame 也會令附近的工作站保持沉默。 等到 RTS/CTS 完成交換過程,節點 1 即可傳送上面要傳送的 frame,無須擔心來自其他隱藏節點的干擾。 整個 RTS/CTS 傳輸過程會用到好幾個 frame,實際開始傳輸數據之前的延遲也會消耗相當的頻寬。因此,它通常只用在高用量的環境,以及傳輸競爭比較顯著的場合。對低用量的環境而言,通常無此必要。 #### CSMA CSMA的全名為Carrier Sense Multiple Access,中文翻譯為載波偵聽多路存取,Carrier Sense中的Carrier指的是媒介中傳遞的訊號,所以整體白話的來說就是「監聽媒介上的訊號」。那在什麼時候監聽呢?監聽則會發生在傳輸前與傳輸的過程中。那 Multiple Access 則指的是「多個裝置可以同時存取媒介」。 CA(碰撞避免)跟CD(碰撞偵測)的差異 碰撞偵測(CD)的機制應用在於那些「容易聽到碰撞的網路環境」,比如說以同軸電纜或是雙絞線基於乙太網路(ethernet)技術架設的區域網路(大家都連在同一條線上),只要監聽媒介,就可以聽到傳輸訊號。 碰撞偵測(CA)則適用於那些「不容易聽到碰撞的網路環境」,比如說無線網路。 #### CSMA/CD 1. 首先在電腦或網路設備要傳送資料前,先偵測媒介上是否有訊號傳輸,如果有訊號,就等到訊號結束;如果沒有就開始傳輸訊號。 2. 傳輸訊號的同時也要監聽是不是有其他訊號同時傳送而導致訊號碰撞。 3. 如果發生碰撞了,則馬上停止傳送,並且接著傳送一個不是資料訊號的一個「擾亂訊號」(Jamming signal),讓訊號碰撞持續,此用意在於讓所有連接同樣共享媒介的裝置都可以明確的聽到訊號碰撞的發生;而如果沒有發生碰撞,直到最後一個位元傳送完畢後則代表傳送成功。 4. 那在傳送完擾亂訊號後,傳送裝置則會==隨機的等待一段時間==再重新由第一個步驟開始,而每碰撞一次,代表資料沒有成功傳送,就會將裝置內的計數器就會加一,直到嘗試失敗16次後就不再傳送,則代表此次傳送失敗。 #### CSMA/CA 無線網路因為是透過空氣中的電波傳輸資料,相較於有線網路的傳輸媒介,無線電波更容易受到干擾,因此為確保正確傳輸,==每當傳輸一個裝置收到另外一個裝置傳送的資料,他就要回傳一個「確認封包」(Ack Frame)給發送的裝置,讓發送裝置知道他有成功傳送,反之則表示沒有成功傳送==。 1. 跟CSMA/CD一樣,首先在電腦或網路設備要傳送資料前,先偵測媒介上是否有訊號傳輸,如果有訊號,就等到訊號結束;而如果沒有偵測到訊號,會等一個訊框間隔時間(DIFS, distribute Interframe space),如果還是沒有聽到任何訊號才會嘗試傳送。 2. 進入 backoff 過程,從競爭窗口(Contention window)選擇一個隨機數,當倒數的時間到了,才真正的把訊號傳送到媒介上。也就是透過這個 IFS 以及隨機等待的時間(backoff),來嘗試做到「碰撞避免」。 3. ==如果之前的傳輸出現錯誤==,介質至少必須空出一段 EIFS 時間,然後一樣再用 (orderly exponential backoff) 算出一個隨機數(Backoff time)倒數,當倒數的時間結束,然後重新開始 backoff 過程。 4. 在傳送的同時,傳送裝置也會同時監聽,但是當封包傳送後就會完整傳送不會中斷。另外在封包內會保留一個「通道保留時間」(NAV),用意是讓範圍內的其他裝置停止傳送一段時間,避免碰撞。 5. 當傳送完成後,傳送裝置會等待一小段時間接收確認封包(Ack),如果有收到,就表示傳送成功,反之則沒有,則裝置會再回到步驟一再次嘗試。而每一次傳送過後沒有收到確認封包,代表資料沒有成功傳送,就會裝置內的計數器就會加一,直到嘗試失敗一定次數後就不再傳送,則代表此次傳送失敗。 #### MAC 訪問,協調功能 DCF(分散式協調功能): DCF 的核心是 CSMA/CA 訪問機制 PCF(點協調功能): 點協調者位於基站(AP),因此只有基礎型網絡才會使用 PCF #### 載波監聽功能與網絡分配向量 802.11 具備兩種載波監聽功能:物理載波監聽與虛擬載波監聽。只要其中有一個監聽功能顯示介質處於忙碌狀態,MAC 就會將此報告給高層的協議。 物理載波監聽功能是由物理層所提供,取決於所使用的介質與調製方式。要為射頻介質打造物理載波硬體相當不易(更確切的說法是十分昂貴),原因是除非採用昂貴的電子零件,否則收發器將無法同時進行收發的動作。此外,由於隱藏結點隨處可見,物理載波監聽並無法提供所有必要的信息。 虛擬載波監聽是由網絡分配向量(Network Allocation Vector,簡稱 NAV)所提供。 802.11的 frame 通常會包含一個 duration 欄位,用來預定一段介質使用時間。 NAV 本身就是一個計時器,以微秒為單位。 工作站會將 NAV 設定為預計使用介質的時間, 這包括完成整個處理必須用到的所有 frame。其他工作站會把 NAV 值倒數至零。只要 NAV 的值不為零,代表介質處於忙的狀態,此即虛擬載波監聽功能。當 NAV 為零時,虛擬載波監聽功能會顯示介質處於閒置狀態。 ![](https://i.imgur.com/BkGAATj.png) 為了確保整個過程不受中斷,節點 1 會在 RTS 中設定 NAV,防止傳送 RTS 時其他工作站將對介質進行訪問。所有收到 RTS 的工作站均會暫緩訪問介質,直到 NAV 消失。 然而,不見得網絡上每一部工作站均會收到這些 RTS 。因此,接收端會以 CTS 加以應答,其中亦包含 NAV,不過為時較短。此 NAV 可防止其他工作站在傳輸過程中訪問介質,直到傳輸過程結束。 一旦完成整個程序,經過一段分佈式幀間隔(distributed interframe space,簡稱 DIFS)時間之後,任何工作站均可對介質進行訪問,此時便進入競爭期間。 #### 訊框間隔 802.11 會用到四種不同的幀間隔。其中三種用來判定介質的訪問。 ![](https://i.imgur.com/E2vSRzZ.png) * 短幀間隔(Short interframe space ,簡稱 SIFS): SIFS 用於高優先級的傳輸場合,例如 RTS/CTS 以及 ACK。經過一段 SIFS(時間)後,即可進行高優先級的傳輸。一旦高優先級傳輸開始,介質即處於忙碌狀態,因此相較於必須等待較長時間才能傳輸的訊框,SIFS 時間結束後即可進行傳輸的幀優先級較高。 * 分佈式幀間隔(DCF interframe space ,簡稱 DIFS): DIFS 是競爭式服務中最短的介質閒置時間。如果介質閒置時間長於 DIFS,工作站可以立即對介質進行訪問。 * 點幀間隔(PCF interframe space ,簡稱 PIFS): PISF 主要被 PCF 使用在免競爭過程,有時被誤解為優先性幀間隔。在免競爭時期,有數據傳輸的工作站可以等待 PISF 期間過後加以傳送,其優先程度高於任何競爭式傳輸。 * 擴展的幀間隔(Extended interframe space ,簡稱 EIFS): 圖 3-6 並沒有表明 EIFS,因為 EIFS 並非固定的時間間隔。只有在幀傳輸出現錯誤時才會用到 EIFS。 #### 幀間隔與優先程度 一開始,基本操作和一般傳送並無不同:在可以開始傳送之前,基本操作同樣必須等待一段幀間隔(通常是 DIFS)時間。==不過,其後的步驟即開始使用 SIFS,而非 DIFS==。==由於 SIFS 短於其他幀間隔,一項基本操作的第二(以及之後的)步驟會在其他類型的幀被傳送之前將介質佔為己用==。利用 SIFS 與 NAV,工作站可以視需要佔用介質一段時間。 以 RTS/RTS 為例: SIFS 被應用在不同單位的基本操作之間。當傳送取得介質訪問權,接收端會在 SIFS 之後應答 CTS。任何試圖在 RTS 結束之後訪問介質的工作站,至少必須等候一段 DIFS 時間。若 DIFS 進行途中,SIFS 已先行結束,則會開始傳送 CTS。 ![](https://i.imgur.com/vICZTOc.png) #### DCF 競爭式訪問 在所有使用 DCF 的傳輸當中,將會運用到兩項基本原則 * 如果介質閒置時間長於 DIFS,便可立即進行傳輸。載波監聽同時可通過物理與虛擬(NAV)方式進行。 * 如果之前的幀接收無誤,介質至少必須空出一段 DIFS 時間。 * 如果之前的傳輸出現錯誤,介質至少必須空出一段 EIFS 時間。 * 如果介質處於忙碌狀態,工作站必須等候至頻道再度閒置。 802.11 稱之為訪問延期。一旦訪問延期,工作站會等候介質閒置一段 DIFS 時間,同時準備指數型退避訪問程序。 額外規則 * 錯誤復原(error recovery)屬於傳送端的責任。傳送端預期每個訊框均應收到應答信息,而且必須負責重傳,直到傳送成功為止。 * 涉及多個訊框的傳送,可以在傳輸過程的每個步驟更新 NAV。當所收到的介質預定時間比目前的 NAV 還長時,工作站即會更新 NAV * 以下的訊框類型可在 SIFS 之後傳輸,因此優先程度較高:應答(acknowledgment)、RTS/CTS 交換程序中的 CTS,以及分段程序中的訊框片段。 * 一旦傳送出第一個幀,工作站就會取得頻道的控制權。以後訊框及其回應均可使用 SIFS 進行傳送,以鎖定頻道不被其他工作站使用。 * 傳送中,後續訊框會將 NAV 更新成該介質預計使用的時間。 * 如果較高層的封包長度超過所設定的門限,必須使用擴展幀格式。 #### 計時器和錯誤復原 [ref](https://zhuanlan.zhihu.com/p/20721272) Slot Time:時隙是指的一個時間片段,在CSMA/CA中,節點競爭接入信道之前需要經過相應的隨機回退(backoff)過程,其中backoff過程就是由很多個時隙所組成的。 Contention window:競爭窗口是用來讓節點選擇隨機回退計數值(backoff counter)的範圍。 Backoff:隨機回退過程是指每一個節點在競爭信道時,所經歷的隨機退避過程。在這一過程開始時,節點首先在競爭窗口中選擇一個隨機數為基準的隨機回退計數值,同時每一個時隙,節點為"監聽"信道是否空閒,若信道空閒,那麼進行一次倒數,即計數值減1,若信道忙,則不進行相應倒數。當該隨機回退計數值回退到0時,節點可以發送數據。 ![](https://i.imgur.com/87luLbt.png) 1. 當STA 1與STA 2相繼存在數據,需要在競爭信道進行發送時,其首先需要"等待" DIFS時間,若DIFS時間內,信道保持空閒狀態,那麼就可以進行backoff過程。 2. 若STA 1與STA 2進入backoff過程時,其首先需要從競爭窗口(Contention window)選擇一個隨機數,在802.11協議中,默認的初始競爭窗口為31,即隨機回退計數值的範圍即是[0,31]。在上圖中,STA 1則是選擇了8,而STA 2選擇了2。 3. 在backoff過程中,每經過一個slot time,節點會"監聽"一次信道,若信道空閒,則相應的隨機回退計數器的值減1。如上圖中,經過3個slot time後,STA 1的隨機倒數計數器從8遞減至5,而STA 2相應從2遞減至0。 4. 當節點的隨機倒數計數器倒數至0時,節點競爭獲得信道,從而可以發送數據。如上圖,STA 2獲得信道後,發送PACKET A給AP。在AP接收到數據後,會採用CRC機制對數據進行校驗,若校驗通過,AP會在SIFS後,反饋ACK確認幀。 5. 當STA 2成功發送完數據, "等待" 了SIFS的時間之後,AP會向節點反饋ACK確認幀。當STA 2成功接收到ACK幀之後,這一次傳輸完成。 6. 當這一次傳輸完成後,節點需要再次"等待" DIFS的時間後,重新開始backoff過程。若節點剛剛發送完數據,那麼在backoff過程開始時,需要重新從競爭窗口中選擇一個隨機數進行倒數。若節點沒有發送數據,那麼直接從上一次的倒數結果繼續倒數。如上圖中,STA 1沒有競爭到信道,那麼其在第二次的backoff過程中,直接基於上次的5直接進行倒數至4。這樣的設計目的是為了保證網絡傳輸的公平性。 ![](https://i.imgur.com/uO8SCVa.png) 若在上述的第5步中,AP沒有成功接收節點的數據,或者AP對數據進行CRC校驗錯誤,那麼其不會反饋相應的ACK給節點。節點在ACK timeout之後,則知道對方沒有成功接收數據,該ACK timeout時間在理論分析時,一般與ACK接收時間相等,在具體工程設計中,可能會大一點點。那麼發送錯誤的節點,需要等待EIFS時間才可以再次接入信道,EIFS>DIFS,這樣是為了避免一些較差的節點持續爭搶信道資源。比如圖中STA 2即需要在等待EIFS之後,節點首先進行BEB(該機制我們後面詳細討論),然後重新開始backoff過程,而STA 1則直接在DIFS之後進行backoff。 #### 幀的分段與重組 來自較上層的封包,以及某些較大的管理幀,可能必須經過分段,無線頻道才有辦法加以傳輸。當乾擾存在時,分段封包同時有助於提升可靠性。 ![](https://i.imgur.com/25pvQnO.png) RTS 與 CTS 會將 NAV 設定成從預定時間到第一個幀片段結束。 其後的幀片段會彼此串通。每個幀片段都會設定 NAV,繼續掌握介質的使用權,直到下一個訊框的應答結束。 圖中,fragment0 設定了 NAV,並繼續掌握介質直到 ACK 1,而 Fragment 1 也設定了 NAV,並繼續掌控介質直到 ACK 2,依此類推。當最後一個幀片段及其應答送出時,NAV 即會設定為 0,代表介質即將在“片段宣洩期”完成之後釋放。 #### 訊框格式 [ref](http://www.tsnien.idv.tw/Network_WebBook/chap15/15-6%20%E8%A8%8A%E6%A1%86%E6%A0%BC%E5%BC%8F.html) ![](https://i.imgur.com/rWE1NAw.png) Frame Control ![](https://i.imgur.com/sXojh5o.png) 所有訊框的開頭均是長度兩個位元組的 Frame Control (訊框控制)位,包含: * Protocol * 由兩個 bit 構成 * 用來顯示 MAC 版本 * Type & Subtype * 用來指定訊框的類型 * 表中的表示方式與圖順序相反 * Type (b3 b2) * Subtype (b7 b6 b5 b4) * TO DS & From DS * 這兩個 bit 用來指示幀的目的地是否為傳輸系統 | |To DS = 0 | To DS = 1 | | -------- | -------- | -------- | | From DS = 0 | 所有管理與控制幀 IBSS (非基礎型數據訊框) | 基礎網絡裡無線工作站所發送的數據訊框 | | From DS = 1 | 基礎網絡裡無線工作站所收到的數據訊框 | 無線橋接器上的數據幀訊框 | * More fragments bit: 此 bit 的功能類似 IP 的 More fragmentsbit。若較上層的封包經過 MAC 分段處理,最後一個片段除外,其他片段均會將此 bit 設定為 1。 * Retry bit 有時候可能需要重傳訊框。任何重傳的訊框會將此 bit 設定為 1,以協助接收端剔除重複的訊框。 * Power management bit 802.11 網卡通常以 PC Card 的型式出現,主要用於以電池供電的膝上型或手持式電腦。為了提高電池的使用時間,通常可以關閉網卡以節省電力。此 bit 用來指出傳送端在完成目前的基本訊框交換之後是否進入省電模式。 1 代表工作站即將進入省電模式,而 0 則代表工作站會一直保持在清醒狀態。 * More data bit: 為了服務處於省電模式的工作站,基站會將這些由“傳輸系統”接收而來的幀加以暫存。基站如果設定此 bit,即代表至少有一個幀待傳給休眠中的工作站。 * Protected Frame bit 相對於有線網絡,無線傳輸本質上就比較容易遭受攔截。如果訊框受到鏈路層安全協議的保護,此 bit 會被設定為 1。 * Orderbit 訊框與訊框片段可依序傳送,不過發送端與接收端的 MAC 必須付出額外的代價。一旦進行“嚴格依序”傳送,此 bit 被設定為 1。 Duration/ID Duration/ID 位緊跟在 frame control 位之後。此位有許多功用,有三種可能的形式 ![](https://i.imgur.com/cq1C4oN.png) * 設定 NAV 當第 15 個 bit 被設定為 0 時,Duration/ID 位就會被用來設定 NAV。此數值代表目前所進行的傳輸預計使用介質多少微秒。工作站必須監視所收到的任何幀頭,並據以更新 NAV。任何超出預計使用介質時間的數值均會更新 NAV。 * 免競爭期間(PCF)所傳送的訊框 在免競爭期間(contention-free period,簡稱 CFP),第 14 個 bit 為 0 而第 15 個 bit 為 1。其他所有 bit 均為 0,因此 duration/ID 位的值為 32768。 * PS-Poll 訊框 為確保不致丟失任何訊框,從休眠狀態醒來的工作站必須送出一個 PS-Poll 訊框,以便從基站取得之前暫存的任何訊框。 Address 在 IEEE 802.11 規範中,位址型態(48 個位元)可能是下列兩種型態之一: 1. 個別位址(Individual Address):表示連結在網路上的某一獨立工作站位址,可做為目的或來源位址使用。 2. 群組位址(Group Address):表示某一工作站群組位址,僅能做為目的位址使用,可分為下列兩種類型: * 群播群組位址(Multicast-Group Address):某一位址代表一個工作站群組,此群組成員可接收該位址為目的地的訊框。 * 廣播位址(Broadcast Address):廣播位址的格式是所有位元都是 1(48 個位元),任何工作站都可接收該位址為目的地的訊框。 MAC 訊框格式共有四個位址欄位,這些欄位是用來記錄『基本服務區 ID』(BSS Identifier, BSSID)、起始位址(Source Address, SA)、目的地位址(Destination Address, DA)、傳送器位址(Transmitter Address, TA)、以及接收器位址(Receiver Address, RA),至於哪一個欄位存放何種位址,隨不同訊框型態而異。 * 目的位址(DA)可以是個別或群播位址,也可以是該訊框的最終目的 * 起始位址(SA)是產生此訊框的工作站位址 * 傳送器位址(TA)是指無線媒介上傳送此訊框的位址 * 接收器位址(RA)則是指在無線媒介上接收此訊框的位址,==TA 與 RA 大多屬於擷取點(AP)位址== * Basic Service Set ID (BSSID: 要在同一個區域劃分不同的局域網絡,可以為工作站指定所要使用的 BSS(基本服務集)。 在基礎網絡裡,BSSID(基本服務集標識)即是基站(AP)無線界面所使用的 MAC 地址。而對等(Ad hoc)網絡(分散式網路,無 AP)則會產生一個隨機的 BSSID,並將 Universal/Localbit 設定為 1,以防止與其他官方指定的 MAC 地址產生衝突。 Sequence Control 此位的長度為 16 個 bit,用來重組訊框片段以及丟棄重複訊框。它由 4 個 bit 的 fragment number (片段編號)位以及 12 個 bit 的 sequence number(順序編號)位所組成。 當上層把訊框交付給 MAC 傳送時,會被賦予一個 sequence number(順序編號)。此位的作用, 相當於已傳幀的計數器取 4096 的模(modulo)。此計數器由 0 起算,MAC 每處理一個上層封包就會累加 1。如果上層封包被切割處理,所有訊框片段都會具有相同的順序編號。如果重傳訊框,則順序編號不會有任何改變。 訊框片段之間的差異在於 fragment number(片段編號)。第一個片段的編號為 0。其後每個片段依序累加 1。重傳的片段會保有原來的 sequence number 協助重組。 Frame Boby: payload FCS (訊框檢驗序列) FCS 通常被視為循環冗餘碼(cyclic redundancy check,簡稱 CRC)。 FCS 讓工作站得以檢查所收到的訊框的完整性。 接收無誤的數據幀必須得到正面應答(ACK),否則就必須重傳。 #### 802.11對上層(LLC)協議的封裝 [ref](http://www.tsnien.idv.tw/Network_WebBook/chap7/7-4%20LLC%20%E5%8D%94%E5%AE%9A%E8%B3%87%E6%96%99%E5%96%AE%E5%85%83.html) P 65 #### multicast & broadcast 廣播、組播訊框無法加以分段,也無須得到應答。整個基本交換過程只牽涉到一個訊框,根據競爭式訪問控制規則加以傳遞。傳送結束後,所有工作站必須等待一段 DIFS 時間,然後在競爭期間倒數隨機產生的延遲時間。 因為訊框的交換過程只牽涉到一個訊框,所以將 NAV(網絡分配矢量)設定為 0。既然此後已無其他訊框,也就不必使用虛擬載波監聽鎖住介質,來防止其他工作站的訪問。傳送該訊框之後,所有工作站均會等候一段 DIFS 時間,然後通過競爭期間開始為任何遭延遲的訊框進行倒數。 ![](https://hackmd.io/_uploads/BkuFfS7En.png) #### unicast 單一訊框(最後一個片段)及其 ACK 兩部工作站之間的傳輸可靠性建立在簡單的正面應答上。單點傳播數據訊框必須得到正面應答,否則該訊框即會被認定已經丟失。 此訊框會利用 NAV 為本身、應答及 SIFS 預定介質使用權。設定較長的 NAV,是為了替整個交 換程序鎖住虛擬載波,以保證接收端可以傳送應答。因為此交換程序是以 ACK 做為結束,所以沒 有必要再鎖住虛擬載波,因此該 ACK 中 NAV 會被設定為 0。 ![](https://hackmd.io/_uploads/BJhaPSmVn.png) 訊框分段 包括 IP 在內,一些較上層的網絡協議或多或少都會用到訊框分段。在網絡層進行分段的缺點是,接收端必須加以重組 如果訊框在傳輸過程中遺失,整個封包就必須重傳。在鏈路層使用分段機制可以提升速度,亦即以較小的 MTU 在轉運點(hop)間傳送數據 此外,802.11 可以利用訊框分段來避免干涉。無線點播干擾通常會以瞬間而高能量的尖波形式出現,而且經常與 AC 電源線同步。將訊框加以分段,可保護大部分訊框不遭受損害。 ![](https://hackmd.io/_uploads/r1SUjBQVn.png) 最後兩個訊框和之前的交換過程沒有兩樣,NAV 的設定也完全相同。不過,倒數第二個訊框之前所有訊框均會使用 NAV,為下一個訊框鎖住介質。第一個數據訊框會將 NAV 的時間設定至足以涵蓋 ACK1 和下一個訊框片段及其回應(ACK2)。 為了表示其為訊框片段,MAC 會將訊框標頭控制位的 More Fragmentsbit 設定為 1。最後一個回應(ACK3)除外,其餘回應都會繼續為下一個數據片段及其回應延長鎖住介質的時間。後續的數據訊框會繼續延長 NAV 以涵蓋後續的回應,直到最後一個數據訊框才會將 More Fragmentsbit 設定為 0,而最後一個回應(ACK3)則會將 NAV 設定為 0。 訊框分段是由 MAC 的 fragmentation threshold(切割門限)參數所控制。大部分的網卡驅動程序都允許使用者設定此參數。任何超過分段門限的訊框都會被加以分段,分段方式因實際情況而異。 調高分段門限意味著訊框的傳輸負擔較小,不過訊框丟掉和損害的成本較高,因為將會有較多的數據必須丟棄與重傳。調低分段門限意味著傳輸負擔較重,不過在面臨較惡劣的環境時,這種做法可以提供較佳的穩定性。 RTS/CTS RTS/CTS 交換的做法和訊框分段一開始沒有什麼兩樣,只是 RTS 訊框並未攜帶任何數據。 RTS/CTS 中的 NAV 可讓 CTS 完成工作,而 CTS 則可用來為數據訊框保留介質使用權。 ![](https://hackmd.io/_uploads/HkvqhB7Nh.png) RTS/CTS 與訊框分段 ![](https://hackmd.io/_uploads/H1lg6B7N3.png) #### 省電程序 802.11 工作站可以關閉無線電波收發器,並且定期進入休眠狀態,以維持最長的電池使用時間。在這段期間,基站會為每部處於休眠狀態的工作站暫存訊框。若有暫存訊框,基站會在後續的 Beacon 訊框中告知工作站。由省電狀態喚醒的工作站可以使用 PS-Poll 訊框取得這些暫存訊框。 * 立即應答 基站可以對 PS-Poll(省電模式-輪詢)訊框立即作出應答。經過一段 SIFS(短訊框間隔)時間, 基站即可傳送訊框。如圖所示,PS-Poll 訊框隱含了一 NAV。 PS-Poll 訊框的 Duration/ID 位中包 含了 Association ID(連接識別碼),因此基站可以判斷有哪些訊框是為該工作站所暫存的。不過, MAC 規格書要求所有收到 PS-Poll 的工作站都必須更新 NAV,將 NAV 的值設定為一個 SIFS 加上一個 ACK 的時間(==因為工作站不知道 AP 的資料有多大,所以設定這個值讓 AP 取介質使用權==)。 雖然此 NAV 對數據訊框而言過短,但這期間基站(AP)會取得介質使用權,而所有工作站都會為了這個數據訊框而延後訪問介質。但數據訊框傳送結束時,NAV 隨即更新以反映數據訊框標頭中的數值(保證 ACK 可傳送)。 ![](https://i.imgur.com/i1KHEYN.png) 如果暫存的訊框過大,則必須進行分段 ![](https://i.imgur.com/LPqoc5R.png) 延遲應答 除了立即應答,基站可以先回復一個簡單應答。這種做法稱為延遲應答(deferred response),因為基站雖然回應了訪問暫存訊框的要求,但未並立即採取實際的發送行動。使用延遲應答的優點之一,在於基站方面的軟件較易實現,因為應答信息可以通過芯片組立即傳送,至於數據則可以先予以暫存,然後依正常過程傳輸。 通過 PS-Poll 要求訊框的工作站必須保持清醒,直到該訊框傳輸完成。不過,在競爭式服務期間,基站可能在任何時間傳遞訊框。此時工作站不能返回省電模式, 除非接收到一個 Beacon 訊框,其中對應該工作站的數據待傳已被清除或已全部傳送完。 ![](https://i.imgur.com/hl7FyVa.png) 工作站剛由省電模式轉變為活動模式,同時注意到基 站已經為它暫存了訊框。於是工作站會發出 PS-Poll 給基站,要求接收這些暫存訊框。不過,基站可能會選擇延遲應答,因此只回傳了一個 ACK。到目前為止,基站已經回應了工作站的暫存訊框訪問要求,並且承諾將在某個時間點加以傳送。工作站必須處於活動模式等候,也許經過幾次基本訊框交換之後,基站就會送出工作站所要的數據。雖然在圖中並未顯示,不過暫存幀還是由可能遭到分段的。 收到數據訊框之後,工作站還是必須停留在清醒狀態,直到下一個 Beacon 訊框被傳送出來。 Beacon 訊框只是用來提醒,是否有為某部工作站暫存的訊框,沒有辦法告知實際的訊框數量。一旦工 作站收到的 Beacon 訊框中顯示已無暫存訊框,便可斷定已經完成暫存訊框的接收,然後返回省電模式。 #### 無線介質到有線介質(802.11 至以太網) 1. 當基站接收到一個訊框,首先會檢測該訊框基本上是否完整。接下來,基站會針對所使用的物理層,檢視本章之前討論過的物理層標頭,然後驗證 802.11 幀上的幀檢驗碼(確認訊框完整性)。 2. 證訊框接收無誤後,基站就會繼續檢視是否應該進一步處理該訊框 * 傳送至基站的訊框,會將基站的 MAC 地址(即 BSSID)擺在 802.11 MAC 標頭的 Address 1 位。不符該基站 BSSID 的訊框應予以丟棄 * 802.11 MAC 接著監測且移出重複的訊框。產生重複訊框的原因很多,不過最常見的情況是 802.11 應答信息在傳送過程中丟失或有所損毀 3. 一旦基站判定需要進一步處理該訊框,就必須予以解密 4. 成功解密之後,基站即檢視該訊框是否為訊框片段,需要進一步重組。 5. 如果經過步驟 2 的 BSSID 檢驗,判定基站必須橋送該訊框,較複雜的 802.11 MAC 標頭就會被轉換為較簡單的以太網 MAC 標頭。 * 記錄在 802.11 MAC 標頭之 Address 3 位裡的目的地址,會被複製到以太網的目的地址。 * 記錄在 802.11 MAC 標頭之 Address 2 位裡的來源地址,會被複製到以太網的來源地址。 * 從 802.11 Data 位裡的 SNAP 標頭,將(Type)類型代碼複製到以太網的訊框裡的 Type 位。如果該以太網訊框亦使用 SNAP,就複製整個 SNAP 標頭。 * 順序信息主要供幀片段重組之用,不過當幀被橋送(轉成 MAC 標頭)之後即予以丟棄。 * (?) 如果有標準的服務質量處理程序,即在此進行無線與有線的 Qos 對應。 6. 重新計算訊框檢驗碼。以太網與 802.11 使用相同的算法來計算 FCS,不過 802.11 訊框多出一些位,同時為 FCS 所保護。 7. 所產生的新訊框交付以太網界面傳送。 有線介質至無線介質(乙太網路 to 80211) 將訊框從基站有線端橋接至無線介質的過程剛好相反: 1. 驗證以太網 FCS 後,基站首先會檢視是否需要進一步處理所接收到的訊框,亦即檢視該訊框的目的地址是否屬於目前與基站連接的工作站。 2. 將 SNAP 標頭附加於以太網訊框的數據之前。上層封包是以 SNAP 標頭進行封裝,而其 Type 位是自以太網幀裡的類型代碼複製而來。如果該以太網幀亦使用 SNAP,則復制整個 SNAP 標頭。 3. 對訊框的傳送進行排程 4. 一旦訊框被置於序列待傳,就會被賦予一個順序編號。如有必要,所產生的數據可以用完整性檢驗值加以保護。如果訊框需要分段,則會根據事先設定好的分段門限進行分段。分段訊框時,將會在 Sequence Control 位指定片段編號。 5. 如果訊框需要保護,則對訊框(或每個訊框片段)的本體加密。 6. 802.11 MAC 標頭是根據以太網 MAC 標頭產生 1. 將以太網的目的地址複製到 802.11 MAC 標頭的 Address 1 位。 2. 將 BSSID 置於 MAC 標頭的 Address 2,以做為無線介質上之訊框的發送者。 3. 將訊框的來源地址複製到 MAC 標頭的 Address 3 位。 4. 將其他位填入 802.11 MAC 標頭。也就是把預計傳送時間填入 Duration 位,並把適當的旗標填入 Frame Control 位。 7. 重新計算訊框檢驗碼。以太網與 802.11 使用相同的算法來計算 FCS,不過 802.11 訊框多出一些位,同時為 FCS 所保護。 8. 所產生的新訊框交付 802.11 界面傳送。