首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

什么是MTU?为什么MTU值普遍都是1500?

什么是MTU Maximum Transmission Unit,缩写MTU,中文名是:最大传输单元。 这是哪一层网络的概念? 从下面这个表格中可以看到,在7层网络协议中,MTU是数据链路层的概念。...MTU限制的是数据链路层的payload,也就是上层协议的大小,例如IP,ICMP等。...1700 1500 1500 笔记本 -> 路由器 -> 电信机房 -> 服务器 路由器接收到了一个1700的帧,发现大于自己设置的最大值:1500,如果IP包DF标志位为1,也就是不允许分包...,那么路由器直接就把这个包丢弃了,根本就不会到达电信机房,也就到不了服务器了,所以,到这里我们就会发现MTU其实就是在每一个节点的管控值,只要是大于这个值的数据帧,要么选择分片,要么直接丢弃。...不管MTU设置为多少,以太网头帧尾大小是固定的,都是14 + 4,所以在MTU为100的时候,一个以太网帧的传输效率为: ( 100 - 14 - 4 ) / 100 = 82% 写成公式就是:( T

9.2K20

MTU(Maximum transmission unit) 最大传输单元

最大传输单元(Maximum transmission unit),以太网MTU为1500。 一、不同网络MTU如下: ? 如果最大报文数据大小(MSS)超过MTU,则会引起分片操作。...二、路径MTU: 网路中主机之间的MTU不是一个常数,取决于所选择的路由,而且路径不一定对称(A到B的选路,B到A的选路)。ICMP MTU发现方法。...否则以较小的MTU发送。 本地连接:通常根据标准,MSS=MTU-IP首部-TCP首部。 非本地连接:MSS默认为536加上20IP首部及20TCP首部,IP数据报默认大小为576。 如下图: ?...首先通过双方的MSS,判断将以MTU=296发送数据报,同时可以看到中间网络MTU=296,也限制了只能采用MTU=296,才能避免分段现象出现。

1.2K20

发现 Linux 文档写错了

周末的时候,有位读者疑惑为什么 Linux man 手册中关于 netstat 命令中的 tcp listen 状态下的 Recv-Q 和 Send-Q 这两个信息的描述跟我的图解网络写的不一样?...没想到 Linux 的 man 手册也会出错。 首先,先给大家介绍下 netstat 命令。netstat 命令是查看网络状态很常见的 Linux 命令。...疑惑提出 读者提出的疑惑: 我先给大家翻译一下,man 手册(https://man7.org/linux/man-pages/man8/netstat.8.html)是怎么说的: Recv-Q:...有一个网站可以在线看 Linux 内核代码:https://elixir.bootlin.com/,每个内核版本的代码都有,平常我都是在这里看。...最后 看到这,大家肯定会说:小林你太强了吧,为什么对 Linux 内核源码那么熟,这都能分析出来。 其实,我并没有熟读过 Linux 内核源码啦,其实只要大家有好奇心,其实你也能分析出来。

1.3K30

通过案例来学习TCP的MSS、MTU

问题的描述 最近要通过Docker的方式把产品部署到客户机房, 过程中需要部署一个hbase集群,hbase总是部署失败(在我们自己的环境没有问题) 发现hbase卡在同步文件,人工登上hbase 所在的容器中看到在...hbase节点之间scp同步一些文件的时候,同样总是失败(稳定重现) 手工尝试scp那些文件,发现总是在传送某个文件的时候scp卡死了 尝试单独scp这个文件依然卡死 在这个容器上scp其它文件没问题...宿主机1 ---> ……中间的路由设备 …… ---> 宿主机2 ---> 容器B 前面提过其它容器scp同一个文件到容器B没问题,所以我认为中间的路由设备没问题,问题出在两台宿主机上 在宿主机1上抓包发现抓不到丢失的那个长度为...最后的总结 因为这是客户给的同一批宿主机默认想当然的认为他们的配置到一样,尤其是mtu这种值,只要不是故意捣乱就不应该乱修改才对,我只检查了两个容器的mtu,没看宿主机的mtu,导致诊断中走了一些弯路...通过这个案例对mtu/mss等有了进一步的了解 从这个案例也理解了vlan模式下容器、宿主机、交换机之间的网络传输链路 其实抓包还发现了比1500大得多的包顺利通过,反而更小的包无法通过,这是因为网卡基本都有拆包的功能了

1.5K70

TCP的MTU Probe和MSS(2)

在上一篇《TCP的MTU Probe和MSS(1)》介绍了TCP使用MTU Probe来避免PMTU变小而导致发送失败的方法。...这时候就可以做点额外的工作,即进行MTU探测。 接下来进入tcp_mtu_probe,其入口先进行“合法性”检查,判定哪些情况不适合做MTU探测。 ?...数据包成功的发送到了对端,本端的TCP再次进入MTU探测函数tcp_mtu_probe。 ?...探测报文的发送时间间隔超过配置值,则更新探测上限为可能MTU的最大值(MSS上限+TCP首部+IP报文首部),下限为根据当前MSS计算的MTU值。...至此,TCP MTU Probe的原理已经分析完毕,做一个简单的总结:当PMTU变小时,MTU Probe通过丢包发现这种情况,从而不断的降低当前MSS值,达到成功发送的目的。

2.7K20

TCP的MTU Probe和MSS(1)

在前面两篇文章中,我们研究了在TCP三次握手时MSS选项的值:一般情况下,都是由出口路由的MTU大小决定:MTU-40。...MTU探测的工作函数tcp_mtu_probing是在tcp_write_timeout中调用的。 ?...接下来,我们来看tcp_mtu_probing的代码。 ? 在这份代码中,MTU的下线探测还是比较激进的。...因为今天加班比较晚,所以只能把前几天写到一半的文章先发出去了,这里留下了一个问题:从上面的分析可以发现,启用MTU Probe时,目前只会降低MTU大小,这样岂不是导致TCP的报文大小越来越小,从而传输效率越来越低呢...但内核才不会做这种傻事呢,下一篇将分析MTU Probe如何处理MTU增大的情况 (未完待续。。。。。。) 专注于Linux网络开发,每两周一更

4.8K10

关于Oracle RAC调整网卡MTU值的问题

在Oracle RAC的环境中,如果我们发现OSW监控数据显示包重组失败率过高,就需要引起足够的重视,因为这很可能会引发member kill/Node kill等重大故障,甚至在有些场景会连带影响到所有...(Doc ID 341788.1) 当方案一实施后效果不明显时,则考虑调整MTU值,这里选择设置MTU=900: 修改私有网卡MTU为9000: ifconfig mtu 9000...查看MTU是否更改成功: ifconfig 修改私有网卡配置文件,添加MTU=9000的配置,以确保主机重启后MTU=9000不变: vi /etc/sysconfig/network-scripts.../ifcfg- 配置文件末尾新添加一行MTU=9000的配置: MTU=9000 在实际测试验证中发现,节点1主机重启后无法启动ASM实例,alert明确报错MTU远端是1500,即使远端ifconfig...临时修改MTU=9000也不行,这个结果还是很意外的,之前没想到这个mtu的修改居然不能实现完全滚动,也就是说停机是不可避免的(ifconfig可以动态修改mtu,但是如果rac想用上mtu=9000的话需要重启

1.8K50
领券