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

相关推荐
资深电气设计5 小时前
ABB AFC/AF/AX系列接触器在数据中心液冷机组中的负载适配技术
运维·物联网·创业创新·业界资讯
.冰块.5 小时前
MySQL下篇 运维实战:备份恢复 + 主从复制 + MHA 高可用,含完整拓扑
运维·mysql·读写分离·高可用·主从复制·mha
Jason_zhao_MR5 小时前
新一代电能数据采集终端方案
linux·人工智能·嵌入式硬件·fpga开发·嵌入式
阿标在干嘛6 小时前
缓存架构的“场景适配“:我们为什么在部分服务中采用了本地缓存?
缓存·架构
程序人生8886 小时前
从“把隐私文件上传到别人云端“到本地可控:DocConverter Web 立项初心与架构选型
前端·图像处理·人工智能·opencv·架构·ocr·文心一言
qetfw6 小时前
Debian SSH 安全配置:端口、来源限制与免密登录
linux·安全·debian·ssh
智商网输送线配件6 小时前
非标自动化零部件采购避坑指南:从零散补货到一站式协同的实战路径
运维·自动化
东鹏特饮6 小时前
15个实用Linux运维脚本
linux·运维·shell·脚本·redhat·常用生产脚本
承渊政道6 小时前
自建服务越来越多怎么管理?Docker部署Flare,搭一个自己的数字入口
运维·docker·容器·内网穿透·cpolar·nas·flare
海宇数据6 小时前
零信任架构实战:基于海宇车辆vin码查车辆信息详版构建自动化车险承保定级网关
人工智能·架构·自动化·php