TCP之路径MTU(PMTU)发现过程详解

这篇具有很好参考价值的文章主要介绍了TCP之路径MTU(PMTU)发现过程详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么时路径MTU(简称PMTU)

当在同一个网络上的两台主机互相进行通信时,如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU。所以重要的不仅是两台主机所在网络的MTU的值,最重要的是两台通信主机路径中的最小MTU。它被称作路径MTU。注意:两台主机之间的路径MTU不一定是个常数,因为二个主机之间的路由选路是动态变化的,所以路径MTU取决于当时所选择的路由路径。还有路由选路也不一定是对称的(从A到B的路由可能与从B到A的路由路径不一样),因此路径MTU在两个方向上不一定是一致的。

为什么要有PMTU

通过文章TCP的MSS的计算与详解,我们已经知道因为发送端或者接收端的MTU受限,或者是网络中任何一个路由器的任何一个端口的MTU受限,都可能会引发IP分片,而IP分片可能会使得网络性能变差。这时就要求我们设置正确的MSS以避免IP分片的发生。那么在TCP的MSS的计算与详解中的第二章:MSS协商中,我们已经知道了接收方和发送方以及中间经过的路由器支持的情况下如何协商MSS以避免IP分片的。但如果路由器没有参与到TCP层做替换MSS的功能,那么MSS协商过程并不能解决网络中的路由器的端口的MTU受限而引发的IP分片问题。PMTU就是为解决这个问题而产生的,简单的说:发送端如果能知道PMTU,那么发送端就可以按照PMTU,即两台通信主机路径中的最小MTU对TCP进行分段,将MSS设置成适合PMTU的值,则在通信过程中就可以避免在主机以及网络中和任何一个节点处产生IP分片

PMTU发现过程

这个过程利用的是:

  1. 主机发送一个IP首部的分片禁止标志位设置为1的IP数据报
  2. 路由器在收到IP首部的分片禁止标志位设置为1的IP数据报时,如果发现需要分片才能处理的大包,它不会去分片,而是将包丢弃,并给发送方主机返回一个ICMP差错报文,告之发送端发生了一个不能分片错误,并带回自己所能支持的最大MTU。
  3. 主机收到ICMP报文后,把自己的出口MTP改小,修改为ICMP差错报文告之的MTU值,再次发送一个IP首部的分片禁止标志位设置为1的IP数据报。
  4. 重复上面2.3二个步骤,直到不再从网络中的收到ICMP差错报文,说明已经收到了整个路径上的最小MTU, 既路径MTU(PMTU)

定时更新PMTU

我们所知IP路由路径是会动态变化的,PMTU变小的情况不要紧,会有新的ICMP差错报文触发新一轮PMTU发现与更新过程,
但我们知道 随着路由路径的变化,PMTU可能也会变大,如果发送方不及时更新PMTU,那么就会导致一直用一个较小的MTU在发送,从而导致较低的网络利用率,所以IP协议规定每隔壁10分钟,就要重启PMTU发现过程,以便定时完成PMTU的更新。文章来源地址https://www.toymoban.com/news/detail-491426.html

到了这里,关于TCP之路径MTU(PMTU)发现过程详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是MTU,如何检测和设置路由器MTU值

    意思是网络上传送的最大数据包。MTU的单位是字节。大部分网络设备的MTU都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。 如何检测网关

    2024年02月05日
    浏览(35)
  • 以太网的帧长,MTU, IP报文长度,TCP报文长度,TCP MSS之间的关系

    本文不考虑巨型帧(jumbo frames)的情况下,我们来理几个概念。在日常讨论中,这几个长度经常会容易被混淆起来。64字节,1518字节,1500字节,1460字节,我们接下来会来介绍一下这几个常见,易混淆的长度值的来源。 数据帧的长度,代表二层以太帧长。如下图所示,IEEE80

    2024年02月09日
    浏览(44)
  • 4.18 TCP 和 UDP 可以使用同一个端口吗?

    目录 TCP 和 UDP 可以同时绑定相同的端口吗? 多个 TCP 服务进程可以绑定同一个端口吗? 重启 TCP 服务进程时,为什么会有“Address in use”的报错信息? 重启 TCP 服务进程时,如何避免“Address in use”的报错信息? 客户端的端口可以重复使用吗? 多个客户端可以 bind 同一个端口

    2024年02月11日
    浏览(54)
  • TCP服务开发过程中所说得大小端是什么

    在TCP服务开发过程中,大小端(Endianness)是涉及数据在计算机存储和传输中如何组织和表示的一个概念。它与数据字节序相关,指的是在多字节数据类型(例如整数或浮点数)在内存中如何存储字节的顺序。 大端字节序 (Big Endian)是指将最高有效字节(Most Significant Byte,

    2024年02月08日
    浏览(49)
  • TCP/IP传输过程中为什么要分片传输

    当数据包太大无法在网络中一次传输完成时, TCP/IP协议会将数据包分成小块进行传输,这就是分片传输 。这样做的原因是因为不同的网络设备或链路有最大传输大小的限制,比如某些网络设备只能接收较小的数据包。 可以把数据包想象成一个大块的蛋糕,而网络设备的MTU就

    2024年02月15日
    浏览(56)
  • 从TCP/IP到TCP连接过程(详解三次握手

    概述 OSI七层模型是一个概念(标准),TCP/IP是一种更加简化和实用的模型 TCP/IP四层模型各层作用 四层模型 功能 协议 应用层 负责处理用户和应用程序之间的通信。例如数据交换的格式和规则,以便不同的应用程序能够相互通信。 HTTP:超文本传输协议,用于Web页面的传输。

    2024年04月17日
    浏览(39)
  • 什么是遗传算法(Genetic Algorithm,简称 GA)?

    遗传算法(Genetic Algorithm,简称 GA)是一种基于自然选择和遗传学原理的优化搜索方法。它起源于 20 世纪 60 年代,由美国计算机科学家 John H. Holland 提出。遗传算法是通过模拟自然界生物进化过程中的达尔文自然选择和遗传遗传规律,对问题的解进行迭代更新,从而搜索最优

    2024年02月11日
    浏览(44)
  • TCP,SSL以及HTTPS的连接建立过程详解

    可以参考B站的一个视频,把TLS/SSL的连接建立过程降解的非常透彻。配合这篇博客食用更佳。一遍不懂请多看几遍,很有用! 1 说明 1.1 对称加密的和非对称加密 在数字加密算法中,通过可划分为对称加密和非对称加密。 什么是对称加密? 在对称加密算法中,加密和解密使用

    2024年04月09日
    浏览(75)
  • TCP协议+三次握手/四次挥手过程(带图详解!!!)

    传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的通信协议,工作在 传输层 。 应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接。 TCP运输连接主要有三个阶段: 建立TCP连接,也就是三

    2024年02月03日
    浏览(53)
  • 为什么华为路由器修改MTU值失败

    MTU是MaximumTransmissionUnit的缩写,是网络上传送的最大数据包,大部分网络设备的MTU都是1500,MTU的单位是字节,如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。 把本机的MTU设成比网关的MTU小或相同,就可以

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包