有線網路用 CSMA/CD (偵聽多重存取/碰撞偵測),無線網路為何改用 CSMA/CA (碰撞避免)?本文從物理層限制切入,詳細解析 802.11 DCF (分散式協調功能) 的虛擬/實體載波偵聽、IFS 間隔、隨機退避、ACK 機制、RTS/CTS 隱藏節點解決、TXOP 爆發傳輸,並介紹 802.11e HCF (HCF 受控存取)、802.11ax (Wi-Fi 6) OFDMA/MU-MIMO/TWT/空間重用 如何改寫媒介存取邏輯。
| 特性 | 有線乙太網路 (CSMA/CD) | 無線網路 (CSMA/CA) |
|---|---|---|
| 介質 | 銅纖/光纖,全雙工可同時收發 | 共享無線電頻譜,半雙工 (同頻同一時間只能收或發) |
| 碰撞偵測 | 發送時同步監聽電壓變化,即時發現碰撞 | 無法在發送時偵測碰撞:自發訊號淹沒外來訊號 (近端/遠端問題)、隱藏節點、訊號強度動態變化 |
| 碰撞處理 | 發現碰撞 → 發送 Jam 訊號 → 截斷傳輸 → 指數退避重傳 | 事前避免:虛擬/實體載波偵聽 + IFS + 隨機退避 + ACK 確認 + 選擇性 RTS/CTS |
| 確認機制 | 無 (依賴上層 TCP) | MAC 層逐幀 ACK (單播幀必須收到 ACK 才視為成功) |
CWmin (典型 15 slots = 31 μs @ 2.4G)。backoff ∈ [0, CW],每 slot time (9/20/50/9 μs 視 PHY) 倒數 1。CW = min(2×(CW+1)-1, CWmax) 指數增長 (Binary Exponential Backoff),最多重試 Short Retry Limit (RTS/CTS) / Long Retry Limit (Data) 次。隱藏節點: A 與 C 皆能連到 AP (B),但 A 無法偵測到 C 的訊號 (距離/遮蔽)。A 傳資料給 B 時,C 以為媒介閒置也傳資料 → B 接收端碰撞。
RTS/CTS 交握解決:
門檻控制: 封包長度 > RTS Threshold (預設 2347 bytes,實務常設 512–1024) 才啟用 RTS/CTS,避免小封包額外開銷。
| 存取類別 (AC) | 優先權 | AIFSN | CWmin | CWmax | TXOP Limit | 典型流量 |
|---|---|---|---|---|---|---|
| AC_VO (Voice) | 最高 | 2 | 3 | 7 | 1.5 ms / 3.0 ms | VoIP, 即時語音 |
| AC_VI (Video) | 高 | 3 | 7 | 15 | 3.0 ms / 6.0 ms | 串流影片、視訊會議 |
| AC_BE (Best Effort) | 標準 | 7 | 15 | 1023 | 0 | 一般網頁、郵件、下載 |
| AC_BK (Background) | 最低 | 7 | 15 | 1023 | 0 | 備份、大檔下載、系統更新 |
| 標準 | 關鍵 MAC/PHY 改進 | 對 CSMA/CA 影響 |
|---|---|---|
| 802.11n (Wi-Fi 4) | MIMO、40 MHz、A-MPDU (MAC 聚合)、A-MSDU、BlockAck | 單次 TXOP 傳更多資料、BlockAck 批次確認減少 ACK 開銷 |
| 802.11ac (Wi-Fi 5) | 80/160 MHz、256-QAM、MU-MIMO (下行)、最多 8 空間流 | MU-MIMO 讓 AP 同時向多站點傳輸,媒介利用率↑ |
| 802.11ax (Wi-Fi 6/6E) | OFDMA (正交頻分多工存取)、上/下行 MU-MIMO、BSS Coloring (空間重用)、TWT (Target Wake Time)、1024-QAM、更長符號 (12.8 μs)、多用戶 RTS/CTS (MU-RTS) | 從「爭取整個頻道」→「爭取/排程 RU (Resource Unit)」;BSS Coloring 讓重疊 BSS 可同時傳輸 (OBSS PD);TWT 排程喚醒減少爭取 |
| 802.11be (Wi-Fi 7) | 320 MHz、4096-QAM、MLO (多連結操作)、MU-OFDMA 增強、確定性低延遲 | 多連結並行存取、穿透式 OFDMA、更精細排程 |
| 因素 | 影響 | 優化方向 |
|---|---|---|
| 站點數過多 | 退避碰撞機率 ↑、吞吐量 ↓、延遲抖動 ↑ | 啟用 802.11ax OFDMA/MU-MIMO、分流至多 AP/頻段、啟用 BSS Coloring |
| 隱藏節點嚴重 | 資料幀碰撞率高、重傳爆增 | 降低 RTS Threshold (512–1024)、調整 AP 功率/位置、增設中繼/有線回程 AP |
| 共頻干擾 (Co-channel Interference) | NAV 頻繁被鄰近 BSS 設定、虛擬忙碌時間長 | BSS Coloring (Wi-Fi 6)、調整發射功率、頻道規劃 1/6/11 (2.4G)、DFS 頻道 (5G) |
| 舊裝置 (802.11b/g) 拖慢 | 保護機制 (CTS-to-Self、RTS/CTS) 強制啟用、佔用時隙 | 停用 802.11b/g、最低速率設 12/24 Mbps、隔離舊裝置至獨立 SSID/VLAN |
| Bufferbloat | 佇列排隊延遲大、遊戲/語音卡頓 | 啟用 SQM/CAKE/fq_codel (OpenWrt/RouterOS/高階路由器)、QoS 保留頻寬 |
wlan.fc.type == 0 && wlan.fc.subtype == 0x0b # RTS
wlan.fc.type == 0 && wlan.fc.subtype == 0x0c # CTS
wlan.fc.type == 0 && wlan.fc.subtype == 0x0d # ACK
wlan.fc.type == 2 # Data frames
wlan.duration > 0 # 有 NAV 設定
wlan.fc.type == 0 && wlan.fc.subtype == 0x08 # Beacon (含 TIM/DTIM)
wlan_mgt.fixed.capabilities.ess == 1 # ESS capability
radiotap.datarate # PHY 速率
radiotap.channel.freq / .flags # 頻道/頻段