可能很少有雷友注意过“本机、网络”的“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”
Rody
发表于 2010年09月07日 14:00
谢谢!我的MTU刚刚合适!
眼角的泪痕
发表于 2010年09月07日 13:34
我的怎么是1500???
andongniao
发表于 2010年09月07日 13:32
光纤也可以吗
白糖稀饭
发表于 2010年09月07日 13:26
我设置后经常跳到280到320KB是什么回事。。。我的带宽是2M。。。。我用XX风就不会。。。这是怎么的啊?
白糖稀饭
发表于 2010年09月07日 13:27
但是很不稳定,60到320之间乱跳。。。
强伊文
发表于 2010年09月07日 13:45
你用什么测的速度?
wuy
发表于 2010年09月07日 13:14
请求超时……………….
瓦解
发表于 2010年09月07日 13:00
我用了netsh interface ipv4 show subinterfaces这个命令
出现了3行值
其中最后2个分别是 宽带连接 本地连接的2个端口
宽带连接对应的MTU是1480
本地连接对应的MTU是1500
我该设置哪个值?
强伊文
发表于 2010年09月07日 13:46
2个值都改成你测出的合适值
红
发表于 2010年09月07日 12:47
http://commondatastorage.googleapis.com/static.panoramio.com/photos/original/40419642.jpg
上面这个是我WIN7较复杂方法设置到第二步得到的结果
第三步,应该怎么做?
先谢谢啦。
强伊文
发表于 2010年09月07日 12:51
你检测到的合适MTU值是多少?然后按照第三部把那个命名复制进去,改一下连接名,再修改MTU为你检测到的合适值就行了。
红
发表于 2010年09月07日 13:19
我看不懂……你点一下上面的链接图片看一下可以吗?
貌似是4294967295?
强伊文
发表于 2010年09月07日 13:46
图片中显示的“本地连接”是1476。
红
发表于 2010年09月07日 14:08
那上面那个MTU值是什么啊?
dodo09
发表于 2010年09月07日 11:39
我不留QQ,留下邮箱吧,你能看到的
老李
发表于 2010年09月07日 11:34
没路由器 就光猫 怎么弄呢? QQ:471438696
千鸟渊的樱✿
发表于 2010年09月07日 11:26
我用win7,把Windows自带的和360全都关了,还是请求超时,ping别的网站比如www.qq.com也是一样,是不是因为我是内网用户的关系?我家有2台电脑,2个路由器,一个是分路由器,后面有好几个网线插口的
强伊文
发表于 2010年09月07日 12:47
ping都无法完成的话那还是别用这个方法了。
shuax
发表于 2010年09月07日 11:26
(你问我为什么不用Google做目标?考虑到Google时不时被墙,还是算了吧。。)
这个强大
Lemon
发表于 2010年09月07日 11:25
伊文..
如果设置过大(2000) 将会怎么样呢? 浪费?
我这个是1M ADSL 最大100K 已经到满速了 所以无所谓啦
强伊文
发表于 2010年09月07日 12:48
本地MTU大于网络MTU就要被拆包。
abc
发表于 2010年09月07日 11:03
干脆在迅雷软件上增加一个更改MTU的功能多好!
强伊文
发表于 2010年09月07日 12:48
恩,正在研究可行性。
chenzhen
发表于 2010年09月07日 10:56
你好,怎么我的显示请求超时啊????
smilingsunny
发表于 2010年09月07日 10:54
从1472试到1432都依然是Packer needs to be fragmented but DF set啊
强伊文
发表于 2010年09月07日 12:49
那说明还是大,你就继续降低咯,可以减小的跨度大一些,比如一次减小10或者20
youtingxia
发表于 2010年09月07日 10:53
照你的方法,我试出来的是1497.准备在路由器的MTU,可是提示错误如下:
数据包的MTU值已超出范围,请重新输入(576-1492)
路由器是TP—LINK WN322G+。请问我这是不是设置不了阿~
强伊文
发表于 2010年09月07日 12:52
这种情况建议你设为1492.
小果幽幽
发表于 2010年09月07日 10:22
你好强伊文,我对电脑不太懂,你说了那么多,我只懂1点,不会设置,您可以帮我设置下吗?远程协助下,拜托了,希望您帮我下,这是我QQ376153504,不会耽搁您太长时间,谢谢了
强伊文
发表于 2010年09月07日 10:28
这样的情况建议你不要做这项设置。如果我帮你设了,可能会有越来越多的人留QQ要求帮忙设的。。。。。
迅大
发表于 2010年09月07日 12:25
强哥,来帮我设置下吧,我的QQ100001.加啊!!!
小羽
发表于 2010年09月07日 10:06
我是用学校的校内网的,网通的,在设置时将探测包为1472时显示Packer needs to be fragmented but DF set.逐渐减小到1457时依然是Packer needs to be fragmented but DF set.但是再减5测试时又返回四个request timed out 为什么会这样的?
强伊文
发表于 2010年09月07日 10:26
这说明允许的数据包大小应该在1456-1452之间,但同时网络禁止了ping的响应包返回。
背了个锯
发表于 2010年09月07日 08:47
我的路由器MTU一设置好,网速就降到2KB一下…..
测的MTU值是1452+28….可惜用不上了..
suns
发表于 2010年09月07日 11:26
我的和你一样,求真相!
覃明
发表于 2010年09月07日 08:47
系统和路由都要改啊
眼前一亮
发表于 2010年09月07日 08:33
我的返回这样的,不是你说的情况,,
Pinging http://www.a.shifen.com [202.108.22.5] with 1472 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 202.108.22.5:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
强伊文
发表于 2010年09月07日 09:54
这可能是封了ping请求。或者你那访问不了百度。
眼前一亮
发表于 2010年09月08日 06:08
能上网的呀。。访问百度的。这里的网络好奇怪的。用迅雷下载有提示是电信用户,有时提示是网通用户。。..
温馨提示:您的IP是 58.253.49.*** 建议选择 电信 下载
我好笨
发表于 2010年09月07日 06:20
我没接路由器要怎么设置?在哪里设置.
强伊文
发表于 2010年09月07日 09:56
没接路由器就只设置本机的MTU就行
bbobo
发表于 2010年09月07日 00:46
我家的电脑试的时候总是返回四个“请求超时” 后来我在网上查了下 把www.baidu.com改成127.0.0.1就有反映了 测出来是1492 我们家是电信2M的宽带 测出来的1492准吗?
强伊文
发表于 2010年09月07日 09:59
这样测不出ISP的mtu值。
花笑人呆
发表于 2010年09月07日 00:13
我检测出的MTU值系统和无线路由都是1480,请问我能否都改成1500呢?这样是否宽带连接不上了?
强伊文
发表于 2010年09月07日 10:00
你得出的合理值是多少?
陈不二
发表于 2010年09月06日 22:44
我的合理MTU为1480(加了那28的)。
我把系统检测出来的值
由
宽带连接 1480;本地连接 1500
改成
宽带连接 1480;本地连接 1480
对不对?
强伊文
发表于 2010年09月06日 23:35
没错
756786200
发表于 2010年09月06日 22:40
为什么MUT设置成1492(有返回)后 下载速度却变慢了?我是用的是win7 但是再将原来默认的MUT改过来后 速度还是比没改之前慢 这是为什么呢?
强伊文
发表于 2010年09月06日 23:37
这应该是跟MTU无关的。建议你用运营商提供的测速工具来判断设置的效果。
Jack
发表于 2010年09月06日 22:22
我是网通的,用ADSL的那种,上网要拨号,我测出是1452,可是默认的是1480,这不是越改越小?
强伊文
发表于 2010年09月06日 23:39
这种情况下改小是有意义的,因为如果你不改,在传输数据时就会拆包,会有额外的数据包产生。
Jack
发表于 2010年09月07日 22:09
我的猫有控制台,但没找到MUT字样…请问是不是还有其他的名字?
强伊文
发表于 2010年09月08日 11:46
那就是没有这个设置了
Jack
发表于 2010年09月09日 18:59
那再问下,ADSL模式和Annex类型选哪个好?
模式有:
T1.413
G.lite
G.dmt
ADSL2
ADSL2+
Multimode
类型有:
ANNEX A
ANNEX I
ANNEX A/L
ANNEX M
ANNEX A/I/J/L/M
能说下每个的区别那就更好了,谢谢!
强伊文
发表于 2010年09月09日 19:01
你这说的是哪个工具给的设置项吧?没了解过这些。
Jack
发表于 2010年09月09日 22:06
猫的控制台
强伊文
发表于 2010年09月09日 22:21
不知道具体对应的参数是什么。。。
永恒的暗
发表于 2010年09月06日 22:17
不过我有个问题,按照文中理论,如果3000字节的数据如果MTU是1500只要传2个包就OK,实际上假使我的ISP的MTU是1492,就需要传3个包,这工作当然是由路由自己拆分的。而我手工设置成1492后,从数据上看,我传输3000字节的数据同样还是分3个包,为什么速度会比之前没有特定设置快呢?
强伊文
发表于 2010年09月06日 23:49
为了简单的说明产生额外数据包导致的浪费,我使用了一个不是很恰当的例子。
设置相同的MTU值最主要的作用是避免不同层面上MTU差异而产生的额外数据包。
带入到前面这个例子里来就是“要传3000字节的数据,系统的MTU值是1500,路由的MTU值是1492,这样产生的额外数据包”
凡庄
发表于 2010年09月06日 22:08
为什么我家的电脑室的时候总是返回四个“请求超时”?
我将1000、1450、1472、1467、1473都试过了,还试过了迅雷阳台的网址:yangtai.xunlei.com
依然是请求超时……伊文可否解疑?
强伊文
发表于 2010年09月06日 23:49
请求超时可能是ping请求被防火墙阻止了。
千鸟渊的樱✿
发表于 2010年09月07日 07:47
我用win7,把Windows自带的和360全都关了,怎么还是请求超时
强伊文
发表于 2010年09月07日 09:55
可能是你的网络层防火墙拦的。
千鸟渊的樱✿
发表于 2010年09月07日 10:14
那该如何解决
强伊文
发表于 2010年09月07日 10:25
你先试一试ping别的网站,比如www.qq.com,看看有没有返回?
风之雪
发表于 2010年09月07日 01:21
还有一定要加-f命令= =
不加会一直请求超时
永恒的暗
发表于 2010年09月06日 22:05
设了一下,等下看效果如何了
yefuqing
发表于 2010年09月06日 22:00
我测的数值是1468,但我路由器默认是1480,按你说的我应在路由器上设1468+28=1496,但我路由器最大只能设1492(TPLINK无线路由器),那怎么设
强伊文
发表于 2010年09月06日 22:07
路由器没理由将MTU限制最大为1492吧。这很不合理。。
dlf363
发表于 2010年09月06日 21:09
没有路由器的是不是不需要设置路由的MTU了呢?
强伊文
发表于 2010年09月06日 21:12
对
dlf363
发表于 2010年09月06日 21:13
我属于宽带拨号,是不是本地连接和拨号连接都要设置成合适的MTU呢?
强伊文
发表于 2010年09月06日 22:05
简单点的说,只能找到合适值,能改的都改成一致的。
dlf363
发表于 2010年09月06日 22:11
明白了,我2m,估计效果应该不是很明显,等过段时间扩容去,呵呵。谢谢解答了。
星星
发表于 2010年09月06日 21:08
我也查出1480,但我是用电信我的E家,笔记本电脑先无线连接路由器,然后再宽带连接拨号上网。无线网络连接MTU1500,传入传出字节不多。然后宽带连接MTU1480,传入传出数据多。那要修改无线网络连接的MTU嘛
强伊文
发表于 2010年09月06日 21:29
这种就不用改了
Michael
发表于 2010年09月06日 20:35
在校园里上网呢,寝室没有路由器那种,是直接插上网线上网那类,需要修改吗? 我输入后是出现的第二种。
强伊文
发表于 2010年09月06日 21:12
你找到合适的数据包大小了吗?
Tao
发表于 2010年09月06日 20:25
我的也是1480哦 并且win7系统设置也是1480 难道win7会自己判断???
强伊文
发表于 2010年09月06日 21:11
呃,不确定,我在设置时,看到的是1500
superman
发表于 2010年09月07日 09:21
我也是1500,可是路由器不给改,最大1492啊,可以把本地的也改成1492吗?
强伊文
发表于 2010年09月07日 09:53
如果路由器不能改,锁死在1492,那么建议将本地改1492吧。不然路由器会拆包。
781935865
发表于 2010年09月06日 20:25
用 迅7 下载:500KB 上传:1MB 这是 怎么回事
强伊文
发表于 2010年09月06日 21:09
说明你的带宽很大,觉得不合适的话,限制一下上传吧。
菜头
发表于 2010年09月06日 20:21
发现ping Google.hk 的反而能有返回,0%丢失。ping baidu.com 有75%丢失…很奇怪啊~~
测出我家的4M宽带是1452.
问一下,我用的不是电信,不用路由器的…是用那种传统网线接入的(就是粗粗一条那种 >< ),那就直接设置系统的MTU就行了吗?
强伊文
发表于 2010年09月06日 21:09
你这种环境应该是局域网吧,1452有没有+28?
781935865
发表于 2010年09月06日 20:19
家里 是 光纤 的 路由器 怎么设置
强伊文
发表于 2010年09月06日 21:05
没接触过,光纤接入的盒子有没有设置界面?
纵横
发表于 2010年09月06日 19:35
又学会了一点.谢谢强哥.
我是Windows7,北京网通2M.通过强哥讲的最后一段的检测方式显示默认拨号连接的MTU值是1480,自己挨个测试结果也是1480.这意思就是不用改了吗?
还有个问题,如果这样是合理的,那强行提升到1500会怎么样呢? 以前我的这条线路下载速度最少在250K/S以上,某个月网通调整线路什么的弄过一次以后现在都在220-230左右了,速度慢了很多.一直也在找原因,但可能是网通限制的,没办法.现在似乎又有点门路了.
强伊文
发表于 2010年09月06日 19:39
如果设置的MTU限制,超过网络本身的限制,那么网络会拆包,下载速度就会下降。最佳情况是,本地MTU=网络MTU
纵横
发表于 2010年09月06日 19:49
原来如此,强哥,再请教个问题.
我的默认MTU是1480,这样的网速是不是比同等带宽下默认网络MTU是1500的速度要慢?
按强哥举的例子,同样3000字节的数据,我得拆包成3次,1500只需要拆包两次. 而且在本地MTU值低于网络MTU值的时候,把MTU值提升10-20点,速度竟然能提升20K/S左右. 感觉我的1480(加数据包包头后的值)有点低.
强伊文
发表于 2010年09月06日 21:04
虽然从这个点的原理上来看,MTU越大,传递的数据包越大,速度也就越快,宏观来说却不是这样,因为决定速度的不仅仅是数据包的大小,还有数据包的数量。
〓星☆尘〓
发表于 2010年09月06日 19:23
正在试试,不知道设定后需要重启系统不?我家用无线路由器的,在本地电脑上设置无线网卡的MTU后,路由器上面也要设置吗?
〓星☆尘〓
发表于 2010年09月06日 19:23
忽然发现,W7的设置比较简单…太幸运了…
〓星☆尘〓
发表于 2010年09月06日 19:27
查找路由器以后发现一个问题.路由器默认的MTU是1480.要不要先把路由器的设定大一点,然后再从CMD中查找网络限定的MTU值呢?因为按照现在的情况,我查出来的是本机MTU1480…
强伊文
发表于 2010年09月06日 19:37
在尝试合理MTU阶段与路由的MTU设置无关,因为命令中的-f是通知上级路由不拆分包大小的。
强伊文
发表于 2010年09月06日 19:33
不用重启系统,路由需要专门设置。