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