Windows系列在安装时,默认的是针对以太网的设置,在TCP/IP数据包 传送过程中就会把一些无用功做在了分包和组合上,以适应ISP。虽然ADSL使用PPPoE协议,具有局域网的特点,但是又不完全等同于局域网协议,所以 还有优化的余地。我们可以通过软件修改注册表中的有关参数,使系统针对ADSL进行优化。具体的参数有MaxMTU、DefaultRcvWindow 等,这种优化能够使ADSL适应ISP的网络参数,最大限度地提高ADSL的工作效率。
在广域网上,大小超出 ISP 要求的数据包将无法传输,而操作系统则会根据本机 MTU 值自动将大小不符合要求的数据进行分包处理再进行传输,所以我们可以通过向 Internet 上的某台主机发送一个定长数据包,并且不允许操作系统更改其大小的方式去检查该数据包能否被正常传输,如果数据包小于或等于 ISP MTU 值时,传输就能正常进行,而如果发送的数据包大于 ISP 使用的 MTU 值时,传输就会失败,这样我们就能通过不断发送不同大小的数据包最终得到 ISP 端的 MTU 大小,而这个数据再加上 28 字节的包头信息就是我们需要的最终 MTU 值。
   MTU是英文Maximum Transmission Unit的缩写,意为"最大传输单位",也就是在连接的时候,所传输信息包最多可以有多少字节。我们必须找到不会返回fragment(碎片)信息的最大 MTU。除了ADSL PPPoE的MTU是1492外,其余各种DSL的MTU标准设置都是1500。
MaxMTU是最大的TCP/IP传输单元,在TCP/IP协议中,将要传输的数据分成较小的组进行传输,每个组的大小为576字节。Windows默认 的字节为1500,ADSL使用的 PPPoE略小于这个数值,根据ISP的不同又有微小差异。使用默认值会降低传输效率。MaxMTU在注册表中的位置是HKEY_LOCAL_ MACHINE\System\ CurrentControlSet\Services \s\NetTrans\00yy,键名为MaxMTU,其中"yy"是TCP/IP的入口,随设置的不同而不同,一般在00到30之间。使用Ping命 令自己就可以获得ISP的MTU值。如pingwww.yahoo.com -f -l 1500将发送按照1500分组(-l 1500)的数据 www.yahoo.com(最好是你的ISP的网站),并检查是否发现分组不同产生的数据碎片(-f),如果存在就降低分组值,最终就可以找到匹配的MaxMTU。这个值也就是ADSL优化最关键的部分。
DefaultRcvWindow是缺省的传输单元缓冲区的大小。该值的大小与Modem的速度有关,最好是MSS(Maximum Segment Size,最大分组数,等于MxaMTU减去40字节的地址信息)的整数倍, DefaultRcvWindow在注册表中的位置是HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services \VxD\MSTCP,键名为DefaultRcvWindow。
DefaultTTL是TCP/IP分组的寿命,如果分组在Internet中传输的时间超过了分组的寿命,则该分组将被丢弃。将DefaultTTL改 得更大些,有利于信息在Internet中传得更远。 DefaultTTL在注册表中的位置是 HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Services\ VxD\MSTCP,键名为DefaultTTL。
修改好上面的注册表后,重新启动计算机。
windows mtu 修改
什么是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 如图2 (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的值。填写前请先把基数设为十进制。 设置好后,需要重启机器才能生效。
linux mtu修改
在通过局域网上网时,默认的MTU值通常是1500,这使得有些网站长时间打不开,如 百度;
为使系统在起动时自动设定MTU的值而不需要每次都手动修改,可以这样做,修改 /etc/conf.d/local.start(gentoo,各发行版可能有所不同),加入如下一行:
ifconfig eth0 mtu 768   #768可以任意设定

同样要在系统起动时自起动的也可以加进这个脚本
用下面命令可以修改mtu值
ip link set dev eth0 mtu 1024
上面这条命令把我的eth0这块网卡的mtu值改成了1024字节,这样就解决了多数网站上不去的问题了。windows下可以通过编辑注册表来改变mtu值。
linux确实很方便,修改mtu值就是一例。windows下编辑完注册表还要重新启动才能生效。linux下使用这样一条命令问题就解决了^_^
学校一个电子教室通过ADSL宽 带“猫”上网,系统为RedHat 9.0,但在上网时有些网页打不开,而且网速不快。有同事告诉笔者,说这跟MTU值有关系,将它修改到适当的值即可。在Windows下可以通过修改注册 表来修改MTU值,可在Linux下面又该如何做呢?通过查阅一些资料,笔者终于解决了这个问题,其实只需要一个简单的命令即可:
  # ifconfig eth0 mtu number
  其中“number”为MTU的数值。修改完成后,可以用“ifconfig”命令来查看修改的结果。也可以通过一些网站来测试网速,进一步通过修改MTU值使网速达到最佳。为了不必每次都修改,我们可以在配置文件中修改,如:
  # vi /etc/sysconfig/network-scripts/ifcfg-eth0
  MTU=1000
  这样Linux的灵活性又一次得到了体现!
  小知识:MTU的英文全称为Maximum Transmission Unit,意为最大传输单位,也就是在连接的时候,所传输信息包最多可以有多少字节。MTU决定着信息包的大小,如果信息包太小,同样大小的数据就会分成 很多个包传输,计算机不得不频繁地作出响应;如果信息包太大则会产生错误,导致传输失败。