TCP路径MTU发现
路径MTU
当在同一个网络上的两台主机互相通信时,该网络的MTU是非常重要的。当时如果两台主机之间的通信要通过多个网络,那么每个网络的链路层就可能有不同的MTU。重要的不是两台主机所在网络的MTU,而是两台通信主机路径中的最小MTU,称为路径MTU;
两台主机之间的路径MTU不一定是个常数,它取决于当时所选的路由,而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此路径MTU在两个方向上不一定是一致的;
路径MTU发现
路径MTU发现通过在IP首部中设置”不要分片(DF)”标志,来发现当前路径上的路由器是否需要对正在发送的IP数据报进行分片。当设置了DF标志位,而其长度又超过了MTU,那么路由器将返回一个ICMP差错;
TCP路径MTU发现按照以下方式进行:在连接建立时,TCP使用输出接口或者对端声明的MSS中的最小值MTU作为起始的报文段大小。路径MTU发现不允许TCP超过对端声明的MSS。如果对端没有指定MSS,则默认536;
一旦选定了起始报文段的大小,在该连接上的所有被TCP发送的IP数据报都将被设置DF标志。如果某个中间路由器需要对一个设置了DF标志的数据报进行分片,它就丢弃这个数据报,并产生一个CIMP”不能分片”差错;
如果收到这个ICMP差错,TCP就减少段大小并进行重传。如果路由器产生的是一个较新的该类ICMP差错,则报文段大小被设置为下一跳的MTU减去IP和TCP首部长度。如果是一个较旧的该类ICMP差错,则必须尝试下一个可能的最小MTU。当由这个ICMP差错引起的重传发生时,拥塞窗口需要不断变化,但要启动慢启动;
由于路由可以动态变化,因此在最后一次减少路径MTU的一段时间以后,可以尝试使用一个较大的值(直到等于对端声明的MSS或者输出接口MTU的最小值);
在对非本地目的地,默认的MSS通常为536字节,路径MTU发现可以避免在通过MTU小于576的中间链路进行分片。对于本地目的主机,也可以避免在中间链路的MTU小于端点网络的情况下进行分片。但为了能使路径MTU更加有用和充分利用MTU大于576的广域网,一个实现必须停止使用为非本地目的制定的536的MTU默认值。MSS的一个较好的选择是输出接口的MTU(当然要减去IP和TCP首部大小);
文章来源:<TCP/IP详解>
TCP路径MTU发现的更多相关文章
- TCP/IP学习笔记15--IP分割处理与再构成处理,路径MTU发现
家庭应该是爱.欢乐和笑的殿堂.--日 木村久一 IP属于网络层,下一层时数据链路层,在数据链路层,不同类型的数据链路的最大传输单元(MTU)都不尽相同.例如,连接两个路由器 ...
- 最小重组缓冲区和路径MTU发现
概括: 主要来源于unp,可参考:http://blog.csdn.net/ysu108/article/details/7764461 疑惑: 1. 最小重组缓冲区大小: ipv4为576,ipv6 ...
- 路径MTU
数据在以太网中的传输有长度有一个限制,其最大值一般情况下是1500字节.链路层的这个特性叫作MTU,也就是最大传输单元.不同类型的网络会有所不同的.如果IP层有一个数据报要传输,而且数据的长度比链路层 ...
- MTU的概念,什么是路径MTU? MTU发现机制,TraceRoute(了解)
1.MTU的概念 MTU即Maximum Transmission Unit 最大传输单元.它是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位). 2.路径MTU ...
- IP分片和TCP分片 MTU和MSS(转)
IP分片和TCP分片 MTU和MSS(转) 访问原文:http://blog.csdn.net/keyouan2008/article/details/5843388 1,MTU(Maximum Tr ...
- FreeSWITCH小结:关于sip的UDP、TCP与MTU
1.关于SIP的UDP与MTU的关系 如果sip消息的大小超过了MTU,则有可能被网络中的某一节点分片,而UDP处理分片会有很大的问题,从而导致sip消息传输失败.要解决该问题的话,两种方案: 1)减 ...
- 四层发现-TCP和UDP发现简介
虽然这里使用到了端口发现,但是四层发现阶段并不对端口进行解析,而是通过端口进行对ip是否存活的判断. 这里是对主机的发现,而不是对端口的识别. 四层发现的结果比三层发现的结果更加精确,基本不会被防火墙 ...
- TCP/IP 笔记 - TCP连接管理
TCP是一种面向连接的单播协议,在发送数据之前,通信双方必须在彼此建立一条连接:这与UDP的无连接不同,UDP无需通信双方发送数据之前建立连接.所有TCP需要处理多种TCP状态时需要面对的问题,比如连 ...
- 传输层(3)-缓冲区大小及限制、TCP输出
3.缓冲区大小及限制 影响IP数据报大小的限制. 1)IPv4数据报,最大大小是65535. 2)硬件规定的MTU.以太网的MTU是1500字节.SLIP链路1006字节或296字节 3)路径MTU. ...
随机推荐
- nginx之配置
1)反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端, ...
- vue项目使用openlayers来添加地图标注,标注样式设置的简要模板
先把代码贴出来,注释以后有时间再写(需要留意一下这里图标的引入方式,函数内相同路径无法找到图片) import sk from "../../assets/img/home/sk-activ ...
- SQLplus命令中删除键和翻页键不能用的问题
问题现象: 在进入连接数据库后,如何写错命令,删除键不好使,总是出现^H^H [oracle@master2 ~]$ sqlplus / as sysdba SQL*Plus: Release 12. ...
- c#传入类名插入多条数据
public int Insert<T>(IReadOnlyCollection<T> models) where T : class, new() { int sucess ...
- Delphi 图像组件(Image)
樊伟胜
- 【异常】553 Mail from must equal authorized user
1 详细异常打印 2019-08-12 14:54:42,178 ERROR org.apache.camel.processor.DefaultErrorHandler: Failed delive ...
- sql注入搞事情(连载二)
sql注入(连载二)安信华web弱点测试系统注入 好多人问我sql怎么学习,我一下也说不出来.我就在此做统一的解答: sql语句分为两种,不管怎么用还是怎么学习主要是要理解SQL语句的基本概念,框架, ...
- deep_learning_Function_sklearn.preprocessing.LabelBinarizer()
在多数的机器学习比赛中,给出的标签都是非数字化的,所以我们需要对其进行转换.代码如下: from sklearn import preprocessing feature = [[0,1], [1,1 ...
- STM32/MINI
- 解决IDEA中springboot整合mybatis中出现的Invalid bound statement(not found)的问题【转】
感谢原博主,原文链接 : https://blog.csdn.net/benben513624/article/details/81076182 最近学习springboot的开发,中间磕磕碰碰也是遇 ...