
在做基站模拟器相关测试时很多人会把 Wireshark 误解成“网络抓包小工具”以为它只能用来抓上网流量。真正进入协议栈调试后你会发现Wireshark 在基站模拟器场景里扮演的其实是“协议证据分析台”它把一堆隐藏在 pcap 跟踪文件里的信令消息翻译成你能看懂的消息时序、字段内容和失败原因。这篇教程是德思特基站模拟器实操系列的第三篇主题非常聚焦演示协议分析工具 Wireshark 在基站模拟器工程中的功能用法。我会先讲清楚 Wireshark 在整个项目里的定位再从环境准备、模拟器 trace 获取、抓包导入、协议过滤、消息定位、统计验证讲到常见排错。读完你会得到一套可以复制到日常测试里的分析方法而不是只会点“开始抓包”和“停止抓包”。1. 为什么调基带协议问题时要打开 Wireshark先描述一个典型场景你在用基站模拟器测试一部终端模拟器界面上显示“注册流程失败”或者自动化脚本上报“附着未完成”。这时候如果只盯着测试软件最上层的状态栏你只能看到结果看不到原因。真正要回答的问题其实有三个网络侧是否真的下发了 Accept 或 Reject终端是在哪一步断开的拒绝携带的 cause 是什么是核心网侧拒绝还是射频链路质量太差导致消息根本没到这些问题测试仪表自带的简易日志表格偶尔能看但表格通常只显示“Event 名称 时间段”不会把每一条 NAS、RRC、S1AP/NGAP 消息的字段展开给你看。而只要把模拟器保存的协议跟踪文件拖进 Wireshark上述问题就变成一个“过滤、定位、展开字段”的动作。我给出的判断是在数据处理效率上Wireshark 真正降低的是“协议日志检索成本”。它不需要你对每个字节做人工十六进制换算因为 Wireshark 内部的 dissector 已经把常见通信协议拆解成了树形字段。对于基站模拟器测试人员来说掌握 Wireshark 不是“锦上添花”而是定位疑难协议问题的基本功课。2. Wireshark 在基站模拟器项目中的作用边界与核心概念2.1 它不是直接“抓空口”的工具首先要把预期调整正确。Wireshark 不能直接去监听空间中的 4G/5G 射频信号也不能用一个 USB 网卡就把基站和手机之间的空口消息读出来。基站模拟器的空口消息是在模拟器内部完成收发和解析的外部 PC 上的 Wireshark 能分析的是模拟器导出或转发的协议日志。理解这条边界后后续操作反而更简单你不用关心射频前端只需要关注“模拟器把协议记录输出成了什么格式”。最常见的目标文件格式是 pcap 或 pcapngWireshark 可以直接打开。2.2 关键概念trace、pcap、dissector、过滤器这里先统一几个术语后面演示时会反复用到术语解释Trace基站模拟器在一次测试过程中记录下来的消息序列也叫跟踪日志pcap传统的抓包文件格式Wireshark 最早支持的格式之一pcapng新一代抓包格式支持注释、多接口、自定义字段Wireshark 默认推荐保存格式dissectorWireshark 内置的协议解析器负责把二进制载荷解析成可读字段显示过滤器只负责“筛选已经抓到的数据”不影响采集动作捕获过滤器在报文进入 Wireshark 之前就提前过滤只保留符合条件的报文其中“显示过滤器”和“捕获过滤器”是最容易混淆的一点。在基站模拟器的 trace 分析中你几乎只在读历史文件所以最常用的是显示过滤器。它相当于在 Excel 里加筛选条件原始数据并没有被删掉只是隐藏了你不关心的行。2.3 加密消息的边界如果模拟器测试过程中已经激活了完整性保护和加密那么 Wireshark 默认打开的 pcap 里NAS 消息会出现 “Encrypted” 或 “Protected” 字样。这是正常现象并不代表软件出错。要看明文内容需要模拟器侧导出合法测试使用的密钥或解密日志。日常调试中更常见的做法是先关掉安全模式做功能验证或者只通过 RRC 消息观察流程推进。3. Wireshark 安装与环境准备Wireshark 是跨平台工具。无论你是在 Windows 电脑上连德思特基站模拟器的上位机还是在 Linux 服务器上跑自动化回归安装都很快。以下给出可复制的步骤。3.1 Windows 安装到 Wireshark 官网下载稳定版安装包安装时需要注意这一步安装程序会提示安装 Npcap。如果你希望 Wireshark 能直接采集网卡流量必须安装 Npcap如果只是打开模拟器导出的 pcap 文件Npcap 不是必需品但还是建议装上避免后续要抓本机回环或本机网口时又回来补装。安装完成后在命令行里验证版本wireshark --version如果系统提示找不到命令需要把 Wireshark 安装目录加入 PATH或者直接使用安装目录下的Wireshark.exe。3.2 Linux 安装在 Ubuntu/Debian 环境下使用 apt 安装sudo apt update sudo apt install -y wireshark tshark安装过程可能弹出配置框询问是否允许非 root 用户抓包。如果选择“是”系统会创建wireshark用户组然后把当前用户加入该组sudo usermod -aG wireshark $USER newgrp wireshark如果只是读取 pcap 文件不抓实时网卡那么权限限制影响不大。3.3 验证协议解析组件是否正常打开 Wireshark 后在主界面按CtrlShiftP打开偏好设置进入 Protocols搜索常见的nas-eps、ngap、s1ap、rrc。这些协议如果出现在列表中说明对应的 dissector 已经启用。这个检查非常重要。不同版本对 5G 消息的命名可能有差异如果找不到相关协议优先升级到 Wireshark 官方最新稳定版而不是继续用旧版本。4. 从德思特基站模拟器获取协议数据的几种途径在进入 Wireshark 演示前先解决一个前置问题数据从哪来德思特基站模拟器不同型号、不同版本提供的导出方式会有差异但数据流向可以归纳成三种。4.1 直接导出 pcap 跟踪文件这是最推荐的方式。模拟器界面上通常存在和 Trace、Log、Capture、pcap 相关的按钮点击后把当前测试流程保存为一个.pcap或.pcapng文件。你在上位机里找到该文件鼠标拖到 Wireshark 窗口即可打开。这类文件已经带有时间戳、协议栈分层、消息方向等元数据分析成本最低。4.2 实时抓取模拟器与上位机之间的流量如果模拟器和上位机之间走的是以太网接口Windows 上安装好 Npcap 后Wireshark 可以直接选择对应网卡开始实时抓包。这种方式适合观察模拟器外部接口的原始通信比如控制面信令到了 PC 侧或者应用层数据走了哪个端口。选择网卡时建议先打开本机的网络适配器列表确认和模拟器相连的物理网卡名称。很多 PC 会同时存在虚拟机网卡、Wi-Fi 网卡、蓝牙虚拟网卡选错会出现“等了十分钟一条包都没有”的情况。4.3 文本日志转为 pcap部分测试场景只提供了文本方式的 hex dump或者模拟器侧没有一键导出 pcap 的开关。此时可以使用 Wireshark 自带的text2pcap命令把十六进制文本转为 pcap 文件再打开text2pcap input_hex.txt output_trace.pcap需要注意text2pcap对文本格式有要求。如果文本不是标准的十六进制 dump转换会失败或生成无法解析的文件。更稳妥的做法是先查看模拟器 manual 中是否自带 “pcap export” 或 “Wireshark integration” 字样能用原生 pcap 导出就不要手动转换。5. 核心演示一用 Wireshark 打开协议文件并完成基础过滤下面进入正题。整个演示的主角不是某个私有协议而是 Wireshark 本身的功能。你只要理解以下操作思路就能把任何基站模拟器导出的 trace 文件分析流程复现出来。5.1 打开文件与界面观察将模拟器导出的bs_trace.pcap文件直接拖入 Wireshark 窗口。如果文件格式正确主界面会分成三个区域上方“报文列表”每一行是一条报文显示 No.、Time、Source、Destination、Protocol、Length、Info中间“协议树”选中列表中的某一行这里会按协议分层展开下方“十六进制字节”显示原始字节和协议树字段互相对应。如果打开文件后只看到一片空白先用capinfos工具确认文件内容。capinfos bs_trace.pcap该命令会输出文件封装格式、捕获时间、数据包数量、平均包长等基础信息。如果总数是 0说明这个 pcap 文件里确实没有任何报文问题在导出端不在 Wireshark。5.2 调整时间显示格式协议流程分析最看重时间关系。点开顶部菜单 View选择 Time Display Format推荐调整为 Seconds Since Beginning of Capture。这样报文列表里的 Time 列会显示“相对于第一条报文过去了多少秒”后续判断注册时延、重发间隔会更直观。如果一条报文的时长与模拟器界面显示不一致先检查是不是电脑本地时间和模拟器系统时间不同步。pcap 文件带的是抓包主机的时间不是模拟器射频时间。5.3 基本显示过滤Wireshark 的过滤栏位于工具栏下方。输入过滤表达式时背景为绿色表示语法正确红色表示表达式有语法错误。假设你分析的 trace 主要包含 LTE/5G 控制面消息可以先输入常见控制面协议名s1ap || ngap || nas-eps || nas-5gs这个表达式的意思是只显示 S1AP、NGAP、4G NAS、5G NAS 四类消息。如果你的 pcap 里只有其中一种其他类型没有消息列表会正常显示存在的部分不会报错。关键是不要照抄而要观察 Protocol 列的实际值。一个更稳妥的起步做法是先点一下列表上方的 Protocol 列头让报文按协议名排序。这样你能一眼看出这个 trace 文件里到底有哪些协议再决定过滤表达式写什么。5.4 用“右键”把关键字段变成列在实际调试中大家最常关心 IMSI、GUTI、PLMN、Request Type、Cause 这类字段。Wireshark 支持直接把协议树中的字段变成报文列表新列。操作方法很简单在报文列表中选中一条消息在中间的协议树里展开对应字段右键目标字段选择 Apply as Column。之后该字段就会出现在报文列表的右侧。这样处理多条消息时不用逐条点开看直接在列表中横向对比即可。6. 核心演示二定位一条完整流程和失败原因协议分析不追求“每一条都看”而是追求“把关键流程串起来看”。下面用一个最小实操链路演示。6.1 用关键字搜索注册/附着过程如果模拟器界面提示“注册失败”或“Attach Reject”打开 pcap 后直接按CtrlF在搜索框里切换成 String 搜索输入reject、Registration、attach等关键字。Wireshark 会定位到 Info 列包含这些关键字的报文。这个方法虽然“粗暴”但在一个几千条报文的 trace 文件里往往是定位起点最快的方式。6.2 展开一条 Reject 消息查看原因找到 Reject 消息后点击该行中间协议树会自动展开对应协议。重点看两个地方消息类型确认是否是真正的 Reject 而不是 Acceptcause / reject cause记录其中的原因值。如果协议树里看到的是加密字段或一堆 Unknown说明该消息体在传输过程中被保护了先去模拟器侧关闭安全配置重新跑一遍或者让模拟器导出解密所需的密钥文件再回到 Wireshark 中通过 Protocol Preferences 配置密钥。6.3 使用 Follow Stream 查看连续会话如果 trace 中某个流程走的是 TCP、UDP、SCTP 等基于流的传输Wireshark 支持在任意报文上右键选择 Follow再选择对应流。这个功能会把属于同一条流的报文重新组合成一个连续视图让你看到请求和响应是否一一对应。对于定位“终端发请求后网络没回复”之类的断点问题非常有效。6.4 查看协议层级统计如果要快速判断整个 trace 文件里有哪些协议、各协议报文数量占比使用统计功能更直观。点击菜单 Statistics选择 Protocol HierarchyWireshark 会生成一张层级统计表。这能帮你发现一些异常现象。比如你在测试 5G 注册流程但统计结果中 HTTP/TLS 流量占了绝大多数这就说明抓到的 pcap 可能更多是模拟器上位机自身的网络通信而不是真正的协议测试数据。此时要回到数据源重新导出。7. 使用 tshark 做可复现的命令行分析图形界面适合交互式排查但自动化测试和批量回归时不适合每次都打开 GUI。Wireshark 套件里的tshark命令行工具就是为此准备的。7.1 查看 pcap 中 NAS 层消息摘要tshark -r bs_trace.pcap -Y nas-eps || nas-5gs -T fields -e frame.number -e _ws.col.Protocol -e _ws.col.Info该命令会从bs_trace.pcap中过滤出 4G/5G NAS 消息并输出报文编号、协议、Info 摘要三列。适用于快速检查一个长时间跑出的 pcap 文件里是否有预期的信令交互。7.2 统计协议层级tshark -r bs_trace.pcap -q -z io,phs-q表示不逐条打印报文-z io,phs表示最终输出协议层级统计。这对应图形界面的 Statistics - Protocol Hierarchy。7.3 按时间范围裁剪文件模拟器一次测试可能持续很久但你只关心某几十秒的失败窗口。此时不要用 GUI 手工一条条删使用editcap按时间切分更高效editcap -A 2025-01-01 10:00:00 -B 2025-01-01 10:05:00 bs_trace.pcap window_10min.pcap-A是起始时间-B是结束时间时间格式需要补全到秒。切分后的文件体积更小也方便分发给同事复现问题。7.4 合并多个 pcap如果一次测试被分成了多个文件使用mergecap合成mergecap bs_part1.pcap bs_part2.pcap -w bs_merged.pcap实际项目中建议把“原始文件”和“处理后的文件”分开保存。裁剪和合并后的文件只能用于分析原始文件才是证据。8. 运行结果与验证方法很多人完成过滤后直接开始读结果却忽略了一个基本问题当前显示的报文是否真的覆盖了你关心的本次流程可以按下面的项目逐项检查验证项目操作成功标准文件非空capinfos bs_trace.pcapPackets 数量大于 0协议可识别Statistics - Protocol Hierarchy能看到目标控制面协议而不是大量 Unknown时间连续View - Time Display Format时间差合理无长时间空白过滤语法正确观察过滤栏背景色过滤栏为绿色关键消息存在CtrlF 搜索 attach/registration/reject能找到对应消息字段可读点击协议树字段关键字段不是全十六进制或者 Unknown如果最后一条关键消息始终找不到且测试软件确实显示流程已经触发优先检查数据源是否正确。例如手机连接的是模拟器 A但打开的是模拟器 B 的 trace或者导出的是未包含空口信令的上位机日志文件。9. 常见问题与排查思路下面直接给出一个排查表这些问题在我接触 Wireshark 相关实操时反复出现。问题现象可能原因排查方式解决方案打开 pcap 后没有任何报文文件为空或导出目录选错使用capinfos查看文件信息回到模拟器重新导出确认文件更新时间戳报文有但全是 Unknown使用的 Wireshark 版本过旧缺少对应 dissector打开 Protocols 设置搜索协议名升级 Wireshark 到最新稳定版某个协议没有解出来端口或报文类型没有被正确识别尝试右键选择 Decode As手动指定正确的协议解析器过滤栏输入表达式变红过滤语法错误或协议名拼写错误查看错误提示位置根据实际 Protocol 列修改过滤表达式模拟器状态和 Wireshark 不一致抓包位置不对或时间不同步核对Source/Destination和测试时间使用模拟器直接导出的 pcap并同步时钟NAS 字段显示加密安全模式已激活查看协议树中的 Security 相关字段在合法测试授权下导出密钥或关闭安全模式重跑Windows 上抓不到实时网卡数据Npcap 未安装或网卡选择错误在命令行执行tshark -D安装 Npcap 并选择正确网卡遇到“Decode As”场景时需要注意不要滥用它。每修改一次解析方式Wireshark 只会影响当前会话的展示方式并不会修改原始 pcap 文件。如果想保存解析结果需要重新导出或用tshark输出处理结果。10. 最佳实践与工程建议10.1 给文件命名时把关键信息写全基站模拟器测试的 pcap 文件建议按下面的命名模板保存日期_项目名_终端型号_测试场景_结果.pcapng例如20250101_NR_Registration_UE_A_fail.pcapng很多人试过“先存为 trace1.pcap”结果一周后根本不知道里面是什么。文件命名成本极低收益却极高。10.2 用 Profile 保存你的过滤器和列配置Wireshark 支持 Profile 功能。你花费时间配好的列、显示过滤器、配色规则可以保存在一个专属 Profile 中。切换 Profile 后整个界面布局和分析习惯都跟着走。团队协作时建议把常用 Profile 导出后共享给同事。这样可以保证每个人打开同一个 pcap 文件时看到的列和过滤规则一致减少沟通成本。10.3 原始 trace 是资产不要随意裁剪分析过程中生成的裁剪文件可以随便删除但模拟器导出的原始 pcap 不建议直接删。很多问题不是一次就能定位的特别是偶发性的注册失败、重传超时问题第一次分析可能只看到表象第二次需要继续挖掘原始 trace。如果担心文件太大优先按照时间窗口裁剪出一个复现文件同时保留原始文件。10.4 优先理解协议语义而不是只看颜色Wireshark 会根据 TCP 异常、重传、黑名单等规则给报文标色但这只是辅助。真正判断一条信令是否成功还是要阅读协议树中的消息类型、cause、完整性校验结果等字段。在基站模拟器测试中一条报文颜色正常并不代表它通过了实际测试一条标红的 TCP 重传也不一定就是协议测试失败的原因。10.5 安全合规提醒使用基站模拟器进行终端协议测试时需要在合法测试环境中进行测试模拟器的设备和频点配置应遵循当地无线设备管理要求。如果涉及安全上下文、密钥导出等能力必须在测试系统授权的范围内使用不要尝试绕过任何安全机制。11. 总结与后续学习方向回到文章开头的问题终端注册失败后模拟器状态栏只能告诉你“失败”Wireshark 能告诉你是哪一个消息、哪一个字段、哪一个 cause 导致流程中断。这就是协议分析工具真正的价值。我看过不少测试新手把大量时间花在“装好 Wireshark、点开始抓包”这些动作上真正到了问题现场却不知道该如何组织过滤条件、如何展开字段、如何定位消息链路。今天这篇演示把这条最关键的路径完整串了一遍。你可以先在德思特基站模拟器上跑一个最简单的注册流程导出 pcap再按这篇的步骤把注册成功和注册失败各存一份反复对比很快就能形成自己的分析手感。后续值得继续深入的方向包括tshark 自动化脚本、Wireshark 的 Lua 插件编写、自定义私有协议解析器、以及 pcapng 高级字段在自动化平台中的应用。对于基站模拟器实操来说掌握 Wireshark 不是终点它只是让你的测试结果可解释、可复现的开始。