RPC系列协议--rfc1191--Path MTU Discovery

  • 1.概述
  • 2.介绍
  • 3.协议概述
  • 4.主机规范
  • 5.TCP MSS Option
  • 6.参考协议规范

1.概述

描述了一种动态发现任意internet路径的最大传输单元(MTU)的技术。它指定了路由器生成一种类型的ICMP消息的方式的一个小变化。对于通过一个没有被如此改变的路由器的路径,这种技术可能不会发现正确的路径MTU,但它总是会选择一个路径MTU一样准确,在许多情况下比路径MTU更准确,将被当前的实践选择。

2.介绍

当一个IP主机有大量数据要发送到另一个主机时,该数据被作为一系列IP数据报传输。这些数据报最好是最大的,这样就不需要从源到目的地的路径上的任何地方有碎片。(对于反对分段的情况,请参阅[5]。)该数据报的大小称为路径MTU (PMTU),它等于路径中每一跳的最小MTU。当前Internet协议套件的一个缺点是缺少一种标准机制,让主机发现任意路径的PMTU。
使用较小的576和第一跳MTU作为PMTU的任何目的地,没有连接到相同的网络或子网作为源。在许多情况下,这会导致使用比必要的更小的数据报,因为许多路径的PMTU大于576。主机发送的数据报远小于MTU允许的路径是浪费互联网资源和可能得到次优的吞吐量。此外,当前的实践并不能在所有情况下防止碎片,因为有一些路径的PMTU小于576。

3.协议概述

描述了在IP头中使用Don’t Fragment(DF)位来动态发现路径的PMTU的技术。源主机的基本思想是首先假定的PMTU路径(已知)MTU的第一跳,并将所有数据报发送路径的DF组。如果要转发的数据包太大没有分裂一些沿着路径,路由器,路由器会丢弃他们并返回ICMP目的地不可到达消息代码含义“fragmentation needed and DF set”。在接收到这样的消息(因此称为“数据报太大”消息)后,源主机减少了对该路径的假定PMTU。
当主机对PMTU的估计足够低时,它的数据报可以不带碎片地交付,PMTU发现过程就结束了。或者,主机可以选择通过停止设置数据报头中的DF位来结束发现过程;例如,它可能会这样做,因为它愿意在某些情况下将数据报碎片化。正常情况下,主机继续在所有数据报中设置DF,这样当路由发生变化,新的PMTU较低时,就会被发现。
由于路由拓扑的变化,路径的PMTU可能会随着时间而改变。数据报太大的消息可以检测到PMTU的减少,除非在主机已经停止设置DF位的路径上。为了检测路径的PMTU的增加,主机会周期性地增加它假定的PMTU(如果它已经停止,则继续设置DF位)。这几乎总是会导致丢弃数据报,生成数据报太大的消息,因为在大多数情况下,路径的PMTU不会发生更改,所以不应该经常这样做。由于这种机制本质上保证了主机不会从做PMTU发现的对等点接收到任何片段,因此它可以帮助某些主机(不正确地)无法重新组装片段数据报。

4.主机规范

当主机接收数据报太大消息时,它必须减少估计的PMTU相关路径,基于消息转发MTU字段的值(见第4节)。我们不指定主机的行为在这种情况下,由于不同的应用程序可能有不同的要求,因为不同的实现架构可能支持不同的策略。在接收到数据报太大的消息后,主机必须尝试避免在不久的将来引发更多这样的消息。主机可以减少它沿着路径发送的数据报的大小,或者停止在这些数据报的头中设置Don’t Fragment位。显然,前一种策略可能会在一段时间内继续引发数据报太大的消息,但是由于这些消息(以及它们响应的丢弃的数据报)消耗Internet资源,主机必须迫使PMTU发现过程收敛。
使用PMTU发现的主机必须尽可能快地检测到路径MTU的减少。主机可能会检测到路径MTU的增加,但是因为这样做需要发送比当前估计的PMTU更大的数据报,而且PMTU可能不会增加,所以这必须在不频繁的间隔进行。在给定目的地收到数据报太大的消息后5分钟内,或者在上次成功尝试增加数据后1分钟内,不得尝试检测增长(通过发送大于当前估计的数据报)。我们建议将这些计时器设置为其最小值的两倍(分别为10分钟和2分钟)。
主机必须能够处理不包括下一跳MTU的数据报太大的消息,因为在任何有限的时间内升级Internet上的所有路由器是不可行的。可以通过(新定义的)下一跳MTU字段中的0来识别来自未修改路由器的数据报太大的消息。(这是ICMP规范[7]所要求的,其中规定“未使用的”字段必须为零。)在第5节中,我们将讨论主机响应旧式数据报太大消息(由未修改的路由器发送的消息)的可能策略。
主机不能增加其估计的路径MTU来响应数据报的内容太大的消息。声称宣布MTU路径增加的消息可能是Internet中四处流传的过时数据报、作为拒绝服务攻击的一部分注入的假包,或者是拥有多条到达目的地的路径的结果。

5.TCP MSS Option

进行PMTU发现的主机必须遵守这样的规则:除非它获得了接收方的许可,否则它不能发送大于576八进制的IP数据报。对于TCP连接,这意味着主机不能发送大于40个八进制数加上它的对等发送的最大段大小(MSS)的数据报。一些TCP实现仅当目标主机在一个未连接的网络上时才发送一个MSS选项。然而,通常TCP层可能没有适当的信息来做出此决定,因此最好将为Internet路径确定合适MTU的任务留给IP层。实际上,许多TCP实现总是发送一个MSS选项,但是如果目的地不是本地,则将值设置为536。当Internet上充满了不遵守数据报大于576个八进制数不应发送到非本地目的地规则的主机时,这种行为是正确的。既然大多数主机都遵循这一规则,那么对于非本地对等点,就没有必要将TCP MSS选项中的值限制为536。
此外,这样做可以防止PMTU发现大于576的PMTUs,因此主机不应该再降低它们发送的值

6.参考协议规范

RFC 1191 Path MTU Discovery

温馨提示:
以上文章描述如有不清晰之处,欢迎在评论区评论,如有时间,会第一时间回复,谢谢!

RPC系列协议--rfc1191--Path MTU Discovery相关推荐

  1. RFC系列协议-相关说明

    RFC系列协议-相关说明 1.概述 2.RFC标准列表 1.概述 Request For Comments(RFC),是一系列以编号排定的文件.文件收集了有关互联网相关信息,以及UNIX和互联网社区的 ...

  2. RFC系列协议--rfc2461--Neighbor Discovery for IP Version 6 (IPv6)

    RFC系列协议--rfc2461--Neighbor Discovery for IP Version 6--IPv6 1.摘要 2.介绍 3.术语 3.1 通用 3.2 Link Types 3.3 ...

  3. 【专栏】RPC系列(实战)-负重前行的“动态代理”

    关注公众号:离心计划,一起离开地球表面  [RPC系列合集] [专栏]RPC系列(理论)-夜的第一章 [专栏]RPC系列(理论)-协议与序列化 [专栏]RPC系列(理论)-动态代理 [专栏]RPC系列 ...

  4. 手撕RPC系列(2)—客户端基于stub动态代理的RPC

    一.前言 二.原理 三.前置基础 四.举例说明 五.总结 一.前言 上一节 手撕RPC系列(1)-最原始的RPC通俗理解 中讲了一个最最简单的rpc思想的例子.那种方法的缺陷太多,平常写代码一般不会那 ...

  5. NB-IoT系列协议--3GPP--Release 16--TS 36.300--总体描述;阶段2

    NB-IoT系列协议--3GPP--Release 16--TS 36.300--总体描述:阶段2 1.范围 2.定义 3.缩写 4.总体架构 4.1 概述 4.2 功能划分 4.3 无线电协议体系结 ...

  6. RFC系列协议--rfc1661--Point-to-Point Protocol(PPP)

    RFC系列协议--rfc1661--Point-to-Point Protocol--PPP 1.摘要 2.介绍 2.1 封装(Encapsulation) 2.2 链路控制协议(Link Contr ...

  7. RPC系列之Netty实现自定义RPC框架

    进行这个章节之前,需要去看一下RMI的实现哈,如果了解过的童鞋可以直接跳过,如果没有或者不知道RMI的童鞋,移驾到下面的链接看完之后再回来继续看这篇 RPC系列之入门_阿小冰的博客-CSDN博客RPC ...

  8. 一文深入浅出理解国产开源木兰许可系列协议

    伴随着国际形式的变迁,越来越多组织申明将遵循美国出口管制法律的约束,并且蔓延到了开源领域:关于国内开源生态如何自立,做到在逼不得已无法与国际接轨的情况下能够健康发展的措施也被提上议程,木兰系列许可证系 ...

  9. RFC系列协议--rfc2373--IP Version 6 Addressing Architecture

    RFC系列协议--rfc2373--IP Version 6 Addressing Architecture 1.摘要 2.IPv6地址 2.1 寻址模式 2.2 地址的文字表示 2.3 地址前缀的文 ...

  10. WIFI系列协议--802.11v--无线网络管理

    WIFI系列协议--802.11v--无线网络管理 1.概述 2.定义 3.缩写 4.总体描述 4.1 无线网络管理 4.1.1 概述 4.1.2 BSS Max idle period manage ...

最新文章

  1. NYOJ--811--变态最大值
  2. Java实现文件压缩与解压[zip格式,gzip格式]
  3. Python编程基础:第四十节 类变量Class Variables
  4. legend---十二、js中的js语句和函数和ready函数的关系是什么
  5. CodeForces - 1400F x-prime Substrings(AC自动机+dp)
  6. 工作总结17:组件封装思想
  7. [翻译] LASIImageView - 显示进度指示并异步下载图片
  8. java 匿名类实现6_java匿名内部类,以及实现Comparato和Comparable接口实现对对象的排序...
  9. 在Apache环境下成功的运行ASP.NET
  10. [CM311-1A]-全网最全 Android 用户管理及用户应用权限
  11. 服务器注册dll,我在注册全部dll时出现. “Microsoft(C)注册服务器已停止工作”,我是为了解决一个...
  12. 智慧城市大数据创新联盟落户高新区
  13. MOS晶体管单元电路的最佳二维公共质心布局生成
  14. 判断一个数是不是质数(素数)
  15. overflow:auto自动滚动到底部(vue)
  16. Java的小tips(1) ------关于“Java :找不到符号”类问题的解读
  17. 对敏捷宣言的原则进行风险评估
  18. 给32位系统装8g内存条能用吗?为什么?
  19. 操作系统 实验报告 linux 内核,linux操作系统内核实验报告.doc
  20. 1号店架构师王富平:一号店用户画像系统实践

热门文章

  1. Linux——clamAV查杀病毒与防护
  2. 【大数据安全分析】图计算在安全方面的应用思考
  3. js实现数组扁平化的6种方法
  4. 【ARMv8基础篇】NIC-400控制器简介
  5. 傲梅备份服务器系统,傲梅轻松备份如何还原系统的详细解析
  6. 蒙特卡洛与遗传算法介绍
  7. stata抓取html,stata reshape
  8. 三、面向对象(高琪java300集+java从入门到精通笔记)
  9. 纯新手Java奋斗500天进腾讯,我给自己先来碗毒鸡汤
  10. c语言课设雷霆战机编程,C语言写的雷霆战机