tcp协议实现重发的机制

尽量具体点。。。谢谢啦。。
2025-12-17 13:20:53
推荐回答(1个)
回答1:

重传机制是tcp最重要和最复杂的问题之一
TCP每发送一个报文段,就对这个报文段设置一个计时器,只要计时器设置的重传时间到了还没有收到确认,就要重传这一报文段。
tcp采用自适应算法,就是记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。这两个时间差就是报文段的往返时延rtt,把各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延。每测量到一个新的rtt样本,就按下试重新计算一次平均rtt:
平均rtt=a*(旧rtt)+(1-a)*(新rtt样本) 0《=a<1; a 典型值为7/8

计时器设置的超时重传时间rto应略大于上面的平均往返时延rtt
即 rto=b*rtt
tcp原先的标准推荐吧b取2

由于如果发出一个tcp报文段1后重传时间到后在重新发送报文段2 如果收到确认报文段ACK 我们将无法判断是对报文段1 的确认还是2的确认(报文段1和重传报文段2是完全一样的) 因此Karn提出了一个算法:在计算平均rtt时,只要报文段重传了,就不采取七往返时延样本。这样得出的平均rtt和重传时间就较准确 但又因为这样将无法更新重传时间,所以要对Karn算法进行修正:报文段每重传一次,就将重传时间增大一些
新的重传时间=r*旧的重传时间 r的典型值为2