窗口大小-软件无线电原理与应用第二版
20.4窗口大小由接收方提供的窗口的大小通常可以由接收进程控制,这将影响T C P的性能。 4 . 2 B S D默认设置发送和接受缓冲区的大小为2 0 4 8个字节。在4 . 3 B S D中双方被增加为4 0 9 6个字节。正如我们在本书中迄今为止所看到的例子一样, SunOS 4.1.3、 B S D / 3 8 6和S V R 4仍然使用4 0 9 6字节的默认大小。其他的系统,如Solaris 2.2、4 . 4 B S D和AIX3.2则使用更大的默认缓存大小,如8192或16384等。插口A P I允许进程设置发送和接收缓存的大小。接收缓存的大小是该连接上所能够通告的最大窗口大小。有一些应用程序通过修改插口缓存大小来增加性能。 [Mogul 1993]显示了在改变发送和接收缓存大小(在单向数据流的应用中,如文件传输,只需改变发送方的发送缓存和接收方的接收缓存大小)的情况下,位于以太网上的两个工作站之间进行文件传输时的一些结果。它表明对以太网而言,默认的4 0 9 6字节并不是最理想的大小,将两个缓存增加到1 6 3 8 4个字节可以增加约4 0 %左右的吞吐量。在[ P a p a d o p o u l o s和Parulkar 1993]中也有相似的结果。在2 0 . 7节中,我们将看到在给定通信媒体带宽和两端往返时间的情况下,如何计算最小的缓存大小。一个例子可以使用s o c k程序来控制这些缓存的大小。我们以如下方式调用服务器程序: bsdi % sock -i -s -R6144 5555该命令设置接收缓存为6 1 4 4个字节(- R选项)。接着我们在主机s u n上启动客户程序并使之发送8 1 9 2个字节的数据: sun % sock -i -n1 -w8192 bsdi 5555图2 0 - 7显示了结果。首先注意到的是在报文段2中提供的窗口大小为6 1 4 4字节。由于这是一个较大的窗口,因此客户立即连续发送了6个报文段(4 ~ 9),然后停止。报文段1 0确认了所有的数据(从第1到6 1 4 4字节),但提供的窗口大小却为2 0 4 8,这很可能是接收程序没有机会读取多于2 0 4 8字节的数据。报文段11和1 2完成了客户的数据传输,且最后一个报文段带有F I N标志。报文段1 3包含与报文段1 0相同的确认序号,但通告了一个更大的窗口大小。报文段1 4确认了最后的2 0 4 8字节的数据和F I N,报文段1 5和1 6仅用于通告一个更大的窗口大小。报文段1 7和1 8完成通常的关闭过程。 214使用TCP/IP详解,卷1:协议下载
用户评论