【问题标题】:Detect TCP Packet Loss [closed]检测 TCP 数据包丢失 [关闭]
【发布时间】:2015-08-04 21:22:18
【问题描述】:

我正在尝试验证 TCP 协议及其容错特性。在客户端和服务器对中,我想检测由于丢失数据包而没有确认的数据包的重新传输。 TCP 确实会重新传输,但有没有办法在客户端/服务器程序中以编程方式检测到这一点。

【问题讨论】:

标签: java c++ c tcp


【解决方案1】:

方法一:用序号检查重传

如果数据包被重传,它的序列号保持不变。您可以存储所有传输的数据包的所有序列号。在每次传输时检查您是否已经遇到此序列号。如果有,那就是重传。如果您还没有,请将其添加到数据结构中。

方法2:乱序传输

由于数据包序列号在重传中保持不变,并且因为序列号单调增加。如果当前数据包的序列号小于前一个数据包,您可以检查每次传输是否。如果是,则为重传。

旁注:这就是像 WireShark 这样的数据包分析器如何将数据包标记为重传

【讨论】:

  • 我认为困难的问题不是如何标记重传给定必要的数据,而是如何获取这些数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多