我读了一些关于PAWS(防护环绕序列)的文章。这很有趣。我不知道如何实施这些复杂的事情来保证TCP的可靠性。如果没有PAWS,在数据速率较高的情况下,可能会收到一个延迟的旧数据包,并被误认为是新数据包。延迟的数据包能持续多久?
我之前没有多想这件事。但是现在我开始想知道一个数据包可以留在网络中多长时间(尤其是UDP数据包,如果数据包的类型很重要的话)。数据包可能会被延迟,在交付之前暂时停留在网络中。但它只能停留很短的时间,对吧?
换句话说,在断定它不会到来之前需要多长时间等待(UDP)数据包?
如果有答案,那么它是如何确定的?如何估计它? (用于编写与分组超时有关的程序)
简化示例:服务器接收到2个UDP数据包。每个都包含一个整数以指示顺序。它拿到了1号和3号。它知道2号要么延迟要么丢失。一段时间后,2号仍然没有来,那么它的结论是数据包丢失。数据包不再存在。 (因此,将来不会对新数据包造成任何麻烦,类似于PAWS希望解决的问题。)但是,在结束No.2之前服务器应该等待多长时间不再存在?
根据您的编辑,这取决于使用UDP的应用程序。 UDP本身并没有以任何特定的顺序寻找任何特定的数据包。从网络协议的角度来看,这个问题没有任何意义;这是一个应用程序问题。有些应用程序很在意,他们已经实现了自己的可靠性程序,或者他们使用TCP。 –