可能很少有雷友注意过“本机、网络”的“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”
linxixinchuangyi
发表于 2010年09月16日 17:17
看的有点晕。。 收藏了,以后仔细研究。。。
xinyangz
发表于 2010年09月15日 19:34
你说的PPPOE连接是在猫里面的吗?还是win里面的,若是猫里面的,怎么改?
强伊文
发表于 2010年09月15日 19:58
在Windows里改
xinyangz
发表于 2010年09月15日 19:27
我的不是路由,是电信我的e家ADSL猫,进去后没有找到有改MTU值的地方,需要改吗?
强伊文
发表于 2010年09月15日 19:30
ADSL猫不用改,但是建立了PPPOE连接之后是可以改的
xinyangz
发表于 2010年09月15日 19:26
我的不是路由,是电信
亲王
发表于 2010年09月16日 02:52
你先百度下,补充知识再发表,OK?
xinyangz
发表于 2010年09月15日 19:18
检查MTU值,有个宽带连接是1480,有个本地连接是1500,改哪个?
我已ping出最佳MTU为1452+28=1480.
强伊文
发表于 2010年09月15日 19:22
都改
奇门遁甲
发表于 2010年09月15日 04:18
我按照楼主帖子中所说的操作,出现了如下的情况,请问是何意呀?
Microsoft Windows [版本 6.0.6002]
版权所有 (C) 2006 Microsoft Corporation。保留所有权利。
C:\Users\qmdj>ping -l 1472 -f http://www.baidu.com
正在 Ping http://www.a.shifen.com [119.75.217.56] 具有 1472 字节的数据:
来自 192.168.1.6 的回复: TTL 传输中过期。
来自 192.168.1.6 的回复: TTL 传输中过期。
来自 192.168.1.6 的回复: TTL 传输中过期。
来自 192.168.1.6 的回复: TTL 传输中过期。
119.75.217.56 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
C:\Users\qmdj>
强伊文
发表于 2010年09月15日 10:00
你是不是把本机的TTL值改的很低啊,包还没发到就过期了。数据包每经过一个路由,TTL值就会-1
奇门遁甲
发表于 2010年09月16日 10:13
楼主请看下面的ping的TTL值是128,我是VISTA操作系统,在网上查看了帖子,这个128的值就是VISTA系统的,没有改变过呀?为什么按照你说的那个方法会出现这样的问题呢?请教呀。。。。。
Microsoft Windows [版本 6.0.6002]
版权所有 (C) 2006 Microsoft Corporation。保留所有权利。
C:\Users\qmdj>ping 127.0.0.1
正在 Ping 127.0.0.1 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128
来自 127.0.0.1 的回复: 字节=32 时间
leon
发表于 2010年09月16日 19:34
TTL显示的是你从主机到目的地址经过了多少跳 和mtu 没什么关系啊
牛牛
发表于 2010年09月14日 21:51
我们这联通是用猫,PPPoE连接,怎么设置????
一个抱怨迅雷的人
发表于 2010年09月14日 18:52
每次下到99.9%就不下了,要是文件等着用不被气死
MaxGO
发表于 2010年09月14日 17:14
有毛用,局端设备mtu值一直在变化~
zhzrzhzr2
发表于 2010年09月14日 15:40
可不可以做一个程序给我们用啊,这么复杂对于我们菜鸟来说看不懂啊
Micheal
发表于 2010年09月14日 15:11
楼主没搞清楚一件事,路由接入与MO拔号的MTU是不同的。
最准确知道本地MTU是多少,单线拔号才行。
胡说八道
发表于 2010年09月14日 15:01
像这样的不负责任的文章也能发到迅雷的网站上,简直就是在误人子弟,网件知识库内的文章:http://www.netgear.com.cn/kb_web_files/router10027.htm请各位认真、仔细看完前两段就知道随便修改MTU值的可能引起更严重的问题!
强伊文
发表于 2010年09月14日 18:11
网件的文章说的没错,盲目修改MTU值的确会引起你说的前2段中的严重问题。
但是本文介绍的是寻找合适的MTU值,而不是“盲目修改”。
网件的文章中也提及
这正是本文的中心内容。
ZX008S
发表于 2010年09月14日 11:50
PPPoE才有效吧?而且局端的MTU老是改,本地固定设成1492折中下行不行呢
lite143
发表于 2010年09月13日 21:39
1467..我只能ping到默认的32不然就超时
晕
发表于 2010年09月13日 21:28
设置后没有反应 和原来一摸一样
278290457
发表于 2010年09月13日 20:37
宽带连接和本地连接,到底改哪一个?
小阳
发表于 2010年09月13日 19:07
路由器不归我管在boss那里,怎样改?高手
强伊文
发表于 2010年09月13日 19:13
那就跟随路由器的设置吧!
石头
发表于 2010年09月13日 00:02
我的电脑现在ping任何地址都是返回超时
51comic
发表于 2010年09月12日 22:14
为什么显示请求超时?!
背影
发表于 2010年09月13日 20:40
我开始是100%丢失,然后将1480改成1500就请求超时!!!
ceshizhe
发表于 2010年09月13日 23:55
因为这就是给看不懂的人看得看不懂的东西!
我自己觉得没啥实际意义!
飞舞
发表于 2010年09月12日 17:27
意义不大!
vc52
发表于 2010年09月12日 16:36
xp下按您说的,注册表最下面是形如HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{0E86FADB-8F1D-4F71-8FCA-3A79EA9E7077}这样的,怎么办
gxq2010
发表于 2010年09月12日 14:38
那请问,我家里2台电脑,2台都是win7,按照期中一台设置,比如把此机和路由器均设置成1492,那另外一台笔记本经查,应该合理的是1496,怎么办?是设置成1496还是还是和路由器保持一致???
还有家里这个无线路由器是TP的,这个是通过电信那个华为的拨号上的,那个华为的路由功能被锁定了,所以加装的这个路由器,我现在改,只改了这个TP的,是不是连华为那个也需要更改呢????谢谢!!
强伊文
发表于 2010年09月13日 11:29
和路由保持一致,拨号终端不需要改。
lfl16888289
发表于 2010年09月12日 12:44
只是路由器需要设置吗?
迷迷糊糊
发表于 2010年09月12日 12:40
好晕啊,我决定不改了
qqlyr
发表于 2010年09月12日 12:37
3、在 interface 中下可能有很多项,需要逐个观察键值,会有一个项与你的网卡IP一致,选中该项; 这个不懂。
Sst
发表于 2010年09月12日 12:30
没有路由器怎么办??
qqlyr
发表于 2010年09月12日 12:29
原来我搞错了,是减……
qqlyr
发表于 2010年09月12日 12:28
我跨越地设置到5000+都没有返回~~~~~~~~
郁闷ing
qingfuyuanyuan
发表于 2010年09月12日 11:39
晕,我的到了1430了,t慢了
冰山
发表于 2010年09月12日 10:39
我用上面的方法得出的MTU值1468,加上数据报头28后,最终值是1496。我用的路由器是tp-link的,进路由器后设置MTU值1496,提示超出范围,(576-1492),请问这怎么解决???
强伊文
发表于 2010年09月13日 11:30
没办法改的话就设置本地和路由器为1492吧
冰山
发表于 2010年09月12日 10:36
我通过上面介绍的方法得出的MTU值是1468,然后加上数据抱头28,最终结果是1496。我进入路由器设置(路由器是TP)
沙漠之鹰L3
发表于 2010年09月11日 22:52
很实用啊,顶
Zero
发表于 2010年09月11日 22:40
似乎设置起来很麻烦。。。
鲨鱼
发表于 2010年09月11日 21:48
这么设置是IPV4的,不过现在系统都默认是IPV6的标准报头都是40的,现在系统两种协议都在是+28还是+40额
强伊文
发表于 2010年09月13日 12:48
你用IPV6连接的网络?如果没有就不用改IPV6的
Larsson
发表于 2010年09月11日 18:58
本来迅雷下载峰值一直在210~220之间,现在是220~230之间了。 还是有那么点用的
qiuai
发表于 2010年09月11日 18:54
我的路由器默认就是测试出来的1492…
是不是说就没有办法提升了?
可西爱东
发表于 2010年09月11日 18:40
我改完了,没看出来效果呀。。。。
枫林夜话
发表于 2010年09月11日 18:30
1500时请求超时已发4接收0,1461时请求超时已发4已接受0,1460时已发4接收4我糊涂了mtu是多少呢?
Ray
发表于 2010年09月11日 16:10
给大家恢复的方法
用管理员打开cmd,然后输入netsh interface ipv4 set subinterface “需修改的连接名” mtu=1500 store=active
god
发表于 2010年09月11日 15:12
那怎么设置MTU啊