优化Internet连接的速度是一个热门话题。正因为热门,所以不可避免地滋生出许多误解和真假难辨的传闻。所以,在优化Internet连接之前,详细了解每一步操作可能导致的后果十分重要。本文的目标是澄清一些基本概念,解释各个配置选项的具体含义,并介绍几种富有特色的优化工具。
一、如何度量连接的速度
人们把Internet叫做信息高速公路。两者的差别在于,在Internet上没有人限制你的速度――实际上,速度是Internet高速公路真正的价值所在。那么,在Internet上,速度用什么标准来度量呢?许多人相信每秒的字节数量是速度的最终标准,其实不然,问题没有这么简单。
影响Internet连接速度的两个最直接的因素是带宽和延迟时间。也许你在了解系统内存体系结构的过程中,已经无数次听到这两个术语。带宽这个概念,想必大家已经了解;但通信延迟时间这个概念,虽然被提到的次数相对较少,却同样重要。实际上,即使你有了很高的带宽,连接的延迟时间仍可能把高速公路变成羊肠小道。
在Internet上,数据传输之前先被分割成包。当数据包到达目的地,接收方再以正确的次序把数据包重新装配起来。所谓延迟就是一个数据包到达目的地需要的时间;另外,当你发出对某个目标的请求,目标系统在应答时返回一些数据包,延迟这一概念也可用来描述这一过程所需要的时间。最理想的组合当然是高带宽、低延迟:数据包能够以最快的速度到达,且有充裕的带宽支持;反之,低带宽、高延迟则属于最差的组合。
许多通过卫星建立的连接会出现高带宽、高延迟的情形,例如,虽然带宽高达768Kbps,如果你点击网页上的链接或发送一个命令,收到应答数据可能需要一秒以上。由于延迟时间太长,对于许多联机游戏来说,基于卫星的连接几乎无法使用,因为联机游戏要求延迟时间小于半秒或更少。当然,也有的应用对延迟时间的要求不高,例如email。
网络延迟与许多因素有关,最重要的是发送方和接收方之间的路由器,它们对连接的质量有着重要的影响。卫星连接之所以比光缆连接慢,就是因为数据必须通过轨道上的卫星中转。Cable和DSL线路的延迟一般要小得多,但最终还是要由线路的具体情况决定。
二、硬件
虽然许多用户用上了宽带,但用拨号连接上网的人仍占大多数。为简单计,我假定读者使用的拨号Modem不是多年以前的产品――如果你的Modem不符合V.90或V.92规范,强烈建议你马上升级。
从浏览器(或其他客户程序)到另一端的服务器之间,有一系列中介连接。第一个就是计算机和Modem之间的连接。打开Modem的属性对话框,可以看到一个设置最大端口速度的选项,这个最大连接速度不是Modem连接电话线的速度,而是数据通过COM端口的速度。许多时候,这个值的默认设置较低,把这个速度改成115200能够略微提高一点速度,这是因为降低了数据在COM端口缓冲区的停留时间,在一定程度上降低延迟时间。
没有必要把Modem的最大端口速度设置成115200以上(而且基于16550a UART的串行口不允许超过115200),因为通过电话线传送数据的压缩率不太可能出现超过3:1的情形。说到数据压缩,过去人们相信压缩和解压缩的时间开销会带来一定的延迟,但是对于现在还在使用的机器来说这点开销应该算不上什么,不会给Internet连接的延迟时间带来任何不利影响。
宽带连接的情况有所不同。宽带连接要用到宽带Modem,宽带Modem或者连接DSL线路,或者是电缆调制解调器(Cable Modem);可能直接通过USB端口接入PC,也可能通过网卡转接。如果用路由器、Hub或服务器之类的设施实现Internet连接共享,这些设施都会带来额外的处理负担,从而影响速度。
在宽带环境中,网卡是影响网络吞吐量的重要因素之一。不同厂商的产品,甚至同一厂商不同型号的产品,都可能存在显著差异。例如,我的台式机用的是杂牌网卡,笔记本用IBM 10/100 EtherJet CardBus网卡(带56K的Modem),两台机器都运行XP,笔记本的综合性能不如台式机。用这两台机器访问同一个服务器,笔记本的下载速度可达450Kbps,台式机的下载速度是300Kbps,相信导致这种差异的决定因素就在于网卡。
和其他硬件设备一样,对于网卡,一分价钱一分货的道理同样适用。杂牌网卡往往只实现最基本的功能,缺乏名牌产品的智能优化能力,驱动程序也缺乏灵活的定制能力。如果你的网卡属于那种连名字也很少听说的OEM产品,换一块网卡,你会有惊奇的发现。对于宽带Modem,品牌的也一样重要。
对于优化网络连接,人们谈论得最多的还是调整TCP/IP配置。下面我们就来看看这方面的内容。
三、最大传输单元
从Windows 95包含TCP/IP的第一天起,人们慢慢了解到它默认的TCP/IP配置并非针对广域网优化。Windows 95包含的TCP/IP原先是为LAN提供的,因为当时Internet还远远没有获得现在这么广泛的应用,因此以LAN为中心的默认配置保留了一段相当长的时间。其中,最为人们注意的TCP/IP配置选项是MTU,即Maximum Transmission Unit,或“最大传输单元”
。(在Windows中,MTU和其他TCP/IP配置选项都保存在注册表中。)
MTU选项描述了允许的最大TCP数据包大小,单位是字节。对于LAN,默认的MTU大小是1500字节;但在Internet上,默认的MTU大小是576字节。为什么会有这种差别呢?一般而言,LAN具有高速、流畅的特点,延迟小,为充分发挥LAN的效能,MTU可以稍微大一点。Internet的情况恰好相反――至少对于拨号用户来说如此。因此,对于Internet,应当采用较小的数据包。
本文后面介绍的几种优化工具都允许用户修改MTU选项。通常推荐的MTU配置是:对于拨号用户,设置成576;对于使用PPPoE的DSL用户,设置成1400;对于其他用户,设置成1500。
不过,修改MTU到底能够在多大程度上改进连接的速度,这可没有统一的标准,部分的原因在于有许多其他因素用户经常无法控制或考虑到――ISP的服务质量、Modem的品牌、IP/TCP协议的版本,等等,而且修改MTU的效果还会受到其他配置选项的影响,例如TCP接收窗口的大小。
所有本文讨论的网络配置选项,包括MTU和其他参数,都不能随意修改。除非你对自己很有信心,否则最好用工具软件,不要手工修改注册表。一些工具软件能够备份原始配置数据,跟踪修改过程,一旦发现修改有误,你就可以方便地恢复。
四、接收窗口大小
接收窗口大小即Receive Window Size,它决定了接收信息的机器在收到多少数据后发送ACK数据包。所谓ACK数据包,它是对收到数据的一种确认,相当于说“我已经成功接收数据”。如果在一定的时间之内没有返回ACK数据包,则那些未经确认的数据将被重新传输。如果我们增加TCP接收窗口的大小,就可以减少发送ACK数据包的数量,减少网络延迟和占用的带宽。
另一方面,扩大TCP接收窗口也可能带来负面影响。较大的接收窗口意味着,如果ACK数据包没有及时发回给服务器,则需要重新传输的数据也较多。但是,只有当网络传输的错误很多,或者你使用拨号网络,才有必要考虑这个问题。为减小这种不利影响,办法之一是启用TCP/IP协议的SACK,即Selective Acknowledgement(有选择地确认)。SACK使得服务器只重新传输出错的数据包,而不是重新传输自从最后一个ACK之后的所有数据。(还有一个类似的选项,称为RFC 1323 Timestamp,它使得每一个数据包带有一个时标,但是,时标本身也会带来较大的开销,抵消了很大一部分扩大TCP接收窗口所带来的优势,因此一般不用)。
默认的TCP接收窗口在Windows 95/98和NT中是8K,在Windows Me/2000/XP中是16K,大多数Linux的默认配置在32-64K之间。如果你使用拨号连接,16K应该是你可以采用的上限;但对于宽带连接,16K是理想接收窗口大小的下限。对于大多数宽带用户,最好试验一下32K到64K之间的配置,看看有什么结果。
五、其他TCP/IP配置
TTL即Time To Live,直译为“存活时间”,表示在丢弃一个数据包之前它可以通过多少跃点(Hop),默认的上界是32。如果传入到路由器的数据包TTL值大于32,许多路由器会把TTL重新设置成32。把TTL值设置得高一些没有害处,但如果你的ISP的路由器直接把TTL改回32,设置得高也就没有任何意义。一些优化网络连接的工具建议把TTL设置成128――虽然高达128的TTL值本身没有害处,但却没有办法保证设置如此之高的TTL之后,这个值可以被原封不动地保留和传递。
Black Hole Detect(黑洞探测)也是一个对客户端影响不大的选项。黑洞探测机制有点复杂:找出是否有路由器没有传递数据包里面的一个关键信息标记――具体地说,是“Don't Fragment”(不要分段)标记。如果设置了Don't Fragment标记,数据包就不会被路由器上的网关分段。除非你要访问老式的网络,这个选项没有什么用,实际上,启用这个选项会浪费一定的带宽。Black Hole Detect选项默认是关闭的,建议不要去改动它。
MaxConnectionsPerServer选项对Web浏览有好处。HTTP 1.1规范规定,一个客户机同一时刻最多只能建立两个到同一服务器的连接。修改MaxConnectionsPerServer选项可以升高这个值――推荐的上限是4。这是一个推荐高质量宽带用户修改的选项,不过要注意的是,一些服务器为了遵守规范要求和避免连接资源不足,可能限制了同一客户的连接数量不得超过二个。
为什么增加MaxConnectionsPerServer值会有好处呢?主要的原因在于,当我们打开一个页面时,浏览器会建立一个连接下载HTML文件,建立第二个连接下载图片。如果页面包含了大量的图片,浏览器会每次一个顺序下载这些图片,即使网络连接的速度很快也不一定能够充分利用。增加MaxConnectionsPerServer值也就增加了允许打开的连接数量,增加了允许同时下载的图片数量,提高了装入整个页面的效率(当然,这有一个前提,也就是服务器能够接受来自同一客户机的二个以上的连接)。如果没有什么特别的原因,这个选项值得一改,对于速度较快的连接来说尤其如此。
DNS缓冲能够加速大多数基于TCP的操作。DNS是Domain Name Server,即域名服务器,提供域名与IP地址的转换服务。当浏览器连接指定名称的服务器时,就要执行一个DNS查找操作,把服务器名称转换成IP地址。DNS查找有时是一个很耗费时间的操作,特别是有些ISP提供的DNS服务器本来就比较慢。由于域名与IP地址的对应关系很少改变,所以可以用本地缓冲DNS地址的办法来提高速度。Windows有一个HOSTS文件(在Windows的\system32\drivers\etc目录下)提供了IP地址和域名的简单映射,一些有经验的用户通过手工修改HOSTS文件提高DNS查找速度,但我们也可以通过工具自动完成,有些网络代理软件和Internet连接共享软件也具有这方面的功能。
Windows 2000和XP增加了一个“QoS数据包计划程序”。这是一个默认安装的TCP/IP组件,用来控制网络服务的传输速率和服务质量。除非你的应用程序特别依赖于QoS,例如远程医疗诊断之类的实时应用,否则它的作用不是很大,关闭该组件可以减小一些网络开销。
六、工具软件
为了了解优化Internet连接的软件工具,我花不少时间浏览各大下载网站和试验优化效果。不得不指出的是,许多工具不值得一试,原因就在于它们实在太简单,毫无特色。很多工具只提供了一个编辑MTU和接收窗口大小等选项的窗口界面。大部分工具没有提供优化之前和优化之后的测试机制,无法了解参数调整之后连接性能到底是提升还是下降,有的甚至
只是一个加上了安装程序的.REG文件!
经过优化之后,网络连接性能确实有所改善。例如,调整了接收窗口大小之后,本人台式机的最大下载速度从大约430Kbps提高到了520Kbps。优化网络连接的工作量显然与所用的工具有关:我认为使用TweakMASTER之类的工具比较简单,而使用CableNut之类的工具则比较繁琐。除非特别指出,下面说明的工具适合于所有的Windows版本(9x/2000/XP)。因为有部分工具不支持XP,所以下面的各个图形都在Windows 2K下截取。
6.1 CableNut 4.08
CableNut也许比较适合熟悉TCP/IP和其他网络选项的专家使用,它是本人看到的大多数工具软件的典型代表――针对各种可调整的TCP选项,提供一系列的设置界面,包含少量的说明(或不提供说明)。如果你熟悉各个术语,当然可以随心所欲地进行配置;如果不熟悉,那就要自己花时间查找资料。图一是CableNut手工调整参数的界面。
CableNut是一个免费软件,本身不具备任何测试性能的功能。但是,CableNut针对Win9x和Win" 2K提供了Cable、DSL、卫星线路和拨号连接的预定义优化配置,目前还不支持XP。CableNut通过菜单提供的功能主要包括:打开定制的配置文件,保存定制的配置文件,选择操作系统,备份注册表,恢复注册表。
下载地址CableNut
6.2 Webroot Accelerate 2K2
Webroot Accelerate提供30天免费试用版本,界面豪华亮丽。可以选择安装时自动优化,当然,你也可以选择安装好之后手工优化。Webroot Accelerate支持各种基本的设置选项,但不支持测试功能,目前也不支持XP,所以本文对Webroot Accelerate的推荐程度只略高于CableNut。图二是Webroot的主运行界面。
下载地址Webroot" Accelerate
6.3 Internet Rocket 4.7
Internet Rocket支持DNS缓冲,但Internet Rocket的DNS缓冲功能不能自动检测新的域名记录,也就是说,你必须手工输入DNS记录,所以用起来比较麻烦。在Internet Rocket中输入的DNS记录直接写入到HOST文件。
除了缺乏对最大连接数量选项的支持,Internet Rocket支持所有基本的配置选项。Internet Rocket的优点是能够记录所有的操作,一旦遇到问题,可以方便地恢复原来的设置。Internet Rocket的运行界面如图三所示。
这个工具最恼人的特点是它的许可条件:它是一个所谓的“主页软件”(Homepageware)。如果你要免费运行这个程序,就要把浏览器的主页设置为它提供的四个网站之一。
下载地址Internet" Rocket
6.4 BeFaster 3.1
BeFaster可免费试用15天,它还有一个BeOS版本,但看来已经不再更新。BeFaster允许编辑所有基本的Internet连接选项,但不支持DNS缓冲。图四是BeFaster的主界面。
BeFaster支持用户Ping目标服务器,但这个功能只用来检测Keep-Alive,不能用来分析MTU或其他选项。BeFaster支持的连接类型比较全面,包括拨号连接、Cable、PPPoE" Cable/DSL以及直接连接。BeFaster支持包括繁体中文在内的多种语言,但目前还不支持简体中文。
下载BeFaster
结束语:如前所述,有些影响Internet连接性能的因素是难以改变的,特别是网络延迟,因为它在很大程度上依赖于你和目标服务器之间的路由器,而不是你本地的TCP/IP配置和设备。如果你准备调整配置,一定要小心从事,切勿粗心大意。修改配置之后一定要全面地测试,最好详细地记录修改过程以便出现问题时恢复。