3. Wireshark 基础与蜂窝协议解析
好,咱们进入第三讲。这一讲是工具与理论的交汇点。你可能会觉得,Wireshark 嘛,抓个包看看,谁不会?但说实话,如果不懂蜂窝协议栈的层次结构,你看到的只是一堆十六进制乱码。我见过不少工程师,拿着抓包文件盯了半天,连 NAS 消息和 RRC 消息都分不清——嗯,这其实挺常见的。
这一章,我会带你快速过一遍 Wireshark 的界面和过滤器,然后重点讲清楚蜂窝协议栈的每一层是干什么的。最后,我会告诉你 Wireshark 里那些解析插件是怎么把二进制流变成人能读懂的字段的。
3.1 Wireshark 界面:别被密密麻麻的列表吓到
第一次打开 Wireshark,你可能会觉得眼花。但其实核心就三个区域,搞懂了就很简单。
| 区域 | 名称 | 作用 |
|---|---|---|
| 1 | Packet List 面板 | 显示所有抓到的包,一行一个。关键看 No.、Time、Source、Destination、Protocol、Info。 |
| 2 | Packet Details 面板 | 选中某个包后,这里会展开协议树。从物理层到应用层,一层层剥开。 |
| 3 | Packet Bytes 面板 | 原始十六进制数据。你点 Details 里的某个字段,这里会高亮对应的字节。 |
3.2 抓包过滤器:别什么都抓,你会后悔的
蜂窝模组的空口数据量其实不小。如果你不设过滤器,几秒钟就能抓到几万个包。我建议你养成一个习惯:先过滤,再抓包。
Wireshark 有两种过滤器,别搞混了:
- Capture Filter(抓包过滤器):在开始抓包前设置。只抓符合条件的包,不满足的直接丢弃。语法比较老,类似 tcpdump。
- Display Filter(显示过滤器):抓完包之后用。只是隐藏不符合条件的包,数据还在。
蜂窝分析中,我常用的显示过滤器有这些:
// 只看 NAS 层消息(移动性管理、会话管理)
nas-eps
// 只看 RRC 层消息(信令连接建立、重配)
rrc
// 只看某个特定流程,比如 Attach
nas-eps.nas_msg_type == 0x41 // Attach Request
// 组合过滤:只看 RRC 且包含 Establishment Cause
rrc and rrc.establishmentCause
3.3 蜂窝协议栈概述:从 NAS 到 PHY,每一层都在干什么?
蜂窝协议栈,说白了就是一套分层的通信规则。每一层只关心自己的事,把复杂的问题拆解掉。你想想看,如果让应用层直接去管无线信号的调制解调,那代码得乱成什么样?
我习惯把协议栈分成两大块:控制面和用户面。控制面管信令(打电话、注册、切换),用户面管数据(上网、看视频)。这一讲我们重点看控制面,因为抓包分析主要就是在看信令。
下面这张图,是我自己画的一个简化版协议栈结构。你把它记在脑子里,以后看包的时候就能快速定位问题出在哪一层。
每一层的职责,我简单总结一下:
| 协议层 | 全称 | 核心职责 | 抓包时你能看到什么 |
|---|---|---|---|
| NAS | Non-Access Stratum | 移动性管理(注册、位置更新)、会话管理(PDN 连接建立) | Attach Request、TAU Request、PDN Connectivity Request |
| RRC | Radio Resource Control | 建立/维护/释放 UE 与基站之间的信令连接 | RRC Setup、RRC Reconfiguration、RRC Release |
| PDCP | Packet Data Convergence Protocol | 头压缩、加密、完整性保护 | 通常不直接暴露,Wireshark 会显示 PDCP 序号 |
| RLC | Radio Link Control | 分段/重组、重传控制 | RLC 分段信息、重传次数 |
| MAC | Medium Access Control | 调度、复用、随机接入、HARQ | MAC CE、随机接入响应、上行调度授权 |
| PHY | Physical Layer | 调制、编码、射频收发 | Wireshark 通常不直接解析 PHY,需要专用工具 |
3.4 Wireshark 中的蜂窝协议解析插件
Wireshark 原生就支持很多蜂窝协议,但有些场景需要额外插件。我整理了一下常用的:
- 内置解析器:Wireshark 3.x 以上版本已经内置了
nas-eps、rrc、s1ap、gtp等协议解析器。你直接打开抓包文件,Wireshark 会自动识别。 - LTE RRC 解析器:如果你抓的是空口日志(比如用 QXDM 或 QCAT 导出的),可能需要安装
lte_rrc插件。Wireshark 官方 wiki 上有下载。 - 5G NR 解析器:5G 的 RRC 和 NAS 消息格式变了,需要 Wireshark 4.0 以上版本,或者手动加载
nr_rrc和nas_5gs插件。
插件怎么装?其实很简单。以 Windows 为例:
1. 下载插件 .dll 或 .lua 文件
2. 放到 Wireshark 安装目录下的 plugins/ 文件夹
3. 重启 Wireshark
4. 在 "Analyze" → "Enabled Protocols" 里搜索插件名,确保已勾选
装好之后,你打开一个抓包文件,在 Packet Details 面板里就能看到类似这样的结构:
Frame 1: 142 bytes on wire (1136 bits)
Linux cooked capture
SLL
LTE RRC UL-DCCH Message
rrcConnectionSetupRequest
ue-Identity: 0x12345678
establishmentCause: mo-Signalling (0x03)
spare: 0
看到没?Wireshark 已经把二进制流解析成了 rrcConnectionSetupRequest,连 establishmentCause 都帮你翻译成了 mo-Signalling。这就是插件的功劳。
qxdm2pcap 这个开源工具,效果还不错。
好了,这一讲的内容就到这里。Wireshark 的界面和过滤器是基本功,蜂窝协议栈的分层结构是分析问题的地图。插件则是帮你把地图翻译成你能看懂的语言。这三样东西,你以后每次抓包都会用到。