简介
我们有一个应用程序,它从TCP协议(IOT设备)接收数据到我们的Ubuntu服务器。两端发送它的数据互相收到确认,以保持它的通信和接受下一个相应的消息。
我们经常注意到服务器接收重复的数据。只有当IOT设备丢失或中断与服务器的连接时,才会发生这种情况。基本上,如果设备没有从服务器接收到任何信息,它就会不断地重传重复的数据。
我们从服务器上提取了一个tcpdump,并使用Wire软件进行了检查。我们注意到,在设备发送重复数据之前,很少有服务器继续尝试TCP重传/TCP(请参阅附加的黑色高亮显示行)。我们认为这是从设备接收重复数据的原因,因为根据Wire日志,设备没有正确地从服务器接收确认信息。

发布于 2022-06-13 00:33:29
我认为您所描述的是TCP通信的完全正常行为,在这种情况下,对方没有足够快的响应。
看看101596和101611包。由于对甲方从乙方发送的1015946 FIN,ACK数据包没有回复,甲方再次发送相同的数据包。这是序列号101611。Wireshark把它看作是一种复制,而实际上是这样的。时差为14:52:01.188-14:52:00.444=744毫秒。
由于在另一个1472 ms中再次没有来自B的响应,侧A再次尝试(第三次)使用分组101634。
然后连接就恢复了。乙方的回复重复,收到甲方延迟的多个数据包等。
TCP连接的一个特性是,当它没有收到响应时,它会一次又一次地重复相同的数据包。经过多次尝试之后,经过长时间超时之后,它可以声明连接不成功,并提前终止它。
https://askubuntu.com/questions/1317319
复制相似问题