ADSL的优化原理与普通相同,同样是对操作系统的网络设置做修改,使操作系统网络设置上更能充分发挥其应有的效率。而修改主要是修改Maxmtu,也就是修改{zd0}的TCP/IP数据包大小,在TCP/IP协议中,将要传输的数据分成一个一个的数据包传送,单个数据包越大,实际传输中的无用数据所占比重就越小。
但在传输过程中,一旦数据包太大,数据包中的数据就需要分组重装,从而使传输时间加倍。在Windows操作系统中系统中使用ADSL,系统默认设置1500{zd0}的TCP/IP数据包大小,而ADSL实际使用的传输单元略小于这个数值,使用默认值无疑将降低传输效率。在这必须说明一点的是,各个ADSL服务提供商设置的传输单元大小很多时候是不一样的,所以手动修改将更能够符合你的需要。
另外就是修改Defaultrcvwindow值,该值定义数据接受缓冲存区。当主机接受一定量的数据包,填满缓冲区后,便按照TCP/IP协议对缓冲区中的数据进行检验,如有错误,则需要传送主机再将整个缓冲区的内容重传一次。很明显,如果缓冲区太大,一个数据包的错误便需要全部数据重发,导致两台主机时间的大量浪费,而太小不仅会占用宝贵的网络带宽,也会令整个系统疲于奔命,无谓地做检验与接受的工作。还有就是修改Defaultttl值,该值定义数据包存活时间,从减轻负担的角度来说,该值不必调太大。
下面介绍一个修改实例: 1.找出合适的Maxmtu大小{zh0}能够使用Netscan tools pro之类的专用测试软件来测试,但如果没有的话也可以使用Ping所使用的DNS服务器(可通过Windows自带的Winipcfg.exe查知DNS服务器地址)来获得,输入ping -f -l 1464 202.96.128.68(这里的1464是测试的数据包大小,202.96.128.68是刚才获得的DNS服务器IP地址),如果返回“packet needs to be fragmented but df set”则代表1464这个值超过了ADSL服务提供商的maxmtu,产生了数据冲突碎片,那么降低数据包大小再次测试,直到能够返回“reply from 202.96.128.68: bytes=1464 time=36ms ttl=250”之类的数据,就可以确定1464这值合适,ADSL服务提供商的Maxmtu的值也就是测试的值加28,等于1492。
2.开始修改工作首先还是每次修改注册表前应该做的,备份注册表,或者将准备修改的键值导出,如果修改好效果并不理想,再导入恢复原来的设置。首先,修改Maxmtu、Maxmss两个值,单击“开始”按钮,然后单击“运行”,键入“regedit”,单击“确定”运行注册表编辑器。然后依次点击打开HKEY_LOCAL_MACHINE\system\ currentcontrolset\services\class\nettrans,里面有0001、0002、0003几个键,不同的计算机的TCP/IP设置可能位于不同的位置,可能是0001,也可能是0002,你可以根据里面的driverdesc来确定,找到后把里面的Maxmtu改为1492(根据上一步的检测结果输入值),Maxmss改为1452(信息段{zd0}长度,即每个数据包中有效的数据,数值可为Maxmtu数值减去保留区域大小,保留区域为8到40),如果没有这两个值可自己增加,两个都是字符串值。
再打开HKEY_LOCAL_MACHINE\system\ currentcontrolset\services\vxd\mstcp\ ,把defaultrcvwindow改为371712(一般设置该值为Maxmss乘以网络带宽除8所得的整数,这里设置的是2M带宽的数值,也就是缓冲一秒左右{zg}速度的数据量),Defaultttl改为64(可选范围是1~255),Pmtublackholedetect改为0(检测数据传输路径中是否存在需要对数据包分组重装的设置),Tcp1323opts改为1,Sackopts改为1,如果没有这些值就自己增加,也都是字符串值。 HKEY_LOCAL_MACHINE\system\currentcontrolset\services\vxd\ mstcp\parameters\中把Maxdupacks改为3(9以内任意整数值,推荐值3),如果没有该值就自己增加,这个是二进制值。
再确认一次都没有错误以后,你就可以关闭注册表编辑器,然后重新启动计算机,连上网络测试一下效果了。