欢迎来到天天文库
浏览记录
ID:37324220
大小:696.01 KB
页数:19页
时间:2019-05-21
《TCPIP第二十一章TCP的超时与重传》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^下载第21章TCP的超时与重传21.1引言TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。如果当定时器溢出时还没有收到确认,它就重传该数据。对任何实现而言,关键之处就在于超时和重传的策略,即怎样决定超时间隔和如何确定重传的频率。我们已经看到过两个超时和重传的例子:(1)在6.5节的ICMP端口不能到达的例子中,看到TFTP客户使用UDP实现了一个简单的超时和重传机制:假定5秒是一
2、个适当的时间间隔,并每隔5秒进行重传;(2)在向一个不存在的主机发送ARP的例子中(第4.5节),我们看到当TCP试图建立连接的时候,在每个重传之间使用一个较长的时延来重传SYN。对每个连接,TCP管理4个不同的定时器。1)重传定时器使用于当希望收到另一端的确认。在本章我们将详细讨论这个定时器以及一些相关的问题,如拥塞避免。2)坚持(persist)定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。第22章将讨论这个问题。3)保活(keepalive)定时器可检测到一个空闲连接的另一端何时崩溃或重启。第23章将描述这个定时器。4)2MSL定时器测量一
3、个连接处于TIME_WAIT状态的时间。我们在18.6节对该状态进行了介绍。本章以一个简单的TCP超时和重传的例子开始,然后转向一个更复杂的例子。该例子可以使我们观察到TCP时钟管理的所有细节。可以看到TCP的典型实现是怎样测量TCP报文段的往返时间以及TCP如何使用这些测量结果来为下一个将要传输的报文段建立重传超时时间。接着我们将研究TCP的拥塞避免—当分组丢失时TCP所采取的动作—并提供一个分组丢失的实际例子,我们还将介绍较新的快速重传和快速恢复算法,并介绍该算法如何使TCP检测分组丢失比等待时钟超时更快。21.2超时与重传的简单例子首先观察TCP所使用的重
4、传机制,我们将建立一个连接,发送一些分组来证明一切正常,然后拔掉电缆,发送更多的数据,再观察TCP的行为。正常发送本行在发送本行前断连9分钟后TCP放弃时输出该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^第21章TCP的超时与重传使用227下载图21-1表示的是tcpdump的输出结果(已经去掉了bsdi设置的服务类型信息)。图21-1TCP超时和重传的简单例子第1、2和3行表示正常的TCP连接建立的过程,第4行是“hello,world”(12个字符加上回车和换行)的传输过程,第5行是其确认。接着我们从svr4拔掉了
5、以太网电缆,第6行表示“andhi”将被发送。第7~18行是这个报文段的12次重传过程,而第19行则是发送方的TCP最终放弃并发送一个复位信号的过程。现在检查连续重传之间不同的时间差,它们取整后分别为1、3、6、12、24、48和多个64秒。在本章的后面,我们将看到当第一次发送后所设置的超时时间实际上为1.5秒(它在首次发送后的1.0136秒而不是精确的1.5秒后,发生的原因我们已在图18-7中进行了解释),此后该时间在每次重传时增加1倍并直至64秒。这个倍乘关系被称为“指数退避(exponentialbackoff)”。可以将该例子与6.5节中的TFTP例子比
6、较,在那里每次重传总是在前一次的5秒后发生。首次分组传输(第6行,24.480秒)与复位信号传输(第19行,566.488秒)之间的时间差约为9分钟,该时间在目前的TCP实现中是不可变的。对于大多数实现而言,这个总时间是不可调整的。Solaris2.2允许管理者改变这个时间(E.4节中的tcp_ip_abort_interval变量),且其默认值为2分钟,而不是最常用的9分钟。21.3往返时间测量TCP超时与重传中最重要的部分就是对一个给定连接的往返时间(RTT)的测量。由于路由器和网络流量均会变化,因此我们认为这个时间可能经常会发生变化,TCP应该跟踪这些变化
7、并相应地改变其超时时间。首先TCP必须测量在发送一个带有特别序号的字节和接收到包含该字节的确认之间的RTT。在上一章中,我们曾提到在数据报文段和ACK之间通常并没有一一对应的关系。在图该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^228使用TCP/IP详解,卷1:协议下载20.1中,这意味着发送方可以测量到的一个RTT,是在发送报文段4(第1~1024字节)和接收报文段7(对1~1024字节的ACK)之间的时间,用M表示所测量到的RTT。最初的TCP规范使TCP使用低通过滤器来更新一个被平滑的RTT估计器(记为O)。R
8、←R+(1-)M这里的是
此文档下载收益归作者所有