传输方式

PCAP 回放

qianmoQqianmoQ· 更新于 2026-10-01· 阅读 4 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

将先前录制的 PCAP 或 PCAPNG 抓包文件作为实时设备进行回放。不会向网络发送任何内容:驱动会建立连接,而它“接收”到的帧全部来自文件。

这是一种用于调试和开发的传输方式。借助它,你可以针对从一台无法访问的机器上获取的抓包文件来开发驱动,它与 [审计日志]](https://plc4x.apache.org/plc4x/latest/users/audit-log.html) 天然契合——录制一次,然后按需反复回放。

传输语法

抓包文件由 pcap-replay.pcap-file 参数指定;连接字符串中的地址部分不会被解析。

示例

profinet:pcap-replay://?pcap-replay.pcap-file=/tmp/line-3.pcapng&pcap-replay.speed-factor=1.0

名称
类型
默认值
是否必需
说明
名称
PCAP Replay
代码

pcap-replay

Maven 依赖

<dependency>
  <groupId>org.apache.plc4x</groupId>
  <artifactId>plc4j-transports-pcap-replay</artifactId>
  <version>1.0.0</version>
</dependency>

配置选项:

pcap-replay.pcap-file

STRING

required

用于回放的 PCAP 文件路径。

pcap-replay.local-address

本地 MAC 地址(用于模拟,充当该设备)。

pcap-replay.remote-address

STRING

用于通信的远程 MAC 地址。

pcap-replay.protocol-id

INT(整型)

0

用于过滤的 EtherType / 协议号(例如,PROFINET 使用 0x88B5)。

pcap-replay.speed-factor

双精度浮点数(DOUBLE)

0

回放速度倍数。1.0 = 实时,0.0 = 尽可能快,2.0 = 双倍速。

pcap-replay.loop

BOOLEAN

false

当 PCAP 文件到达末尾时,循环播放该文件。

pcap-replay.only-incoming-packets

BOOLEAN

true

仅重放从远端到本地的数据包(模拟设备响应)。当为 false 时,重放所有数据包。

pcap-replay.only-outgoing-packets

BOOLEAN

false

仅重放从本地到远程的数据包(模拟设备请求)。

pcap-replay.max-frame-size

INT

1500

以字节为单位的最大帧大小。

pcap-replay.read-timeout-ms

INT

0

阻塞读取的读取超时时间,单位为毫秒。

pcap-replay.packet-queue-size

INT

1000

数据包队列的缓冲区大小。

pcap-replay.auto-detect-mac-addresses

BOOLEAN

true

根据 PCAP 文件中的第一个数据包自动检测 MAC 地址。

pcap-replay.auto-start

BOOLEAN

true

创建传输时自动开始重放。

pcap-replay.vlan-id

INT

0

按 VLAN ID 过滤(0 表示不进行 VLAN 过滤)。

首次运行之前,有两个选项值得了解:

  • pcap-replay.speed-factor 默认为 0,即以尽可能快的读取速度重放抓包数据。将其设置为 1.0 可以还原原始时序——如果你要追踪的 bug 与时序有关,就应该这样设置。
  • pcap-replay.only-incoming-packets 默认为 true,因此默认情况下只重放设备发送的帧,驱动自身的请求不会被发出。如果要替代某个设备,这样的设置才是正确的。

评论

登录后参与评论

正在加载评论…