TCP丢失时重发为什么倍增重发等待时间(指数退避)

news/2024/10/18 10:14:33/

TCP丢失时重发为什么倍增重发等待时间(指数退避)?

因为当一个数据包或确认包在网络传输过程中丢失时,TCP会触发重传机制,也就是重传超时RTO(Retransmission Timeout),如果重传的数据包在此丢失,TCP的重传的数据包第一次丢包是默认的超时时间,第二次丢失,那么他就不会保持原来的超时时间,而是倍增(指数退避)重传的等待时间。

**注意:**第一次丢包不是指数倍增,而是默认的等待时间。第二次才会指数退避。

为什么这么设计?

因为他认为第一次可能是网络的暂时性问题(瞬间干扰或短暂拥挤),不一定网络有严重问题。此时重传就可以解决问题

最重要的还是TCP协议设计的想法就是他要的是数据可靠传输也要尽量高效,如果第一次丢高就倍增RTO,可能会造成不必要的延迟,影响传输的效率。

为什么进行倍增重发等待时间

网络堵塞的可能性

丢包的一个常见的原因是网络堵塞,在拥塞状态下,网络可能变得特别不稳定, 继续原来的频率发送数据可能进一步加剧问题的严重性。因为TCp增加重传的等待时间,目的就是给网络流出更多的时间来缓解拥塞。

减少无效流量

因为这样可以让我们发送发在不确定网络状态是否ok,减少发送流量,防止进一步的丢包和拥塞。

避免无效传输

在网络不ok的情况下,减少无效的传输。

指数退避的好处

提高网络的稳定性

通过增加重传的等待时间,可以避免在网络堵塞时候发送方和接收方的大量重传报文,从而稳定整个网络的环境。

提高传输效率

减少不必要的重传,降低网络负载,提高数据传输的整体效率。


http://www.ppmy.cn/news/1517995.html

相关文章

文字转视频的免费软件有哪些?快来看看视频制作新潮流

在旅途中,每一步都充满了惊喜和故事。想象一下,当你穿梭在古老的城市街巷,或者在海边享受温暖的阳光,每一次的停留和每一个微笑,都值得被记录和分享。 现在,通过使用一键成片的视频软件,你不必…

算法的学习笔记—从 1 到 n 整数中 1 出现的次数(牛客JZ43)

😀前言 在编程面试中,求解从 1 到 n 的整数中数字 1 出现的次数是一个常见的挑战。该问题的关键在于如何高效地统计数字 1 出现的次数。本文将详细分析该问题的解题思路,并提供一个高效的 Java 实现。 🏠个人主页:尘觉…

FeignClient-调用流程

调用流程 首先请求会被FeignInvocationHandler 进行拦截,然后dispatch找到应的方法进行调用。 MethodHandler我们看看: 在接口断点会进入下面这个类: 我们可以看到是通过RestTemplage实现的,并且里面有Retryer重试机制。然后方…

MySQL——事务与存储过程(一)事务管理(1)事务的概念

事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全,保证在同一个事务中的操作具有同步性。 现实生活中,人们经常会进行转账操作,转账可以分为两部分来完成,转人和转出,只有这两个部…

【ceph学习】ceph如何进行数据的读写(2)

本章摘要 上文说到,librados/IoctxImpl.cc中调用objecter_op和objecter的op_submit函数,进行op请求的封装、加参和提交。 本文详细介绍相关函数的调用。 osdc中的操作 初始化Op对象,提交请求 设置Op对象的时间,oid&#xff0c…

JavaScript学习文档(10):日期对象、节点操作、 M端事件、JS插件、学生信息表案例

目录 一、日期对象 1、实例化 2、时间对象方法 3、时间戳 (1)时间戳 (2)获取时间戳的三种方式: (3)倒计时效果 二、节点操作 1、DOM 节点 2、 查找节点 3、增加节点 (1&…

C++,拷贝构造 详解

文章目录 1. 概述1.1 拷贝构造函数的定义1.2 拷贝构造函数的特点 参考 1. 概述 拷贝构造,也被称为复制构造或拷贝构造函数,是C中的一种特殊构造函数。其主要作用是在创建一个新对象时,将另一个已存在的同类型对象的值拷贝到新对象中。拷贝构…

04_DOM的diffing算法

OM的diffing算法 一、验证 diffing 算法的存在二、经典面试题:1、React/Vue 中的key 有什么作用?(key 的内部原理是什么?)2、为什么遍历列表时,key 最好不要用 index?1.虚拟 DOM 中 key 的作用&…