什么是 MTU?

2025年3月17日 | 阅读13分钟

MTU 在计算机网络中代表最大传输单元(maximum transmission unit)。它指的是使用连接在节点之间可以传输的最大数据帧或数据包。帧或数据包的大小以字节或八位字节(octet)计算,其中一个八位字节是一个八位的字节。这个术语广泛用于表示使用互联网协议实现的以太网连接中的数据包大小。然而,MTU 和最大帧大小之间存在差异。

更大的最大传输单元与更少的开销相关。同时,如果 MTU 值较小,可以减少网络中的传输延迟。在大多数情况下,MTU 由底层网络容量决定。它应该被手动或自动管理,以便不超过网络的容量。

一些节点在与其他节点连接时可以调整最大传输单元。这是通过使用路径 MTU 发现(Path MTU Discovery)来完成的。MTU 参数可以用通信接口或标准来表示。

MTU 的应用

  • MTU 用于网络层协议和与通信相关的其他协议。MTU 以字节或八位字节描述了网络层可以进一步传输的最大协议数据单元。
  • MTU 参数在网络中的通信接口(即串行端口或 NIC)中指定。像以太网这样的传输标准可以定义 MTU 的大小。节点也可以在连接期间确定 MTU 的大小。
  • 网络中的数据链路层和物理层通常会增加网络层数据传输的开销。因此,如果用户被提供了网络中传输的数据的最大帧大小,那么用户必须减去开销的数量来计算数据的最大传输单元。
  • 例如,如果用户使用以太网连接,最大帧大小是 1518 字节,而 MTU 只有 1500 字节,其余的 18 字节是网络层添加到数据帧的开销数据。这包括报头和校验序列号等组件。

网络中的 MTU 和数据包分片

网络中的每个节点对于可以由该节点传输或接收的最大传输单元大小都有一个限制。节点在向下一个接收节点发送数据帧之前,会确定该节点的 MTU。这样做是为了确保数据包大小不大于该节点的 MTU。如果大于,那么它将不接受该数据帧。因此,数据包首先被分成更小的部分。这个过程被称为数据帧的分片。

尽管执行分片并不理想,因为它通过增加延迟和数据开销来降低数据传输性能,但为了确保网络的最佳性能,原始发送节点的 MTU 应尽可能高;该值仍应小于网络中连接在发送方和最终接收方之间的所有节点的 MTU。第一次自动设置这些值是不可能的,因为发送节点不知道网络中所有节点的最大传输节点。发送节点只知道传输中下一个节点的 MTU。

用户可以把 MTU 想象成可以作为一个包裹运输的最大重量。考虑一个组织想要将 1000 公斤的货物运送到另一个地点。货物最初储存在一个仓库中,有卡车可以用来运送货物。整个货物被打包成一个包裹,并作为一个包裹交付。这类似于在具有大 MTU 的节点之间传输数据,其中所有节点都应支持该 MTU。这是非常高效的,因为不需要向多个运输商提供信息。

现在考虑另一个例子,组织需要将相同数量的货物运输到一个较小的组织。这个较小的组织缺乏运输资源的资源。他们只能接受来自拥有小型货车的邮件承运商的货物。如果公司通过一个大的包裹发送整个订单,该组织将不得不将这个较大的包裹分成更小的盒子,以便在较小的货车中进一步运输并交付给较小的组织。这类似于发送方节点只支持较大的 MTU,而接收方或中间节点无法处理的情况。更合适的方法是,MTU 由原始发送方(在这种情况下是较大的组织)确定,以便所有中间节点都能支持,而不是在中间负载处执行分片。这将更有效,因为开销在传输过程中只会被添加一次。此外,分片可能由多个中间节点执行,从而降低传输性能。

数据包分片仅在互联网协议版本 4.0 (IPv4) 中是可能的。假设发送节点通过 IPv4 传输一个大于 MTU 的数据包。该协议会自动对数据包进行分片。如果数据包设置了“不分片”标志,则不会执行此步骤。IPv6 协议不支持分片。如果在网络中检测到大于 MTU 的数据包,它将被从网络中丢弃。

最大传输单元的类型

以太网最大传输单元 (EMTU)

以太网帧位于 OSI 模型的数据链路层。它是开放系统互连的第二层。以太网最大传输单元的标准大小是 1500 字节。通过以太网传输的最大帧大小是 1518-1520 字节。这 18-20 字节的数据包括数据帧的报头和额外的开销。理论上,它也是可以通过物理电缆传输的数据帧的最大大小。任何更高级别协议的 MTU 必须在标准 MTU 的范围内。如果数据帧大小超过 MTU,则以太网无法传输它。

互联网协议最大传输单元 (IP MTU)

互联网协议在开放系统互连的第三层实现。IP MTU 数据包的大小可以独立于以太网帧的大小来确定。IP MTU 的大小必须小于以太网帧的大小,因为最终数据帧是通过以太网电缆传输的。IP MTU 包括数据帧的大小和开销数据。它包括报头和与帧一起传输的数据有效载荷。TCP/IP 报头的大小约为 40 字节。

回到那个类比,考虑叉车可以举起的最大重量是 1500 公斤。而每个包裹的大小是 70 公斤。那么叉车上可以装载的最大重量将是 1470 公斤。再加一个包裹就会超过叉车的最大限制。

假设网络在数据帧传输期间实现了一个额外的中间协议。一些在传输之间实现的协议是 GRE、SNAP 或 IPsec。然而,这些协议不包括在发送方的最大传输单元中。在传输过程中考虑这些协议的数据是必要的。用户必须在网络设计期间将它们包括在内,以确保这不会超过网络中中间节点的最大传输单元。

该协议将向数据帧添加额外的数据,以执行数据帧的加密。额外的数据将被添加到数据帧中。这些额外的数据包含有关加密的信息。这会增加数据包的大小,最终超过 1500 字节的限制。例如,如果一个机构将最大传输单元大小固定为 1500 字节,它必须通过由 IPsec 保护的虚拟专用网络传输数据帧。因此,该数据包不能再通过以太网电缆传输。因此,该数据包在传输前被分片。

要理解上述概念,请考虑以下类比:有一个仓库需要保护存放在仓库中的货物。他们决定将整个货物存放在一个上锁的保险箱中。如果用于存放货物的上锁保险箱的重量没有被考虑在内,那么货物(数据有效载荷)、托盘(报头和标志)和上锁保险箱(IPsec)的总重量可能会超过叉车能够处理的总重量。这里的叉车容量代表节点的 MTU。

最大段大小和最大传输单元

数据包是发送节点想要传输给接收节点的数据。它是发送节点在单个数据包中可以传输的最大数据,而不会超过该节点的 MTU。最大段大小(Maximum segment size)表示数据包中数据有效载荷的最大大小。

用户可以通过从 IP MTU 中减去报头大小来计算 MSS。IP MTU 位于开放系统互连模型的第 4 层。

巨型帧和 MTU

巨型帧(Jumbo frames)是指以太网 MTU 超过标准 1500 字节的情况。当节点使用快速以太网电缆连接时,这是可能的。如果用户使用千兆局域网,它会将 MTU 增加到近 9000 字节。当您有可靠的连接时,这很有用。它通过将更大量的数据作为一个数据包传输来减少开销。它提高了网络中数据传输的效率。

巨型数据包的大小取决于供应商。巨型帧不能保证在互联网上使用。因此,在互联网上传输时避免使用这些帧,而是用于在确保帧交付的专用网络中传输数据。这种网络的一个例子是存储区域网络(SAN)。由于在这种网络中处理大量数据,使用巨型帧来优化网络性能是有益的。

确定所有节点的 MTU

  • 路径最大传输单元发现(PMTUD)指的是确定数据帧从发送方到接收方途中所经过的所有节点的最大传输单元。它用于避免不同节点对帧的频繁分片。它还可以防止在不支持分片的网络中丢弃数据帧。当存在多个中间节点来传递数据包时,在网络中执行 PMTUD 很重要。当帧大小超过中间节点的 MTU 时,可能会发生这种情况。
  • 确定节点 MTU 的最简单方法是发送设置为不分片的大型测试数据包或 ping。这确保了不对数据帧执行分片。当数据包被丢弃时,意味着数据包的大小超过了节点的 MTU。因此,数据包的大小会减小,直到到达最终节点,如果数据包成功传输到网络,它会发送一个更大尺寸的数据包。这是执行路径 MTU 发现的方法之一。
  • 在 Windows 操作系统中,用户可以使用命令提示符中的 ping 命令来确定节点的 MTU。用户可以使用 -f 和 -l 开关来查找 MTU。-f 开关表示不分片标志,而 -l 确定将在网络中传输的数据包大小(以字节为单位)。例如:ping javatpoint.com -f -l 1492
What is MTU

优化最大传输单元

  • 对于 IP MTU,没有标准的最佳大小。用户不能为网络中的所有节点设置任何特定的值。最大传输单元由节点和数据传输期间节点中实现的协议确定。这在不同节点之间可能会有所不同。因此,它对于网络中的不同节点是不同的。这是用户在调整端点 MTU 时必须小心的另一个原因。网络中的大多数节点可以计算 MTU 并相应地进行调整,以将数据传输到下一个节点。这取决于两个节点用于通信的连接类型和网络。
  • 最大传输单元的最优值最接近路由路径中的最低 MTU 值。要确保最优 MTU 值不超过节点的最低 MTU 值。如果用户已经知道特定的约束条件,那么最好减小 MTU 的值。
  • 例如,如果用户知道组织中的节点使用 IPsec 和 VPN 协议,则用户需要设置节点的 MTU 以考虑由于实现给定协议而将添加的开销数据。如果不考虑,它可能会增加网络中的数据包分片,因为添加开销后的大小可能会超过 MTU。某些互联网服务协议技术,如 ADSL,可以向数据包添加开销数据。它会减少端点节点的 MTU;以便确保高效的性能。

互联网协议及其对 MTU 的影响

  • 互联网协议套件的开发是为了在不同的网络技术上实现。不同的网络技术有不同的要求,并且可以使用不同大小的数据包在网络中传输数据。主机可以确定其节点的 MTU,并在执行初始握手时计算对等节点的 MTU。在具有多个中间节点的网络中,主机节点不知道最低的 MTU。节点可以计算路由路径中下一个节点的 MTU。另一个问题在于语言中实现更高级别的协议,因为它们可能会向数据包添加大量的数据开销,从而使数据包的大小增加到连接节点的本地连接所支持的大小。
  • 互联网协议版本 4 (IPv4) 允许节点对数据包进行分片,这使得节点能够将数据报分成更小的单元。每个单元的大小都可以调整以适应指定的 MTU 限制。数据帧的这种分片功能在互联网层执行。该协议标记分片的数据包,以确保 IP 层知道目标节点的地址。当数据报到达目标节点时,分片的数据报被重新组装以形成原始数据报。
  • 假设数据包被分片的数量或在对数据进行分片后数据包的数量显著增加。在这种情况下,添加到每个分片数据包的额外数据可能会在网络中产生大量不必要的数据开销。
  • 为了理解这个问题,考虑一个例子,其中几个数据包以非常小的余量超过了最大传输单元。这种增加是由于数据包报头中提供的额外数据。尽管这些额外数据非常小,但数据包仍然需要被分片。因此,每个数据包将被分成两个较小的部分,而第二个分片中的实际数据,即数据有效载荷,将非常小。相同的数据在网络中传输。这意味着在网络中移动相同数量的数据。每个网络路由器将不得不在网络中发送两倍数量的数据包。这会增加网络流量。
  • 要成为一个实现互联网协议的主机,应该能够处理至少 576 字节的 IP 数据报以实现 IP 版本 4,或 1280 字节以在网络中实现 IPv6 协议。这个数据报大小并不妨碍 MTU 小于上述 MTU 的网络层传输 IP 数据。
  • 例如,在 IPv6 中,如果特定的链路层无法将 1280 字节的 IP 数据报作为一个单元传输,那么链路层有责任对帧进行分片,并在发送节点提供重新组装机制。提供分片和组装机制以确保传输的数据被正确重新排列和传递是至关重要的。

使用较大 MTU 的缺点

  • MTU 的值越大,数据传输的效率就越高。这是因为更多的数据可以作为一个单元在网络中传输。这意味着传输数据所需的数据包数量会更少。每个数据包都带有相同的数据和协议开销,这些开销存储着诸如报头之类的数据。数据传输效率的提高意味着批量协议吞吐量的改善。这也意味着在网络中路由以承载相同数据的数据包将会更少。一些系统可以处理固定数量的数据包。因此,更少的数据包意味着可以处理固定数量数据包的系统中的处理能力增加。
  • 较大的 MTU 也有一个缺点。正在传输的较大数据包将占用链路更长的时间。这会减慢整个网络的速度。较小的数据包在网络中传输得更快。这导致下一个数据包的延迟更大。它可能导致网络延迟和网络中的延迟变化。例如,如果节点传输可以通过以太网电缆在网络中传输的最大数据包,即 1500 字节的数据包。它需要一个 14.4k 的调制解调器来在网络中进一步传输整整一秒钟。
  • 如果数据传输过程中发生通信错误,大数据包也会引起问题。如果在网络中没有实现前向纠错,即使只有一个数据位损坏,整个数据包也必须重新传输。这增加了网络成本。
  • 对于网络中的任何误码率,具有较大 MTU 的数据包更容易损坏。更大的数据有效载荷使得这些数据包的重传需要更长的时间。尽管上述负面影响
  • 在给定的误码率下,较大的数据包更容易损坏。它们更大的有效载荷使得较大包的重传需要更长的时间。尽管对重传持续时间有负面影响,但大包仍然可以对端到端的 TCP 性能产生净正面影响。

下一个主题网状网络