以太网 TCP协议交互过程中出现丢包时的解决机制,超时重传、快速重传、SACK与DSACK
2.7.3 以太网 TCP协议(TCP交互过程中出现丢包时的解决机制-列举部分)
参考:CSDN_TCP的重传机制_博主.Pr Young,对描述进行了整理与结合个人的理解进行编写。
一、超时重传机制
在发送数据时,设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据。
当数据包丢失或确认应答ACK丢失之后,将发生超时重传。
二、快速重传机制
- 当多次收到同样的ACK置位TCP报文,将根据ACK置位报文中的ack序号信息进行重传相应的数据。
- 发送端收到了三个 Ack = 2 的确认,知道了 Seq2 还没有收到,就会重传Seq2
- 最后,收到了 Seq2,此时因为 Seq3,Seq4,Seq5 都收到了,于是 Ack 回 6
三、SACK(选择性确认)机制
- SACK( Selective Acknowledgment )选择性确认
- 与快速重传机制有一定的相似性,SACK中可连续接收发来的报文,SACK用于表示已经接收的报文,ACK表示待接收的报文。
- ACK到SACK之间就是需要进行重发的数据范围。
四、Duplicate SACK
工作方式与SACK一样,主要是针对ack丢失的情况和网络延时的情况,SACK有不同的表示方式。
Duplicate SACK又称 D-SACK,其主要使用了 SACK 来告诉「发送方」有哪些数据被重复接收了。
解释图中表示内容:
接收方发给发送方的两个 ACK 确认应答都丢失了。第一个包的定时器到了并没有收到接收方回复的ACK确认,将重传第一个数据包(3000 ~ 3499)。
好巧不巧,这次重传的数据回复的ACK终于正常被发送方收到,但ACK内容是:
ACK=4000、SACK=3000~3499
,意为成功接收了前面的报文,期待下一个数据包编号是4000开始,但收到了重复的数据:3000~3500。发送方根据回复的ACK、SACK知道发送的数据没有丢,只是接收方的 ACK 确认报文丢了。
以太网 TCP协议交互过程中出现丢包时的解决机制,超时重传、快速重传、SACK与DSACK相关推荐
- udp丢包原因和解决
一.主要丢包原因 1.接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失.对于这种情况可以修改接收 ...
- 千兆以太网TCP协议的FPGA实现。
千兆以太网TCP协议的FPGA实现 Lzx 2017/4/20 写在前面,这应该是我大四最后一个工程性的作品了,以后要养成写文档记录的习惯.说明下,本工程为纯verilog实现的硬件TCP收发器,不同 ...
- PPPoE协议交互过程
PPPoE协议交互过程 1.发现阶段(PPPoED:PPPoE Discovery) 1.1 PADI(PPPoE Active Discovery Initiation) 1.2 PADO(PPPo ...
- TCP协议握手过程,以及为什么握手,不握手又会怎么样?
1. 为什么要用三次握手 在<计算机网络>一书中其中有提到,三次握手的目的是"为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误",这种情况是:一端(cli ...
- php万国码,前后端交互过程中的编码
起因 最近在写PHP,本身对PHP不太熟练.然后遇到编码这个问题,困扰了大半天,索性,系统探索解决一番. 前后端交互过程中涉及的编码 Browser cilent: 首先,浏览器的设置里有设置编码格式 ...
- 用协议软件分析ping大包丢包故障
故障环境 说明: 1 .办公机器都属于10.12.128.0/24网段: 2 .办公机器通过一个二层的接入交换机.光电转换器接入集团核心交换机. 故障现象 ●Pi ...
- 探讨:在Mac新系统下安装新版XAMPP过程中遇到到的坑以及解决办法
探讨:在Mac新系统下安装新版XAMPP过程中遇到到的坑以及解决办法 简介 XAMPP安装 XAMPP 是个啥? 安装XAMPP 新版问题:IP地址访问不再是localhost 操作问题:apache ...
- Pentaho部署文档校验过程中遇到的一些问题和解决对策
为什么80%的码农都做不了架构师?>>> Pentaho部署文档校验过程中遇到的一些问题和解决对策 1.quartz.EmbeddedQuartzSystemListener发 ...
- volcanol_Linux_问题汇总系列_1_系统引导过程中到check filesystem时就无法继续引导问题解决方法。...
在说问题之前,首先说一下我的用户名:volcanol.这里有点巧合,在上高中之前,我比较喜欢看火山喷发的景象,然后上了高中后 学习了火山这个单词:volcano, 然后加上我自己的姓的第一个字目是&q ...
最新文章
- 【ubuntu工具】Atom的简介及安装
- 编写更少量的代码:使用apache commons工具类库
- HDU 4466 Triangle(计数)
- 【oracle】复合数据类型
- 推荐系统之业务架构总览
- Java泛型之泛型参数
- silverlight 获取文本框焦点
- CUDA中并行规约(Parallel Reduction)的优化
- [Git] 关于refs/for/ 和refs/heads/
- YUI 3:Node
- SpringAOP原理分析
- 数据库(mysql)之事务和存储引擎
- 1000!末尾 有几个0
- Javascript函数小案例--《找质数》
- 你知道怎么用Pandas绘制带交互的可视化图表吗?
- centos 编译 rabbitmq-c 遇到 undefined reference to OPENSSL_init_ssl, BIO_meth_set_read 等报错的解决
- 光伏发电并网模型MATLAB SIMULINK Boost+三相逆变器 PLL锁相环 MPPT最大功率点跟踪控制(扰动观察法)
- MATLAB-最大值与最小值
- MCU之按键驱动 -剥离按键驱动和事件处理
- Java中Stream的close