每个发送的TCP数据包是否有一个重传定时器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每个发送的TCP数据包是否有一个重传定时器?相关的知识,希望对你有一定的参考价值。
我有一个关于TCP的重传定时器的问题。我已经阅读了很多关于TCP拥塞控制的文章,博客条目和其他内容,当然我遇到了重传定时器。 也许这是一个愚蠢的问题,但有时会提到,对于每个发送的段,启动定时器,而在其他地方,则表示为每个发送的段重置定时器。 那么每个发送的段是否有一个重传定时器,因此有多个定时器和发送的段,或者只有一个重传定时器?
答案
下面的行来自“TCPIP Illustrated,第1卷”,因此似乎只有一个计时器存在,新的计时器取代旧计时器。
一旦发送TCP基于有效RTT的时变值的测量建立其RTO,每当它发送段时,它确保适当地设置重传定时器。当设置重传定时器时,记录所谓的定时段的序列号,如果及时接收到ACK,则取消重传定时器。下一次发送方发出包含数据的数据包时,会设置新的重新传输计时器,取消旧计时器,并记录新的序列号。因此,发送TCP连续地设置和取消每个连接的一个重传定时器;如果没有数据丢失,则重传计时器不会过期
另一答案
通常(个别实现当然可以做非典型的事情)单个重传定时器,并且当另一方确认新数据时它被重置。从发送数据到确认数据的时间用于更新RTT(往返时间)。
请记住,TCP基于序列号而不是数据包运行,这是累积确认的工作方式。实现甚至不需要记录流的分段方式。
以上是关于每个发送的TCP数据包是否有一个重传定时器?的主要内容,如果未能解决你的问题,请参考以下文章