使用TCP RFC 1323进行Windows XP网络性能优化

在本文中,我们将学习如何通过RFC1323协议来调整Windows XP注册表参数,RFC 1323协议是TCP的高性能扩展——为了调整、改善和优化网络速度和吞吐量。这个技巧可以帮你省下下载软件、程序甚至购买额外网络设备或硬件所需要的投入。

    Windows XP包含几个可以动态地影响性能的注册表参数——其中有一个设置是用于处理RFC 1323的,即高性能的TCP扩展。

    RFC 1323中所引用的TCP窗口是接收窗口——存储到达TCP片的缓存空间,除非(a)到达的数据包设置了Push标记然后它们被立即下发到应用程序中,或者(b)接收它的应用程序到缓存中取它的数据。

    在TCP握手过程中,基于TCP连接的双方都会告诉对方它们的接收缓存大小。这是包含在TCP包头的Window Size字段里的。这个字段的典型值是65,535(它是一个2字节长度的字段,65,535是它能表示的最大值)。这表明如果需要的话,发送握手数据包的设备有65,535个字节空间可用于存储到达的数据。注意如果从一个TCP节点发来的初始通信在TCP握手数据包中使用了TCP Window Scale选项,那么XP系统默认会使用Window Scaling。这意味着如果你的XP设备是作为服务器(响应初始的TCP握手数据包)使用,你将会使用Window Scaling。如果你的XP设备是一个客户端(比如,你用来连接一个HTTP服务器或邮件服务器),你就不会使用Window Scaling。

    如果一个主机在文件传输时缓存空间耗尽,它必须回送一个包含Window=0字段值的数据包。TCP节点必须停止发送数据,直至一个窗口更新(Window Update)数据包发送过来。一个窗口更新数据包是一个简单的ACK数据包,它带有非0窗口大小值。当窗口更新过程发生后,数据流可能将重新继续。图1显示了数据流已经停止,因为一个主机宣告了窗口0(Window Zero)的状况。

使用TCP RFC 1323进行Windows XP网络性能优化

    图1:接收方主机发送带有TCP Window Size字段为0的数据包以停止数据传输,因为主机已经缺乏可用的缓存空间了
    
65,535的窗口大小值在目前的更快速的链路、更粗的管道和更大的文件传输中已经不够用了。窗口0状况促使Window Scaling的创建,这是定义在RFC 1323中的。在TCP握手过程中,如果双方都在TCP包头添加了Window Scale选项,那么窗口缩放就会被支持。双方都必须包含有这样一个Window Scale选项值,以便双方都能使用这个功能。Window Scale选项定义了在决定窗口尺寸所需使用的倍增因数,如图2所示。

使用TCP RFC 1323进行Windows XP网络性能优化

    图2:这个主机在它的TCP握手数据包中宣告了Window Scale的因数为2。这个尺寸因数将实际接收窗口大小增大到262,140字节

    窗口尺寸(Window Scale)值是一个幂运算值。比如,Window Scale设为0表示将Window Scale字段值乘以1(这样做不会改变大小,它只是允许另一方能使用窗口缩放)。如果Window Scale值为1表示你应该将窗口大小字段值乖以2。

使用TCP RFC 1323进行Windows XP网络性能优化

    举个例子说,如果你正在下载大小超过75MB(一个我通常用来测试基于HTTP文件传输的合适大小值)的Open Office Suite。如果你没有激活Window Scaling,但你又确实想有一个像样的吞吐比例,你的接收窗口可能会因为仅有65,535大小的接收缓存空间而阻塞下载进程。调整Window Scaling并将尺寸因数设为4,这将能提供一个262,140字节大小的接收缓存空间。
   为了打开Window Scale设置(并且不打开时间戳选项,这个我将在另一篇文章中介绍),将tcp1323opts的值设为1。

    Tcp1323Opts

Key:TcpipParameters

ValueType:REG_DWORD--number(flags)

ValidRange:0,1,2,3

0(disableRFC1323options)(禁用RFC1323选项)

1(windowscalingenabledonly)(仅启用窗口缩放)

2(timestampsenabledonly)(仅启用时间戳)

    3 (both options enabled) (启用窗口缩放和时间戳)

    默认:没有值。默认的行为是这样的:当初始化TCP连接时不使用时间戳(Timestamp)和窗口尺寸(Window Scale)选项,但如果TCP节点在初始化通信时在SYN片中包含了它们,就使用时间戳和窗口尺寸(Window Scale)选项。

    描述:这个参数控制RFC 1323时间戳和窗口尺寸TCP选项的使用。显式设置时间戳和窗口缩放是通过比特标记控制的。比特0控制窗口尺寸,比特1控制时间戳。

    提示:在作任何修改前一定要选好网络通信的基线。这可以使你能够验证你所作的修改能对网络通信产生正面的作用。更多关于创建网络基线、TCP/IP通信的分析和故障修复的信息,请访问网站www.wiresharkU.com。

    关于作者:

    Laura Chappell是Wireshark 大学和协议分析研究院的创始人。她是一个一流的演讲家和涉及网络通信、分析和安全等许多行业领域的作家。她已经为数以千计的网络管理员、State and Federal法律执行官、司法成员、工程师、技术人员和开发人员提供培训。Chappell是High Technology Crime Investigation Association (HTCIA)的成员之一,FBI Infragard组织的骨干成员,以及Institute for Electrical and Electronic Engineers (IEEE)自1989年以来的准会员。她的集合了幽默感、个人经验、激情和清晰易懂的演讲特点使她成为各种大会的高级行业演讲师,包括:Microsoft TechEd,HP TechForum,HTCIA International Conference,Congress Netherlands,Electronic Crime Task Force Quarterly Meetings和Novell BrainShare Conference。