5.8.6 TCP可靠传输(二)超时重传机制
超时重传机制是TCP协议保证数据可靠性另外一个非常重要的机制,它的原理是当发出一个数据之后就开启一个定时器,如果在规定的时间之内没有得到发送数据报的ACK的应答就应当从缓存中把数据取出并重新发送出去,一直到数据发送成功为止。影响超时重传机制协议效率的非常重要的参数就是超时重传超时时间(retransmission time out即RTO),如果RTO的值设置的过大,会使得发送端经过较长的时间才能够发现报文确实是丢失了,从而降低连接数据传输的吞吐量。而另一方面如果RTO值设置的过小,发送端尽管可以很快的检测出报文段的丢失,但它有可能将一些延迟稍大的报文段误认为是丢失的报文段,从而造成没有必要的重传,进而浪费网络资源。
一、超时重传机制
超时重传时间RTO计算公式
R T O = R T T + 4 × R T T D RTO = RTT + 4\times RTTD RTO=RTT+4×RTTD
RTT值:指端点间的传输往返时延
RTTD值:传输往返时延的偏差值
为了确定合适的往返时延RTT,在传输层方面是非常困难的一件事,因为TCP的下层是一个因特网的网际互联环境,发送的报文段可能要经过一个高速以太网,但也有可能是多个低速率的广域网,并且数据报所选择的路由还可能随时发生变化,所以TCP采用了一种自适应的算法。
这个算法是:在数据成功传输的情况下,记录每一个报文段发出的时间
以及收到对应的确认报文段的时间
这两个时间的差值就是我们所说的报文段的一个往返时延
将各个报文段的往返时延样本进行加权平均就得到报文段的平均往返时延RTT
每测量一个新的往返时延的样本就按照以下规律进行一次计算平均往返时延
往返时延RTT公式:
R T T n e w = R T T s a m p l e RTTnew = RTTsample RTTnew=RTTsample(第一次测量得到的RTT样本值我们就把它当做往返时延的第一次测量值)
R T T n e w = α × R T T o l d + ( 1 − α ) × R T T s a m p l e RTTnew = \alpha\times RTTold + (1-\alpha) \times RTTsample RTTnew=α×RTTold+(1−α)×RTTsample(第二次以后的测量)
对第二次以后的测量值这其中有两个参数即RTT的累积值(RTTold),当前RTT的样本值(RTTsample),这里我们用一个参数 α \alpha α来进行调节,在公式中 α \alpha α取值在0~1之间,这其中我们能够看出
- 如果 α \alpha α很接近于1,就表示计算出的往返时延RTT和原来累积值的变化差别不大,而对新的往返时延的测量样本对RTT的更新影响并不大。
- 如果 α \alpha α趋近于0,就表示加权计算受新的往返时延的影响较大。
这里典型的 α \alpha α取值是 7 8 \frac{7}{8} 87,也就是说87.5%取决于累积值, 1 8 \frac{1}{8} 81取决于新的测量样本值。
二、示例
例:如果TCP来回路程时间RTT的当前值是32ms,随后应答在40ms时候到来,如果 α = 7 8 \alpha = \frac{7}{8} α=87,那么新的RTT估算值是多少?
分析:我们知道在第二次以后测量是一个累积值的测量,这其中87.5%取决于累积值,而12.5%取决于新的样本值。
计算: R T T n e w = α × R T T o l d + ( 1 − α ) × R T T s a m p l e = 7 8 × 32 + 1 8 × 40 = 33 m s RTTnew = \alpha\times RTTold + (1-\alpha) \times RTTsample = \frac{7}{8} \times 32 + \frac{1}{8} \times 40=33ms RTTnew=α×RTTold+(1−α)×RTTsample=87×32+81×40=33ms文章来源:https://www.toymoban.com/news/detail-534705.html
从以上我们可以看出往返时延的测量实现起来还是比较复杂的,发出的一个报文段如果超时重发的时间到了还没有收到确认,于是又发出了一个报文段,但是后来收到了一个确认报文段,这个时候问题就来了,我们如何判定此报文段是对原来的报文段的确认还是对重传报文段的确认呢?由于重传的报文段与我们原来的报文段是一样的,所以在源站收到确认时没有办法对报文段做出正确判断,根据这些,提出了一个修正的算法,就是在计算平均往返时延时,只要报文段重传了,此时就不采纳它作为往返时延测量的样本值。这样测出的一个平均往返时延和重发时延相对较为准确。文章来源地址https://www.toymoban.com/news/detail-534705.html
到了这里,关于5.8.6 TCP可靠传输(二)超时重传机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!