WiFi基礎(五):802.11幀結構與WiFi控制幀、管理幀、數據幀

来源:https://www.cnblogs.com/liwen01/p/18428321
-Advertisement-
Play Games

802.11 無線 WiFi 有 數據幀,管理幀、控制幀 三種類型幀。這些幀由 9 個部分組成:Frame Control,Duration ID,Address1,Address2,Address3,Seq-ctl,Address4,Frame Body,FCS。需要註意的是,有些組成部分在有些幀... ...


liwen01 2024.09.22

前言

前面介紹了 WiFi 的工作原理和 WiFi 的接入過程,這裡將通過分析 WiFi 具體數據包結構,讓你對 WiFi 工作原理和接入過程有一個更進一步的瞭解。

前面文章可以通過下麵連接查看:

WiFi基礎(四):WiFi工作原理及WiFi接入過程

(一) 802.11 幀

802.11 無線 WiFi 有 數據幀,管理幀、控制幀 三種類型幀。

這些幀由 9 個部分組成:Frame Control,Duration ID,Address1,Address2,Address3,Seq-ctl,Address4,Frame Body,FCS

需要註意的是,有些組成部分在有些幀里並不是必須的。

九個部分的功能簡介如下:

  • Frame Control (幀控制):Frame Control欄位位於幀的開頭,用於定義幀的類型、子類型、協議版本、幀方向、以及一些控制標誌。
  • Duration/ID (持續時間/標識符):該欄位用於指定網路中其他節點的NAV (網路分配向量)計時器,用於控制介質訪問。
  • Address1 (地址1):常表示幀的接收者 MAC 地址。在To DS 為 1 的情況下,表示目標 AP 的地址
  • Address2 (地址2):通常表示幀的發送者 MAC 地址。
  • Address3 (地址3):根據幀類型的不同,這個欄位可以表示不同的地址
  • Sequence Control (序列控制):該欄位用於幀的序列控制和片段管理
  • Address4 (地址4):無線分散式系統) 或中繼的情況下使用。通常用於表示源或目標地址。
  • Frame Body (幀體):包含實際的數據負載或管理信息。根據幀的類型和子類型,該欄位的內容和長度可以不同。
  • FCS (Frame Check Sequence,幀校驗序列):用於幀的錯誤檢測。通常是一個 32 位的 CRC 校驗碼,用於驗證幀的完整性。

(1) Frame Control (幀控制)

(a) Protocol Version (協議版本) [第0-1位]

指定協議的版本號。當前的 802.11 標準使用版本號 00,即 0。

(b) Type (幀類型) [第2-3位] :

定義幀的主要類型。

  • 00:管理幀 (Management Frame)
  • 01:控制幀 (Control Frame)
  • 10:數據幀 (Data Frame)
  • 11:保留

(c) Subtype (子類型) [第4-7位]

定義幀的子類型,不同的主類型有不同的子類型

對於管理幀:

  • 0000:Association Request
  • 0001:Association Response
  • 1000:Beacon

對於控制幀:

  • 1101:ACK
  • 1011:RTS (Request to Send)
  • 1101:CTS (Clear to Send)

對於數據幀:

  • 0000:數據幀 (無數據類型區分)
  • 1000:QoS 數據幀

(d) To DS (發送到分散式系統) [第8位]

指示該幀是否發送到分散式系統 (即無線接入點AP)

取值:

  • 0:幀不是發送到 DS (通常是 STA 發送給 AP 的幀)
  • 1:幀是發送到 DS (通常是 AP 發送給 STA 的幀)

(e) From DS (來自分散式系統) [第9位]

指示該幀是否來自分散式系統。

取值:

0:幀不是來自 DS (通常是 AP 發送給 STA 的幀) 1:幀是來自 DS (通常是 STA 發送給 AP 的幀)

(f) More Fragments (更多片段) [第10位]

指示當前幀是否有更多的片段。如果一個數據幀被分片發送,那麼除最後一個片段外,所有片段的此位都置為1

取值: 0:這是最後一個片段; 1:後續還有片段

(g) Retry (重傳) [第11位]

指示當前幀是否為重傳幀。如果之前發送的幀沒有被正確確認,幀會被重傳,此位會置為1。

取值: 0:首次發送; 1:重傳幀

(h) Power Management (電源管理) [第12位]

指示站點的電源管理狀態。

取值:0:站點處於活動模式; 1:站點處於省電模式

(i) More Data (更多數據) [第13位]

由AP設置,用於指示站點是否有更多的數據幀等待接收。

取值: 0:沒有更多數據;1:有更多數據

(j) Protected Frame (保護幀) [第14位]

指示幀的內容是否加密,使用的是 WEP、TKIP、CCMP 等加密協議。

取值:0:幀未加密; 1:幀已加密

(k) Order (順序) [第15位]

指示該幀是否以嚴格順序處理,通常用於 QoS 數據幀。

取值:0:不需要嚴格順序處理;  1:需要嚴格順序處理

上面 802.11  Beacon frame 幀,版本號為 0;幀類型為 00 為管理幀;子類型為1000 為Beacon 幀。

(2) Duration/ID (持續時間/標識符)

Duration/ID 欄位的功能因幀的類型和上下文而異,主要有以下兩種主要用途:網路分配向量 (NAV)持續時間 和 AID (Association ID)

(a) 網路分配向量 (NAV)持續時間

對於大多數數據幀和管理幀,Duration/ID欄位表示剩餘的幀傳輸時間。它告訴網路中的其他設備該幀將占用通信介質多長時間,從而更新它們的網路分配向量 (NAV)。NAV是一個計時器,指示設備在特定時間內不應訪問通信介質,避免衝突。

單位:微秒 (µs)

數據幀: Duration/ID 欄位表示從當前幀開始,到ACK幀結束所需的時間。這包括數據幀傳輸時間、SIFS (短幀間隙)時間和ACK傳輸時間。

RTS/CTS幀 在RTS (Request to Send) 和 CTS (Clear to Send) 幀中,Duration/ID 欄位表示整個傳輸會話的剩餘時間,包括數據幀和相應的ACK幀傳輸。

(b) AID (Association ID)

在某些幀 (如 Power Save Poll 幀)中,Duration/ID 欄位包含的是站點的 Association ID (AID),這是一個由接入點 (AP) 分配給每個關聯站點的唯一標識符。當欄位被用於此目的時,欄位的高兩位通常設置為 11 以表示 AID,而剩餘的14位表示實際的 AID 值。

上面的 CTS 幀,Duration 為 134 ms,表示該傳輸會持續134 ms,在這期間同通道的其它設備需要保持安靜。

(3)Sequence Control (序列控制)

Sequence Control 欄位用於管理幀的序列化和片段化。這個欄位有助於確保數據幀能夠按正確的順序組裝,並檢測和處理重傳的幀。

Sequence Control 欄位分為兩個部分: Fragment Number (片段號):4位 和 Sequence Number (序列號):12位

(a) Fragment Number (片段號) [4位]

片段號用於標識幀的分片部分。由於無線傳輸可能會受到干擾,大型幀在傳輸前可能會被分割成多個小片段,每個片段都有唯一的片段號

取值範圍:0 到 15 (即2^4 - 1)

Fragment Number 的主要功能

片段管理: 當一個幀被分片時,片段號用於標識每個片段的順序,以便接收端正確重組原始幀。

重傳管理:在某些情況下,如果一個片段由於傳輸錯誤而丟失,只有丟失的片段需要重傳,而不是整個幀。片段號幫助識別需要重傳的具體片段。

(b) Sequence Number (序列號) [12位]

序列號用於標識發送方發出的幀的順序,以便接收方能夠檢測丟失的幀並正確重組數據。

取值範圍:0 到 4095 (即2^12 - 1)

Sequence Number 主要功能:

幀順序管理:序列號幫助接收端按正確的順序排列接收到的幀。如果接收到的幀序列號不連續,說明有幀丟失或需要重傳。

重傳檢測:當幀重傳時,序列號保持不變,但片段號可能變化。接收方通過序列號識別重傳的幀,並決定是否丟棄或處理該幀

(c) 工作原理

分片傳輸: 當一個大數據幀被分片時,所有片段使用相同的序列號,但片段號遞增。例如,假設序列號為100,片段號為 0,表示第一個片段;片段號為 1,表示第二個片段,依此類推。

幀重傳: 如果幀在傳輸過程中丟失或被接收端判斷為錯誤,發送端會重傳該幀。重傳幀的序列號與原幀相同,但片段號可能發生變化,具體取決於傳輸的片段。

查看上面的數據幀,被分開了多個數據幀,當前 Sequence Number 為 1144 。

(二) 無線空口包

WiFi 是通過無線電報在空中進行數據交互,所以稱為空中介面包(Air Interface Packet),也簡稱為空口包。它包含了無線 WiFi 網中傳輸的所有信息。

(1) 空口包 capture

在有線網中,我們一般使用 Wireshark 來抓取網卡的所有數據,但是在無線 WiFi 中,無線口空包數據一般使用 Omnipeek 來抓取。

Omnipeek 需要搭配一個數據分析網卡來使用,可以在不建立鏈接的前提下,直接抓取到 802.11 無線數據,一般用於研究開發 WiFi 協議、分析無線連接過程、監控無線網路等。

關於 Omnipeek 的使用,網上介紹比較多,我這裡就簡單概括一下使用方法。

  • 安裝 Omnipeek 軟體和驅動
  • 設置 Omnipeek 需要抓取的頻段(通道)
  • 如果 AP 是加密的的,需要設置密碼

通過上面方式就可以抓取到某個通道的所有無線信號,具體使用與 Wireshark 類似。抓取到的數據幀如下:

(三) 管理幀

管理幀有:Beacon 信標幀、Probe Request 檢測請求幀、Probe Response 檢測應答幀、Authentication 認證幀、De-Authentication 解除認證幀、Association Request 連接請求幀、Re-Association Request 重新連接請求、Association Response 連接應答幀

這裡我們主要介紹:Beacon 信標幀、Association Request 連接請求幀 和 Association Response 連接應答幀

(1) Beacon 幀

Beacon 的 Subtype 為1000,所以整個幀類型為:001000b,也就是 0x08。

使用過濾條件為:wlan.fc.type_subtype == 0x08 可以刷選出所有的 beacon 幀。

Beacon 由無線接入點 (AP)定期廣播,用於宣佈無線網路的存在,並向附近的客戶端設備提供必要的網路信息,以便它們能夠加入和管理連接。

(a) Beacon幀的功能:

網路發現:Beacon 幀包含了無線網路的SSID (Service Set Identifier),幫助客戶端設備發現和識別無線網路。

同步:Beacon 幀攜帶時間戳,客戶端設備通過接收 Beacon 幀可以同步其時鐘與AP的時鐘,這對於協調設備的定時和節能至關重要。

傳遞網路配置信息:Beacon 幀包含網路的配置信息,如支持的速率、加密方法、通道信息等,幫助客戶端設備配置和優化其連接。

信號廣播:Beacon 幀還幫助客戶端設備確定信號強度,從而選擇合適的 AP 進行連接。

(b) Beacon幀的工作原理

定期廣播: AP按照設定的 Beacon 間隔 (通常為100 TU,即102.4毫秒)定期發送Beacon幀,以宣佈其存在和提供網路信息。

客戶端掃描: 無線客戶端設備定期掃描通道,接收不同 AP 發送的 Beacon 幀,通過這些幀中的信息來選擇合適的 A P進行連接。

網路加入和管理: 客戶端設備一旦選擇了合適的 AP,便通過 Beacon 幀中的信息來配置連接參數,例如通道、速率、加密方法等。

節能管理: 當設備進入節能模式時,它會依賴 Beacon 幀中的 TIM 欄位來判斷何時需要喚醒接收數據,減少不必要的能耗。

(c) Beacon幀的結構

Frame Control (幀控制):類型欄位為管理幀,子類型欄位為Beacon

Duration/ID (持續時間/ID) 表示幀傳輸需要的時間,Beacon 幀一般設為 0,表明沒有後續操作需要保留介質。

Address 1 (Destination Address,目的地址) :通常設置為廣播地址 (FF:FF:FF:FF:FF),因為Beacon幀是廣播幀,面向所有設備。

Address 2 (Source Address,源地址):AP的MAC地址,標識發送Beacon幀的無線接入點。

Address 3 (BSSID,基本服務集標識符): 網路的BSSID,通常與Address 2相同,除非是中繼的場景。

Sequence Control (序列控制): 包含序列號和片段號,用於管理幀的順序和重組。

Frame Body (幀主體) :Beacon幀的主要內容,包含網路的配置信息和時間同步信息。以下是Frame Body中的關鍵欄位:

  • Timestamp (時間戳):用於同步客戶端設備的時鐘。
  • Beacon Interval (信標間隔):AP發送Beacon幀的時間間隔,單位為TU (Time Unit,1TU = 1024微秒)。
  • Capability Information (能力信息):描述AP支持的功能,如是否啟用加密、是否為基礎設施模式等。
  • SSID (服務集標識符):網路的名稱,幫助客戶端識別網路。
  • Supported Rates (支持的速率):AP支持的數據速率列表。
  • DS Parameter Set (DS參數集):指示使用的通道號。
  • Traffic Indication Map (TIM,流量指示圖):用於指示AP暫存的數據包,尤其在節能模式下,告訴客戶端何時需要喚醒以接收數據。
  • **Country Information (國家信息):包括地區、通道等限制信息 (可選)。
  • RSN Information (RSN信息):如果網路啟用了加密 (如WPA/WPA2),此欄位包含安全信息。

(2)Association Request 幀

Association Request 幀是802.11無線WiFi網中用於建立客戶端設備(例如筆記本電腦、智能手機等)與無線接入點 (AP) 之間連接的管理幀之一。

這個幀由客戶端設備在選擇了一個 AP 後發出,表示它希望加入這個無線網路。

使用參數 wlan.fc.type_subtype == 0x00 可以過濾出所有的 Association Request 幀

(a) Association Request 幀的功能

加入網路:客戶端設備使用 Association Reques t幀請求加入一個 AP 管理的無線網路。

傳遞客戶端能力:幀中包含了客戶端設備的能力信息,例如支持的速率、加密方法、QoS 功能等。

獲取網路資源:通過關聯請求,客戶端能夠獲取到網路分配的資源,例如 IP 地址、網路許可權等

(b) Association Request 幀的工作原理

掃描與發現: 客戶端設備通過主動或被動掃描(如發送探測請求幀或接收信標幀)發現可用的 AP。

發送關聯請求: 在選擇目標 AP 後,客戶端設備發送 Association Request 幀給AP,請求加入網路。

AP處理請求: AP 收到請求後,會檢查客戶端設備的能力和配置是否與網路相容,並確定是否允許其加入。

發送關聯響應:如果 AP 同意請求,它將返回一個 Association Response 幀,指示關聯的成功與否,並分配一個關聯 ID (AID)。如果不成功,AP 會給出拒絕原因。

建立連接: 關聯成功後,客戶端設備和AP之間的連接建立,客戶端設備可以開始數據傳輸。

(c) Association Request 幀的結構

Frame Control (幀控制) :類型欄位為管理幀 (00)子類型欄位為 Association Request (0000)。

Duration/ID (持續時間/ID):指定傳輸此幀所需的時間,或包含關聯ID。

Address 1 (目的地址) 目標 AP 的 MAC 地址 (即接收地址)。

Address 2 (源地址) 發送 Association Request 的客戶端設備的 MAC 地址。

Address 3 (BSSID,基本服務集標識符) 目標網路的 BSSID,通常與 Address 1 相同。

Sequence Control (序列控制) :包含幀的序列號和片段號,用於管理幀的順序和重組。

Frame Body (幀主體) Association Request 幀的核心部分,包含客戶端設備的能力和配置參數。幀主體包含以下子欄位:

  • Capability Information (能力信息) 描述客戶端設備的能力,如是否支持加密、短前導碼、QoS、功率管理等功能。

  • Listen Interval (偵聽間隔) 客戶端設備與 A P通信時的間隔,表示客戶端設備多長時間偵聽一次信標幀。值越小,客戶端越頻繁地檢查 AP 發送的信標,消耗的功率越大。

  • SSID (服務集標識符) 客戶端設備請求加入的無線網路的 SSID (網路名稱)。如果客戶端設備明確指定要加入哪個網路,就會包含這個欄位。

  • Supported Rates (支持的速率) 客戶端設備支持的數據傳輸速率列表。AP 會根據這個列表判斷是否可以支持客戶端的請求,並選擇最佳傳輸速率。

  • Extended Supported Rates (擴展支持速率) 如果客戶端設備支持的速率超過了 8 個,則會使用這個欄位來傳遞更多速率信息。

  • RSN Information (RSN信息) 如果網路啟用了 WPA/WPA2 加密,客戶端會在這個欄位中發送其支持的安全功能和加密方法。

  • Power Capability (功率能力) 客戶端設備的最小和最大傳輸功率,通常在需要節能或具有特定功率要求的設備中使用。

  • Supported Channels (支持的通道) 客戶端設備支持的通道範圍,用於 AP 選擇適當的通道進行通信。

  • Vendor Specific (廠商特定) 一些廠商特有的擴展欄位,允許客戶端和 AP 傳遞特定於設備的附加信息。

(3) Association Response 幀

Association Response 由無線接入點 (AP) 在收到客戶端設備 (例如筆記本電腦、智能手機等) 發送的 Association Request 幀後,作為響應發出。

這個幀的作用是通知客戶端設備其關聯請求是否成功,併在成功的情況下分配一個關聯 ID (AID) ,允許其加入網路。

使用參數 wlan.fc.type_subtype == 0x01 可以過濾所有的 Association Response 幀

(a) Association Response 幀的功能

確認關聯請求:AP 通過 Association Response 幀確認客戶端設備的關聯請求。

提供關聯狀態:該幀告知客戶端設備其關聯請求的結果 (成功或失敗) ,如果失敗,還會提供失敗的原因。

分配資源:如果關聯成功,AP會為客戶端設備分配一個關聯 ID (AID) ,並可能提供其他必要的網路參數。

(b) Association Response 幀的工作原理

接收關聯請求: AP 首先接收到來自客戶端設備的 Association Request 幀。

處理請求: AP 根據自身的能力、當前網路狀態、客戶端設備的能力信息等因素,決定是否允許客戶端設備加入網路。

生成關聯響應: AP生成一個 Association Response 幀,其中包含關聯請求的結果和相關信息。

發送關聯響應: AP 將 Association Response 幀發送回客戶端設備。

關聯成功:如果請求成功,客戶端設備將接收到 AID ,並可以開始正常的數據傳輸。

關聯失敗:如果請求失敗,客戶端設備會接收到一個錯誤狀態碼,告知失敗的原因,並可能需要重新發送關聯請求或進行其他處理。

建立連接:如果關聯成功,AP 和客戶端設備之間的連接正式建立,客戶端可以進行數據傳輸和進一步的網路交互

(c) Association Response 幀的結構

Frame Control (幀控制) 類型欄位為管理幀 (00) 子類型欄位為 Association Response (0001) 。

Duration/ID (持續時間/ID) 指定傳輸此幀所需的時間,或包含關聯 ID。

Address 1 (目的地址) 發送關聯請求的客戶端設備的 MAC 地址 (即接收地址) 。

Address 2 (源地址) AP的MAC地址,表示發送該響應幀的設備。

Address 3 (BSSID,基本服務集標識符) 網路的 BSSID,通常與 Address 2 相同。

Sequence Control (序列控制) 包含幀的序列號和片段號,用於管理幀的順序和重組。

Frame Body (幀主體) Association Response 幀的核心部分,包含關聯結果和配置參數。以下是 Frame Body 中的關鍵字

  • Capability Information (能力信息) 描述 AP 的能力,如支持的加密方法、短前導碼、QoS、功率管理等功能。這個欄位的內容與 Association Request 幀中的 Capability Information 欄位相似,但由 AP 決定。

  • Status Code (狀態碼) 指示關聯請求的處理結果。常見的狀態碼包括:0 (成功) :關聯請求成功。1-65535 (失敗原因) :如資源不足、AP 不支持客戶端請求的功能、認證失敗等。

  • Association ID (AID,關聯ID) 如果關聯成功,AP 為客戶端設備分配一個唯一的關聯 ID (AID) 。AID 是一個用於標識客戶端設備的短標識符,在 AP 和客戶端之間進行通信時很常用,尤其是在節能模式下。

  • Supported Rates (支持的速率) AP 支持的數據傳輸速率列表,通常包含在響應幀中以確認客戶端設備和 AP 之間的速率匹配。

  • HT Capabilities (高吞吐量能力,可選) 如果 AP 支持802.11n 或更高標準 (如802.11ac) ,可能會包含這個欄位來描述 AP 的高吞吐量能力。

(四)控制幀

控制幀包括:ACK(應答)、RTS(請求發送)、 CTS(允許發送)、PS-Poll省電模式-輪詢幀。

由於這些幀都不帶實體部分,所以相對是比較簡單的。

(1) ACK 幀

ACK幀 (Acknowledgement Frame) 用於確認接收到的數據幀或管理幀。

這是確保可靠數據傳輸的重要機制,尤其在無線網路中,因為無線通道易受干擾和數據丟失的影響。ACK幀由接收方發送給發送方,表示已成功接收到數據,無需重傳。

(a) ACK 幀的功能

確認接收:當設備成功接收到數據幀或管理幀後,發送 ACK 幀以告知發送方幀已被接收。

減少重傳 :通過及時確認接收,ACK 幀幫助減少不必要的重傳,優化網路效率。

保障可靠性:ACK 機制是 802.11 協議提供可靠數據傳輸的重要部分,確保發送方知道數據是否成功到達。

(b) ACK幀的工作原理

發送數據幀: 設備 A 向設備 B 發送數據幀 (如 Data 幀) 。

接收並處理數據幀: 設備 B 接收到數據幀,並檢查數據的完整性 (通過 FCS 欄位) 。

發送ACK幀: 如果數據幀無誤,設備 B 在一個短的時隙 (稱為SIFS,Short Interframe Space) 後,向設備 A 發送 ACK 幀。

確認接收: 設備 A 接收到 ACK 幀後,知道設備 B 已成功接收到數據幀,因此可以繼續發送下一個數據幀。如果沒有收到 ACK 幀,設備 A 會在規定的重傳次數內重發數據幀。

(c) ACK 幀的結構

類型欄位為控制幀 (01),子類型欄位為ACK (1101),通過 wlan.fc.type_subtype == 0x1d 可以篩選出 ACK 幀

(2) RTS 與 CTS 幀

RTS 幀 (Request to Send Frame) 與 CTS 幀 (Clear to Send Frame) 用於解決無線通信中可能發生的通道爭用和隱藏節點問題。

RTS 幀通過請求通道占用權,確保發送方可以獨占通道進行數據傳輸,從而減少數據幀的碰撞。

(a) RTS/CTS 幀的功能

避免碰撞:在多個設備共用同一無線通道的環境下,RTS 幀幫助協調設備之間的通信,減少同時發送數據導致的幀碰撞。

解決隱藏節點問題:當兩個設備無法直接彼此通信,但都能與 AP 通信時,RTS 幀有助於確保這些設備不會同時發送數據,從而避免通道爭用。

控制通道訪問:通過RTS/CTS (Clear to Send) 機制,設備可以請求短暫占用通道的許可權,確保其數據傳輸不會受到其他設備的干擾。

(b) RTS/CTS 機制的工作原理

RTS幀與CTS幀 (Clear to Send) 共同工作,形成RTS/CTS機制。這是802.11協議中一種用於解決通道爭用和碰撞的問題的協議。其工作步驟如下:

發送 RTS 幀:設備 A 準備發送一個較大的數據幀時,首先向設備 B 發送 RTS 幀,請求占用通道的許可。RTS 幀中包括目的地址 (設備B) 和通道占用時間。

接收 CTS 幀:如果設備B接收到 RTS 幀,並且通道空閑,它會在一個短暫的 SIFS (Short Interframe Space) 後,向設備 A 發送 CTS 幀。CTS 幀中包括允許占用通道的時間。

其他設備等待:在設備 A 和設備 B 進行 RTS/CTS 交換的過程中,其他設備 (能夠聽到 CTS 幀的設備) 會進入等待狀態 (NAV,網路分配向量) ,不占用通道,直至數據傳輸完成。

發送數據幀:收到 CTS 幀後,設備 A 確認通道已被分配給它,開始向設備 B 發送數據幀。

ACK確認:設備 B 成功接收到數據幀後,發送 ACK 幀確認數據的接收。

(c) RTS/CTS 幀的重要性

解決隱藏節點問題:在無線網路中,隱藏節點是指兩個無法彼此直接通信的設備,但它們可以與同一個 AP 通信。RTS/CTS 機制通過要求所有設備在發送數據前先進行 RTS/CTS 交換,確保沒有隱藏節點干擾數據傳輸。

減少碰撞概率:通過 RTS/CTS 機制,設備在傳輸大型數據幀前先進行握手,確保通道已被預留。這樣,大大減少了因為碰撞而重傳數據的需求,提高了網路效率。

優化通道使用:雖然 RTS/CTS 機制本身會增加一些控制幀的開銷,但在高流量或高幹擾環境中,它能有效地減少碰撞,從而提高整體網路的吞吐量和效率

(d) RTS/CTS 幀結構

  • RTS 類型欄位為控制幀 (01),子類型欄位為RTS (1011),整合類型為 0x1b
  • CTS 類型欄位為控制幀 (01),子類型欄位為CTS (1100),整合類型為 0x1c

(3) PS-Poll 幀

PS-Poll幀 (Power Save Poll Frame) 用於設備在省電模式下與接入點 (AP) 通信時,輪詢接收緩存的幀。

它的主要目的是幫助處於省電模式的設備高效管理電源,同時確保不會錯過重要的數據幀。

(a) PS-Poll 幀的功能

省電模式下的幀獲取:當設備處於省電模式時,它會定期進入活動狀態,通過發送PS-Poll 幀請求 AP 發送緩存的數據幀。

優化電池使用: 通過減少設備的活動時間,PS-Poll 幀幫助設備在儘可能少消耗電能的情況下獲取數據。

通道效率: PS-Poll 幀確保只有在設備準備好接收數據時,AP 才會發送緩存的幀,從而提高了通道的使用效率。

(b) PS-Poll 幀的工作原理

PS-Poll 幀的工作流程涉及設備和AP之間的交互,確保省電模式下的設備能夠有效接收數據幀。具體步驟如下:

設備進入省電模式:設備定期進入省電模式,關閉大部分的無線功能以節省電能。

AP 緩存數據幀:當 AP 有數據幀需要發送給處於省電模式的設備時,它會緩存這些幀,併在 Beacon 幀中設置標誌,表明有數據幀等待發送。

設備輪詢 AP:設備周期性地喚醒,併發送 PS-Poll 幀給 AP,詢問是否有數據幀待接收。

AP響應PS-Poll 幀:收到 PS-Poll 幀後,AP 會根據緩存情況,立即發送數據幀。如果有多幀需要發送,AP 會繼續緩存剩餘的幀,直到設備再次發送 PS-Poll 幀。

設備接收數據幀:設備接收到 AP 發送的幀後,如果 AP 指示還有更多幀待接收,設備可以選擇繼續輪詢或返回省電模式。

(c) PS-Poll 幀的重要性

延長電池壽命:PS-Poll 幀的使用使得設備能夠最大限度地減少無線功能的開啟時間,從而有效延長電池壽命。

通道占用優化:PS-Poll 機制確保AP只在設備請求時發送數據幀,避免了不必要的通道占用,從而提高了網路效率。

適用於移動設備:在移動設備 (如智能手機和筆記本電腦)中,PS-Poll 幀機制尤其重要,因為這些設備依賴電池供電,電量管理對用戶體驗至關重要。

(d) PS-Poll 幀結構

類型欄位為控制幀 (01),子類型欄位為 PS-Poll (1010),整合類型為:0x1a

註意,在 PS-Poll 幀中,Duration 欄位通常用來表示設備 ID,以幫助 AP 識別是哪台設備正在輪詢幀。所以上面截圖的這個 Duration 實際是解析錯了,它不是表示時間,而是表示 ID。

結尾

上面內容主要是對 WiFi 的部分控制幀和管理幀做了簡單的介紹,如有錯誤,歡迎評論區提示指出,不勝感激。

下一篇將介紹 WiFi 漫游與路由器的串並聯、 Mash、AC+AP 組網相關知識

 

------------------End------------------
如需獲取更多內容
請關註 liwen01 公眾號

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • 本文是筆者研究生期間在閱讀《Linux命令行與shell腳本編程大全》之後總結出來的一些重點知識的記錄,在此重新整理輸出。以便在給上個帖子 涉及到的相關知識點進行一下講解,幫助自己複習 shell腳本的首行規範化應該是 #!/bin/bash # function description 其中第一行 ...
  • crontab -e 創建的定時任務使用的是系統時間。 什麼是系統時間? 系統時間是操作系統內部維護的一個時間戳,用於記錄系統啟動以來經過的時間,以及當前的日期和時間。 系統時間通常與硬體時鐘同步,以確保時間的準確性。 crontab 如何使用系統時間? crontab 在執行定時任務時,會根據系統 ...
  • shc介紹 shc是shell編譯器(Shell Compiler)的縮寫, 它可以對shell腳本進行編譯和加密。它能夠將shell腳本編譯為可執行的二進位文件,其中包含了腳本的功能和邏輯,而不暴露源代碼。可以說shc就是一個加密shell腳本的工具。shc的官方網址為:http://www.da ...
  • 在Linux伺服器的管理和維護過程中,掌握一些常用的命令是非常必要的。這些命令不僅可以幫助你更好地瞭解和控制系統,還能提高工作效率,減少錯誤發生的概率。本文將詳細介紹一些在Linux伺服器上常用的命令,覆蓋從基本的文件操作到高級的系統管理,力求內容全面,幫助讀者深入理解每一個命令的用法和原理。 一、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...