首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么UDP不使用路径MTU?

为什么UDP不使用路径MTU?
EN

Stack Overflow用户
提问于 2015-02-17 01:42:30
回答 2查看 1.1K关注 0票数 2

据我所知,UDP不使用路径MTU来避免分段,而TCP使用。我正在试着找出这个特殊设计的原因。

TCP需要避免分段,因为即使只有一个分段被丢弃,它也必须重新传输整个数据报。相反,UDP协议不需要重传数据报,而是由应用层来保证数据的完整性。

总之,片段会减慢TCP传输协议的速度,但不会减慢UDP传输协议的速度。

问题来了,对于需要完整性的通信,无论是采用本质上保证完整性的TCP协议,还是开发基于UDP协议的应用层重传协议,如果不使用ACKed协议,都需要重新发送整个数据报。然后,碎片将减慢UDP上的应用层重传协议,就像TCP一样。

我的推理有什么问题?

EN

回答 2

Stack Overflow用户

发布于 2015-02-17 02:32:22

UDP是数据报协议,其中每个分组表示独立于其它分组的单个实体(UDP不检测复制、重新排序等)。相反,TCP是一种流协议,即整个传输由类似于大文件的单个非结构化八位组流组成。为了使该流的传输更有效率,检测连接的MTU并尝试主要发送最大化该MTU的分组是有意义的,从而减少了传输的开销。为了进一步降低开销,TCP将把多个连续写入合并为尽可能少的数据包(具有最大MTU)。

相反,UDP本身无法避免分片,因为它是按原样传输数据报的,即数据报边界由数据包边界决定。任何类型的优化以减少开销都必须由应用程序自己完成。

因此,TCP最适合需要其功能的应用程序,如有保证和有序的传送以及带宽的有效使用。不幸的是,这些特性带来了一些缺点,比如连接建立的速度比较慢,延迟更高(在丢包的情况下)等。但有些应用程序并不需要所有好的部分,但必须避免不好的部分。例如,实时音频和视频可以处理数据包丢失,但需要低延迟,即,如果所有数据都到达,但它们必须快速到达,这并不重要。在这些情况下,更简单的UDP协议更适合。

票数 2
EN

Stack Overflow用户

发布于 2015-02-17 05:33:56

  1. ,因为它对MTU无能为力。这是一个数据报protocol.
  2. Because,没有路径。这是一种无连接协议。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28547248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档