为什么UDP不使用路径MTU?

3
据我所知,UDP不使用路径MTU来避免分段,而TCP则使用。我试图找到这种设计的原因。
TCP需要避免分段,因为即使只丢失一个片段,它也必须重新传输整个数据报。相反,UDP不需要重新传输数据报,由应用层确保完整性。
总之,分段会减慢TCP传输协议,但不会影响UDP传输协议。
问题在于,对于需要完整性的通信,是采用天然保证完整性的TCP,还是基于UDP开发一个应用层重传协议,如果未被确认,则需要重新发送整个数据报。然后,分段将像TCP一样减慢UDP上的应用层重传协议。
我的推理有什么问题吗?

不清楚你在暗示什么。UDP的实现对路径MTU会有什么影响?假设路径MTU为1,500字节,而应用程序试图发送一个1,600字节的数据报。目前,该数据报由IP层进行分片。你具体有什么建议?UDP可以有什么不同的做法? - David Schwartz
2个回答

2
UDP是数据报协议,每个数据包都代表一个单独的实体,与其他数据包无关(UDP不检测重复、重排等)。相比之下,TCP是流协议,整个传输由一个类似于大文件的结构化八位字节流组成。为了使流的传输更有效率,最好检测连接的MTU并尝试发送大多数最大化MTU的数据包,从而减少传输的开销。为了进一步减少开销,TCP会将多个连续写入合并为尽可能少的数据包(最大MTU)。
UDP不能避免分段,因为它会像原样传输数据报,即数据报边界由数据包边界确定。任何优化以减少开销的尝试都必须由应用程序自行完成。
因此,TCP最适合需要其特性(如保证和有序的传递和高效的带宽利用)的应用程序。不幸的是,这些特性也带来了缺点,如连接设置较慢、更高的延迟(在丢包的情况下)等。但是有些应用程序不需要所有好的部分,但必须避免坏的部分。例如,实时音频和视频可以处理数据包丢失,但需要低延迟,即所有数据到达不重要,但它们必须快速到达。在这些情况下,更简单的UDP协议更适合。

1
  1. 因为它无法利用MTU做任何有用的事情。这是一个数据报协议。
  2. 因为没有路径。这是一种无连接协议。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接