Networking 延迟的数据包能持续多久?

Networking 延迟的数据包能持续多久?,networking,tcp,udp,delay,Networking,Tcp,Udp,Delay,我读了一些关于爪子(防止缠绕顺序)的书。这很有趣。我不知道这么复杂的事情是为了保证TCP的可靠性而实现的。在没有PAWS的情况下,在高数据速率的情况下,可以接收延迟的旧数据包并错误地将其视为新数据包 我以前没怎么想过这个。但现在我开始想知道一个数据包可以在网络中停留多长时间(特别是UDP数据包,如果数据包的类型很重要的话)。数据包可能会被延迟,在发送之前暂时留在网络中。但是它只能停留很短的时间,对吗 换句话说,等待(UDP)数据包需要多长时间才能得出它不会出现的结论 如果有答案,那么如何确定?如

我读了一些关于爪子(防止缠绕顺序)的书。这很有趣。我不知道这么复杂的事情是为了保证TCP的可靠性而实现的。在没有PAWS的情况下,在高数据速率的情况下,可以接收延迟的旧数据包并错误地将其视为新数据包

我以前没怎么想过这个。但现在我开始想知道一个数据包可以在网络中停留多长时间(特别是UDP数据包,如果数据包的类型很重要的话)。数据包可能会被延迟,在发送之前暂时留在网络中。但是它只能停留很短的时间,对吗

换句话说,等待(UDP)数据包需要多长时间才能得出它不会出现的结论

如果有答案,那么如何确定?如何估计呢?(用于编写与数据包超时相关的程序。)



一个简化的示例:服务器接收到2个UDP数据包。每个包含一个整数以指示顺序。它得了第一名和第三名。它知道2号不是延误就是丢失。一段时间后,2号仍然没有出现,然后它得出结论,数据包丢失了。这个包已经不存在了。(因此,它不会给未来的新数据包带来任何麻烦,类似于PAWS想要解决的问题。)但服务器应该等待多长时间才能得出第2条不再存在的结论?

UDP是一种火而忘却、尽力而为的协议。接收主机不期望UDP数据包到来。上层可以使用自己的保证或期望,但UDP没有

UDP不像TCP那样等待数据包。

请参阅:

活下去的时间

“生存时间”由发件人设置为 数据报允许存在于互联网系统中。如果数据报 是不是在互联网系统中生存的时间更长,那么 必须销毁数据报

此字段必须在internet标头显示的每个点处减少 被处理以反映处理数据报所花费的时间。 即使当时没有当地的信息 如果已使用,则该字段必须递减1。时间是用单位来衡量的 秒的单位(即值1表示1秒)。因此 最长生存时间为255秒或4.25分钟。自从 处理数据报的模块必须将TTL降低至少 即使它在不到一秒钟的时间内处理数据报,TTL 必须仅将其视为数据报可能出现的时间上限 存在。其目的是使无法交付的数据报 丢弃,并绑定最大数据报生存期


我的意思是UDP数据包需要花费一些时间进行传输。一个数据包甚至可以比它的前一个数据包更早到达目的地。那么旅行最多需要多长时间呢?你不明白UDP对此并不在意。这对TCP很重要,但UDP数据包到达时就到达了,或者没有到达,UDP不在乎。使用UDP的应用程序可能关心,但这取决于应用程序,UDP不关心。根据您的编辑,这取决于使用UDP的应用程序。UDP本身不以任何特定顺序查找任何特定数据包。从网络协议的角度来看,这个问题没有任何意义;这是一个应用问题。有些应用程序很在意,它们已经实现了自己的可靠性程序,或者它们使用TCP。这是针对IP本身的,它对IP数据包在被丢弃之前可以在网络上生存的时间设置了上限。它没有说明应用程序在相信UDP段不会到达之前会等待多长时间,并且可能会重新请求发送方发送另一个UDP段。UDP并不等待特定的数据包到达,因此它不关心数据包是否丢失。如果某个应用程序因UDP缺乏保证而采取了缓解措施,则该应用程序依赖于应用程序,并且会因应用程序而异。大多数人之所以使用UDP,是因为他们不在乎它是针对IP本身的,而且,由于UDP数据报不能比它封装的IP数据包更长寿,因此,应用程序在断定UDP数据报丢失之前等待的时间比IP TTL长是没有意义的。我还没有说UDP“关心它是否丢失”。IP TTL为应用程序应该做什么提供了一个上限。我对OP的观点是,如果应用程序关心在某个时间范围内接收UDP段(大多数确实关心的应用程序等待的时间比IP超时的时间要短得多),则取决于应用程序来确定该时间段,不是UDP,因为UDP本身并不关心。UDP不需要下一个数据包,因此它不知道它是否丢失、延迟或无序。@RonMaupin您不需要教我UDP。如果你在向OP讲话,你应该清楚地标记你的评论,或者在他的问题下发表评论。但你好像找错人了。OP的“简化示例”显然是关于应用程序的等待,而不是UDP。