我正在编写一个使用 libpcap 捕获数据包并重新组装 TCP 流的程序。我的程序只是监视流量,因此我无法控制数据包的接收和传输。我的程序忽略所有非 TCP/IP 流量。
我从 ISN 计算下一个预期的序列号,然后是连续的 SEQ 编号。我进行了设置,以便每个 TCP 连接都由一个由源 IP、源端口、目标 IP 和目标端口组成的元组唯一标识。一切都很顺利,直到我收到一个序列号与我预期不同的数据包。我已经上传了屏幕截图来帮助说明我在这里描述的内容。
我的问题是: 1.“丢失”数据包中的数据在哪里?2. SEQ 编号顺序如何从这种情况中恢复?3. 我能做些什么来处理这些事件。
请记住; 但是,我不是在编写遵循 TCP 的程序。我正在编写一个程序,它被动地监视 TCP 流的网络流量并尝试将原始数据保存到磁盘,我对为什么会发生上述状态情况以及如何编程来处理它感到困惑。
谢谢