可能很少有雷友注意过“本机、网络”的“MTU”值对自己网络性能产生的影响。对于追求更快的下载速度来说,MTU值设置不当,就仿佛穿着高跟鞋跑步一般。
MTU是什么?
“MTU=最大传输单元 单位:字节”
我们在使用互联网时进行的各种网络操作,都是通过一个又一个“数据包”传输来实现的。而MTU指定了网络中可传输数据包的最大尺寸,在我们常用的以太网中,MTU是1500字节。超过此大小的数据包就会将多余的部分拆分再单独传输。
为什么MTU影响网络性能?
让我们看看这个情况,在Windows系统中,默认MTU值也是1500字节,但是“不同的接入方式、不同地区的网络运营商、不同的路由器”有着不同的MTU设置。
例如:ADSL接入时MTU为1492字节,假设A需要给B传输3000字节数据,如果整个传输过程中各个环节的MTU都是1500,那么2个数据包就可以传输完成。可是偏偏这时ADSL接入方式的MTU是1492字节,数据包就因为这个MTU差异额外拆分为3个(为了便于理解,暂时不将“数据包报头”纳入考虑范围)
显然这额外增加了需要传输的数据包数量,而且拆包组包的过程也浪费了时间。如果从本地到网络采用一致的MTU就可以避免额外拆包。
对下载速度的影响会有多大?
就拿伊文家里的线路质量不太好的电信4M带宽为例,将操作系统的MTU值改为1492,再将路由器的MTU值从1460改为1492后,下载速度从原本的435KB/s提升到了450KB/s,提升了15KB/s。电信的带宽检测工具的检测结果也从4.09M提升到了4.19M。
我该如何合理设置MTU呢?
更快的下载速度,对于迅雷的用户来说,显然很有意义。可是MTU设置不能一个值天下通用,所以我们讲究合理设置MTU。
那么什么情况下的MTU值才是合理的呢?
我们先看看什么是不合理的:
1、本地MTU值大于网络MTU值时,本地传输的数据包过大导致网络会拆包后传输,不但产生额外的数据包,而且消耗了“拆包、组包”的时间。
2、本地MTU值小于网络MTU值时,本地传输的数据包可以直接传输,但是未能完全利用网络给予的数据包传输尺寸的上限值,传输能力未完全发挥。
这样我们就知道,所谓合理的设置MTU值,就是让本地的MTU值与网络的MTU值一致,既能完整发挥传输性能,又不让数据包拆分。
接下来最重要的就是要找出对于你的网络环境来说MTU多少才是合理的。
方法如下:
1、按Win+R组合键,调出“运行”菜单,输入“cmd”然后回车
2、在出现的“命令提示符”窗口中输入“ping -l 1472 -f www.baidu.com”然后回车
含义:
ping:发起一个探测请求;
-l(L的小写):限制探测包大小;
1472:包大小为1472字节;
-f:禁止路由器拆分数据包
www.baidu.com:设百度为探测目标
(你问我为什么不用Google做目标?考虑到Google时不时被墙,还是算了吧。。)
3、这时有2种情况:
(1)、如果收到了回复,那么说明你的网络允许最大MTU值就是1500字节,与系统默认值相同,只需要将路由器的MTU值也设置为1500即可;
(2)、如果出现需要拆分数据包但是设置 DF。或是Packer needs to be fragmented but DF set.的提示,那就说明数据包大小超过了网络限定的MTU大小。需要减小探测包大小再次尝试。(为了截效果图,我将探测包改为1473了)
4、按“上箭头”恢复刚才输入的命令,然后以5为跨度减小包大小为1467字节,再次回车探测。
5、这时同样也有两种可能:
(1)、如果有返回,说明数据包小于MTU限制,就将包大小+3再次探测,如果+3之后没有返回,那就以1为跨度降低数据包大小进行探测。
(2)、如果还是没有返回,就继续以5为跨度减小包大小,直至有返回后进行5(1)中的操作。
6、直至你发现数据包-1后,有了返回,就说明你探测到了MTU允许的准确数据包大小。(例如从1465降低到1464就有了返回,那么允许的数据包大小就是1464)
7、不过上面得到的值还不能设置为操作系统或路由器的MTU,你找到的数据包大小需要加上28字节的“数据包报头”,才是完整的数据包尺寸。
(例如:探测到的数据包大小是1464,那么加上28字节,最终MTU=1492字节)
8、最后,只需要将路由器和操作系统中的MTU值设置为你得出的结果即可。
路由器设置方法见路由器说明书!建议使用“Windows优化大师、超级兔子魔法设置、鲁大师”等软件修改操作系统的MTU。
以下是较复杂的方法:
(1)、XP操作系统设置方法:
1、 按Win+R组合键,调出“运行”菜单,输入regedit,然后回车;
2、 选择“HKEY_Local_Machine>SYSTEM>CurrentControlSet>Services>Tcpip>Parameters>interface”;
3、在 interface 中下可能有很多项,需要逐个观察键值,会有一个项与你的网卡IP一致,选中该项;
4、然后在该项上点击右键,选择“编辑>新建>DWORD值”,然后在右侧将其命名为“MTU”;
5、右键点击MTU,选择“修改”,在弹出的窗口中选择“十进制”,填入你得出的合理MTU值即可。
(2)、Vista、Win7操作系统设置方法:
1、进入系统盘:\Windows\System32\找到cmd.exe,右键“以管理员身份运行”;
2、在出现的“命令提示符”窗口中输入“netsh interface ipv4 show subinterfaces”并回车来查看当前的MTU值
3、接下来输入“netsh interface ipv4 set subinterface "需修改的连接名" mtu=你得出的合理值 store=persistent”并回车即可
例如:“netsh interface ipv4 set subinterface "本地连接" mtu=1492 store=persistent”
oroge
发表于 2011年06月18日 16:52
亲,按照上面的方法算出来我的MTU应该设置成1494,但是路由器最大只有1492,怎么办,电脑和路由器都设置成1492?
海上风
发表于 2011年05月16日 10:57
数据包报头优化大师解释为40,点击优化必须+40,这个28是怎么来的?
SimpleExpress
发表于 2012年04月17日 15:48
28是udp的包头,40是tcp的包头
XAUTIT民工
发表于 2012年05月30日 10:22
最大MTU测试的时候加上28,是因为28是udp包头,40是tcp包头吗?
ping命令是用ICMP实现的,跨越了tcp和udp的传输层协议吧?怎么还能再加上传输层的头部大小呢?望指教,谢谢。
XAUTIT民工
发表于 2012年05月30日 10:36
经过我的查证:
首先TCP头部大小20字节,UDP头部大小为8字节,之所以加28是因为,ping首先进过ICMP封包,在经过IP封包,然后传输出去,所以ping的基本格式是:IP头(20字节)+ICMP(20字节)+1472(数据包大小)。故此上面在测试最大MTU时,最大MTU为数据包大小加28(IP头+ICMP头)。
凤鸣海
发表于 2011年05月13日 18:30
好像是有点作用啊,刚才迅雷下载东西很慢,我先关闭了迅雷,然后依上面方法测试改动,我原来是1500,现在改成1492,然后重启迅雷,视乎下载速度提高了不少,就是不知道是是重启迅雷的缘故还是改动的缘故?
ggee513
发表于 2011年05月02日 14:53
cfos显示.修改前666KB.修改后675KB.效果还是有的~
深圳电信
zsylive
发表于 2011年02月15日 15:22
紧急求救,修改mtu后浏览器无法打开任何网页,qq可以上,把mtu改回系统默认的1500还是不行,已确定不是dns问题,求救啊
路由器mtu是1492,这个是默认,也是路由器允许的最大mtu
kddy520
发表于 2011年02月14日 19:27
步骤5和6是什么意思..不是很明白..什么是有返回??
强伊文
发表于 2011年02月14日 19:31
就是有显示检测结果。
逝水流年
发表于 2011年02月14日 15:52
我的出现Request timed out(请求超时)怎么办,数据包也全都丢了,是不是防火墙的问题
强伊文
发表于 2011年02月14日 19:31
可能是防火墙封了ping 请求。
oroge
发表于 2011年06月19日 09:17
貌似不用管理员权限运行就可能会这样
小子
发表于 2010年12月03日 23:07
例如:“netsh interface ipv4 set subinterface “本地连接” mtu=1492 store=persistent”
“本地连接”指的是什么??
能给个例子吗??
强伊文
发表于 2010年12月04日 00:59
就是你网卡那个连接的名称。通常被命名为“本地连接”
旭
发表于 2010年12月10日 07:53
为什么我设置1473以上包括1473 要 设置DF 1472一下包括1472 请求超时
牛皮纸袋子
发表于 2010年12月03日 16:59
我使用的是无线网卡,如何设置mtu
tang3587
发表于 2010年12月01日 20:52
我使用的是无线网卡,如何设置mtu
888
发表于 2010年12月01日 00:19
4M网速迅雷下载速度(420kb)比IE下载(700kb)慢将近一半,你说安装迅雷有何用?
btchaoren
发表于 2010年11月30日 19:35
我路由里MTU最多只能设到1492…………………….
不能到1500!!!!!!!!!!!!
jour4910663
发表于 2010年11月28日 20:21
我们宿舍用的是交换机,怎么看啊
yayaus
发表于 2010年11月13日 21:35
还有,我按照你的ping百度,然后顺利发现了百度的shifen站,然后。。ping的结果是重来没有成功过,全部是超时了。
这个里面开始用cmd ping稍微吓人了点,不过用cmd改mtu可真是顺手~
yayaus
发表于 2010年11月13日 21:23
其实呢。。打开路由wan口设置,mtu直接就看到了,这么用命令行会把人逼疯的。。
还有那个迅雷7的问题,我这几天对这些是丝毫兴趣没有了。。先用5.8,等我把这个11g的下载完了再换到5.9就差不多了。
我的是win764位,用的是64位flash插件,希望可以给你们参考吧。
至于图片我早就发给你了,我觉得说的还是比较详细了,剩下的你们看着办吧~
诠释孤单
发表于 2010年12月01日 16:32
上次讯雷出的那个设置MTU的,测出来了,
这个MTU是不是分电脑系统和路由器。这2部分都要改?
我是1条网,1台电脑用,系统的用那上面教的改了,
路由器的MTU要怎么改,从哪改啊。
知道的话回一下,或加我QQ.304116454。万分感谢
变形呛呛金刚
发表于 2010年12月04日 09:05
你得看下路由器的说明书,一般用的路由器设置地址是192.168.1.1,只需在地址栏键入这个,然后使用通用用户和密码(都是admin)~
yayaus
发表于 2010年10月30日 14:35
怎么不把邮件通知弄上,可不是大家都有这个机会再回来看到。
赤膊上阵
发表于 2010年10月27日 12:45
看了头晕。。。
123
发表于 2010年10月23日 18:55
那 传输单元缓冲区 和 最大数据段长度 该怎么设置呢
rain
发表于 2010年10月22日 21:57
看不明白 按照提示的有些操作找不到 可能是自己不会吧!现在的速度够可以啦!
麻烦积点德
发表于 2010年10月19日 00:33
好像不是很明显的说。。还是算了吧。。 已经够快了。。
menatplay
发表于 2010年10月17日 19:06
其实不用这样麻烦,用Ashampoo Internet Accelerator 3 软件测试就知道M值的,我的是1480,而且这个对下载速度也提升不 了多少
色彩可乐
发表于 2010年10月14日 02:57
例如:“netsh interface ipv4 set subinterface “本地连接” mtu=1492 store=persistent”
应该改为输入“netsh interface ipv4 set subinterface 本地连接 mtu=1492 store=persistent” 然后回车
giddy
发表于 2010年10月12日 11:16
先下载优化大师先找到网络系统优化标签再找到”最大数据段长度”改1492就OK了
zoom
发表于 2010年10月12日 10:18
照LZ的改了,发现没什么变化。。。。。。。
龙啸九天
发表于 2010年10月11日 00:18
我把包设置成1,都还是可以ping通,是怎么回事啊?
龙啸九天
发表于 2010年10月12日 09:35
自己小白,已经解决,但是局域网环境下面似乎不明显,单位带宽1000k以上。
xuchen5335
发表于 2010年10月10日 23:24
我的出现“请求超时”啊 怎么办呢?
=_=
发表于 2010年10月10日 21:53
10M 的飘过..
forumzcb
发表于 2010年10月09日 17:44
方法不错,我用Win7,原来的MTU是1350,改成1500后,下载速度从160-200k/s,变为330k/s左右。不知道是不是有其他原因,不过还是挺好的方法。
io8oi
发表于 2010年10月09日 11:11
我请求超时了!!! 怎么弄啊a?????
鹰
发表于 2010年10月08日 21:15
有点用,但不是很明显的,我网速本来就慢
hsandy
发表于 2010年10月08日 19:46
我的4M下载速度虽然没有达到450K,但由原来的400-410K提到431左右,应该是一定的改进。对于下载5M、10M以下的文件来说,可能感觉不明显,但对于G级文件,可以计算一下,……
无
发表于 2010年10月08日 18:06
我找不到我的网卡,文章写得很好,就是我自己的问题……
Manwai
发表于 2010年10月08日 17:29
我也是出现“请求超时”的情况
゛_朝思暮想
发表于 2010年10月07日 19:24
Windows优化大师、超级兔子魔法设置、鲁大师”等软件怎么修改操作系统的MTU的?在那修改的
Pale
发表于 2010年10月07日 18:19
(for /l %v in (1472,-1,1402) do @ping -l %v http://www.baidu.com -f -n 2 )>c:\a.txt
这个可以 从 1472 执行到 1402
具体参数可以自己改
小白
发表于 2010年10月09日 14:21
怎么样以5为跨度减小包大小为1467字节??、/
发条痞
发表于 2010年10月09日 18:23
(for /l %v in (1467,-5,1402) do @ping -l %v http://www.baidu.com -f -n 2 )>c:\a.txt
淡定依旧
发表于 2010年10月07日 11:23
很好很强大,速度快了很多。
无
发表于 2010年10月07日 09:52
为什么在WIN7下 运行netsh int tcp set global autotuninglevel=disable之前迅雷只有100多K(6M) 运行之后却有500~600K呢?
dsd
发表于 2010年10月07日 01:25
我xp是英文的,怎么办
KTVV
发表于 2010年10月05日 07:35
出现
请求超时
theosophy
发表于 2010年10月05日 07:14
默认的就是1500,测出的也是1500,白搞了半天。