使用正确的 TCP 序列号丢失的数据包。是否可以?

网络工程 ip 通讯协议 纳特
2021-07-08 19:10:07

我正在分析我们在现场拥有的服务器 (SCADA) 和远程终端单元 (RTU) 之间的一些通信问题。通讯是IEC104协议,使用TCP/IP。IEC104 协议有其如何编号机制。因此,当 IEC104 消息 (APDU) 丢失时,它会被检测到。

我们遇到的问题是,有时,来自 RTU 的 IEC104 APDU 丢失(编号中的漏洞),但底层 TCP 序列号是正确的。我用wireshark分析了这个。

连接正在通过几个路由器、防火墙和无线电。NAT 也曾一度被使用。

我试图找出问题是在 RTU 还是在网络中。

我对 TCP 协议的理解是它进行端到端的检查。连接的每一端都对 paquet 进行编号,并在每一端进行确认。如果是这种情况,则问题出在 RTU 和 IEC104 编号上。

我错了吗?是否存在网络上的设备(路由器、带有 NAT 的防火墙)可以重新编号 TCP 序列的情况?如果是这种情况,那么问题将出在网络上。在我看来,情况并非如此,因为路由器、防火墙在第 3 层(网络/IP)上工作。它不应该触及 TCP 层……但我不了解最新的创新 :)

有专家可以给点建议吗?

谢谢

亚历克斯

1个回答

有时,来自 RTU 的 IEC104 APDU 丢失(编号中的漏洞)但底层 TCP 序列号是正确的。

然后,发送方的堆栈永远不会看到该 APDU,即。TCP上面有问题。

我假设没有恶意的中间人删除 APDU 并用其他一些数据填充漏洞。由于 TCP 跟踪传输和接收的字节,因此很难将真实数据换成假数据。这不可能是偶然或偶然的。

我对 TCP 协议的理解是它进行端到端的检查。连接的每一端都对 paquet 进行编号,并在每一端进行确认。如果是这种情况,则问题出在 RTU 和 IEC104 编号上。

是的,这是完全正确的。在任何情况下,防火墙或 NAT 路由器都不会重新编号 TCP 段。即使发生碎片,那也是在网络层并且对 TCP 及更高层完全透明。