我在 Linux 上通过 MODBUS-TCP 协议与 MODBUS 从设备通信时遇到问题。我的 Linux 主机和远程 MODBUS 从设备通过有线方式直接连接到一个 LAN 中。我无法访问 MODBUS 从设备进行诊断。我通过几个寄存器从 Linux 上的 MODBUS 设备读取数据,所有操作都需要27 秒持续时间。但是当我在 Windows 上从同一个 MODBUS 设备读取相同的数据时,操作需要大约20 毫秒。我编写了 Java 应用程序,用于与 MODBUS 进行通信j2mod-3.1.1库。Linux 版本 -
Linux 版本 5.10.0-1045-generic (builder@build4) (gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516,GNU ld (适用于 Debian 的 GNU Binutils) 2.28)
Windows 版本 -微软 Windows 10.0.19043
我记下了 Wireshark 在 Windows 和 Linux 上的网络转储:Windows 从 Windows 转储
Linux从 Linux 转储
这是我的 TCP 设置:
- 视窗Windows TCP 设置
- LinuxLinux TCP 设置
我发现在 Linux 上通信时会出现重复的 ACK 消息和虚假重传,但我不明白为什么。Linux 上的哪个 TCP 设置是错误的?