【发布时间】:2015-09-24 12:27:27
【问题描述】:
我阅读了一些关于 PAWS(防止包装序列的保护)的信息。这很有趣。我不知道为了保证TCP的可靠性而实现了如此复杂的事情。没有PAWS,在高数据率的情况下,可能会接收到一个延迟的旧数据包,并误认为是新数据包。
我之前并没有考虑太多。但是现在我开始想知道一个数据包可以在网络中停留多长时间(如果数据包的类型很重要,尤其是 UDP 数据包)。一个数据包可以延迟,在它被传递之前暂时停留在网络中。但它只能停留很短的时间,对吧?
换句话说,等待(UDP)数据包需要多长时间才能断定它不会到来?
如果有答案,那么它是如何确定的?如何估算? (用于编写包超时相关的程序。)
一个简化的例子:一个服务器收到了 2 个 UDP 数据包。每个都包含一个整数来指示顺序。它获得了第一和第三。它知道 No.2 要么延迟要么丢失。过了一段时间,2号还没来,就断定丢包了。数据包不存在了。 (所以以后新的数据包不会有问题,类似于PAWS要解决的问题。)但是服务器要等多久才能断定No.2不再存在呢?
【问题讨论】:
-
根据您的编辑,这取决于使用 UDP 的应用程序。 UDP 本身并不以任何特定的顺序寻找任何特定的数据包。从网络协议的角度来看,这个问题没有任何意义。这是一个应用问题。一些应用程序很关心,他们已经实现了自己的可靠性程序,或者他们使用 TCP。
标签: networking tcp udp delay