TCP 实现可靠传输的⽅式之⼀,是通过序列号与确认应答。

在 TCP 中,当发送端的数据到达接收主机时,接收端主机会返回⼀个确认应答消息,表示已收到消息。


1、超时重传
重传机制的其中⼀个⽅式,就是在发送数据时,设定⼀个定时器,当超过指定的时间后,没有收到对⽅的 ACK确认应答报⽂,就会重传该数据,也就是我们常说的超时重传。

TCP 会在以下两种情况发⽣超时重传:
1.数据包丢失
2.确认应答丢失

超时时间应该设置为多少呢?
1.当超时时间较⼤时,重发就慢,丢了⽼半天才重传,没有效率,性能差;
2.当超时时间 较⼩时,会导致可能并没有丢就重发,于是重传的就快,会增加⽹络拥塞,导致更多的超时,更多的超时导致更多的重传。

根据上述的两种情况,我们可以得知,超时重传时间 RTO 的值应该略⼤于报⽂往返 RTT 的值。


2、快速重传

快速重传(Fast Retransmit)机制,它不以时间为驱动,⽽是以数据驱动重传。

快速重传的⼯作⽅式是当收到三个相同的 ACK 报⽂时,会在定时器过期之前,重传丢失的报⽂段。

快速重传机制只解决了⼀个问题,就是超时时间的问题,但是它依然⾯临着另外⼀个问题。就是重传的时候,是重传之前的⼀个,还是重传所有的问题。

为了解决不知道该重传哪些 TCP 报⽂,于是就有 SACK ⽅法。


3、SACK 方法

SACK ( Selective Acknowledgment 选择性确认):这种⽅式需要在 TCP 头部「选项」字段⾥加⼀个 SACK 的东⻄,它可以将缓存的地图发送给发送⽅,这样发送⽅就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。


4、Duplicate SACK

其主要使⽤了 SACK 来告诉「发送方」有哪些数据被重复接收了。

(1)情形1:ACK 丢包

1.「接收⽅」发给「发送⽅」的两个 ACK 确认应答都丢失了,所以发送⽅超时后,重传第⼀个数据包(3000 ~3499)

2.于是「接收⽅」发现数据是重复收到的,于是回了⼀个 SACK = 3000~3500,告诉「发送⽅」 3000~3500的数据早已被接收了,因为 ACK 都到了 4000 了,已经意味着 4000 之前的所有数据都已收到,所以这个SACK 就代表着 D-SACK 。

3.这样「发送⽅」就知道了,数据没有丢,是「接收⽅」的 ACK 确认报⽂丢了。

(2)情形2:网络延时

1.数据包被⽹络延迟了,导致「发送⽅」没有收到 Ack 的确认报⽂然后后⾯报⽂到达的三个相同的 ACK 确认报⽂,就触发了快速重传机制,但是在重传后,被延迟的数据包⼜到了「接收⽅」;

2.所以「接收⽅」回了⼀个 SACK,因为 ACK 已经到了 ,所以这个 SACK 是 D-SACK,表示收到了重复的包。

3.这样发送⽅就知道快速重传触发的原因不是发出去的包丢了,也不是因为回应的 ACK 包丢了,⽽是因为⽹络延迟了。

TCP重传机制有哪些?相关推荐

  1. (七)深入浅出TCPIP之深入浅出TCPIP之TCP重传机制

    目录 TCP重传机制 超时重传机制 快速重传机制 专栏其他文章: 理论篇: (一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上) (三 ...

  2. 利用TCP重传机制来玩端口敲门服务

    TCP无法在连接建立之前进行认证,对于无连接的UDP而言,或者也将不能. TCP有fastopen机制,但并不好用,本文的想法就是基于fastopen的,让第一个SYN包携带数据,然而又不能让它到达T ...

  3. 互联网协议 — TCP — 重传机制(可靠传输保障)

    目录 文章目录 目录 TCP 的重传机制(可靠性保障) 超时重传 快速重传 SACK 方法 Duplicate SACK ACK 丢包场景 网络延时场景 TCP 的重传机制(可靠性保障) 常见的重传机 ...

  4. tcp分包传图片 如何还原_技术控丨超详细解析TCP重传机制

    作者:Zhang_Jiawen : 来自:Dell技术社区 TCP 的主要任务是很简单:打包和发送数据.TCP 与其他协议的不同之处在于使用滑动窗口来管理基本数据收发过程,同时确保数据流的有效及可靠传 ...

  5. TCP/IP协议栈:TCP超时重传机制

    目录 基础概念 重传超时时间RTO RTO的设定 连接往返时间RTT RTT的计算 Karn算法 往返时间测量 重传 拥塞避免算法 快速重传和快速恢复算法 重新分组 网络数据包丢失,重传和重复确认 是 ...

  6. TCP重传与超时机制:解锁网络性能之秘

    目录标题 一.TCP重传(TCP Retransmission) 1.1 重传原理与机制(Retransmission Principles and Mechanisms) 二.TCP超时(TCP T ...

  7. 第10课 TCP重传技术的研究

    注:此文章为学习B站姜晔老师的<网络数据分析从入门到精通>课程笔记. 1.TCP数据包重传的基本原理 (1)TCP重传机制的必要性 当基于TCP的网络传输出现错误时,最基本的错误恢复方式就 ...

  8. TCP超时与重传机制与拥塞避免

    TCP超时与重传机制 TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制. 基本原理:在发送一个数据之后,就开启一个定时器,若是 ...

  9. 【计算机网络】传输层 : TCP 可靠传输 ( 可靠传输机制 | 快速重传机制 )

    文章目录 一.TCP 可靠传输 二.TCP 可靠传输机制 三.TCP 快速重传 机制 一.TCP 可靠传输 可靠性 : 保证 接收方进程 从 TCP 缓冲区 中读取的数据 与 发送方进程 发送的数据 ...

最新文章

  1. 主成分分析(Principle Component Analysis)PCA的核心思想是什么?PCA算法的优缺点?增量PCA模型, 随机PCA, 模型、 核化PCA分别是什么?使用时如何选择?
  2. 京东物联网战略大升级|与华为合作,疯狂发布新品,“养鱼”的京东正在物联网赛道上花式秀技术...
  3. bitcoin cash的地址格式 cash addr 简介
  4. grafana 安装配置
  5. pycharm如何标记代码?创建代码标签?创建数字标签?收藏代码标签
  6. Android 省份城市搜索,android - 非常不错的 城市省份的选择组件: citypicker
  7. unity ppr_智能自动PPR更改事件策略
  8. 【英语学习】【WOTD】regale 释义/词源/示例
  9. mysql解压rar至指定文件夹_PHP解压ZIP文件到指定文件夹的方法
  10. 5V升压8.4V芯片电路图,5V充电7.4V电池
  11. Scrum master成长笔记:如何为Scrum团队设定愿景目标?
  12. PHP ‘Array and string offset access syntax with curly braces is deprecated’ 错误的原因和解决办法...
  13. 【iphone】开发者传授APP开发,审核,发布流程!
  14. 红黑树详解三:红黑树的删除
  15. 无处不在的内存泄漏-苹果BUG?
  16. java支持scss_Java的SASS实现?
  17. Arrays中的asList注意的点以及解决方案
  18. SF图像滤镜/美颜/美妆算法详解与实战
  19. 太阳能路灯实际功率怎么计算?
  20. [carla入门教程]-6 小项目:基于carla-ros-bridge构建一个小型比赛赛道

热门文章

  1. 文字超出显示... css
  2. 屏幕尺寸,分辨率,像素,PPI之间到底什么关系?
  3. 鸿蒙能成为世界第三的操作系统吗?
  4. ColorBox 演示和说明/API
  5. 甲骨文所见商代官职表
  6. 我们正在酝酿什么?3CX 未来计划
  7. 使用3CX Update 4 Alpha版本轻松保护您的备份和录音文件
  8. SEO阅读笔记四(关键字)
  9. java 日历_Java实现的日历功能完整示例
  10. WiFi 万能钥匙的「破解原理」是啥