工具

捕获回放

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

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

工业协议的问题在于,最有意思的协议往往分布在对 IT 人员不太友好的地方。

要么太热,要么太冷,而且附近通常也没什么好咖啡。

Capture Replay 工具就是一个小帮手,或许能帮上忙。

尤其是在开发被动模式驱动时,这个工具非常实用。

它允许重放已录制的网络流量,并让任意被动模式驱动直接截获这些流量。

它对非被动模式的驱动或许也能起作用,但我预计同步会比较棘手。

获取抓包

要创建抓包,我通常会让一台运行 WireShark 的设备接入网络。

理想情况下接入到网络交换机的镜像端口,这样就能记录下全部流量。

另一种办法是在能够访问我所关心流量的某台 PC/服务器上运行 WireShark。因此,例如如果我想为控制系统 X 开发驱动,在其中一台 X 服务器上抓取流量大概是最简单的方式。如果合规规则禁止这样做,第三个选项就是使用网络分路器(tap)来记录抓包。

重放抓包

接下来你需要把 pcapng 文件理想情况下拷贝到你的开发系统上。

抓包可以通过 plc4j/tools/capture-replay 中的工具进行重放。

在这里只需找到 target/plc4j-capture-replay-1.0.0-uber-jar.jar 并运行:

   java -jar target/plc4j-capture-replay-1.0.0-uber-jar.jar --input-file {path to capture} --output-device {name of the network device} --replay-speed 1 --loop true

选项 input-file 和 output-device 是必需的,其余为可选:

  • input-file 指定抓包文件(pcapng)的路径
  • output-device 用于输出的网络设备名称(在 Linux 和 Mac 上运行 ifconfig 时列出的名称,或 Windows 上的 ipconfig)
  • replay-speed 回放的速度。1 表示实时,0 或更小表示 as fast as possible,0.5 表示比原始速度慢 50%,2 表示两倍速
  • loop 如果设置为 true,则一旦到达末尾就会自动从开头重新开始回放抓包内容
回放速度非常适合用来观察你的驱动程序如何应对不同的流量负载。因此,即使你的驱动程序目前运行良好,也建议使用此工具,以了解你的系统是否能够承受多出 50% 的节点或更短的轮询间隔等情况。

评论

登录后参与评论

正在加载评论…