美文网首页
【tcp】关于tcp 超时重传次数

【tcp】关于tcp 超时重传次数

作者: Bogon | 来源:发表于2021-11-09 00:19 被阅读0次

TCP重传间隔时间和TCP重传次数

一般TCP报文的重传超时时间

TCP重传时间间隔有着多种不同的算法,最常见的就是《TCP/IP详解卷1》中关于超时重传的算法。

具体算法不再赘述,请大家参考《TCP/IP详解卷1》第21章《TCP的超时与重传》。

SYN报文重传间隔时间

在实际情况下,由于SYN报文是TCP连接的第一个报文,如果该报文在传输的过程中丢弃了,那么发送方则无法测量RTT,也就无法根据RTT来计算RTO。

因此,SYN重传的算法就要简单一些,SYN重传时间间隔一般根据系统实现的不同稍有差别,Windows系统一般将第一次重传超时设为3秒,以后每次超时重传时间为上一次的2倍,如下图所示:

报文重传的次数

TCP报文重传的次数也根据系统设置的不同而有区分,有些系统,一个报文只会被重传3次,如果重传三次后还未收到该报文的确认,那么就不再尝试重传,直接reset重置该TCP连接,但有些要求很高的业务应用系统,则会不断的重传被丢弃的报文,以尽最大可能保证业务数据的正常交互。

数据被重发以后若还是收不到应答,则进行再次发送。此时等待确认应答时间会以2倍、4倍的指数函数延长。

此外,数据也不会被无限、反复的重发。达到一定的重发次数之后,如果仍然没有任何确认应答返回,就会判断为网络或者对端主机发生了异常,强制关闭连接。

Linux 的设置

最小重传时间是 200ms

最大重传时间是 120s

重传次数为 15


重传对业务应用的影响

1 保障了业务的可靠性

TCP的重传存在原因就是为了保障TCP的可靠性,正是由于TCP存在重传的机制,那些基于TCP的业务应用在网络交互的过程中,不再担心由于丢包、包损坏等导致的一系列应用问题了。

2 反映网络通讯的状况

由于IP协议的不可靠性和网络系统的复杂性,少量的报文丢失和TCP重传是正常的,但是如果业务交互过程中,存在大量的TCP重传,会严重影响业务系统交互的效率,导致业务系统出现缓慢甚至无响应的情况发生。

一般而言,出现大量TCP重传说明网络通讯的状况非常糟糕,需要站在网络层的角度分析丢包和重传的原因。

在实际的分析过程中,我们如何确认一个TCP报文是重传报文?

在实际的数据交互过程中,重传报文一般具有以下两个特征:

一是TCP交互序列号突然下降;

二是其在TCP报头中的序列号、数据长度、应用数据等参数跟前面某TCP报文一致。

1 序列号突然下降(一般是TCP重传)

在TCP报文传输的过程中,因为其需要不断的交互应用数据,因此,TCP报文的序列号会不断的变大。

正常情况下,TCP序列号不会出现下降的情况,出现序列号下降,一般都是TCP的重传报文导致的。

如下图所示:

在上图中,服务器端交互的TCP报文序列号从24481开始一直处于不断上升的趋势,但是服务器的第六个TCP报文序列号却突然下降为20161,这个情形,基本上可以肯定这第六个TCP报文是前面某个报文的重传报文。

2 根据序列号、长度甚至应用数据等确认是哪一个报文的重传。

在数据交互过程中,一般情况下,TCP重传的报文跟传输中被丢弃的报文在序列号、数据长度、应用字段值上都是一样的,我们可以利用这个特征来确定某个具体的TCP报文是否是前面某个报文的重传。

下图是一个客户端存在重传的数据流图:

在上图中,我们看到客户端第三个报文和第四个报文的序列号(Seq)、下一个序列号(Next Seq)以及载荷长度都是一样的,那么我们可以肯定客户端的第四个报文是客户端第三个报文的重传。

现在很多的网络分析工具的专家诊断系统基本上都可以针对TCP重传直接告警,我们不需要在去深入分析这个过程了,为我们节省了大量的分析时间。

参考

为什么TCP存在重传

https://blog.51cto.com/woniu421/900010

基础篇 | TCP连接的建立和断开受哪些系统配置影响?

https://time.geekbang.org/column/article/284912?utm_source=related_read&utm_medium=article&utm_term=related_read

Linux TCP_RTO_MIN, TCP_RTO_MAX and the tcp_retries2 sysctl

https://pracucci.com/linux-tcp-rto-min-max-and-tcp-retries2.html

聊一聊重传次数

https://perthcharles.github.io/2015/09/07/wiki-tcp-retries

TCP重传机制

https://www.dazhuanlan.com/mofeia/topics/1357902

TCP网络关闭的状态变换时序图

https://coolshell.cn/articles/1484.html

TCP 的那些事儿(上)

https://coolshell.cn/articles/11564.html

TCP 的那些事儿(下)

https://coolshell.cn/articles/11609.html

相关文章

  • 【tcp】关于tcp 超时重传次数

    TCP重传间隔时间和TCP重传次数 一般TCP报文的重传超时时间 TCP重传时间间隔有着多种不同的算法,最常见的就...

  • 网络重传次数

    聊一聊重传次数 听说Linux有两个参数限制超时重传次数 重传超过tcp_retries1会怎样 重传超过tcp_...

  • tcp 重传超时次数

    数据被重发以后若还是收不到应答,则进行再次发送。此时等待确认应答时间会以2倍、4倍的指数函数延长。此外,数据也不会...

  • TCP协议灵魂12问(第八问)

    TCP 的超时重传时间是如何计算的? TCP 具有超时重传机制,即间隔一段时间没有等到数据包的回复时,重传这个数据...

  • 计算机网络以及网络编程面试题(不断补充)

    TCP/IP网络协议栈层次 TCP 和 UDP 应用场景 TCP 和 UDP 不同 为什么TCP是可靠的?超时重传...

  • TCP(II) 超时重传

    查看原文 TCP 提供可靠数据传输服务,为保证传输正确性,TCP 重传其认为已经丢失的包。TCP 有两套重传机制,...

  • TCP中RTT的测量和RTO的计算

    RTO(Retransmission TimeOut)即重传超时时间 TCP超时与重传中一个最重要的部分是对一个给...

  • 设置socket connect超时时间的几种方法

    BSD Linux socket选项TCP_SYNCNT可以控制TCP连接SYN重传次数,默认为0,为0时SYN重...

  • 网络知识点总结

    1、tcp如何保证传输的可靠性 合理分片:将数据分割成最适合tcp发送的数据块超时重传:tcp发送端发送数据后会启...

  • TCP的快速重传机制

    一、快速重传机制 上一篇讲到了TCP 的超时重传,但是超时重传往往会带来许多微妙的问题,比如说: 当一个报文段丢失...

网友评论

      本文标题:【tcp】关于tcp 超时重传次数

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