MTU (最大传输单元)是网络设备传输的信息包最大值。对于各种路由器,最佳的MTU值通常都是默认值。
各种应用下的最佳MTU值
设置MTU大小是一个反复试验的过程: 由最大值1500开始下降,直至问题解决。使用下列值之一或许能解决一些由MTU值引起的问题:
1500. 以太网信息包最大值,也是默认值。是没有PPPoE的网络连接的典型设置。是各种路由器、网络适配器和交换机的默认设置
1492. PPPoE 的最佳值
1472. 使用 ping 的最大值 (大于此值的信息包会先被分解)
1468. DHCP的最佳值
1430. PPTP 的最佳值
576. 拨号连接到ISP的标准值
好了,注意一下,以上资料是正常普通情况下MTU的值,不同地区不同运营商不同机房或许也会导致MTU值的不一致!
如何查看MTU值呢?
电脑直接插网线到modem进行ADSL拨号上网,在cmd命令下输入:
netsh interface ipv4 show subinterfaces
如何测试MTU值的最大值?
MTU值越大,发包量就大,发包时间减小,理论上是可以提高网络的。怎样测试自己的MTU值的最大值呢?
首先,在CMD命令下输入:
ping -f -l 1500 www.baidu.com
1500是默认值,先来测试一下是否能达到1500.
命令返回:“需要拆分数据包但是设置 DF。” 说明MTU值过大!我们把MTU值降低试试
ping -f -l 1450 www.baidu.com
PING值出来了,说明MTU设置1450可以通过。
再测试一下1451。
ping -f -l 1451 www.baidu.com
命令返回:“需要拆分数据包但是设置 DF。” 说明MTU值最大就是1450了。
于是有人就疑问,为什么在modem下测试是1478,而ping值测试 是1450?
上面ping得到的MTU值不能直接用于本地设置上,还应在此基础上加上28(数据包头大小28字节),因此最终在WAN设置页面修改MTU大小为1478。
最后,我就在路由器的WAN接口设置MTU值1478.
------------------------------------------------------------------------------------------------------
按照上面方法,我能ping通的MTU最大值是1464,再加上28(数据包头大小28字节),应该设置的值为1492,刚好是PPPoE的最佳值
解决IPV6 PMTU黑洞导致某些手机APP图片加载时间过长,小米BE6500PRO为例
之前有尝试过降低MTU大小的方法,但是改之后当时很好用,第二天又会超出大小,还要接着改。看大佬的文章最好的解决办法是打开路由器中的MSS钳制(用于在TCP连接建立时,收发双方可以通知对方通信时每一个报文段所能承载的最大数据长度。而MTU则是数据链路层的最大传输单元,限制了数据包的大小。MSS通常受限于MTU,最佳情况下MSS=MTU-40,以太网环境中最大MSS为1460字节)功能,可是小米路由器不支持这个功能,即使放在光猫拨号也不能解决问题。我的解决办法是,将IPV6设置中局域网获取IP方式改为“仅DHCPv6”
因为安卓设备只支持SLAAC(无状态地址自动指派)的方式获取IPV6地址,但是WIN10和IOS设备都支持DHCPv6的方式获取,所以通过这种方式禁止安卓设备获取IPV6地址。(这几种选项具体的差别可以参考:家用路由IPV6配置指南)因为目前我用IPV6的需求只是需要家里的电脑和NAS设备有公网IP,手机端不是一定需要IPV6地址,也算一种曲线救国的方式了吧。