1 TCP超时与重传
1.1 引言
TCP提供可靠的运输层.他使用的方法之一就是确认从另一端收到的数据.但数据和确认都有可能会丢失.TCP通过在发送时设置一个定时器来解决这种问题.如果当定时器溢出时还没收到确认,他就重传该数据.对于任何实现而言,关键之处就在于超时和重传的策略,即怎样决定超时间隔和如何确定重传的频率.
TCP管理4个不同的定时器
(1) 重传定时器使用于当希望收到另一端的确认
(2) 坚持定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口
(3) 保活定时器可检测到一个空闲连接的另一端何时崩溃或重启
指数退避:书中检查连续重传之间不同的时间差,它们取整后分别是1、3、6、12、24、48和多个64秒,其中第一次发送后设置的超时时间设置为1.5秒。(2的N次方*1.5秒)
1.2 往返时间测量
计时器的使用
- 一个连接中,有且仅有一个测量定时器被使用。也就是说,如果TCP连续发出3组数据,只有一组数据会被测量。
- ACK数据报不会被测量,原因很简单,没有ACK的ACK回应可以供结束定时器测量。
超时时间的计算是超时的核心部分,TCP要求这个算法能大致估计出当前的网络状况,虽然这确实很困难。要求精确的原因有两个:(1)定时太久会造成网络利用率不高。(2)定时太短会造成多次重传,使得网络阻塞。所以,书中给出了一套经验公式,和其他的保证计时器准确的措施。
RTT(往返时间):指发