一、基础篇
1.1 wpa_supplicant 是什么?
wpa_supplicant 是 Linux里负责Wi‑Fi 客户端侧认证与连接管理的守护进程。简单说:网卡驱动负责“收发无线电”,wpa_supplicant 负责“怎么安全地加入这个 AP”。
1.1.1 wpa_supplicant 是什么?
全称是:Wi‑Fi Protected Access Supplicant
在 802.1X/WPA 体系里:
- Authenticator:通常是 AP / 接入交换机
- Supplicant:客户端上的认证程序 → 就是 wpa_supplicant
- Authentication Server:企业网里的 RADIUS 等
1.1.2 核心职责
| 职责 | 说明 |
|---|---|
| 扫描与选择网络 | 主动或被动扫描周围的 Wi-Fi 网络,获取 BSSID、信号强度、加密方式等信息 |
| 认证协商 | 与 AP(路由器)进行 WPA/WPA2/WPA3 的四次握手(4-Way Handshake),验证密码或证书 |
| 密钥管理 | 生成和管理成对临时密钥(PTK)、组临时密钥(GTK),用于数据加密 |
| 加密控制 | 将协商好的密钥下发给内核的无线驱动,启用硬件加密(或软件加密) |
| 漫游管理 | 信号变差时换 AP(视配置与驱动能力),快速完成重认证(支持 802.11r 快速漫游) |
| 连接保活 | 检测连接状态,掉线后自动重连 |
它不负责完整的“整机网络栈管理”(DHCP、路由、DNS 策略多半由 dhclient/dhcpcd、NetworkManager、systemd-networkd 等完成),但连接 Wi‑Fi 的安全与密钥部分几乎总是它(或等价组件)在做。简单说:wpa_supplicant = 输入密码、点击连接、管理已保存网络的那个系统模块。
1.1.3 在 Linux 系统中的使用方式
** 1. 直接命令行使用**
安装
# Debian/Ubuntusudoaptinstallwpasupplicant基本命令
# 启动 wpa_supplicant(后台运行)sudowpa_supplicant-B-iwlan0-c/etc/wpa_supplicant.conf# 参数说明:# -B 后台运行# -i wlan0 指定无线网卡接口# -c xxx.conf 指定配置文件# -D nl80211 指定驱动类型(现代内核默认 nl80211)交互式控制(wpa_cli)
# 启动交互式命令行sudowpa_cli# 常用命令示例:>scan# 扫描网络>scan_results# 查看扫描结果>add_network# 添加新网络(返回 network id)>set_network0ssid"MyWiFi"# 设置 SSID>set_network0psk"password"# 设置密码>enable_network0# 启用该网络>select_network0# 立即连接>status# 查看连接状态>save_config# 保存配置到文件>quit# 退出2. 配置文件详解
典型配置文件/etc/wpa_supplicant/wpa_supplicant.conf:
# 基础配置ctrl_interface=/var/run/wpa_supplicant# 控制接口路径ctrl_interface_group=wheel# 允许 wheel 组成员使用 wpa_cliupdate_config=1# 允许 wpa_cli 修改配置文件# 开放网络(无密码)network={ssid="PublicWiFi"key_mgmt=NONE}# WPA2-PSK 家庭网络(最常用)network={ssid="HomeWiFi"psk="your_password"# 或者使用加密后的密码:# psk=hash_value_from_wpa_passphrase}# WPA2-Enterprise(企业级认证,如 eduroam)network={ssid="eduroam"key_mgmt=WPA-EAPeap=PEAPidentity="user@university.edu"password="your_password"phase2="auth=MSCHAPV2"}# 带优先级的多个网络network={ssid="HomeWiFi"psk="password1"priority=10# 优先级,数字越大越优先}network={ssid="PhoneHotspot"psk="password2"priority=5}3. 查询 wpa_supplicant 是否在运行
# 查看进程psaux|grepwpa_supplicant# 查看 systemd 服务状态sudosystemctl status wpa_supplicant# 查看具体接口的服务sudosystemctl status wpa_supplicant@wlan0.service1.2 BSS(基本服务集)
BSS(Basic Service Set,基本服务集)是 802.11 标准中最基础的网络单元,可以理解为一个 Wi-Fi 网络的基本组成单元。
1. BSS 的核心组成
一个 BSS 由以下要素定义:
| 要素 | 说明 | 你的例子中对应 |
|---|---|---|
| 一组 STA | 至少两个站点才能通信 | 你的手机 + 路由器 |
| 覆盖范围 | 无线电波可达的区域(BSA, Basic Service Area) | 家里 Wi-Fi 能覆盖的范围 |
| BSSID | BSS 的唯一标识符 | 通常是 AP 的 MAC 地址,如aa:bb:cc:dd:ee:ff |
| SSID | 人类可读的网络名称 | "MyWiFi" |
| 相同无线参数 | 同一信道、调制方式等 | 都是 2.4GHz 信道 6 |
2. 两种 BSS 类型
802.11 定义了两种 BSS,对应两种组网模式:
| 模式 | 说明 | 组成 |
|---|---|---|
| 基础架构模式(Infrastructure Mode) | 所有设备通过一个中心接入点(AP)互联,最常见的家庭/企业 Wi-Fi | AP + 多个非 AP 站点 |
| 独立模式(Ad-hoc) | 设备之间直接通信,没有中心节点 | 多个对等 STA |
a. 基础架构 BSS(Infrastructure BSS)
最常见的家庭/企业 Wi-Fi 形式,所有通信必须经过 AP 转发。
┌──────────────────────────────┐ │ 一个 BSS │ │ SSID:"HomeWiFi"│ │ BSSID: AP的MAC地址 │ │ │ │ ┌───────────┐ │ │ │ AP │ │ │ │(路由器)│ │ │ └─┬───┬───┬─┘ │ │ │ │ │ │ │ ┌───┘ │ └───┐ │ │ ┌▼──┐ ┌─▼──┐ ┌─▼──┐ │ │ │STA│ │STA │ │STA │ │ │ │手机│ │笔记本│ │平板│ │ │ └───┘ └───┘ └───┘ │ │ │ │ ★ 手机发给笔记本的帧 │ │ 必须经过 AP 转发 │ └──────────────────────────────┘特点:
- 有中心节点(AP)
- 所有非 AP 站点之间不能直接通信,必须经 AP 转发
- AP 是 BSS 的控制者和管理者
b. 独立 BSS(Independent BSS,简称 IBSS)
设备之间直接通信,没有中心 AP,也叫 Ad-hoc 模式。
┌──────────────────────────┐ │ 一个 IBSS │ │ 没有 AP,完全对等 │ │ │ │ ┌───┐ ┌───┐ │ │ │STA│←───→│STA│ │ │ └───┘ └───┘ │ │ ↕ ↕ │ │ ┌───┐ ┌───┐ │ │ │STA│←───→│STA│ │ │ └───┘ └───┘ │ │ │ │ ★ 每个站点间可以直接 │ │ 发送802.11帧 │ └──────────────────────────┘特点:
- 无中心节点,每个 STA 平等
- 站点间直接通信
- 适合临时小规模组网(如传文件)
- 实际中使用较少
3. BSS 的扩展:ESS
当需要扩大覆盖范围时,可以用多个 BSS 组成一个 ESS(扩展服务集)。
┌─────────────────────────────────────────┐ │ 一个 ESS │ │ SSID:"CompanyWiFi"│ │ │ │ ┌──── BSS1─────┐ ┌──── BSS2─────┐ │ │ │ BSSID: AP1的MAC│ │ BSSID: AP2的MAC│ │ │ │ ┌───┐ │ │ ┌───┐ │ │ │ │ │AP1├──┐ │ │ ┌──┤AP2│ │ │ │ │ └─┬─┘ │ │ │ │ └─┬─┘ │ │ │ │ ┌───┐ ┌───┐ │ │ ┌───┐ ┌───┐ │ │ │ │ │STA│ │STA│ │ │ │STA│ │STA│ │ │ │ │ └───┘ └───┘ │ │ └───┘ └───┘ │ │ │ └───────────────┘ └───────────────┘ │ │ │ │ │ │ └────── 交换机 ─────┘ │ │ │ │ │ ★ 你在办公室走动时,手机会在 BSS1 │ │ 和 BSS2 之间自动切换(漫游) │ └─────────────────────────────────────────┘关键点:
- 同一个 ESS 下的所有 BSS 使用相同的 SSID
- 每个 BSS 有自己的 BSSID(各自 AP 的 MAC 地址)
- STA 可以在 BSS 之间漫游,保持网络连接不中断
- wpa_supplicant 的漫游管理就是处理 BSS 之间的切换(特别是 802.11r 快速漫游)
4. 加入 BSS 的完整过程:
非AP站点(你的手机) AP站点(路由器) │ │ │1. 扫描 │ │ ←── Beacon ───────────────────── │ AP 周期性广播,宣告本 BSS 存在 │ │ │2. 选择 BSS │ │ (根据 SSID、信号强度等) │ │ │ │3. 认证(802.11 层面) │ │ ─── Authentication ─────────────→ │ │ ←── Authentication ──────────── │ │ │ │4. 关联(正式加入 BSS) │ │ ─── Association Request ────────→ │ ★ 此时 STA 正式成为 BSS 成员 │ ←── Association Response ────── │ │ │ │5. 安全握手(WPA 层面) │ │ ───4-Way Handshake ───────────→ │ ← wpa_supplicant 的核心工作 │ ←──4-Way Handshake ────────── │ │ │ │6. 可以收发加密数据帧了 │ │ ←─────────→ │1.3 Beacon & Probe Request 详解
在 802.11 网络中,发现 BSS 有两种主要方式,分别对应两个关键的管理帧:
| 发现方式 | 对应帧 | 发起方 | 类比 |
|---|---|---|---|
| 被动扫描 | Beacon 帧 | AP 主动广播 | AP 像灯塔一样不断喊“我在这里!” |
| 主动扫描 | Probe Request / Probe Response | STA 主动询问 | STA 拿着大喇叭喊“有没有 Wi-Fi?” |
1. Beacon 帧(信标帧)
Beacon 是 AP周期性广播的一种管理帧,目的是宣告 BSS 的存在,让周围 STA 能够发现这个网络。
谁发、发给谁
AP 周期性广播 Beacon ┌──────┐ │ AP │ ── Beacon ──→ 广播到所有能听到的设备 └──────┘(每隔约100ms发一次)- 发送方:AP(接入点)
- 接收方:范围内所有 STA(广播,目标地址为 FF:FF:FF:FF:FF:FF)
- 间隔:通常约 100ms(可配置,称为 Beacon Interval)
Beacon 帧里携带了什么
┌─────────────────────────────────┐ │ Beacon 帧内容 │ ├─────────────────────────────────┤ │ SSID ← 网络名"MyWiFi"│ │ BSSID ← AP的MAC地址 │ │ Beacon Interval ← 信标间隔时间 │ │ Timestamp ← AP 的时钟同步信息 │ │ 支持速率 ← 如6,9,12,24... Mbps │ │ 信道信息 ← 当前使用的信道 │ │ 加密信息(RSN IE)← WPA2/WPA3 等安全要求 │ │ 国家代码 ← CN/US/JP 等 │ │ 能力信息 ← 是否支持 Short Preamble 等 │ │ TIM(流量指示图)← 是否有缓存的单播数据 │ │... │ └─────────────────────────────────┘2. Probe Request(探测请求帧)
Probe Request 是STA 主动发出的管理帧,用来主动询问周围是否有可用的 Wi-Fi 网络。这是"先喊话,等回应"的方式。
Probe Response(探测响应帧)
AP 收到 Probe Request 后回复的帧,内容与 Beacon 类似,但它是定向单播发给发送请求的那个 STA。
谁发、发给谁
STA 主动问 AP 针对性回答 ┌──────┐ ┌──────┐ │ STA │ ─ Probe Request ───→ │ AP │ │(手机)│ ← Probe Response ── │ │ └──────┘ └──────┘- 发送方:STA(客户端)
- 接收方:可以是广播(问所有 AP),也可以指定 SSID(问特定网络)
- 回复:匹配的 AP 会回复 Probe Response
1.4 STA & AP模式
1.4.1 定义
| 术语 | 英文全称 | 历史含义 |
|---|---|---|
| STA | Station | 802.11 标准中“能够收发 802.11 格式数据帧的站点”;在基础架构模式(Infrastructure Mode)中通常指非 AP 的普通站点(客户端)。 |
| AP | Access Point | 接入点:将无线 STA 接入到有线 DS(Distribution System,通常是以太网)的桥接/中心节点。 |
1.4.2 STA & AP的职责
1. STA(非 AP Station)的职责
STA 是BSS 的加入者:
- 发现网络:被动监听 AP 周期性广播的 Beacon 帧,或主动发送 Probe Request 帧来探测周围网络。
- 选择网络:根据信号强度、SSID、BSSID、信道、安全能力(如 WPA2/WPA3)等,选择一个合适的 AP 进行连接。
- 认证与关联:完成 802.11 层面的认证(Authentication)与关联(Association)过程,获取关联标识符(AID),正式加入 BSS。
- 安全握手:执行 WPA2/WPA3 安全协议的四次握手(4-Way Handshake),基于 PSK 或 802.1X/EAP 认证方式,与 AP 协商并派生用于数据加密的密钥(PTK/GTK)。
- 数据收发:使用协商好的密钥对数据帧进行加密/解密,并可根据需要进入省电模式(如使用 PS-Poll 或 U‑APSD 机制)。
- 连接维护:通过心跳机制监测链路质量,在信号变弱时执行重关联(Reassociation),或在同一 ESS 内的不同 AP 之间进行漫游,以维持网络连接。
STA 不负责:对外广播“我是一个可加入的网络”、维护“谁连了我”的关联表(那是 AP 的事)。
2. AP 的职责
AP 是BSS 的中心与管理者:
- 创建并维护 BSS:选定工作信道与带宽,周期性广播 Beacon 帧,宣告网络存在并携带 SSID、能力信息、安全要求、TIM(流量指示图)等参数。
- 响应网络发现:接收并处理 STA 发送的 Probe Request(探测请求)帧,回复 Probe Response(探测响应)帧,提供与 Beacon 类似但定向单播的网络信息。
- 接纳与关联成员:处理 STA 发起的 Authentication(认证)和 Association(关联)请求,维护关联表(Association Table)以记录已连接的 STA 及其状态(如 AID)。
- 提供安全服务:与每个关联的 STA 执行四次握手(4‑Way Handshake),协商并分发成对临时密钥(PTK)和组临时密钥(GTK),确保数据通信的机密性与完整性。
- 数据帧转发:
- STA ↔ 有线 DS(Distribution System):作为无线与有线网络之间的桥接点,转发 STA 与有线网络(如以太网)之间的数据帧,这是“接入点(Access Point)”的核心本义。
- 同 BSS 内 STA ↔ STA:在基础架构模式(Infrastructure Mode)下,转发同一 BSS 内不同 STA 之间的数据帧(多数实现中,STA 间通信需经 AP 中转)。
- 电源管理与缓冲:为进入省电模式(Power Save Mode)的 STA 缓冲发往它的单播数据帧,并通过 Beacon 帧中的 TIM(Traffic Indication Map)字段通知该 STA 有缓存数据待取。
AP 角色本身是802.11 MAC 服务;DHCP、NAT、防火墙是 IP/L3 及以上,常和家用“路由器热点”绑在一起,但不是 AP 定义的一部分。
1.4.3 应用
1. STA 模式的典型应用
| 场景 | 为什么用 STA |
|---|---|
| 手机/笔记本上网 | 作为客户端加入家庭或企业已有的 Wi-Fi 网络(AP) |
| IoT 传感器、摄像头 | 设备作为 STA 连接到路由器/网关 |
| 工业网关“上联无线” | 工业现场设备通过网关的 STA 功能,连接到厂区 Wi-Fi |
| 车载/机器人连热点 | 移动平台(车辆、机器人)通过 STA 连接手机热点或移动路由器 |
产品逻辑:网络已经存在,我只要接入。
2. AP 模式的典型应用
| 场景 | 为什么用 AP |
|---|---|
| 家用/企业路由器 | 提供无线接入,将有线网络(如光纤/以太网)转换为 Wi-Fi 信号,供手机、电脑等设备接入。 |
| 手机热点 | 共享蜂窝数据,将手机的移动网络(4G/5G)转换为 Wi-Fi 热点,供其他设备上网。 |
| 设备 SoftAP 配网 | 设备启动一个临时的 AP(如ESP32_XXXX),手机连接此 AP 后,通过 Web 页面(如192.168.x.1)为设备配置要连接的家庭 Wi-Fi 账号密码。 |
| 展会/临时局域网 | 在没有现成路由器时,用一台设备(如笔记本)创建自建 BSS |
| 摄像头/NVR 直连 | 摄像头或网络录像机(NVR)开启 AP 模式,手机直接连接其热点,无需经过路由器即可实时查看视频流。 |
3. AP+STA 并发应用(嵌入式高频)
手机 ──STA──▶[设备 SoftAP]── 本地配网 Web │ 设备同时 STA │ ▼ 家里路由器 ──▶ 云常见于:智能家居首次配网、打印机、音箱。注意同射频并发时的信道/性能约束。
1.5 信道 & 带宽
射频一次主要工作在某一个中心频率附近的一段频谱上;信道 = 选哪段频谱,带宽 = 这段频谱有多宽。
AP+STA 并发难就难在:两块逻辑角色(AP、STA)往往要共用同一块(或有限几块)射频硬件。
1.5.1 信道(Channel)是什么
Wi‑Fi 把 2.4 GHz / 5 GHz / 6 GHz 切成编号的信道,每个信道对应一个中心频率。
2.4 GHz(举例,常见)
| 信道 | 中心频率(约) | 备注 |
|---|---|---|
| 1 | 2412 MHz | 常用“不重叠三件套”之一 |
| 6 | 2437 MHz | |
| 11 | 2462 MHz | 多地可用;有的地区还有 12/13 |
名义上信道间隔 5 MHz,但 20 MHz 带宽 时,1/6/11 才基本不重叠;选 3 和 6 会严重打架。
5 GHz / 6 GHz
信道更多(36、40、44…149 等),干扰相对少,但有 DFS(雷达避让)、功率限制、国家码(country)限制。嵌入式上“能开哪些信道”强依赖监管域配置。
对设备的含义:
- STA:自己不能随便定信道,必须跟所连 AP 的信道走。
- AP:由你(或自动 ACS)选定工作信道,并在 Beacon 里宣告。
1.5.2 带宽(Bandwidth / Channel Width)是什么
带宽 = 一次占用多宽的频谱,常见:
| 带宽 | 大致占用 | 直观效果 |
|---|---|---|
| 20 MHz | 一条“标准道” | 兼容性最好、抗干扰相对稳 |
| 40 MHz | 约两条 20 MHz 粘在一起 | 峰值更高,2.4G 上很挤 |
| 80 / 160 MHz | 更宽 | 5G/6G 高速;更容易受干扰、监管更严 |
协议里常写成 HT20/HT40、VHT80、HE80 等,本质都是信道宽度。
注意:
- 标称 80 MHz ≠ 永远跑满 80:对方只支持 20、或环境干扰大,会降宽。
- AP 配
channel=36 + ht_capab=[HT40+] / vht_oper_chwidth=1等,是在定 主信道 + 用多宽。 - STA 关联后,实际带宽是双方能力∩当前环境的结果。
// 待更新