为什么先分清帧类型
802.11 把所有帧归成三类:管理帧负责发现、接入与断开,控制帧负责信道仲裁与确认,数据帧承载业务。排障时抓包的第一件事就是按类型与子类型过滤,因为「连不上」的管理帧证据与「慢」的数据帧证据混在同一个文件里,不过滤根本看不出来是哪一类问题。
三类帧的分工
| 管理帧 | 发现(Beacon / Probe)、接入(Auth / Assoc)、断开(Deauth / Disassoc)、测量与漫游(k/v/r) |
|---|---|
| 控制帧 | ACK、RTS/CTS、Block ACK、PS-Poll,负责信道仲裁与确认 |
| 数据帧 | Data、QoS Data、Null,承载业务与保活通知 |
| 排障入口 | 断开看 Deauth/Disassoc,接入失败看 Auth/Assoc,认证看 EAPOL |
| 抓包前提 | 网卡监听模式并锁定信道,否则只能看到本机所在信道 |
常见子类型
| 类别 | 子类型示例 | 用途 |
|---|---|---|
| 管理帧 | Beacon / Probe Req/Resp | 发现网络 |
| 管理帧 | Auth / Assoc Req/Resp / Reassoc | 接入与漫游 |
| 管理帧 | Deauth / Disassoc | 断开连接,漫游或异常时出现 |
| 管理帧 | Action / Action No Ack | 测量、漫游与频谱管理等扩展功能 |
| 控制帧 | ACK / RTS / CTS / Block ACK | 信道仲裁与确认 |
| 数据帧 | Data / QoS Data / Null | 业务承载与保活 |
Wireshark 过滤示例
Wireshark 过滤示例
# 先按大小类过滤
wlan.fc.type == 0 # 管理帧
wlan.fc.type == 1 # 控制帧
wlan.fc.type == 2 # 数据帧
# 管理帧子类型(配合 type 限定最稳妥)
wlan.fc.type==0 && wlan.fc.type_subtype==8 # Beacon
wlan.fc.type==0 && wlan.fc.type_subtype==0 # Association Request
wlan.fc.type==0 && wlan.fc.type_subtype==11 # Authentication
wlan.fc.type==0 && wlan.fc.type_subtype==12 # Deauthentication排障时的过滤对照
| 问题 | 先看哪些帧 | 线索 |
|---|---|---|
| 连不上 | Beacon/Probe、Auth、Assoc Req/Resp | 有没有收到响应,状态码是什么 |
| 连上又掉 | Deauth / Disassoc | 原因码与发起方是谁 |
| 认证不过 | EAPOL | 四次握手是否走完 |
| 慢或丢包 | 数据帧的重传位 | 重传率高说明空口质量差 |
| 怀疑被攻击 | 广播 Deauth / Disassoc | 源 MAC 是否属于本网 AP |
Deauth 帧的 Reason Code 是断线排查的关键线索:正常踢除常见原因码 3(终端离开)与 4(空闲超时)等,具体码值以标准文档为准。
子类型编号在管理帧与控制帧之间会重复,例如管理帧的 11 是 Authentication、控制帧的 11 是 RTS。过滤时把 wlan.fc.type 一并写上,否则结果里会混入 ACK、RTS 等无关帧。