4. Beacon 帧解析:WiFi 网络的“心跳”信号

Beacon 帧,说白了就是 WiFi 网络的“心跳包”。

AP 每隔一段时间就会往外广播一次,告诉周围的设备:“我在这儿,我叫这个名儿,我能提供这些服务。” 你手机上的 WiFi 列表,就是靠抓这些 Beacon 帧填出来的。

我个人习惯,做配网抓包分析时,第一件事就是先看 Beacon 帧。为什么?因为它稳定、周期固定、信息量大。如果连 Beacon 都抓不全,那后面的 Probe Request、Association 基本就不用看了——信道大概率没锁对。

4.1 Beacon 帧的结构

Beacon 帧属于管理帧,帧体结构很清晰。我直接拆开给你看:

字段 长度(字节) 说明
Timestamp 8 AP 的 64 位时间戳,用于同步
Beacon Interval 2 发送间隔,单位 TU(1024 μs)
Capability Info 2 能力信息,比如是否支持 WPA、是否加密
SSID 变长 网络名称,最大 32 字节
Supported Rates 变长 支持的速率集
DS Parameter Set 1 当前信道编号
HT / VHT / HE Capabilities 变长 802.11n/ac/ax 能力
Vendor Specific 变长 厂商自定义信息,比如小米、华为的配网扩展

嗯,这里要注意:Beacon Interval 默认是 100 TU,也就是大约 102.4 毫秒。但很多厂商会改这个值。我遇到过某款智能灯,Beacon Interval 设成了 200 TU,结果配网时手机扫描总是超时——因为它等 Beacon 等太久了。

4.2 Beacon 帧在配网中的作用

配网场景下,Beacon 帧承担了三个关键角色:

  • 信道锚点:设备通过扫描 Beacon 帧,确定 AP 在哪个信道上。
  • 时间同步:Timestamp 字段用于设备与 AP 的时间对齐,这对后续的省电模式很重要。
  • 能力协商:Capability Info 和 HT/VHT 字段告诉设备,AP 支持多高的速率、是否加密、是否支持 WMM。

你想想看,如果 Beacon 帧丢了,设备就不知道 AP 在哪个信道。它只能盲目地跳频去扫,这过程叫 Passive Scan。效率极低,而且容易漏包。

核心结论:Beacon 帧的丢包,直接导致设备无法锁定 AP 信道,配网流程卡死在第一步。

4.3 抓包实战:如何过滤 Beacon 帧

用 Wireshark 抓 Beacon 帧,过滤条件很简单:

wlan.fc.type_subtype == 0x0008

或者更直观一点:

wlan.fc.type == 0 && wlan.fc.subtype == 8

我个人习惯把 Beacon 帧单独列出来,然后看三个关键指标:

  1. Beacon Interval 是否稳定:相邻两个 Beacon 帧的时间差,应该在 100 TU 左右。如果波动超过 ±10%,说明 AP 负载高或者信道干扰严重。
  2. SSID 是否完整:有些厂商会在 Vendor Specific 字段里塞配网信息,比如小米的 IoT 配网扩展。如果 Beacon 帧被截断,这些信息就丢了。
  3. RSSI 是否一致:同一 AP 的 Beacon 帧,信号强度应该基本稳定。如果忽高忽低,说明设备在移动,或者天线有问题。

小技巧:在 Wireshark 里加一列 wlan.beacon_interval,可以快速对比每个 Beacon 帧的间隔值。我曾经靠这个发现某款路由器在 2.4G 频段上 Beacon Interval 飘到了 150 TU,导致 IoT 设备频繁掉线。

4.4 Beacon 帧丢包的常见原因

我在项目中遇到过几次 Beacon 帧丢包的情况,总结下来无非这几种:

原因 表现 排查方向
信道冲突 Beacon 帧间隔不规律,部分帧 CRC 错误 换信道,或者用 DFS 信道
AP 负载过高 Beacon 帧延迟发送,间隔拉长 检查 AP 的 CPU 和内存占用
设备天线问题 RSSI 波动大,部分 Beacon 帧信号弱到无法解码 检查天线连接,或者换设备测试
802.11 省电模式 设备在 DTIM 间隔内休眠,错过了 Beacon 调整 DTIM 周期,或者关闭省电模式

嗯,这里要特别提一下 DTIM。DTIM 是 Beacon 帧里的一个特殊标记,告诉休眠的设备“有缓存数据要收”。如果 DTIM 周期太长,设备醒来的次数就少,省电但容易丢包。我曾经调试一款电池供电的传感器,DTIM 设成了 5,结果 Beacon 帧丢了 30%,配网成功率直接腰斩。

避坑指南:我曾经在调试某款智能插座时,发现 Beacon 帧在 2.4G 频段上频繁丢包。折腾了两天,最后发现是隔壁办公室的微波炉在干扰。嗯,微波炉的 2.4G 辐射是真的猛,Beacon 帧直接被打成碎片。

4.5 Beacon 帧与配网广播丢包的关系

配网广播丢包,很多时候根子就在 Beacon 帧上。我给你画个流程图,你就明白了:

Beacon 帧在配网流程中的位置 Beacon 帧在配网流程中的位置 设备上电 被动扫描(等待 Beacon) 收到 Beacon 帧 解析 SSID / 信道 / 能力 发起 Probe / Auth Beacon 丢包 无法锁定信道 配网失败 关键点 Beacon 帧是配网的第一步 丢了它,后面全白费 抓包时优先检查 Beacon

从图上可以看得很清楚:Beacon 帧是配网流程的起点。设备上电后,第一件事就是等 Beacon。如果等不到,它就只能盲目跳频,或者干脆超时报错。

我遇到过最典型的场景:某款智能摄像头在 5G 频段上配网,但 AP 的 Beacon 帧只在 2.4G 频段上发。摄像头扫了半天,一个 Beacon 都没收到,直接报“网络不可用”。后来我抓包一看,5G 信道上干干净净,连个 Beacon 的影子都没有。

4.6 如何验证 Beacon 帧是否丢包

验证方法其实很简单:

  1. 在 AP 旁边用电脑抓包,连续抓 10 秒。
  2. 过滤出 Beacon 帧,看数量是否接近 10 / 0.1024 ≈ 97 个。
  3. 如果少于 80 个,说明有丢包。
  4. 再在设备位置抓一次,对比两次的 Beacon 帧数量。

如果设备位置的 Beacon 帧数量明显少于 AP 旁边,那问题就在无线链路上——要么是干扰,要么是距离太远,要么是天线不行。

实战经验:我一般会在 AP 旁边抓一次,然后在设备位置抓一次,两次对比。如果设备位置的 Beacon 帧数量只有 AP 旁边的 60%,那配网成功率基本不会超过 50%。

嗯,Beacon 帧解析就讲到这里。记住一句话:Beacon 帧是 WiFi 网络的“心跳”,心跳停了,配网就死了。 抓包时,先看 Beacon,再看别的。