
MTU值这事儿,真是让人头疼,尤其是一到关键时刻就掉线,那滋味,谁试谁知道。我之前也遇到过,搞得我那叫一个抓心挠肝,摸索出点门道,今天就给大伙唠唠。 说起来,这MTU值...
MTU值这事儿,真是让人头疼,尤其是一到关键时刻就掉线,那滋味,谁试谁知道。我之前也遇到过,搞得我那叫一个抓心挠肝,摸索出点门道,今天就给大伙唠唠。
说起来,这MTU值,说白了就是你一次能发出去的最大数据包大小。这玩意儿跟咱们的网络连接,还有运营商那边都有关系,它要是配不对,就容易出问题。最直接的表现就是,你玩游戏、看视频,突然卡住,或者直接掉线,然后半天连不回来。
我当时遇到的情况是,刚开始网络还行,用着用着就时不时断一下,特别是传输一些大的文件,或者玩那种网络要求高的游戏,那就更别提了,简直是折磨。我怀疑是MTU值没调就琢磨着怎么去改它。
我得确定我这边的网络环境。我用的是家庭宽带,连接方式是PPPoE拨号上网,这个情况比较普遍。你要是用的光猫桥接啥的,可能又不太一样。

我第一步要做的事,就是先看看我路由器上面MTU的设置。我家用的是一个普通的无线路由器,进去后台管理界面,找到了网络设置或者WAN口设置之类的选项。一般那里会有一个MTU的设置项。默认值可能是1500。很多时候,这个问题就出在这个默认值上。
我的经验是,1500这个值有时候太大了,尤其是在经过一些路由设备或者运营商的网络节点时,可能会因为这个大数据包被拒绝或者被分片,导致延迟和丢包,最终表现出来就是掉线。
我开始尝试着减小这个值。最常见的替代值是1492。为啥是1492?因为PPPoE拨号本身会占用一些开销,1500减去PPPoE的开销,正好是1492。我记着把路由器上的MTU值改成了1492,然后保存设置,重启了一下路由器。
重启之后,我上去试了试,感觉好像是好了那么一点点,但总感觉还是不够稳定。有时候还是会卡一下。这就说明,1492也不一定适合所有人,或者说,我的网络环境还有其他问题。

这时候,我琢磨着,是不是得把这个MTU值再往下调调,看看能不能找到一个最适合我的值。怎么找?我开始用ping命令来测试。
我在电脑上打开命令提示符,然后输入`ping * -f -l xxx`。这里的-f参数是告诉ping命令不要分片,-l后面跟着的就是数据包的大小,也就是我们要测试的MTU值。我从1492开始往下试,比如1480、1470、1460,一步一步来。
怎么判断好坏?如果ping命令能成功收到回复,说明这个MTU值是可以通过的。如果ping一直不通,提示"Packet needs to be fragmented but DF set"或者一直超时,那就说明这个值太大了,需要再往小了调。
我当时就这么一点点测,从1492开始,先试1492,通。再试1480,通。再试1470,通。一直到我试到一个大概1430左右的时候,ping开始出现问题了,会丢包,或者直接超时。
一般来说,找到能稳定ping通的最大的值,然后再加上28(IP头加ICMP头的大小),就是你这个接口的最大MTU值。但我当时没那么精细,我就是想找一个能稳定通过的、相对大的值。
我最终在一个1450左右的值的时候,感觉ping非常稳定,基本不丢包。然后我就回到路由器设置里,把MTU值改成了1450。这回改完,我重启了路由器。
之后,我做了大量的测试。我下载了几个大文件,然后又玩了半天游戏,看视频。奇迹般地,之前那些掉线、卡顿的情况,几乎都没再出现。网络感觉一下子就顺畅了很多,稳定性也大大提升。
对于PPPoE拨号的用户,如果遇到掉线频繁的问题,我非常建议你们尝试把MTU值从默认的1500,调整到1492。如果1492还不行,那就得花点时间,用ping命令一点点往下测,找到一个适合你网络环境的值。切记,要耐心,一步一步来,总能找到那个稳定的设置。这事儿,说起来简单,做起来还是要点功夫的。