美文网首页
TCP中的计时器你都了解吗?

TCP中的计时器你都了解吗?

作者: 时间煮菜 | 来源:发表于2020-03-22 20:53 被阅读0次

最近复习计算机网络,发现TCP协议中的几个计时器不是很了解,写一篇文章供自己查阅理解

TCP中有四种计时器(Timer),分别为:

  1. 重传计时器:Retransmission Timer
  2. 坚持计时器:Persistent Timer
  3. 保活计时器:Keeplive Timer
  4. 时间等待计时器:Timer_Wait Timer

重传计时器(Retransmission Timer)

TCP的可靠传输是通过带确认的重传机制实现的。在滑动窗口中,接受窗口会在连续收到的包的最后一个序列发送一个ACK,但是在发生网络拥塞的时候,数据包和ACK有可能丢失。TCP为了防止这种情况发生,规定在重传的“时间片”到了以后。如果还没有收到客户端的ACK,就重发此包,以免陷入无限长的等待,也就是“死锁”状态中

  • 目的:为了控制丢失的报文段或者丢弃的报文段。这段时间为对报文段的等待确认时间。

  • 创建时间:在TCP发送报文段时,会创建对次特定报文段的重传计时器。

  • 可能发生的两种情况:

      1. 在截止时间(通常为60秒)到之前,已经收到了对此特定报文段的确认,则撤销计时器;
      1. 在截止时间到了,但未收到对此特定报文段的确认,则重传报文段,并且将计时器复位。
  • 重传时间:2*RTT(Round Trip Time,为往返时间)通常是设置为2小时

坚持计时器(Persistent Timer)

在滑动窗口技术中,如果接收端的接受窗口满了,就会告诉发送端接受窗口满了,停止发送,这个时候,发送端和接收端的窗口都是置为0,这个状态称为“零窗口”状态。直到接受窗口收到了非零窗口大小的通知,但是这个通知有可能会丢失,如果丢失了,发送端会认为自己发送了调整接受窗口的通知,就等待接收端发来确认,两者由会永远等待对方。

  • 解决方案:为了解决零窗口问题引起的死锁问题,TCP为每一个连接设置了坚持计时器。

  • 目的:主要解决零窗口大小通知可能导致的死锁问题

  • 工作原理:当发送端TCP收到接收端发来的零窗口通知时,就会启动坚持计时器。当计时器的期限到达时,发送端就会主动发送一个叫做探测报文段的特殊的报文段,这个报文段只有一个字节的数据。测报文段有一个序号,但它的序号永远不需要确认;甚至在计算机对其他部分的数据的确认时该序号也被忽略。探测报文段提醒接受TCP:确认已丢失,必须重传

  • 坚持计时器值的设置:设置为重传时间的值。但如果没有收到接收端的响应,则会发送另一个探测报文段,并将计时器的值加倍并复位,直到大于门限值(一般为60秒)。在此之后,发送端会每隔60秒发送一个探测报文段,直到窗口重新打开。

保活计时器(Keeplive Timer)

如果客户打开了到服务器的连接,传送了一些数据,然后就保持静默了。也许这个客户出故障了。在这种情况下,这个连接将永远的处理打开状态。这个时候就要用到保活计时器

  • 目的:主要是为了防止两个TCP连接出现长时间的空闲。

  • 工作原理:每当服务器端收到客户端的数据时,都将保活计时器重新设置(通常设置为2小时)。过了2小时后,服务器端如果没有收到客户端的数据,会发送探测报文段给客户端,并且每隔75秒发送一个,当连续发送10次以后,仍没有收到对端的来信,则服务器端认为客户端出现故障,并会终止连接

时间等待计时器(Timer_Wait Timer)

时间等待计时器是在四次挥手的时候使用的。
在第四次挥手的时候,客户端还要等待2MSL(MSL=maxinum segment lifetime最长报文生存时间,2MSL就是两倍的MSL)才能真正的关闭连接。

TCP的四次挥手
  • MSL(Maximum Segment Lifetime)即报文段最大生存时间

  • 等待2MAL时间的目的:如果服务器端没有收到最后一个ACK字段,则会在超时后重发第三次挥手的FIN字段,主动关闭方接到重传的FIN字段会重新发送ACK。

  • 处在TIME_WAIT状态的两端端口都不能使用,等到2MSL时间结束后才能继续使用。

  • 当连接处于2MSL等待阶段时,有两个好处:一是任何迟到的报文段将会被丢弃。二是会有更大的机会让丢失的ACK字段再次被发送出去,让“四次挥手”更加可靠。

  • 该状态设计在主动关闭方的理由:由主动关闭方发送最后一次ACK字段;只要由一方保持TIME_WAIT(时间等待)状态,就能起到避免连接在2MSL内重新建立,不需要双方都有

相关文章

  • TCP中的计时器你都了解吗?

    最近复习计算机网络,发现TCP协议中的几个计时器不是很了解,写一篇文章供自己查阅理解 TCP中有四种计时器(Tim...

  • wireshark学习笔记(五)——TCP重传技术

    TCP重传的原理 在TCP重传的理论中,重传计时器是用于决定是否有必要进行数据包重传的一个主要机制。重传计时器维护...

  • TCP/IP协议

    如果面试官问你,你了解TCP/IP的协议吗,你知道TCP/IP 和UDP/IP的差异吗?我想你可以这么回答 首先,...

  • TCP的4个计时器

    大多数TCP至少实现使用4个计时器:重传计时器,持续计时器,保活计时器,TIME_WAIT计时器 1.重传计时器:...

  • TCP-keepalive:学习随手笔记

    TCP 自己实现的一种检测心跳情况的机制。 基于TCP打开的链接,会伴随一些计时器(timer),有些计时器是用来...

  • 计时器,你真的了解吗?

    顾名思义,计时器是用来计时的,它的功能不仅仅是如此。 计时也可以细分为正计时和倒计时。同时, 计时器也可以用来表示...

  • 5月24日到5月31日面试总结

    (1)es6你了解哪些(2)css3的新特性(3)浏览器缓存你了解吗(4)promise(5) TCP/IP(6...

  • TCP一文

    TCP 为了提供可靠的数据传输,TCP依赖很多底层原理,包括:错误检测,重传,累计确认,计时器,和头部域序号和确认...

  • TCP与UDP的区别

    一、TCP/IP 模型 在介绍TCP和UDP协议之前,有必要先了解下TCP/IP模型,TCP/IP中的两个具有代表...

  • 装修中的这些名词你都了解吗?

    很多业主在装修订门的时候,会发现在报价单里边会有入户门套或者是哑口套这些名词,有的业主就搞不清门套还需要单独买吗?...

网友评论

      本文标题:TCP中的计时器你都了解吗?

      本文链接:https://www.haomeiwen.com/subject/yjzmyhtx.html