4. Wireshark捕获HSMS报文:设置捕获过滤器、抓取设备与主机通信流量、保存pcap文件
在SECS/GEM通信调试中,最核心的第一步是正确捕获物理链路上的HSMS报文。HSMS(High-Speed SECS Message Services)基于TCP/IP传输,通常运行在端口号5000(或由设备厂商自定义)。Wireshark作为业界标准的网络协议分析工具,能够精确捕获并解析TCP负载中的SECS-II消息。本章将指导你完成从捕获过滤器设置、流量抓取到pcap文件保存的完整流程。
关键前提:确保Wireshark已安装(建议版本3.6+),且主机网卡支持混杂模式(Promiscuous Mode),以便捕获所有经过网卡的HSMS数据包。
4.1 捕获过滤器设置:精准锁定HSMS流量
在生产环境中,网卡上可能同时存在HTTP、SSH、NFS等多种流量。使用捕获过滤器(Capture Filter)可以只保留与HSMS相关的TCP数据包,大幅降低抓取文件的体积和噪声。
4.1.1 基于端口号的过滤器
HSMS默认使用TCP端口5000。最直接的过滤器表达式为:
tcp port 5000
如果设备使用非标准端口(如5001、5002),可以使用逻辑或组合:
tcp port 5000 or tcp port 5001
4.1.2 基于IP地址的过滤器
当你知道主机(Host)和设备(Equipment)的IP地址时,可以进一步缩小范围:
tcp port 5000 and (host 192.168.1.100 or host 192.168.1.200)
| 过滤器类型 | 表达式示例 | 适用场景 |
|---|---|---|
| 单端口 | tcp port 5000 |
标准HSMS通信 |
| 多端口 | tcp port 5000 or tcp port 5001 |
多会话或冗余端口 |
| IP+端口 | tcp port 5000 and host 10.0.0.1 |
单设备调试 |
| 子网范围 | tcp port 5000 and net 10.0.0.0/24 |
车间多设备抓包 |
提示:捕获过滤器在抓包开始前设置,位于Wireshark主界面的“Capture”菜单 → “Options” → “Capture Filter”输入框。它使用BPF(Berkeley Packet Filter)语法,不支持协议层级过滤(如SECS-II),仅作用于链路层和网络层。
4.2 抓取设备与主机通信流量:操作步骤
以下步骤以Windows/Linux环境为例,演示从启动抓包到停止的完整流程。
- 启动Wireshark,选择正确的网络接口(如以太网、Wi-Fi)。
- 点击菜单栏 Capture → Options,在“Capture Filter”输入框中填入
tcp port 5000。 - 点击 Start 开始抓包。此时Wireshark只显示满足过滤条件的TCP数据包。
- 在设备端或主机端触发HSMS通信(如建立连接、发送S1F13、S1F14等)。
- 观察Wireshark主窗口:应看到TCP三次握手(SYN、SYN-ACK、ACK)以及后续的HSMS数据包。
- 当通信结束后,点击 Stop 按钮(红色方块)停止抓包。
常见问题:如果抓包后只看到TCP握手包但没有HSMS数据,可能原因包括:① 端口号不是5000;② 设备与主机之间使用了TLS加密;③ 抓包接口错误(如使用了虚拟网卡而非物理网卡)。
4.3 保存pcap文件:保留原始证据
抓取到的数据需要保存为pcap(Packet Capture)格式,以便后续离线分析、团队共享或作为调试证据。Wireshark支持多种保存选项:
- 标准pcap(.pcap):兼容大多数协议分析工具,包括tcpdump、Ethereal。
- pcapng(.pcapng):Wireshark原生格式,支持多接口、注释、元数据,推荐使用。
- 仅保存过滤后的包:在“File → Export Specified Packets”中,可以只导出当前显示的数据包。
保存操作路径:File → Save As,选择保存路径和文件名,格式选择“Wireshark/tcpdump/... - pcapng”。
| 格式 | 扩展名 | 优点 | 缺点 |
|---|---|---|---|
| pcapng | .pcapng | 支持注释、多接口、高版本特性 | 部分旧工具不兼容 |
| pcap | .pcap | 广泛兼容,体积较小 | 不支持元数据 |
最佳实践:保存时在文件名中加入时间戳、设备ID、通信方向等信息,例如
2025-04-10_ETCH01_Host2Equip.pcapng。这有助于后续归档和检索。
4.4 HSMS抓包拓扑与数据流SVG图
下图展示了典型的HSMS抓包环境:主机(Host)与设备(Equipment)通过TCP/IP网络通信,Wireshark运行在主机侧或镜像端口上,捕获所有经过的HSMS数据包。
4.5 验证捕获结果:检查HSMS消息结构
成功抓取并保存pcap文件后,建议立即验证数据完整性。在Wireshark中打开保存的pcapng文件,检查以下关键特征:
- TCP三次握手:SYN、SYN-ACK、ACK序列完整。
- HSMS消息长度:每个HSMS数据包前4字节为消息长度(Message Length),通常为4的倍数。
- 会话ID:HSMS头中的Device ID(或Session ID)应与设备配置一致。
- 消息类型:SxFy格式(如S1F13、S2F41)应出现在数据负载中。
验证示例:在Wireshark中选中一个HSMS数据包,展开“HSMS”协议层,应看到如下字段:
HSMS Header: Session ID: 0x0001, Message Type: Data Message (0x01), SxFy: S1F13
4.6 常见抓包问题与排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 只看到TCP握手,无HSMS数据 | 端口号错误或通信未建立 | 确认设备端口号;检查防火墙规则 |
| 捕获到大量非HSMS包 | 捕获过滤器未生效或语法错误 | 重新输入 tcp port 5000 并重启抓包 |
| pcap文件过大 | 未使用过滤器或抓取时间过长 | 使用IP+端口组合过滤器;设置文件分片保存 |
| Wireshark无法解析HSMS | 缺少SECS/GEM解析插件 | 安装Wireshark的SECS-II解析器或使用Lua脚本 |
安全提醒:在生产环境中抓包前,务必获得网络管理员的授权。HSMS通信可能包含设备配方、工艺参数等敏感数据,pcap文件应妥善保管,避免泄露。
4.7 本章小结
通过本章学习,你已掌握:
- 使用BPF语法设置捕获过滤器,精准锁定HSMS流量。
- 执行抓包操作,捕获主机与设备之间的完整通信过程。
- 将原始数据保存为pcap/pcapng文件,便于离线分析和归档。
- 验证捕获结果,确保HSMS消息结构完整。