通信时MTU的获得和路径MTU

news/2024/8/26 11:47:45

由于以太网物理性质的限制,我们在IP层发送数据的时候, 如果发送向物理层的数据包大于物理层的限制, 就会发生错误. 该物理层限制就叫做MTU.

而在网络传输中, 每一条传输线路都有可能有自己不同的传输限制, 虽然路由器可以在IP层进行数据包分片传输, 但是有IP层进行的分片传输, 一旦在对端重组的时候, 有一个出现了错误, 就会发生丢包, 不论是对于TCP还是UDP,都是非常不好的.

所以, 为了不让IP层进行分片, 我们在传输数据的时候, 就需要获得发往该目的地的路线上的最小的传输线路的限制大小. 这就是路径MTU.

TCP和UDP获得MTU的方式是相同的, TCP使用路径MTU来确定自己的MSS字段的大小, 而UDP获得MTU的目的就是只让当前的UDP报文在自己的发送端进行分片, 除此之外不允许再分片.

路径MTU的原理

  • 首先, 发送端对外发送数据包, 发送端IP层将IP报头禁止分片位设置为1, 如果之后某一条路的路由器, 必须分片才能将该IP报文传输出去, 那就直接丢弃掉该报文, 然后返回一个ICMP的响应报文, 告诉发送端当前自己的路径MTU是多大
  • 获得返回ICMP报文的主机, 就将该值设置为当前MTU, 然后再次进行发送, 如此往复, 直到没有ICMP数据包返回, 就说明找到了当前发送给接收端主机的路径MTU.

http://www.niftyadmin.cn/n/3437276.html

相关文章

Memory Pool 预习知识-Windows内存管理

<<这不是原创&#xff0c;是老文&#xff0c;Pankaj Garg写的&#xff0c;看后翻译了一下&#xff0c;原文可以在http://www.intellectualheaven.com/找到。>>1 介绍Windows 32位 x86 操作系统最多能访问4GB的物理内存。这是因为处理器的寻址总线是32条&#xff08…

java时间格式化错误_Java中日期格式化YYYY-DD的操作bug

写这篇博文是记录下跨年的bug。去年隔壁组的小伙伴就是计算两个日期之间间隔的天数&#xff0c;因为跨年的原因计算有误。当时测试组的小姐姐也没有模拟出来这种场景&#xff0c;导致上生产环境直接影响线上的数据。今天逛技术论论坛正好遇到Java日期的操作bug。1 yyyy 和 YYYY…

智能指针shared_ptr为什么会造成循环引用

循环引用是什么 循环引用是因为智能指针对象所管理的A类型的对象中, 含有指向该A类型对象的智能指针对象 可能会有点绕口, 请注意区分A类型的对象 和 智能指针对象 因为A类型对象 甲中的智能指针对象指向了另外一个A类型对象 乙, 而另外一个A类型对象 乙中的只能指针对象也指向…

MySQL 5.1.38

完全安装包http://mysql.isu.edu.tw/Downloads/MySQL-5.1/mysql-5.1.38-win32.msi包含了安装MySQL所需要的全部文件与配置向导以及可选组件&#xff0c;如基准套件和嵌入式服务器 基本安装包http://mysql.isu.edu.tw/Downloads/MySQL-5.1/mysql-essential-5.1.38-win32.msi只包…

【数据结构+算法】【模拟法】--- 螺旋矩阵填数

【题目描述】在一个n * n的矩阵中按照螺旋样式填入从1一直到n * n的一串整数&#xff0c;下面是当n 4时的矩阵&#xff1a;1 2 3 4 12 13 14 511 16 15 610 9 8 7 现在给出矩阵的边长n&#xff0c;直接输出该矩阵。【输入】一个整数&#xff0c;即矩阵的边长n。&#xff08;n …

mysql 编码转换函数_MySQL字符集及MySQL编码转换

时间&#xff1a;2006-05-14 14:39:11类别&#xff1a;技术访问&#xff1a;7907今天找到这篇文章&#xff0c;里面提到从latin1到UTF8的MySQL编码转换。收藏一下&#xff0c;最近要将所有的数据库都转一次&#xff0c;一直错误的使用latin1&#xff0c;再不转以后麻烦大了。出…

linux下使用yum安装mysql、tomcat、httpd

为什么80%的码农都做不了架构师&#xff1f;>>> 一、linux下使用yum安装mysql 1、安装 查看有没有安装过&#xff1a; yum list installed mysql* rpm -qa | grep mysql* 查看有没有安装包&#xff1a; yum list mysql* 安装mysql客户端&#xff1a; yum install m…

python 回车新函数_python - 如何将回车键绑定到tkinter中的函数? - 堆栈内存溢出...

尝试运行以下程序。 当你点击Return时你必须确保你的窗口具有焦点 - 为了确保它确实如此&#xff0c;首先单击按钮几次&#xff0c;直到你看到一些输出&#xff0c;然后没有点击任何其他点击返回。import tkinter as tkroot tk.Tk()root.geometry("300x200")def fun…