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 请求非法 查异常码表
相关推荐
我是唐青枫5 小时前
Java Netty 实战指南:从 NIO 线程模型到 TCP 编解码和心跳机制
java·tcp/ip·nio
ttod_qzstudio6 小时前
【软考备考】计算机网络详解:OSI/TCP-IP 分层 + IP 子网划分,一篇拿下网络模块(附 10 道练习)
网络·tcp/ip·计算机网络·软考
寒晓星9 小时前
【网络编程】UDP编程
linux·网络·网络协议·udp
逑之10 小时前
HTTP、HTTPS2
网络·网络协议·http
_waylau12 小时前
Spring Framework HTTP服务客户端详解
java·后端·网络协议·spring·http·spring cloud
爱刷碗的苏泓舒12 小时前
网络通信入门之 NTRIP、HTTP、TCP 与 IP 的关系:协议分层、连接过程以及实时数据流
网络协议·tcp/ip·http·网络通信·rtcm·监控运维·ntrip
Lhappy嘻嘻12 小时前
网络(四)|全网最细网络层原理:IP 协议、IP 地址分类、子网划分、路由转发、NAT 穿透详解
java·笔记·网络协议·计算机网络
仰科网关13 小时前
VFBOX网关采集OPC_DA转Modbus_MES工控平台项目案例
网关·modbus·opc da·协议转换·规约转换器
我星期八休息1 天前
网络编程—应用层HTTP协议
linux·运维·开发语言·前端·网络·网络协议·http
ShineWinsu1 天前
对于Linux:UDPsocket编程基础的解析
linux·运维·网络协议·udp·ip·端口号·进程间通信