重组段时如何验证TCP数据包?

问题描述

我已经开发了一个使用Windivert dll捕获数据包的应用程序。当收到 [FIN] 数据包时,它将接收将合并的数据段。由于某些网络问题,有时无法接收到数据包。合并数据包的各个段时,是否有任何方法可以验证是否接收到所有段,从而避免丢失任何数据?我尝试使用序列号,但找不到任何可以验证的订单

以下是我的数据流(段):

1.  sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 3464538165 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
2.  sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 3867322421 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
3.  sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 4270106677 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
4.  sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 377989173 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
5.  sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 780773429 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
6.  sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 1183557685 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
7.  sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 1586341941 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
8.  sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 1989126197 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
9.  sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 2391910453 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
10. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 2794694709 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
11. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 3197478965 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
12. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 3600263221 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
13. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 4003047477 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
14. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 110929973 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
15. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 513714229 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
16. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 916498485 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
17. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 1319282741 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
18. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 1722066997 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
19. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 2124851253 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 536
20. sourceKey : 127.0.0.1:55736 | parsedPacket.TcpseqNum: 2527635509 | parsedPacket.TcpAckNum: 16777216 | parsedPacket.PayloadLength: 189

以上是接收到的完整数据流。如果其中一个数据包丢失,该如何验证?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...