延迟数据包可以持续多长时间?

时间:2015-09-24 03:16:00

标签: networking tcp udp delay

我读了一些关于PAWS(保护包装序列)的内容。这很有趣。我不知道实现这么复杂的事情来保证TCP的可靠性。没有PAWS,在高数据速率的情况下,可以接收延迟的旧数据包并将其视为新数据包。

我以前对此并没有多想。但现在我开始想知道数据包可以在网络中保留多长时间(特别是UDP数据包,如果数据包的类型很重要)。数据包可能会被延迟,在传送之前暂时停留在网络中。但它只能停留很短的时间,对吗?

换句话说,在断定它不会来之前等待(UDP)数据包需要多长时间?

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

简化示例:服务器收到2个UDP数据包。每个都包含一个整数来表示顺序。它获得了No.1和No.3。它知道No.2要么被延迟要么丢失了。经过一段时间后,No.2仍然没有来,然后它得出结论,数据包丢失了。数据包不再存在。 (因此,将来不会对新数据包造成任何麻烦,类似于PAWS旨在解决的问题。)但是,在结束No.2之前服务器应该等待多长时间了?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

请参阅RFC 791 #3.2

  

生存时间

     

生存时间由发件人设置为最长时间       允许数据报在互联网系统中。如果是数据报       互联网系统比生存时间更长,然后是       必须销毁数据报。

     

必须在互联网标题的每个点减少此字段       处理以反映处理数据报所花费的时间。       即使实际上没有当地可用的本地信息       花费,该字段必须减少1.时间以度量为单位       秒的单位(即值1表示一秒)。就这样       最长生存时间为255秒或4.25分钟。每一个       处理数据报的模块必须至少减少TTL       即使它在不到一秒的时间内处理数据报,也就是TTL       必须将其视为数据报可能的上限       存在。目的是使无法传递的数据报成为现实       丢弃,并限制最大数据报的生命周期。