Modbus RTU 与 Modbus TCP 深入指南-Wireshark抓包分析实战

九、Wireshark抓包分析实战

9.1 Modbus TCP 过滤器

过滤器表达式 说明
tcp.port == 502 捕获所有Modbus TCP流量
modbus 简单过滤器
modbus.func_code == 3 只显示读保持寄存器
modbus.func_code == 6 只显示写单寄存器
modbus.trans_id == 0x0001 特定事务ID
modbus.proto_id != 0 非标准协议标识(异常)
modbus.unit_id == 1 特定单元ID
modbus.error == 1 只显示异常响应

9.2 RTU over serial 抓包(Linux)

bash 复制代码
# 方法1:创建虚拟串口用于监听
socat -d -d pty,link=/tmp/ttyV0,rawer tcp:127.0.0.1:1234

# 将设备连接到虚拟串口
# 在Wireshark中捕获 /tmp/ttyV0,使用"Serial"接口

# 方法2:使用serial2pcap工具
sudo apt-get install wireshark
sudo modprobe can
# 使用外部串口嗅探硬件(如ComSpy)

9.3 分析步骤

9.3.1 抓包命令
bash 复制代码
# 捕获到文件
sudo tcpdump -i eth0 -s 1500 -w modbus_capture.pcap 'tcp port 502'

# 同时捕获并解码
sudo tcpdump -i eth0 -A -s 1500 'tcp port 502 and host 192.168.1.100'
9.3.2 Wireshark分析流程
  1. 打开pcap文件:File → Open → modbus_capture.pcap

  2. 应用过滤器 :输入 modbus 回车

  3. 查看请求:选择一个包,展开 Modbus/TCP 部分

  4. 跟踪流:右键 → Follow → TCP Stream

  5. 查看时序:Statistics → Flow Graph

9.3.3 解读示例(读保持寄存器)
bash 复制代码
Frame 1: 192.168.1.10 → 192.168.1.100 (Modbus TCP)
Transcation ID: 0x0001
Protocol ID: 0x0000
Length: 0x0006
Unit ID: 0x01
Modbus PDU:
    Function Code: Read Holding Registers (3)
    Starting Address: 0x0000
    Quantity: 0x0002

Frame 2: 192.168.1.100 → 192.168.1.10 (Modbus TCP)
Transcation ID: 0x0001
Protocol ID: 0x0000
Length: 0x0005
Unit ID: 0x01
Modbus PDU:
    Function Code: Read Holding Registers (3)
    Byte Count: 0x04
    Register 0x0000: 0x1234
    Register 0x0001: 0x5678

9.4 常见问题诊断

现象 Wireshark显示 可能原因 解决方法
无响应 只有请求,无响应 设备IP错误、端口错误、防火墙 检查连接,ping设备
重置连接 TCP RST包 端口未监听 确认设备支持Modbus TCP
超时重传 TCP Dup ACK, Retransmission 网络丢包 检查网线、交换机
乱序响应 事务ID不匹配 设备实现有bug 忽略乱序响应,等待匹配
异常响应 Modbus Exception 请求非法 查异常码表
相关推荐
XUEYUAN52121 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
CHENKONG_CK1 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
z落落1 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp
曼巴UE51 天前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
开开心心就好1 天前
安卓手写文字生成工具,多种纸张一直免费
网络·网络协议·tcp/ip·leetcode·智能手机·电脑·模拟退火算法
渡我白衣1 天前
HttpRequest与HttpResponse的实现
服务器·数据结构·c++·人工智能·tcp/ip·机器学习·caffe
j7~1 天前
【Linux 网络】四十.《网络基础(传输层协议:UDP、TCP)》--中篇
linux·tcp·tcp协议·确认应答机制·连接管理机制·tcp流量控制
yangjj20052 天前
手写 Modbus 上位机我踩过的 7 个工业级坑
modbus·温度监测·上位机开发
IpdataCloud2 天前
如何判断游戏注册IP是住宅宽带还是机房代理?IP风险识别看ASN、IDC标签与风险分
tcp/ip·ip
K成长日志2 天前
DALI协议-Part209-颜色控制
物联网·网络协议·iot·智能照明·智能建筑·dali