用ping追踪计算机的最佳MTU值&修改MTU值 2010

1、什么是MTU 
MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包。MTU的单位是字节。
大部分网络设备的MTU都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。 
2、如何检测网关的MTU? 
在本机打开dos窗口,
执行: ping -f -l 1472 192.168.0.1 其中192.168.0.1是网关IP地址,1472是数据包的长度。请注意,上面的参数是“-l”(小写的L),而不是“-1”。如果能ping通,表示数据包不需要拆包,可以通过网关发送出去。
如果出现: Packet needs to be fragmented but DF set. 表示数据包需要拆开来发送。此时,减少数据包长度,再执行上面的ping命令。
从1400到1472之间多试几次,就能找到合适的数据包长度了。把数据包长度加上数据包头28字节,就得到MTU的值。
如果检测到网关的MTU值是1500,不需要修改。如果网关有防火墙ping不通,可以试试直接把MTU设为1400。
3、如何修改本机的MTU? 修改方法如下: 
(1)、运行regedit 
(2)、浏览到: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces 
(3)、Interfaces下有多个子项,每个子项对应一个网卡。请按如下方法选择网卡:(a)确定本机用来连接Internet的网卡或拨号连接的IP,如192.168.0.19;(b)用鼠标点击Interfaces上的子项,查看键值列表中的IPAddress项;(c)如果IPAddress的键值与(a)中的IP相同,即192.168.0.19,则该子项就是要找的网卡。
(4)、进入该子项,在右边的窗口里按鼠标右键,选择“新建”->“双字节值”,输入名称“MTU”,按回车。再用鼠标双击“MTU”,弹出修改窗口:如图3: 填入MTU的值。填写前请先把基数设为十进制。设置好后,需要重启机器才能生效。

======================================================================


  在我们常用的Windows XP操作系统中,系统默认的MTU值为1500,这是一个标准以太网的设置值,并不适合宽带网络,而一般ADSL宽带的MTU在1450与1492之间,系统与ISP之间MTU的不符就会直接导致数据在网络传输过程中不断地进行分包、组包,浪费了宝贵的传输时间,也严重影响了宽带的工作效率。这就要求我们必须将本机MTU值设为与ISP所使用的MTU值一样后才能快速浏览网页、下载数据。但是,每个地区的ISP所使用的MTU值都不相同,同时ISP也会不定期地更改局端MTU大小,这给我们设置本机MTU带来了很大的不便,那么我们怎样才能知道ISP的MTU是多少呢?其实,我们平时最常用的Ping命令就能很方便地帮我们测试出本地ISP的MTU大小,如果大家感兴趣,就请跟随笔者一起来看看吧。 
  测试思路 
  在广域网上,大小超出ISP要求的数据包将无法传输,而操作系统则会根据本机MTU值自动将大小不符合要求的数据进行分包处理再进行传输,所以我们可以通过向Internet上的某台主机发送一个定长数据包,并且不允许操作系统更改其大小的方式去检查该数据包能否被正常传输,如果数据包小于或等于ISP的MTU值时,传输就能正常进行,而如果发送的数据包大于ISP使用的MTU值时,传输就会失败,这样我们就能通过不断发送不同大小的数据包最终得到ISP端的MTU大小,而这个数据再加上28字节的包头信息就是我们需要的最终MTU值。
  测试步骤 
  1. 拨号上网,并打开“开始”菜单→“程序→附件→命令提示符” 
  2. 输入命令“ping -l 14xx -f  www.163.com”,这里我们解释一下命令参数的含义 
  * –l 14xx参数:发送一个定长数据包,14xx是要测试的包大小,如前所述,ADSL的MTU一般在1450与1492之间,第3步中将每次更换一次该值 
  * –f 参数:通知操作系统不能私自更改该数据包大小 
  *  www.163.com:任意一台Internet上的主机,也可使用其它主机名或IP地址 
  3. 观察反馈结果并判断ISP的MTU值(请注意图中标黄框部分) 
  1) 第一次发送测试包,包长1450 
  如图1,提示数据包过大,需要分包,因此判断该数值(1450)大于ISP的MTU,应降低包大小 


  2) 第二次发送测试包,包长1440 
  如图2,数据包大小降为1440,提示应为数据包过大,因此判断该值(1440)仍大于ISP的MTU,还应继续降低 


  3) 第三次发送测试包,包长1430 
  如图3,数据包大小降为1430,提示该数据包可以正常传输,因此判断ISP的MTU值在1440~1430之间 


  4) 第四次发送测试包,包长1435 
  如图4,数据包大小升为1435,提示仍然可以正常传输,因此判断MTU数值在1440~1435之间 


  5) 第五次发送测试包,包长1438 
  如图5,数据包大小升为1438,提示可正常传输,因此判断MTU数值在1440~1438之间 


  6) 第六次发送数据包,包长1439 
  如图6,数据包大小升为1439,提示因数据包过大无法传输,因此,判断出该ISP的MTU值为1438 


 4. 计算本地电脑的MTU值 
  上面得到的MTU值不能直接用于本地设置上,还应在此基础上加上28(包头大小),因此最终的MTU数值为1466 
  5. 修改本机MTU值 
  修改本机默认的MTU值可以通过注册表来进行,但更直观稳妥的方法是使用一些系统优化软件,如“超级兔子”或“Windows优化大师”等,本例使用“超级兔子 V6.25”进行演示。如图7

是进入魔法设置网络设置标签的画面,首先选中“使用最大传输单元”前面的勾,然后再从后面的数据栏中输入计算出的MTU值(1466)后点击确定并重启电脑即可。 

  总结 
  如上所述,整个过程可能看起来挺烦琐,但思路十分简单,而且效果不错。笔者的电脑设置了MTU值后,浏览器打开页面的速度较未设置前提高了15%,效果还是很明显的。?此方法只对于PPOE的拨号ADSL,对于光纤接入或ISDN接入的宽带网络不适用此法。

猜你喜欢

转载自fireye83.iteye.com/blog/1923087
MTU