Linux WiFi 架构解析:连接流程(基础篇二)

前言

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)→驱动完成收发。

相关推荐
YXXY3136 小时前
线程的介绍(四)
linux
李白你好6 小时前
AI Agent 架构的自动化渗透测试工具
运维·人工智能·自动化
一勺菠萝丶7 小时前
Docker Desktop 启动后容器自动启动怎么办?如何关闭容器自启动
运维·docker·容器
ylscode8 小时前
Comodo防火墙曝致命零日漏洞:单个IPv6数据包即可触发Windows蓝屏死机
运维·网络·windows·安全·安全威胁分析
小满Autumn8 小时前
MVVM Light 架构笔记:定位器、命令、消息与 IoC 实践
笔记·学习·架构·c#·上位机·mvvm
kTR2hD1qb8 小时前
从 Responses API 到 Chat Completions:一个模型网关的设计复盘
linux·前端
实在智能RPA8 小时前
药企GMP合规自动化破局:实在Agent的功能完整度评估与落地实践
运维·人工智能·ai·自动化
姓刘的哦8 小时前
大模型祛魅
linux
Shota Kishi8 小时前
SLV 新增 allnodes-jito 支持:Solana 验证者多客户端运维与 AI agent 自动化解析
运维·自动化·区块链
上海云盾第一敬业销售9 小时前
高防CDN与高防IP应用场景架构解析
网络协议·tcp/ip·架构