文章目录

  • 一:TCP的确认应答(ACK)机制
  • 二:超时重传机制

一:TCP的确认应答(ACK)机制

在TCP中,当发送端的数据达到接收主机时,接收端主机会返回一个已收到消息的通知,这个消息叫做ACK(确认应答,PositiveAcknowlegementPositive AcknowlegementPositiveAcknowlegement)

通常,两个人对话时,在谈话的停顿处可以点头或询问以确认谈话内容。如果对方迟迟没有回应,说话的一方还可以重复一遍以保证对方确实可以听到。因此,对方是否理解了此次对话的内容以及是否听到了对话的内容都要靠对方的反应来判断。

网络中的确认应答就类似于上面的例子。当对方听懂对话内容时会说:“嗯”,这就相当于返回了一个确认应答(ACKACKACK)。而当对方没有理解对话内容或没有听清时往往会问一句“啊?”


TCP通过肯定的ACK实现可靠的数据传输。当发送端将数据发出之后会等待对端的确认应答,如果有确认应答,说明数据已经成功到达,如果没有,那么数据有可能丢失了
如下图所示,在一定时间内没有等到确认应答,发送端就可以认为数据已经丢失,就会进行重发

未收到确认应答也并不意味着数据一定丢失,有时也有可能是因为数据收到,但是ACK却在传输的途中丢了。因此这种情况也会导致发送端因没有及时收到ACK,而认为数据没有到达目的地,从而进行重传

此外,还有一种情况对于接收方来说会比较难受。就是确认应答延时到达,在等待的过程中发送端会误认为数据丢失,所以会反复触发重传,因此对于接受主机来说,它会反复接收到相同的数据,而为了对上层应用提供可靠的传输,就必须得放弃重复的数据包。为此就必须要引入一种机制,使其能够识别是否已经接受数据,又能判断是否需要接受

序列号是按照顺序给发送数据的每一个字节都标上号码的编号。接收端查询接收数据TCP首部中的序列号和数据的长度,将自己下一步应该接受的序号作为确认应答返送回去。就这样,通过序列号和确认应答号,TCP可以实现可靠传输

发送的数据

序列号和确认应答号

二:超时重传机制

超时重传的超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍然为收到确认应答,发送端将会重发数据。那么这个数据是如何确定的呢?

最理想就是找到一个最小时间,它能保证确认应答一定能在这个时间内返回。但是这个时间长短随着数据包途径的网络环境的不同会有所变化。

TCP要求不论处在何种网络环境下都要提供高性能通信,而且无论网络拥堵的情况发生如何改变,都必须保持这一特性。为此,它在每次发包时都会计算往返时间及其偏差,将这个往返时间和偏差相加重发超时的时间,就是比这个综合要稍微大一点的值。


在BSD的Unix及Windows系统中,超时都以0.5s为单位进行控制,因此重发超时都是0.5s的整数倍。不过由于最初的数据包还不知道往返时间,所以其重发超时一般设置为6s左右
数据被重发以后若还是收不到应答,就会进行再次发送,此时,等待确认应答的时间将会以2倍,4倍的指数函数延长

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

4-5:TCP协议之确认应答(ACK)机制和超时重传机制相关推荐

  1. TCP协议可靠性保证(确认应答机制,超时重传机制,流量控制,拥塞窗口)

    上一次我们知道了TCP协议通过连接管理机制保证可靠性,今天我们继续来看一看TCP协议中其他几种保证可靠性的方法. · 确认应答机制  · 超时重传机制  · 流量控制  · 拥塞窗口 确认应答机制  ...

  2. 【TCP 协议2】确认应答、超时重传机制

    文章目录 前言 一.确认应答 1, 什么是确认应答 2, 序列号和确认应答号 二.超时重传 1, 什么是超时重传 总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你:

  3. 计算机网络sequence number,TCP协议中SequenceNumber和Ack Numbe

    Sequence Number lzyws7393074532892018-04-25 Number Sequence qq_391789932452017-09-21 理解TCP序列号(Sequen ...

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

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

  5. 以太网 TCP协议交互过程中出现丢包时的解决机制,超时重传、快速重传、SACK与DSACK

    2.7.3 以太网 TCP协议(TCP交互过程中出现丢包时的解决机制-列举部分) 参考:CSDN_TCP的重传机制_博主.Pr Young,对描述进行了整理与结合个人的理解进行编写. 一.超时重传机制 ...

  6. TCP协议-TCP超时重传机制

    一.前言 在TCP通信中,既要保证在网络正常的情况下提供可靠的交付服务,又要保证在网络异常的情况下也提供可靠的交付服务.而TCP的超时重传机制就是解决在网络异常情况下的可靠传输问题的. 二.通过序列号 ...

  7. 确认应答机制超时重传机制序列号延迟应答捎带应答

    序列号 一.什么是序列号? TCP会对每个字节的数据都进行编号,数据的编号就是数据的序列号,每个字节都有自己独一无二的编号,故序列号具有唯一性 二.序列号的作用? 接收端为了区别重复的报文段(报文段也 ...

  8. 计算机网络超时重传时间,TCP超时重传机制

    超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止.[1] 中文名 ...

  9. TCP第三次握手失败的处理(Server端超时重传机制、RST包响应、SYN攻击)

    面试题: 在 TCP 建立连接的三次握手连接阶段,如果客户端发送的第三个ACK包丢了,那么客户端和服务端分别进行什么处理呢? 相信了解 tcp 协议的人,三次握手的过程肯定很了解了.第三次的 ack ...

最新文章

  1. windows程序移植linux
  2. 关于http301与302的技术讨论
  3. linux之gdb基本调试命令和使用总结
  4. mysql断电同步不起作用_mysql主从同步因断电产生的不能同步问题
  5. Oracle 通过字段名查询其所在的表
  6. 查看Oracle有哪些表或者视图
  7. Unity MeshBaker 合并网格和材质
  8. [原创]web application中使用Profile应该注意的问题
  9. 发布半年依旧无对手!网友:我怎么没听说...
  10. 修复VMware 下Ubuntu启动不了问题
  11. OpenStack Hacker养成指南
  12. 界址点圆圈怎么生成_手机联系人怎么加入黑名单
  13. LeetCode每周刷题(2019.7.8-2019.7.14)
  14. 计算机桌面隔几秒闪一下,电脑最近怎么老是隔一段时间显示器就要闪一下
  15. OV7725鹰眼摄像头
  16. iOS视频播放的基本方法
  17. windows ce 专题
  18. 如何制作自己的图片数据集-基于tensorflow
  19. http-杂货铺.md
  20. MFRC522_管脚示意图

热门文章

  1. 经典面试题(39):以下代码将输出的结果是什么?
  2. docker php gd png.h,docker php 容器安装GD库
  3. matlab ode45求解齿轮动力学,Matlab拟合动力学参数遇到问题(ode45)
  4. python中的颜色_Python中常见颜色记录
  5. 图像处理Pillow详解
  6. 送书 | 获得诺贝尔奖之后影响力会下降?绘制精英科学家的职业生涯路线图
  7. 为啥我的Python这么慢 - 项查找 (二)
  8. vue-router路由安装与使用
  9. Android逆向笔记-IDA Pro动态调试Android程序(真机)
  10. Java笔记-解决Cause: java.sql.SQLException: 试图在只读事务中修改数据(达梦数据库)