什么是最大传输单元(MTU)?什么又是最大分段大小(MSS)以及如何计算?

目录

什么是最大传输单元(MTU)?

什么是 MTU(最大传输单元)?

什么是MSS(最大分段大小)以及如何计算?

TCP最大段大小(MSS)以及与IP数据报大小的关系


 

 

什么是最大传输单元(MTU)?

https://www.geeksforgeeks.org/what-is-mtumaximum-transmission-unit/


最大传输单位(也称为MTU)是在网络和操作系统中使用的术语。它定义了可以在网络连接中作为单个实体传输的数据包的最大大小。MTU的大小决定了可以通过网络以字节为单位传输的数据量。

较大的MTU导致在单个连接期间进行更多的数据传输,因此减少了开销。另一方面,较小的MTU由于其大小而可以更快地传输,从而减少了网络中的延迟。因此,应该调整MTU的大小以同时满足这两个要求。
最大传输单位的默认大小为1500 B,这是以太网标准的最大单位。

特点

  • MTU的大小与传输的数据量成正比。MTU较大,一次从发送方传输到最终接收方的较大数据块。
  • MTU的大小基于网络管理的规范。
  • 如果MTU的大小超过路由器的容量,则会再次重新传输,从而导致延迟。
  • 它是网络的最佳数据包大小。

MTU的工作

让我们假设Internet的传输控制协议(TCP)指定了MTU = 750 B的大小,这是可以从源传送到目标的最大协议数据单元大小。在这种情况下,可能会出现以下情况:

  • 如果系统发送的数据包大于MTU的大小(在这种情况下为大于750 B),则系统数据包将被分割为较小的数据包,以使它们的大小不超过最大数据包大小。将大数据包划分为较小数据块,以使这些数据块均不超过最大帧大小的过程称为碎片。这些稍后在最终客户目的地重新组装。

  • 如果系统发送MTU大小以内的数据包,则它们将在网络连接中作为单个帧进行传输。但是,比MTU小得多的数据包可能会增加延迟并导致网络效率低下。在这种情况下,不需要重新组装数据包。

应用领域

最大传输单元具有以下应用程序:

  • MTU主要通过TCP用于Internet上,以确定最佳的数据包大小。
  • 它与以太网协议相关联,并称为协议数据单元(PDU)。

注意读者!现在不要停止学习。以对学生友好的价格掌握CS理论课程进行SDE面试的所有重要CS理论概念,并为行业做好准备。

 

 

什么是 MTU(最大传输单元)?

https://www.cloudflare.com/zh-cn/learning/network-layer/what-is-mtu/


最大传输单元(MTU)衡量的是连接互联网的设备可以接受的最大数据包大小,以字节为单位。

什么是 MTU?

网络中,最大传输单元(MTU)是代表连接互联网的设备可以接受的最大数据包的度量单位。它可以比作高速公路地下通道或隧道的高度限制:超过高度限制的汽车和卡车无法通过,就像超过网络 MTU 的数据包无法通过该网络一样。

不过,与汽车和卡车不同的是,超过 MTU 的数据包可被分解成较小的碎片,从而能通过网络。这个过程称为分片。分片的数据包在到达目的地后便会重新组装。

MTU 以字节数为单位,一个“字节”等于 8 位信息,即 8 个一和零。1,500 字节是最大 MTU 大小。

什么是数据包?

通过互联网发送的所有数据都分解为较小的块,称为“数据包”。例如,当网页从 Web 服务器发送到用户的笔记本电脑时,构成该网页的数据以一系列数据包的形式在互联网上传递。然后,笔记本电脑将数据包重新组装成原始的整个网页。

数据包有两个主要部分:标头有效负载。标头包含有关数据包的源地址和目的地地址的信息,而有效负载则是数据包的实际内容。标头可以比作包裹上的运输标签,有效负载则可比作包裹的内容。(与包裹不同,互联网上的数据包具有由不同网络协议附加的多个标头。)

MTU 几乎总是在提及第 3 层* 数据包或使用互联网协议(IP)的数据包时使用。MTU 测量数据包的总大小,包括所有标头和有效负载。这包括 IP 标头和 TCP(传输控制协议)标头,它们通常最多增加 40 字节的长度。

OSI 模型将使互联网成为可能的功能划分为 7 层;第 3 层是网络层,在其中进行路由

数据包在何时会分片?

当两个计算设备打开连接并开始交换数据包时,这些数据包会在多个网络中路由。需要考虑的不仅是每一通信两端的两个设备的 MTU,还有中间的所有路由器、交换机和服务器。超过网络路径中任一点上 MTU 的数据包都会被分片。

假设服务器 A 和计算机 A 彼此连接,但是它们相互发送的数据包必须沿途经过路由器 B 和路由器 C。服务器 A、计算机 A 和路由器 B 的 MTU 均为 1,500 字节。不过,路由器 C 的 MTU 为 1,400 字节。如果服务器 A 和计算机 A 不知道路由器 C 的 MTU 并且发送了 1500 字节的数据包,则所有数据包会在传输过程中被路由器 B 分片。

分片会给网络通信增加少许延迟和低效率,因此应当要尽可能避免。(过时的网络设备可能容易遭受利用分片的拒绝服务攻击,例如死亡之 Ping 攻击。)

分片如何工作?

所有网络路由器都会根据接收数据包的下一路由器的 MTU,检查它们收到的每个 IP 数据包的大小。如果数据包超出下一路由器的 MTU,则第一个路由器会将有效负载分成两个或多个数据包,每个数据包都有自己的标头。

每一个新数据包具有从原始数据包复制的标头(从而使数据包都具有原始的来源和目的地 IP 地址等),以及一些重要的变化。路由器编辑 IP 标头中的某些字段,以指示数据包已被分片并且需要重新组装,共有多少个数据包,以及以什么样的顺序发送。

打个比方,一家运输公司正在处理的一个包裹超过了其某个设施的重量限制。运输公司没有拒绝运送这个包裹,而是将包裹内容物分成三个较小的包裹。它也复制了每个包裹的运输标签,并添加一条备注,指出每个包裹是必须一起到达的系列包裹的一部分。第一包裹是 3 之 1,第二包裹是 3 之 2,依此类推。(运输公司这样做会侵犯隐私,所以现实世界中应该不会发生这样的情况。)

何时无法分片?

在某些情况下,数据包无法分片;因此,如果数据包超出网络路径上任何路由器或设备的 MTU,那么不会传输这个数据包:

  1. IPv6 中不允许分片。IPv6 是互联网协议的最新版本,但 IPv4 仍然广泛采用。支持 IPv6 的路由器将丢弃任何超出 MTU 的 IPv6 数据包,因为它们无法分片。
  2. 当数据包的 IP 标头中激活了“不分片”标志时,也不会分片。

什么是 IP 标头中的“不分片”标志?

可以将 IP 标头比作消费者将包裹运送给他人时填写的表单。表单指明了源地址、目的地地址、包裹应送达的时间,以及供快递人员查阅的特殊说明。

“不分片”标志是面向路由器的特殊说明,可在 IP 标头的“表单”中选择的一个选项。设置了这个标志后,所附的数据包无法分片。

任何收到该数据包的路由器都会分析标头并检查“不分片”标志。如果标志已开启并且数据包超过 MTU,则路由器将丢弃数据包而不是对其进行分片。

除了丢弃数据包之外,路由器还会发回一条 ICMP 消息到数据包的源头。ICMP 消息是一个很小的数据包,用于发送状态更新。在这种情况下,它本质上说:“此路由器或设备无法传递这些数据包,因为它们太大且无法分片。”

什么是路径 MTU 发现?

路径 MTU 发现或 PMTUD 是发现网络路径上所有设备、路由器和交换机的 MTU 的过程。如果上例中的计算机 A 和服务器 A 使用 PMTUD,它们将识别路由器 B 的 MTU 要求,并相应地调整其数据包大小以避免分片。

根据所连接的设备使用的是 IPv4 还是 IPv6,PMTU 的工作方式略有不同:

  • IPv4:IPv4 允许分片,因此 IP 标头中包含“不分片”标志。PMTUD 在 IPv4 中这样工作,沿着网络路径发送打开了“不分片”标志的测试数据包。如果路径上的任何路由器或设备丢弃该数据包,它将发回 ICMP 消息及其 MTU。源设备降低其 MTU 并发送另一个测试数据包。重复此过程,直到测试数据包足够小,遍历整个网络路径而不会丢失。

  • IPv6:对于不允许分片的 IPv6,PMTUD 的工作方式几乎相同。关键区别在于 IPv6 标头没有“不分片”选项,因此不设置这个标志。支持 IPv6 的路由器不会对 IPv6 数据包进行分片;因此,如果测试数据包超过 MTU,则路由器会丢弃数据包并发回相应的 ICMP 消息,而无需检查“不分片”标志。IPv6 PMTUD 发送越来越小的测试数据包,直到数据包可以遍历整个网络路径为止,就如在 IPv4 中一样。

什么是 MSS?

MSS 代表最大分段大小。MSS 由 TCP 在互联网的第 4 层(传输层)使用,而不是第 3 层。MSS 仅关注每个数据包中有效负载的大小。它是通过从 MTU 中减去 TCP 和 IP 标头的长度来计算的。

超过路由器 MTU 的数据包被分片或丢弃,超过 MSS 的数据包则始终会被丢弃。

若要进一步了解 MTU 和 MSS,请参阅什么是 MSS?

 

什么是MSS(最大分段大小)以及如何计算?

https://www.ibm.com/support/pages/what-mss-maximum-segment-size-and-how-it-calculated


什么是最大分段大小(MSS)

  • -最大段大小(MSS)是通信设备可以在单个无碎片包中接收的以字节为单位指定的最大数据量。
  • -在SYN数据包中发送此最大段大小(MSS)通知,通知远端“我可以接受最大特定大小(以字节为单位)的TCP段”。
  • -根据配置,两端通告的MSS可以不同。
  • -MSS仅是数据包中的数据部分,不包括TCP头或IP头。
MSS = MTU – size of(TCPHDR) – size of(IPHDR) – size of (IPSEC)*
*if IP SEC is enabled



如何MSS决心,决意,决定?

以下流程图演示了如何根据配置和目标IP确定MSS。

带有MSS的SYN数据包示例:

建立连接后,每个端点都会声明它希望接收的MSS。MSS选项只能从两端出现在SYN数据包中。

在数据包编号1中,IP 2.0.0.205的主机发送了mss = 1460的SYN,在数据包编号2中,IP 2.0.0.239的主机发送了SYN的mss = 1460。

数据包1

ETH: ====( 74 bytes transmitted on interface en5 )==== 17:19:48.667571643
ETH:    [ 00:02:55:4f:9a:1c -> 00:09:6b:6b:46:5e ]  type 800  (IP)
IP:     < SRC =     2.0.0.205 >
IP:     < DST =     2.0.0.239 >
IP:     ip_v=4, ip_hl=20, ip_tos=16, ip_len=60, ip_id=14994, ip_off=0
IP:     ip_ttl=60, ip_sum=3857 (valid), ip_p = 6 (TCP)
TCP:    <source port=32856, destination port=23(telnet) >
TCP:    th_seq=3797677451, th_ack=0
TCP:    th_off=10, flags<SYN>
TCP:    th_win=16384, th_sum=8dd7 (valid), th_urp=0
TCP:            mss 1460

数据包2

ETH: ====( 60 bytes received on interface en5 )==== 17:19:48.667771864
ETH:    [ 00:09:6b:6b:46:5e -> 00:02:55:4f:9a:1c ]  type 800  (IP)
IP:     < SRC =     2.0.0.239 >
IP:     < DST =     2.0.0.205 >
IP:     ip_v=4, ip_hl=20, ip_tos=0, ip_len=44, ip_id=64798, ip_off=0 DF
IP:     ip_ttl=60, ip_sum=35ea (valid), ip_p = 6 (TCP)
TCP:    <source port=23(telnet), destination port=32856 >
TCP:    th_seq=3654996708, th_ack=3797677452
TCP:    th_off=6, flags<SYN | ACK>
TCP:    th_win=65535, th_sum=873b (valid), th_urp=0
TCP:            mss 1460

示例#1:

示例#2:

示例#3:

示例#4:

示例#5:

 

 

TCP最大段大小(MSS)以及与IP数据报大小的关系

http://www.tcpipguide.com/free/t_TCPMaximumSegmentSizeMSSandRelationshiptoIPDatagra-2.htm


关键概念: TCP旨在将其发送的段的大小限制为某个最大限制,以减少段需要分段以在IP级别进行传输的可能性。TCP最大段大小(MSS)指定TCP段的“数据”字段中的最大字节数,而不考虑影响段大小的任何其他因素。TCP的默认MSS为536,这是由于采用最小IP MTU 576并分别减去IP和TCP标头的20个字节而导致的。

最大段大小选择

选择MSS是基于在TCP / IP网络上传输数据时平衡各种竞争性能和实现问题的需要。主要的TCP标准RFC 793对MSS的讨论不多,这为如何使用该参数带来了混淆的可能性。RFC 879在TCP标准发布几年后发布,以阐明此参数及其周围的问题。MSS的某些问题相当普通。例如,某些设备的缓冲区容纳TCP段的空间量有限,因此可能希望将段大小限制为相对较小的值。但是,通常,必须通过平衡两个相互竞争的性能问题来选择MSS:

  • 开销管理: TCP头占用20字节的数据(如果使用选项,则更多);IP标头也使用20个或更多字节。这意味着报头之间至少需要40个字节,而所有这些都是非数据“开销”。如果我们将MSS设置得太低,则会导致带宽使用效率非常低下。例如,假设我们将其设置为40。如果这样做的话, 每个细分最多最多可以有50%是数据;其余的只是标题。就效率而言,许多段数据报将更加糟糕。
     
  • IP分段: TCP段将打包为IP数据报。正如我们在IP部分所看到的,数据报具有其自身的大小限制问题:基础网络的最大传输单位(MTU)问题。如果TCP段太大,则会导致IP数据报太大而无法发送而不会产生碎片。分段会降低效率,并增加部分TCP分段丢失的机会,从而导致整个分段都需要重新传输。

TCP默认最大段大小

解决这两个竞争问题的方法是为TCP建立一个默认的MSS,该MSS尽可能大,同时避免大多数传输段的碎片。这是从576个IP网络的最小MTU开始计算的。要求所有网络都能够处理此大小的IP数据报而不会造成碎片。从这个数字中,我们减去20个字节的TCP头和20个IP头,剩下536个字节。这是TCP的标准MSS。

选择此值是一种折衷。使用此数字时,意味着大多数 TCP段将在IP互联网络中无碎片地发送。但是,如果使用任何TCP或IP选项,这将导致超过576的最小MTU并发生分段。尽管如此,允许对某些段进行分段而不是使用小得多的MSS来确保没有分段是更有意义的。如果我们选择,比方说,400的MSS,我们可能永远不会有碎片,但是我们会降低从536中的数据/标题比率:40(91%数据):40(93%数据)到400的所有的段。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值