网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

TCP定时器

更新时间:2026年03月27日   作者:spoto   标签(Tag):

TCP使用了多个计时器来确保通信过程中不会出现过长的延迟。这些计时器在解决一些看似不明显的问题时发挥着重要作用。在接下来的章节中,我们将逐一介绍TCP所使用的各个计时器,从而了解它们如何帮助确保数据能够正确地从一端传输到另一端。
TCP的实现中使用了四个计时器。

  • 重传计时器 –为了重新传输丢失的数据段,TCP使用了重传超时时间(RTO)。当TCP发送一个数据段时,计时器开始计时;当收到确认消息后,计时器停止计时。如果计时器超时,那么该数据段将被重新传输。RTO指的是1个往返时间。为了计算重传超时时间,我们首先需要计算出往返时间。
    RTT有三种类型——
    • 测量的RTT值(RTTm)对于某个特定路段来说,往返所需的时间指的是该路段到达目的地并收到确认信号所花费的时间。不过,这里的“确认信号”可能还包括其他相关路段的信号。
    • 平滑后的RTT值 –这是RTTm的加权平均值。RTTm的值可能会发生变化,其波动幅度非常大,因此,单次测量结果无法用来计算RTO。
最初 -> 无值
在第一次测量之后 -> RTTs=RTTm
每次测量之后,RTTs = (1-t)*RTTs + t*RTTm
注意:t=1/8(如果未指定则默认为此值)
  • 偏离的RTT(RTTd) –大多数实现方式并不仅依赖RTT值来做出决策,因此,为了计算出RTO值,还需要计算RTT值的偏差情况。
最初 -> 无值
在第一次测量之后 -> RTTd = RTTm / 2
在每次测量之后,有:RTTd = (1 - k) * RTTd + k * (RTTm - RTTs)
注意:如果未给出具体数值,则默认值为 k=1/4。
  • 持续计时器 –为了处理零窗口大小的死锁情况,TCP使用了一种持久性计时器。 当发送方TCP收到一个窗口大小为0的确认消息时,它会启动一个持久性计时器。 当持久性计时器到期时,发送方TCP会发送一个特殊的段,这个段被称为“探测包”。 这段数据中只包含了1字节的新数据。 它有一个序列号,但这一序列号从来不会被认可;在计算其余数据的序列号时,这一序列号甚至被忽略了。 该探测操作使得接收方TCP重新发送了之前丢失的确认消息。
  • “保持活跃计时器” –“Keepalive定时器”用于防止两个TCP连接之间出现长时间的空闲状态。 如果客户端与服务器建立了一个TCP连接,然后传输了一些数据之后就变得无反应了,那么客户端就会崩溃。 在这种情况下,连接会一直保持开放状态。 因此,需要使用一个保持连接计时器来保持连接的畅通。 每次服务器收到客户端的消息时,都会重置这个计时器。 超时时间通常为2小时。 如果服务器在2小时后仍然无法与客户端建立连接,那么它就会发送一个探测段来尝试重新建立连接。 如果经过10次尝试后仍然没有收到任何回应(每次尝试之间的时间间隔为75秒),那么系统会认为客户端已经断开连接,并终止该连接。
  • 时间等待计时器 –这个计时器在以下情况下会被使用:TCP连接终止在发送了最后一次“ACK”信号以确认第二次关闭连接之后,计时器才会开始计时。
    在TCP连接被关闭之后,那些仍然在网络中传输的数据包仍有可能尝试访问已经关闭的端口。所谓的“静默计时器”就是为了防止刚刚被关闭的端口再次重新打开,从而避免这些最后的数据包能够继续被接收。
    那个安静的计时器通常,该值被设置为最大段生命周期的两倍(与IP头部中的“Time-To-Live”字段的值相同)。这样就能确保所有通往该端口的段都已被丢弃。

注意:TCP定时器在管理数据包的传输过程中起着至关重要的作用,能够确保通信的效率和可靠性。

参考——

TCP定时器 – Que10
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料