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环境为例,演示从启动抓包到停止的完整流程。

  1. 启动Wireshark,选择正确的网络接口(如以太网、Wi-Fi)。
  2. 点击菜单栏 Capture → Options,在“Capture Filter”输入框中填入 tcp port 5000。
  3. 点击 Start 开始抓包。此时Wireshark只显示满足过滤条件的TCP数据包。
  4. 在设备端或主机端触发HSMS通信(如建立连接、发送S1F13、S1F14等)。
  5. 观察Wireshark主窗口:应看到TCP三次握手(SYN、SYN-ACK、ACK)以及后续的HSMS数据包。
  6. 当通信结束后,点击 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数据包。

HSMS抓包拓扑与数据流 HSMS抓包拓扑与数据流 主机 (Host) IP: 192.168.1.100 设备 (Equipment) IP: 192.168.1.200 Wireshark 捕获过滤器: tcp port 5000 TCP连接 (端口5000) HSMS消息 (S1F13) HSMS响应 (S1F14) 交换机镜像端口 / 本地回环抓包 确保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消息结构完整。