
现代 Linux Wi-Fi 全栈框架从下到上我给你捋最清晰、最标准、内核 5.x 通用的现代 Wi-Fi 架构从硬件 → 驱动 → 内核 → 用户态工具全部打通你看完就能彻底理解 iw、wpa_supplicant、nl80211 到底在什么位置、干什么活。整体概述一、整体分层从上到下 / 从下到上从下到上真实数据流方向【1】Wi-Fi 芯片硬件PHY/MAC ↓ 【2】Wi-Fi 设备驱动mac80211 驱动 ↓ 【3】内核无线子系统nl80211 cfg80211 ↓ 【4】用户态控制层iw / wpa_supplicant / NetworkManager从上到下命令控制方向用户态工具 → netlink(nl80211) → 内核(cfg80211) → 驱动 → 硬件二、每层详细说明从下往上【第一层】Wi-Fi 硬件芯片真正干活的底层射频RF基带Baseband802.11 MAC 帧处理扫描、发包、收包、加密和解密它只懂电信号和 802.11 帧不懂 Linux、不懂系统调用。↓↓↓↓↓↓↓【第二层】Wi-Fi 驱动基于 mac80211现代 Linux 所有 Wi-Fi 驱动都基于mac80211子系统包括ath9k / ath10k / ath11kiwlwifi (Intel)mt76 (MediaTek)brcmfmac (Broadcom)rt3090 etc.驱动干什么初始化硬件管理信道、功率、频段收发 802.11 报文上报扫描结果、连接状态与内核cfg80211交互驱动不处理认证、WPA、密码只处理底层无线协议。↓↓↓↓↓↓↓【第三层】内核无线子系统最核心现代 Linux 只有一套标准内核接口cfg80211 nl802111cfg80211内核核心无线管理管理所有 PHY、网口、扫描、连接给驱动提供统一 API给上层提供统一能力2nl80211用户态 ↔ 内核 的唯一通信协议基于netlink所有用户态工具iw、wpa_supplicant都必须通过它与内核对话这一层是整个 Wi-Fi 架构的心脏。↓↓↓↓↓↓↓【第四层】用户态工具你最熟悉的全部都跑在用户态全部都通过 nl80211 与内核通信它们互不调用是平级关系。① iw命令行工具直接调用 nl80211功能扫描设置网卡模式monitor/ap/sta设置信道、功率获取硬件信息获取连接状态定位底层硬件调试工具② wpa_supplicant用户态守护进程daemon直接调用 nl80211功能802.11 认证WPA/WPA2/WPA3连接、漫游、重连管理密码、配置文件定位安全连接管理器③ wpa_cliwpa_supplicant 的命令行客户端不直接访问内核只和 wpa_supplicant 通信④ NetworkManager / iwd更上层的网络管理服务面向普通用户自动连接、自动切换、图形界面三、一次完整 Wi‑Fi 连接流程从上到下你会瞬间明白所有组件干什么1. 用户输入要连 MyWiFi密码 123456782. wpa_supplicant 收到请求3. wpa_supplicant 发送 nl80211 命令给内核NL80211_CMD_TRIGGER_SCAN4. 内核 cfg80211 让驱动扫描5. 驱动控制硬件扫描6. 硬件扫描到 AP返回信息7. 驱动 → 内核 → wpa_supplicant8. wpa_supplicant 选择要连接的 AP9. wpa_supplicant 再发 nl80211 命令NL80211_CMD_CONNECT10. 内核 → 驱动 → 硬件11. 硬件与 AP 做 802.11 握手12. wpa_supplicant 做 WPA 认证、密钥协商13. 连接成功四、最关键的总结一定要背1. 所有用户态工具iw、wpa_supplicant都不互相调用2. 它们都直接通过 nl80211 与内核对话3. 内核 cfg80211 管理所有无线状态4. 驱动基于 mac80211操作硬件5. 硬件真正收发 802.11 帧五、一句话极简架构硬件 → 驱动 (mac80211) → 内核 (cfg80211/nl80211) → 用户态 (iw/wpa_supplicant)