对于MTU大小,是否存在“典型”或“事实上”默认值?

Modified on: Sat, 21 Sep 2019 17:00:02 +0800
  1. 在编写网络软件时,是否有默认的,典型的或其他事实上的MTU尺寸标准,我应该注意哪些?如果是这样,它是什么?

  2. MTU大小为1500(如此处所示:DSL标准支持的最大MTU是多少)一个好的经验法则?

  3. 另外,我是不是在想这个问题?在编写网络软件时,人们认为认为这一点是不是很重要,但是在实际的,现实世界的术语中,由于TCP会为您处理细节,因此不会有太大的影响吗? / p>

  4. 醇>

    我在这里问,而不是在StackOverflow上,因为当涉及与MTU大小相关的实际支持问题时,我想要系统管理员的观点。

    更新:根据一些反馈和初步答案,我正在缩小焦点:

  • 我正在编写的应用程序将通过WAN连接在桌面/服务器之间进行通信
  • 这是典型的桌面/服务器(即非移动)软件,虽然系留式笔记本电脑可能会通过移动网络使用此软件,但我并不关心
  • 除了应用程序层之外,它甚至不会尝试处理任何TCP堆栈层进行优化
  • 可以排除此问题范围的VPN开销

最佳答案

您不应该关心MTU,因为网络堆栈将负责必要的优化。如果您使用的是TCP,则堆栈可能会使用计算最大段大小(MSS)的方法,而MSS最终会导致数据包小于路径中的最低MTU。其中一个是PMTU发现

一般情况下,你不应该试图超越堆栈 - TCP / IP的分层架构使用抽象是有充分理由的。除非你有更好的,否则你应该将分段和碎片的功能留在设计的位置。

正如其他人所写,除了IP数据包的最小定义MTU之外,没有“安全的MTU” - 这是68字节,因此由于巨大的开销而具有相当低的实用价值。

由于MTU限制导致的典型支持问题主要有两个方面:

  • 不必要的碎片,因此更高的协议开销和更高的乒乓协议延迟
  • 由于无知的防火墙管理员过滤ICMP而导致传输中断,从而打破了路径上的PMTU发现

这两个因素都不是你应该在应用程序中处理的。

作者:the-wabbit

相关问答

添加新评论