首页 > 范文大全 > 正文

Windows操作系统中TCP接收窗口的发展

开篇:润墨网以专业的文秘视角,为您筛选了一篇Windows操作系统中TCP接收窗口的发展范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

1 引言

tcp通讯中为了限制任一时刻可发送的数据量,并为接收端提供流量控制,TCP对等方使用窗口实现这些目的。该窗口是接收端允许发送端发送的字节流的数据范围。发送端只能发送位于窗口内的字节流中的字节。该窗口随着发送端的出站字节流和接收端的入站字节流而滑动。

2 TCP接收窗口和TCP吞吐量

为了优化TCP吞吐量(假设为合理的无差错传输路径),发送端应该发送足够的数据包以填满发送端和接收端之间的逻辑管道。逻辑管道的容量可由以下公式计算:

Capacity in bits = path bandwidth in bits per second * round-trip time (RTT) in seconds

容量称为带宽延迟乘积(BDP)。管道可以用粗(高带宽)和细(低带宽)或者长(高 RTT)和短(低 RTT)来表示。粗而长的管道的BDP最高。使用高BDP传输路径的示例包括卫星链接或带有洲际光缆链接的企业广域网(WAN)。

3 TCP窗口缩放

为了提供可适应高速传输路径的更大窗口尺寸,RFC 1323定义了允许接收端通告大于 65 535 字节的窗口大小的窗口缩放。“TCP窗口缩放”选项包括一个窗口缩放因子,该因子与TCP报头中的 16 位窗口字段结合时,可以将接收窗口大小最大增加到 1GB。“TCP窗口缩放”选项只用于在连接建立过程的同步(SYN)段中发送数据。TCP对等方都可以为接收窗口大小指定不同的窗口缩放因子。TCP窗口缩放允许发送端通过一个连接发送更多的数据,可以使TCP节点更好地利用一些具有高BDP的传输路径类型。

尽管接收窗口大小对于TCP吞吐量而言非常重要,但确定最佳TCP吞吐量还有一个重要的因素,那就是应用程序检索接收窗口中累积数据的速度(应用程序检索速率)。如果应用程序不能检索数据,接收窗口就可以开始填充,导致接收端通告了更小的当前窗口大小。因此,要优化TCP吞吐量,必须将连接的TCP接收窗口设定为可同时反映该连接传输路径的BDP和应用程序检索速率的值。

4 windows XP中的接收窗口

对于Windows XP(和 Windows Server 2003)中的TCP/IP堆栈,最大接收窗口的大小具有许多重要的属性。

首先,默认值基于发送界面的链接速度。实际值自动调整为TCP连接建立过程中协商的最大段大小(MSS)的偶数增量。

其次,最大接收窗口的大小可以手动配置。可通过将注册表项 HKLM\System\CurrentControlSet\Services\Tcpip\Parameters

Tcp1323Opts的值设置为1或3来启用窗口缩放。

最后,启动连接时,可使用应用程序的“SO_RCVBUF Windows Sockets”选项,指定连接的最大接收窗口大小。使用窗口缩放时,应用程序所指定的窗口大小必须大于65 535字节。

尽管Windows XP支持可缩放窗口,但其中的最大接收窗口大小仍然会限制吞吐量。另外,TCP连接的最大接收窗口大小固定,不随应用程序检索速率的变化或传输路径中的阻塞而变化。

5 Windows Vista中的接收窗口自动调节

为了优化TCP吞吐量,特别是具有高BDP的传输路径,Windows Vista中的TCP/IP堆栈支持接收窗口自动调节功能。该功能通过测量BDP和应用程序检索速率,以及调整当前的传输路径和应用程序状况的窗口大小,来确定最合适的接收窗口大小。

默认情况下,“接收窗口自动调节”会启用TCP窗口缩放,它所允许的最大窗口大小为16MB。数据流通过连接时,下一代TCP/IP堆栈会监控连接,测量该连接当前的BDP和应用程序检索速率,并调整接收窗口大小以优化吞吐量。TCP/IP堆栈不再使用TCPWindowSize注册表值。

“接收窗口自动调节”功能具有许多优点。它可以根据每个连接自动确定最佳的接收窗口大小。使用“接收窗口自动调节”功能后,基于Windows Vista的TCP对等方通常会比基于Windows XP的TCP对等方通告更大的接收窗口大小。这使得其他TCP对等方可以通过发送更多的TCP数据段来将管道填入基于Windows Vista的TCP对等方,而无需等待ACK(服从TCP拥塞控制)。对于如网页或电子邮件等典型的基于客户端的网络通信,Web服务器或电子邮件服务器可以向客户端计算机更快更多地发送TCP数据,从而全面提高网络性能。连接的BDP和应用程序检索速率越高,性能的提高就越明显。

6 结论

在数据传输中,将通常以较慢的速度发送的TCP数据包流快速发送,从而导致网络利用率出现更大的高峰。基于Windows XP和Windows Vista的计算机在长而粗的管道上执行相同的数据传输时,传输的数据量相同。然而,基于Windows Vista的客户端计算机的数据传输更快,因为其具有更大的接收窗口大小,并且服务器能够填充从自身到客户端的管道。