mtu设置--解决装路由器后部分网站打不开的问题

资料一:

1、什么情况下需要改MTU?

  如果您的动态域名网站不能被正常访问,很难连接,连接上也非常慢,请试试把DirectSend设为“总是关闭”。如果关闭后可以正常访问,这种情况就需要修改MTU。如果您的网站连接正常,只是下载速度慢,就不必改MTU了。请跳过这一节。

2、什么是MTU?

  MTU是Maximum Transmission Unit的缩写。意思是网络上传送的最大数据包。MTU的单位是字节。

  大部分网络设备的MTU都是1500。如果本机的MTU比网关的MTU大,大的数据包就会被拆开来传送,这样会产生很多数据包碎片,增加丢包率,降低网络速度。把本机的MTU设成比网关的MTU小或相同,就可以减少丢包。

3、如何检测网关的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。

4、如何修改本机的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”,弹出修改窗口:

 

  填入MTU的值。填写前请先把基数设为十进制。

  设置好后,需要重启机器才能生效。

MTU(Maximum Transfer Unit最大传输单元)

随着ADSL宽带费用和安装门槛的降低,越来越多的小企业选择ADSL作为公司的网络出口方式。笔者所在公司最近开拓了两个子公司,采用ADSL作为网络出口。在使用过程中总出现一个奇怪的问题:拨号上网后,公司内部计算机经常出现打不开网页,但奇怪的是,并不是所有页面都打不开,有很多站点还是可以正常访问的。经过反复调试及上网查找资料后,笔者发现原来是MTU在捣乱。默认情况下MTU值是1500,使用ip mtu 1492命令将它修改为1492后上述问题解决。

  为什么MTU的设置错误就会产生这个问题呢?首先我们来看一下MTU的概念,MTU(Maximum Transmission Unit)即最大传输单元,对于PPPoE(ADSL)来说要求用户端的MTU不能大于1492,否则用户无法浏览某些网站,因此必须对MTU的设定值进行调节。这点对于ADSL用户特别重要,很多不明不白的问题都有可能是因为MTU的设置不当造成的,遇到实际问题时应该引起足够的注意。

如果MTU被设置在最小值或最大值的以下或者以上,Windows忽略这些值,使用最低值或者最高值。

通常,大多数Windows使用者使用PPP Over Analogue modem,ISDN或者Ethernet over cable和xDSL。PC使用的网络是ppp或者以太网。所有windows使用者运行tcp/ip连接。

注意,tcp/ip和网络连接两者都有头。

网络 头 最小MTU 最大MTU

PPP 6 128 65535

Ethernet 38 46 1500

TCP/IP 40 576 65535

56k modem使用者和isdn使用者,都使用tcp/ip over ppp, 有46字节的头。cable和xdsl使用者有78字节的头。

那么,关键问题是:一个包裹在达到MTU设定的尺寸之前不会被送出。如果MTU值很大,很明显延迟也更长。但是,如果MTU值太小,头会占据大量带宽,从而减低带宽的有效性.

 

今天搞一个网络,死活出问题(比如,可以上网,qq等就是不能上msn。),后来才发觉是MTU值设定的错误,自己总结了一下

当电脑连接网络传送资料时,资料会分割为不同大小的封包,MTU值设定。MTU是英文Maximum Transmission Unit的缩写,意为“最大传输单位”。也就是通过TCP/IP协议所传输的数据包最大有多少字节, MTU值越大,封包就越大,理论上可增加传送速率,但MTU值又不能设得太大,因为封包太大,传送时出现错误的机会大增。一般默认的设置,PPPoE连接的最高MTU值是1492, 而以太网(Ethernet)的最高MTU值则是1500,而在Internet上,默认的MTU大小是576字节, 为什么会有这种差别呢?一般而言,LAN就不说了吧,为充分发挥LAN的效能,MTU可以稍微大一点。Internet的情况恰好相反,对拨号用户来说,那叫一个慢呀。因此,对于Internet,应当采用较小的数据包。 MTU值设定与宽带接入方式的不同也会影响上网速度,通常推荐的MTU配置是:对于拨号用户,设置成576;对于使用PPPoE的DSL用户,设置成1400;对于其他用户,设置成1500。

ping www.blueidea.com -f -l 1480

出现Packet needs to be fragmented but DF set.就说明该大小的(1480字节)数据包超过了ISP的MaxMTU,产生了数据冲突碎片,那么我们就降低Ping命令中的数据包大小,比如说是1460一直到返回信息是Reply from 220.194.57.26: bytes=1460 time=134ms TTL=115才算正常,那个这个1460数据包大小的值就是ISP的PPPoE协议的MaxMTU值

9X系统中如下设定,运行==regedit回车,进入注册表。依次展开HKEY_LOCAT_MACHINE/System/CurrentControlSet/Services/Class/NetTrans/,会看到包含几个000X的子项,寻找含有键名为“DriverDesc”,键值为“TCP/IP”的000X主键,该键里有该计算机的网络属性设置,如IP地址192.168.0.XX,网关 192.168.0.1,子网掩码255.255.255.0等。在该键下新建“DWORD值”,命名为“MaxMtu”,修改键值为十进制的1460,

Win95,98系统:

打开注册表编辑器,找到位置 “HKEY_LOCAT_MACHINE/System/CurrentControlSet/Services/Class/NetTrans00x”, “x”表示为数字,假如电脑安装了多个通讯协议,就会出现“0001”、“0002”、“0003”等项目,只要打开该项目,就会看见 “DriverDesc”是“TCP/IP”,即网卡的“Registry”设置,用户在这里可按鼠标右键新增一个“MaxMTU”的DWORD值,修改键值为十进制的1460,重启。

Win2000,NT,XP,2003系统可以采用如下2种方法之一,建议采用第一种,如果不行,依次往下试验

1,启用PMTUD的backhole传输

打开REGEDIT,HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/主键下,找到主键 EnablePMTUBHDetect ,如果没有则创建这个Dword值,将其键值设置为1,保存后重起计算机,并测试故障是否解决?

2, 手工设置网卡的MTU值

打开REGEDIT,HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/Interfaces/主键下,下面会有几个文件夹,分别代表机器的安装的每一块网卡,依次浏览每个文件夹,并察看窗口右边IPAddress的键值,如果其值为你连接 Internet所用网卡的ip,则需要修改的就是这个文件夹。

进入此文件夹,找到一个名为MTU的主键,如果没有则创建这个Dword值,修改键值为十进制的1460,重启。

 

资料二:

MTU,即Maximum Transmission Unit(最大传输单元),此值设定TCP/IP协议传输数据报时的最大传输单元。设置合适的MTU值可以解决“部分网站打不开”、“上网速度慢”等问题,并且可以适当提升上网速度。
设置多大的MTU值取决于你的上网方式,不同的上网方式支持不同的MTU,下面列出了一些上网方式的MTU值:
EtherNet(一般上网方式,默认值):1500
PPPoE/ADSL:1492
Dial Up/Modem:576

问题一:知道了我的上网方式,如何设置MTU值?
1. 在 『开始』>『运行』中,键入regedit,点确定;
2. 选择『HKEY_Local_Machine』>『SYSTEM』>『CurrentControlSet』>『Services』>『Tcpip』>『Parameters』>『interface』;
3. 在 interface 底下可能有很多的选项,你一个一个的去看,会有一个选项与你的网卡的 IP 相同,那个就是你要挑选的选项啦!然后同样的在该选项上选择『编辑』>『新建』>『DWORD值』之后,建立一个名为『MTU』的DWORD,然后双击修改,选择十进制,填入合适 MTU 值,确定!大功告成!

问题二:我不知道自己的上网方式,如何确定MTU值呢?
ping -f -l 1500 127.0.0.1

C:/WINDOWS>ping -f -l 1500 127.0.0.1
Pinging 127.0.0.1 with 1500 bytes of data:
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

上面的式子中,-l 是 L 的小写(不是 1 喔),1500 是我们要测的 MTU 值,结果出现了 Packet needs to be fragmented but DF set. 这个东西,那表示MTU值太大了,你需要更小的 MTU 值才行!好啦!那假设我们使用 1464 来测试时:

C:/WINDOWS>ping -f -l 1464 127.0.0.1
Pinging 127.0.0.1 with 1464 bytes of data:
Reply from 127.0.0.1: bytes=1464 time=10ms TTL=128
Reply from 127.0.0.1: bytes=1464 time<10ms TTL=128
Reply from 127.0.0.1: bytes=1464 time<10ms TTL=128
Reply from 127.0.0.1: bytes=1464 time<10ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 10ms, Average = 2ms
结果出现了回应了!这表示这一个 MTU 值是可行的!不过,强烈建议找出可行的最大 MTU 值!这样一来,在设定的时候,才可以达到最佳的网速!

找出 MTU 值:利用上面这个方法找到的数值还不是 MTU 喔!由于一些封包上面的问题,上面这个值再加上 28 才是我们所需要的 MTU 值!所以,在上面的例子中,我们所需要的 MTU 值是 1464+28=1492!

一般来讲,设计好本机的MTU值,可以解决部分网站打不开的情况,但是如果你的共享主机或路由器的MTU设置有问题,有时问题仍然存或,或者出现网速过慢的情况。合理的设置路由器与本机的MTU值,就可以完全解决上述问题,使上网速度达到最大化。

你可能感兴趣的:(以太网技术)