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 请求非法 查异常码表
相关推荐
caimouse12 小时前
TDI (传输驱动接口 Transport Driver Interface) 详细分析
网络协议
NeilYuen15 小时前
用UDP实现向DNS服务器请求IP地址
服务器·tcp/ip·udp
shengnan_wsn16 小时前
【协议】【TCP】
网络·网络协议·tcp/ip
消失的旧时光-194317 小时前
第 3 篇:机器人 TCP 长连接如何稳定运行?心跳、掉线检测与自动重连
网络协议·tcp/ip·机器人
不弃君18 小时前
在 Windows 上用 MinGW 搭建 lwIP 调试环境:方法与踩坑实录
windows·网络协议·tcp/ip·嵌入式·mingw·lwip
NeilYuen20 小时前
实现TCP发送HTTP请求
网络协议·tcp/ip·http
天启HTTP21 小时前
爬虫频繁弹验证码?解析网站反爬检测机制
网络·爬虫·tcp/ip
ARoger_miu571 天前
opsf笔记
网络·网络协议
caimouse1 天前
tcpip.sys 网络层 (IP) 详细分析
网络·网络协议·tcp/ip
草莓熊Lotso1 天前
【Linux网络】从0手写Reactor反应堆(二):完善核心细节——ET非阻塞读写、分层架构与回调机制
linux·运维·服务器·网络·c++·tcp/ip·架构