TCP快速重传为什么是三次冗余ack

2023-10-31

先理解ACK的基本工作原理,当发送端发送第N-1个包后,接收端答复的ACK序列号实际上跟发送端发送下一个包,也就是第N个包的序列号一致。

         重复ACK是指在接收方收到乱序报文时,所发出的一类TCP报文。TCP使用报文头的序列号和确认号以有效保证数据按照发送的顺序接收和重组。当TCP连接建立以后,握手过程中交换的一个最重要的信息是初始序列号(ISN)。一旦连接双方设定了ISN之后,接下来发送的报文所包含的序列号增加一个数据载荷值。

假设有个主机ISN是5000,发送500字节报文至接收方。一旦报文接收之后,接收端回复一个ACK号为5500的TCP ACK报文,基于以下公式:

Sequence Number In + Bytes of Data Received = Acknowledgment Number Out

按照上述计算结果,返回发送端的确认编号实际上是接收端希望收到的序列号。示例如下图:


下面看为何快速重传是选择3次ACK?

主要的考虑还是要区分包的丢失是由于链路故障还是乱序等其他因素引发。

两次duplicated ACK时很可能是乱序造成的!三次duplicated ACK时很可能是丢包造成

的!四次duplicated ACK更更更可能是丢包造成的!但是这样的响应策略太慢。丢包肯

定会造成三次duplicated ACK!综上是选择收到三个重复确认时窗口减半效果最好,这是

实践经验


在没有fast retransmit / recovery 算法之前,重传依靠发送方的retransmit timeout,就是

在timeout内如果没有接收到对方的ACK,默认包丢了,发送方就重传,包的丢失原因

1)包checksum 出错 2)网络拥塞 3)网络断,包括路由重收敛,但是发送方无法判断

是哪一种情况,于是采用最笨的办法,就是将自己的发送速率减半,即CWND 减为

1/2,这样的方法对2是有效的,可以缓解网络拥塞,3则无所谓,反正网络断了,无论发

快发慢都会被丢;但对于1来说,丢包是因为偶尔的出错引起,一丢包就对半减速不合

理。于是有了fast retransmit 算法,基于在反向还可以接收到ACK,可以认为网络并没

有断,否则也接收不到ACK,如果在timeout 时间内没有接收到> 2 的duplicated ACK,

则概率大事件为乱序,乱序无需重传,接收方会进行排序工作;而如果接收到三个或三

个以上的duplicated ACK,则大概率是丢包,可以逻辑推理,发送方可以接收ACK,则

网络是通的,可能是1、2造成的,先不降速,重传一次,如果接收到正确的ACK,则一

切OK,流速依然(包出错被丢)。而如果依然接收到duplicated ACK,则认为是网络拥

塞造成的,此时降速则比较合理。


知乎优秀回答

https://www.zhihu.com/question/21789252

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TCP快速重传为什么是三次冗余ack 的相关文章

  • 计算机网络-协议栈分层

    1 划分网络层次的优缺点 优点 1 开发人员可以只关注整个结构中的某一层 2 可以很容易用新的实现替换原有层次中的实现 3 可以降低层与层之间的依赖 4 有利于标准化 5 利于各层逻辑的复用 缺点 1 一层可能冗余较低层的功能 例如许多协议
  • SSL与TLS工作原理

    链接 https zhuanlan zhihu com p 36981565 为了保证网络通信的安全性 需要对网络上传递的数据进行加密 现在主流的加密方法就是SSL Secure Socket Layer TLS Transport Lay
  • IP数据报的发送和转发过程

    IP数据报的发送和转发过程 源主机如何知道目的主机是否与自己在同一网络中 同一个网络中的主机可以直接通信 这属于直接交付 不同网络中的主机不能直接通信 需要路由器的中转 这属于间接交付 现假设主机C给主机F发送ip数据报 主机C将自己的IP
  • tcp三次握手和四次挥手的过程

    TCP是面向连接的 无论哪一方向另一方发送数据之前 都必须先在双方之间建立一条连接 在TCP IP协议中 TCP 协议提供可靠的连接服务 连接是通过三次握手进行初始化的 三次握手的目的是同步连接双方的序列号和确认号 并交换 TCP窗口大小信
  • 计算机网络——数字数据的数字编码

    计算机网络 数字数据的数字编码 数字数据的数字编码就是如何把数字数据用物理信号的波形表示 即用高低电平表示二进制 1 不归零码 正电平代表1 负电平代表0 2 归零码 正脉冲代表1 负脉冲代表0 3 曼彻斯特编码 位周期中心的上跳代表0 周
  • 手撕计算机网络——应用层(四):P2P

    前言 进入应用层学习也有了一段时间了 接下来的这篇文章中小荔枝会将应用层P2P结构体系于我们客户 端系统体系在分发文件中的机理进行整理 希望今天能结束应用层学习哈哈哈 运输层我来啦 目录 前言 一 P2P的自拓展性 二 BitTorrent
  • 【计算机网络13】网络安全

    文章目录 1 HTTP协议的安全问题 2 单向散列函数 One way hash function 2 1 单向散列函数的特点 2 2 常见的几种单向散列函数 2 3 防止数据被篡改 2 4 几个网站 3 对称加密 Symmetric Cr
  • 图片详解TCP连接的三次握手,四次断开基本原理

    图片详解TCP连接的三次握手 四次断开 作者 林子 Blog http blog csdn net u013011841 时间 2014年8月 出处 http blog csdn net u013011841 article details
  • 计算机网络4--Internet结构

    本页内容 1 基本结构 2 结构图解 3 层次结构图解 1 基本结构 a 端系统通过接入ISP access ISPs 连接到Internet b 接入ISP必须进一步互连 保证任意两个主机可以互相发送分组 c 构成复杂的网络互连的网络 2
  • 计算机网络 网络层——IP数据报 详记

    IP 数据报的格式 一个 IP 数据报由首部和数据两部分组成 首部的前一部分是固定长度 共 20 字节 是所有 IP 数据报必须具有的 在首部的固定部分的后面是一些可选字段 其长度是可变的 IP数据报首部的固定部分中的各字段 版本 占4位
  • LWIP学习笔记(2)---IP协议

    IP首部 最高位在左边记为 bit 最低位在右边 记为31 bit 传输顺序 先0 7bit 在8 15bit 然后16 13 最后24 31bit 这种方式称为 big endian 也叫网络字节序 版本 ipv4 或 6 ipv6 首部
  • 几率大的网络安全面试题(含答案)

    其他面试题类型汇总 Java校招极大几率出的面试题 含答案 汇总 几率大的网络安全面试题 含答案 几率大的多线程面试题 含答案 几率大的源码底层原理 杂食面试题 含答案 几率大的Redis面试题 含答案 几率大的linux命令面试题 含答案
  • 计算机网络重点知识(期末考研复习)

    点个关注 更多精彩持续更新为考研和期末助力 一起加油 计算机网络 第一章 思维导图 概述 计算机网络的主要性能指标 计算机网络的体系结构 OSI RM模型 TCP IP 两种模型对比 第二章 思维导图 数据通信主要指标与信道极限容量 多路通
  • 计算机网络 | 物理层下 传输媒介、信道复用技术,带宽接入技术

    文章目录 3 物理层下面的传输媒介 3 1 导引型传输媒介 3 2 非导引型传输媒介 4 信道复用技术 5 数字传输系统 5 1 旧的数字系统 5 2 新数字系统 6 带宽接入技
  • 计算机网络(二)| 物理层上 | 数据通信基础知识 调制 频率范围 信噪比

    文章目录 1 物理层基本概念 2 数据通信基础知识 2 1 数据通信基本概念 2 2 信道基本概念 2 2 1 基带调制 编码 方式 2 2 2 带通调制方式 2 3 信道的极
  • 计算机网络基础——常用的中英文网络述语大全,强烈建议收藏

    系统网络体系结构 System Network Architecture SNA 国际标准化组织 International Organization for Standardization ISO 开放系统互连基本参考模型 Open Sy
  • 计算机网络基础——光模块(Optical Modules)基础知识介绍

    一 光模块的工作原理 光模块 Optical Modules 的工作原理是将电信号转换为光信号 或者将光信号转换为电信号 实现光纤通信中的光电转换和电光转换功能 具体来说 光模块主要由光电子器件 光发射器和光接收器 功能电路和光接口等部分组
  • 计算机网络 网络层下 | IPv6 路由选择协议,P多播,虚拟专用网络VPN,MPLS多协议标签

    文章目录 5 IPv6 5 1 组成 5 2 IPv6地址 5 3 从IPv4向IPv6过渡 5 3 1 双协议栈 5 3 2 隧道技术 6 因特网的
  • 2023 全球网络黑客常用攻击方法 Top10_top10攻击

    近几年 借助互联网产业发展的东风 网络黑产也迎来更加巅峰的状态 不论是从攻击效率 组织规模 亦或是收益变现能力 都在一天天变的成熟完善 根据艾瑞咨询 2020 年发布的 现代网络诈骗分析报告 全国黑产从业者已经超过 40 万人 依托其从事网
  • 【网络安全】00后程序员,找 Bug 赚了 6,700,000元!他是怎么挖洞致富的?

    19岁 很多人正是上大学 仍伸手向父母要生活费的年纪 可有一位 00 后阿根廷少年 Santiago Lopez 靠自学成才 赚取了 100 万美元 折合人民币约 670 万元 的 Bug 赏金 成为世界上第一个白帽黑客的百万富翁 美元 少

随机推荐

  • 安防智能视频平台EasyNVR无法接入EasyNVS并报错Login error的排查与解决

    在很多项目现场中 EasyNVR受到网络环境的多方面限制 所以我们推出了EasyNVS云管理平台 可以利用它突破用户现场网络的限制 在外网条件下获取内网EasyNVR的所有视频能力 并对EasyNVR进行统一的管理 在前期我们也和大家分享过
  • 从 Java 到 Go:使用 Go 语言进行数据可视化和报表生成

    在数据分析和报表生成领域 Java 始终保持着强大的生态系统 然而 随着 Go 语言的快速发展和普及 越来越多的开发者开始考虑使用 Go 语言来替换 Java 在这个领域的应用 本文将为 Java 开发者提供一个从 Java 到 Go 过渡
  • ldo低压差线性稳压器电路解析

    1 ldo拓扑 2 原理分析 主要分为4个部分 取样电路 基准电压 误差放大电路 晶体管调整电路 当Vout下降时 反馈回路中的Vfb也会下降 误差放大器输出端Vg就会增加 随着Vg增加 Ids电流也增加 最终使得Vout又恢复到指定电平
  • jQuery快速开发

    1 jQuery概述 简单理解 就是一个快速 简洁的JavaScript库 为了快速方便的操作DOM 对原生JavaScript进行封装存放 2 jQuery基本使用 2 1 DOM对象和jQuery对象 用原生JS获取来的对象就是DOM对
  • MDETR-link

    MDETR论文阅读 MDETR Modulated Detection for End to End Multi Modal Understanding NYU Facebook 译自Ryan1216 导语 在过去的很长一段时间中 图像目标
  • C++ 抛出并捕获多个异常

    Project20161020 cpp 定义控制台应用程序的入口点 include stdafx h include
  • 关于三级指针

    include
  • WIN11安装WSL2到其他盘及0x80370120错误解决

    最近尝试着使用WSL2运行虚拟机 写一下安装步骤 及一些问题的解决 第一步 以管理员启动powershell 第二步 使能虚拟化平台 dism exe online enable feature featurename VirtualMac
  • linux服务器崩,linux – 我的服务器崩溃了.这是日志.什么可能发生?

    当事情崩溃时 这是 var messages的内容 Dec 21 19 47 45 localhost kernel cut here Dec 21 19 47 45 localhost kernel WARNING at net sche
  • Transformers从零到精通教程——Model

    文章目录 1 在线加载 2 模型下载 3 离线加载 4 模型加载参数 5 模型调用 5 1不带Model Head的模型调用 5 2带Model Head的模型调用 from transformers import AutoConfig A
  • 插入u盘后显示驱动有问题,应该如何修复&文件太大无法拷贝到u盘

    1 首先将U盘插到别的电脑试一下 确定不是接口问题 2 打开cmd命令窗口 输入chkdsk h f 其中h表示的就是你的u盘 3 进行usb接口驱动更新 右键开始菜单 设备管理器 通行串行总线控制器 右键 interl 可扩展 更新驱动程
  • C++:统计小写字母个数

    题目描述 输入一行字符 统计出其中小写字母的个数 输入 一行字符串 总长度不超过255 输出 输出为1行 输出字符串里面小写字母的个数 样例输入 Copy Peking University is set up at 1898 样例输出 C
  • pyqt 万能简易模板(二)

    本文将介绍一些pyqt5基本使用技巧 不借助Qtdesigner 而是全部用代码编写 将实现页面布局 窗口自适应 字体自适应等功能 一般的简易工程均可使用 简单高效 对于pyqt5的一些基本技巧 本文内容基本够用 可以快速实现自己想要的界面
  • 农村有什么适合农村人的小本创业项目?

    近些年新农村的快速发展趋势 农村是销售市场室内空间发展趋势愈来愈宽阔 很多地域发生了一些农村妇女创业的创业人 传统式买卖发展趋势情况近几年来一直走下坡 那麼在农村有什么适合农村人的小本创业项目 农村人的发展趋势在未来愈来愈占上风 比较之下
  • 理解机器学习/深度学习的正则化Regularization概念

    通过防止过拟合来优化预测模型 目录 前言 正文 L2正则化或岭回归 这是如何实现的 改变 值所带来的影响 如何选择lambda的值 多维数据集 L1 Regularization or LASSO regression 改变lambda的效
  • Source Insight 4.0首次安装提示unable to open or create...解决方案

    打开注册表编辑器 windows r 打开运行窗口 输入 regedit enter确认 编辑注册表 一 找到这个文件夹计算机 HKEY CURRENT USER Software Source Dynamics Source Insigh
  • 「长沙 · 中国1024程序员节」来了!

    从资深院士到行业元老再到领域大拿 重磅嘉宾 掌门云集 5 代技术代表人物岳麓对话 9 大操作系统掌门人星城聚首 10 场热门技术分论坛 峰会 覆盖开源技术 操作系统 区块链 黑客松等 100 开源技术英雄年度会面 还有众多创新互动体验 体验
  • 前端 字体样式

    字体样式
  • U3D批处理的静态与动态

    在屏幕上渲染物体 引擎需要发出一个绘制调用来访问图形API 每个绘制调用需要进行大量的工作来访问图形API 从而导致了CPU方面显著的性能开销 Unity在运行时可以将一些物体进行合并 从而用一个绘制调用来渲染他们 这一操作 我们称之为 批
  • TCP快速重传为什么是三次冗余ack

    先理解ACK的基本工作原理 当发送端发送第N 1个包后 接收端答复的ACK序列号实际上跟发送端发送下一个包 也就是第N个包的序列号一致 重复ACK是指在接收方收到乱序报文时 所发出的一类TCP报文 TCP使用报文头的序列号和确认号以有效保证