前言
从Linux WiFi 架构解析:从用户态到驱动与硬件(基础篇一),我们知道在Wi-Fi的控制面上,是wpa_supplicant/hostapd 发起,通过 nl80211/cfg80211/mac80211/驱动/固件协同,完成扫描、认证/关联、安全协商与密钥安装等"把链路连起来并授权"的动作。
在数据面上,应用经 Socket API 进入 IP 协议栈,通过 net_device(wlan0) 与 mac80211/驱动完成收发;数据面是否可用取决于控制面授权(Authorized)与 IP 层就绪。
对于"WiFi 已连接/未连接",在工程语境里不是一个二值状态,而是一组分阶段完成的条件集合:
-
链路层(802.11 L2):扫描 → 认证/关联 → 安全协商 → 受控端口授权
-
网络层(IP L3):获取地址 → 建立路由(使IP可达)
-
应用层(DNS L7):DNS 可用(可选但常见,常被当作"网络可用"的组成条件)
本文目标是建立一张心智模型:当你说"连接完成"时,具体意味着哪些阶段已完成;每个阶段在 Linux 里由哪些组件协作实现。
接下来我们使用一张动态行为图,按阶段拆解Wi-Fi的连接机制与流程。动态行为图的软件组件全部来自Linux WiFi 架构解析:从用户态到驱动与硬件(基础篇一),不清楚这个图片的同学们课可以回顾前面这篇博客的软件架构图。
Wi-Fi连接的动态行为图
动态行为图详解
| 序号 / 连接步骤 | 简短描述 |
|---|---|
| 1. Scan 请求(控制面) | 用户态发起扫描请求,进入内核 WiFi 控制通路。 |
| 2. 配置扫描/切信道 | 内核将扫描参数下发给驱动/固件,并驱动信道驻留策略。 |
| 3. Probe/Passive scan | 终端在目标信道发送 Probe 或被动监听以发现周围 BSS。 |
| 4. Beacon/ProbeResp | AP 回应 ProbeResp 或周期性发送 Beacon,提供 BSS 信息与能力。 |
| 5. 扫描结果上报 | 驱动/固件将收集到的 BSS 信息上报给内核。 |
| 6. BSS 列表 | 内核汇聚并回传扫描结果(SSID/BSSID、频点、信号、RSN 等)。 |
| 7. Auth/Assoc 请求(控制面) | 用户态选定目标 BSS,发起 802.11 认证/关联流程。 |
| 8. 建链路/关联 | 内核把建链路动作下发到驱动/固件,准备与 AP 交互。 |
| 9. 802.11 Auth/Assoc | STA 与 AP 交换认证/关联管理帧,协商加入 BSS。 |
| 10. AuthResp/AssocResp | AP 返回认证/关联响应,给出结果与(可能的)能力/原因信息。 |
| 11. 连接事件 | 驱动/固件将关联状态变化上报内核。 |
| 12. 已关联 | 用户态收到已关联事件;此时可能仍处于受控端口未授权状态。 |
| 13. Key 配置/PMF 参数(控制面) | 用户态配置 RSN/PMF 相关安全参数,并触发密钥相关操作。 |
| 14. 安装密钥/启用受控端口 | 内核将密钥材料与控制参数下发至驱动/硬件路径,准备使能数据通路。 |
| 15. EAPOL(4-way / SAE 等) | STA 与 AP 进行安全协商与确认(WPA2 4-way 或 WPA3 SAE 等)。 |
| 16. EAPOL | AP 侧返回对应 EAPOL 报文以完成协商闭环。 |
| 17. 连接完成(L2) | 会话密钥生效,受控端口授权(Authorized),链路层安全闭环完成。 |
| 18. 获取地址/建路由(L3) | 通过 DHCP 或静态配置获得 IP 地址并建立路由,使 IP 可达。 |
| 19. IP 就绪 | L3 配置生效,接口具备对外通信的基础条件。 |
| 20. 业务数据收发(数据面) | 应用数据经 Socket→IP 栈→wlan0(net_device)→驱动/空口进行端到端传输。 |
Wi-Fi连接的关键路径
扫描(Scan)路径 :STA 在各信道被动接收 Beacon 或主动触发 Probe,收集并缓存周围 BSS 的关键信息(SSID/BSSID、频点、信号强度、RSN 能力),输出候选网络集合,供后续选网与连接决策使用。
认证/关联(Auth/Assoc)路径 :STA 选定目标 BSS 后发起 802.11 认证与关联,完成能力协商并加入该 BSS,形成"二层已加入"的连接关系;但在安全未完成前,链路通常仍处于受控端口未授权状态。
安全协商(WPA2/WPA3)路径 :基于 RSN 参数与凭据(PSK/SAE/802.1X 等)完成密钥派生与确认(WPA2 的 WPA 4-way handshake 或 WPA3 的 SAE 等),并将会话密钥安装到驱动/硬件,使受控端口授权(Authorized),这是 L2 意义上的"连接完成"。
IP 就绪(L3)路径 :在 L2 已可用的前提下,通过 DHCP 或静态配置获得地址并建立路由(常伴随 DNS 配置),使接口具备 IP 可达性;之后应用的数据面才能通过 Socket → IP 栈 → wlan0 稳定进行端到端通信。
小结
WiFi 连接更像"四段接力":扫描把候选 BSS 找出来 → 认证/关联把链路成员关系建起来 → 安全协商把会话密钥谈妥并生效 → IP 就绪把地址与路由配齐,最终进入可通信状态。
Linux 侧的协作链路可以理解为"一路下发、一路回报":用户态状态机(wpa_supplicant/hostapd)提出连接意图 → nl80211 作为控制通道进入内核 → cfg80211/mac80211 负责 802.11 配置与通用逻辑 → 驱动/固件/硬件执行具体动作并回传事件。
判定"连上了"要分 L2 与 L3:L2=已关联且密钥生效(受控端口 Authorized);L3=有 IP 地址与可用路由(IP 可达);DNS 属于应用层解析服务,常决定"能不能用域名访问",但不等同于 L3。
"控制面/数据面"是两条不同的通路:控制面推进扫描、关联、握手、装密钥等状态机;数据面则由应用经 Socket→Linux 网络协议栈→net_device(wlan0)→驱动完成收发。
