TCP 接收窗口自动调节 Joseph Davies 现在开始介绍我们的第一个主题- TCP 接收窗口。 TCP 连接的吞吐量可以通过发送和接收应用程序、发送和接收 TCP 的实现以及 TCP 对等方之间的传输路径来限制。在本专栏中, 我将介绍 TCP 接收窗口及其对 TCP 吞吐量的影响、 TCP 窗口缩放的使用以及 Windows Vista ?中的“接收窗口自动调节”新功能(可优化 TCP 接收数据吞吐量)。 TCP 接收窗口 TCP 连接具有许多重要的特点。首先,它们是两个应用层协议之间的逻辑点对点通信。 TCP 不提供一对多的传递服务, 它仅提供一对一的传递服务。其次, TCP 连接是面向连接的。在数据可以传输之前, 两个应用层过程必须通过 TCP 连接建立过程正式协商一个 TCP 连接。同样, TCP 连接在通过 TCP 连接终止过程协商之后正式关闭。再次,在 TCP 连接中发送的可靠数据按顺序排列,且期望得到接收端的肯定确认。如果没有接收到肯定确认,则重传这个段。接收端一端会放弃重复的段,并按照正确顺序排列到达时失序的段。最后, TCP 连接是全双工的。对于每个 TCP 对等方, TCP 连接都由两个逻辑管道组成: 一个传出管道和一个传入管道。 TCP 报头包含传出数据的序列号和传入数据的确认(ACK) 。此外, TCP 将通过传入和传出逻辑管道发送的数据视为连续的字节流。每个 TCP 报头中的序列号和确认号都根据字节边界定义。 TCP 并不会考虑字节流中的记录或消息边界。应用层协议必须正确地分析传入的字节流。为了限制任一时刻可发送的数据量, 并为接收端提供流量控制, TCP 对等方使用窗口实现这些目的。该窗口是接收端允许发送端发送的字节流的数据范围。发送端只能发送位于窗口内的字节流中的字节。该窗口随着发送端的出站字节流和接收端的入站字节流而滑动。对于给定的逻辑管道(全双工 TCP 连接的一个方向),发送端维护一个发送窗口,接收端维护一个接收窗口。当传输中没有数据或 ACK 段时,逻辑管道的发送和接收窗口相互匹配。换句话说,发送端允许发送的出站字节流中的数据范围与接收端能够接收的入站字节流中的数据范围相匹配。图1 说明了这种发送和接收关系。图1 匹配发送和接收窗口( 单击该图像获得较大视图) 为了表示接收窗口的大小, TCP 报头包含了一个 16 位的“窗口”字段。当接收端收到数据时,它把 ACK 发送回发送端以表明成功接收到这些字节。在每个 ACK 中, “窗口”字段表示接收窗口中剩余的字节数。当应用程序发送、确认和检索数据后, 发送窗口和接收窗口都会滑动到右侧。接收窗口是用于控制可从发送端传送给接收端的未确认数据数量的窗口。由于接收窗口中可能会有应用程序未检索到的数据以及已接收但尚未确认的数据,因此 TCP 接收窗口具有一些其他的结构,如图2 所示。图2 TCP 接收窗口中的数据类型( 单击该图像获得较大视图) 请注意最大接收窗口和当前接收窗口的区别。最大接收窗口的大小是固定的。当前接收窗口的大小是可变的, 并对应于接收端允许发送端发送的剩余数据量。当前接收窗口大小是发送回发送端的 ACK 中通告的“窗口”字段值,等于最大接收窗口大小与已接收和确认但尚未被应用程序检索的数据量之间的差值。 TCP 接收窗口和 TCP 吞吐量为了优化
TCP 接收窗口自动调节 来自淘豆网m.daumloan.com转载请标明出处.