我知道UDP并不总是按顺序或完全接收数据包,但我怎么知道为什么?数据包是否在运输中丢失或重新排序?例如不同的数据包采用不同的路由并在不同的时间到达或者是否腐败的数据包被重新发送并因此迟到?为什么UDP重写数据包
我宁愿如果这可以在后回答,但如果你可以重定向我一个更好的来源,也将不胜感激。
我知道UDP并不总是按顺序或完全接收数据包,但我怎么知道为什么?数据包是否在运输中丢失或重新排序?例如不同的数据包采用不同的路由并在不同的时间到达或者是否腐败的数据包被重新发送并因此迟到?为什么UDP重写数据包
我宁愿如果这可以在后回答,但如果你可以重定向我一个更好的来源,也将不胜感激。
出于速度和效率的目的,数据包没有按顺序接收,这意味着任何数据包可以采取任何路由,并且不必等待任何其他数据包已经到达/发送。由于可靠性不是UDP的主要问题之一,因此它并不关心。
丢弃的数据包也不会重新发送,因为两端都没有进行检查。 UDP主要用于丢失少数数据包并不相关的东西,如流媒体,VoIP等。
如果你想要可靠性,那么你需要使用TCP。
作为head-of-line blocking的副作用,单个网络交换机可能会对最后两个数据包进行重新排序,级联交换机因此会导致进一步的重新排序,并且由于距离不同以及缺少排序,多个路径无法保证排序数据报。
下面是关于这一主题的论文:
但如何?在两个程序之间发送udp数据包并且它们仍然从oreder中出来?我可以看到网络滞后,但机器怎么会有滞后? – Lauer
@ user1204406它可能也涉及到物理设备的延迟以及如何缓冲等等。整个机器有很多部分,并不那么简单。 –