TCP协议握手OPTION字段解析及其应用 | 本真心灵

来源:互联网 发布:飞秋2017 mac 编辑:程序博客网 时间:2024/05/21 00:48
 

本文将介绍如何通过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)的状况。

图1

图1

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

图2

图2

图2:这个主机在它的TCP握手数据包中宣告了Window Scale的因数为2。这个尺寸因数将实际接收窗口大小增大到262,140字节
窗口尺寸(Window Scale)值是一个幂运算值。比如,Window Scale设为0表示将Window Scale字段值乘以1(这样做不会改变大小,它只是允许另一方能使用窗口缩放)。如果Window Scale值为1表示你应该将窗口大小字段值乖以2。

图3

图3

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

为了打开Window Scale设置(并且不打开时间戳选项,这个我将在另一篇文章中介绍),将tcp1323opts的值设为1。
   Tcp1323Opts
   Key: Tcpipparameters
   Value Type: REG_DWORD — number (flags)
   Valid Range: 0, 1, 2, 3
   0 (disable RFC 1323 options) (禁用RFC 1323选项)
   1 (window scaling enabled only) (仅启用窗口缩放)
   2 (timestamps enabled only) (仅启用时间戳)
   3 (both options enabled) (启用窗口缩放和时间戳)

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

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

http://www.blog.namind.com/tcp-handshake-protocol-analysis-and-its-application-option-field.html | 本真心灵

原创粉丝点击