在没有使用滑动窗口之前,超时重发机制大概是这样子的:

根据数据包的RTT和时间偏差计算出粗略的RTO,当一个数据包发送之后,在RTO时间内还没有返回确认ACK时,发送端就认为该数据包已经丢失,并进行重传。

这里有两种情况:

1)数据包真真切切地没有被接收端接收到。

2)数据包已经被接受但是ACK在返回途中丢失。

不管哪种情况,此时发送端都会进行重传。按照2的指数时间间隔进行重发,指定重发次数。如果还没有收到ACK,那么就认为该通信主机异常,强制关闭连接,终止通信。

如果是第二种情况,有人会说,发送端一直重发相同的包。接收端怎么办,会一直接收到相同的包啊,因为是ACK丢失啊

这里就引入了序列号的概念了,也就是说,序列号的概念也解决了这个问题。通过序列号,可以判断当前数据包是不是重复接收到的,是否需要接受!


目前TCP连接采用滑动窗口机制。使用滑动窗口下数据丢失又该怎么办呢?

首先明确为什么使用滑动窗口机制?

试想一下,每个数据包的收发都要经过发送----返回ACK---再发送  这个流程的话。那么就会出现包的往返时间越长,网络的吞吐量就会越差!而且网络环境都是时时刻刻在变化的,包的RTT都是在变化的,这会导致通信很不可靠!

因此,引入滑动窗口机制.。也就是发送方可以在未接受到一个数据包的ACK时继续发送下一个数据包。在滑动窗口内的数据段都可以同时发送。这样一来就明显的提高了效率,提升了吞吐量。

在窗口机制下,也会出现超时重传的问题。也有两种情况:

1)数据包真真切切地没有被接收端接收到。

2)数据包已经被接受但是ACK在返回途中丢失。

在第一种情况下,假如第一个包没有接收到ACK(第一个包的为1~1000),那么发送端再继续发送下一个包的时候,接收端会一直发送ACK(1001),发送端接收到超过3次ACK(1001)就认为该报文丢失,进行重发!

第二种情况下,窗口在比较大的时候,即使有少量的ACK没有接收到也不会进行数据重发,因为可以通过下一个确认应答进行确认。


引入了窗口机制之后,不免出现流量控制。

什么是流量控制?

试想,当发送端的窗口比较大的时候,接收端会出现会出现缓冲区溢出的问题,这样一来接收端就会丢弃有用的数据包。这就有引发重传机制,从而导致网络流量的无端浪费。

其实窗口机制就是发送端和接收端在进行三次握手的时候交换自己的窗口大小。使得发送端可以根据接收端的实际接受能力控制发送的数据量。这个数值在数据包交互的过程中是动态变化的。

当接受端缓冲区满的时候,发送给发送端的ACK中通告窗口的值为0.此时发送端会停止发包。在接收到发送窗口的更新通知之后通信才得以继续。但是如果更新通知在途中丢失那通信岂不是中断了?不然,发送端会时不时的发送一个窗口探测的数据包,来获取接收端窗口大小的最新值。


如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收而拥塞控制是为了降低整个网络的拥塞程度。

网络:窗口控制下的重发机制、流量控制相关推荐

  1. Java 轮询(重发)机制

    1.需求: (1):支付成功需要给商户发送异步通知接口 (2):发送失败得情况下需要有重发机制,重发10次,如果10次还是失败,就不重发了 2.思路 : (1):创建表,需要有时间,次数,状态,推送信 ...

  2. 局域网流量控制_基于软件定义的网络准入控制体系

    引 用 本 文 邓永晖,周佳,鹿文杨.基于软件定义的网络准入控制体系[J].通信技术,2020,53(04):970-975.DENG Yong-hui,ZHOU Jia,LU Wen-yang. N ...

  3. 【RDMA】无损网络和PFC(基于优先级的流量控制)

    目录 前言 一.为什么会产生拥塞 二.PFC如何实现流控 三.PFC死锁 四.利用ECN实现端到端的拥塞控制 五.ECN交互过程 总结 原文:<我们为什么需要RDMA?为什么需要无损网络?> ...

  4. 【RDMA】无损网络和PFC(基于优先级的流量控制)|ECN

    目录 前言 一.为什么会产生拥塞 二.PFC如何实现流控 三.PFC存在的问题 四.利用ECN实现端到端的拥塞控制 五.ECN交互过程 QC-QCN (网络工程师必会) (待续) PFC和ECN对比* ...

  5. TCP相关技术:重发机制

    重发机制 TCP协议是一个可靠的协议.它通过重新发送(retransmission)来实现TCP片段传输的可靠性.简单的说,TCP会不断重复发送TCP片段,直到片段被正确接收. 接收方(receive ...

  6. php消息队列重发机制,使用消息队列的注意事项

    前面有介绍过消息队列的好处,通过理解这些好处,我们就能找到其应用场景. 事情大多都有两面性,而消息队列,当我们享受它的便捷时,也需要考虑到一些注意事项. > 这里,举一些常见的注意事项,使用过程 ...

  7. 2017-2018-1 20155222 《信息安全系统设计基础》第10周 Linux下的IPC机制

    2017-2018-1 20155222 <信息安全系统设计基础>第10周 Linux下的IPC机制 IPC机制 在linux下的多个进程间的通信机制叫做IPC(Inter-Process ...

  8. xp计算机怎么共享网络,windows XP下如何实现共享上网的方法

    通常来说共享本地连接的电脑即网关电脑要有两块网卡(其中一块是有线或无线网卡),并且有交换机或集线器等网络设备,电脑与电脑之间通过网络设备或无线局域网连接下面是学习啦小编为大家整理的关于windows ...

  9. HCIE-datacom | 网络准入控制

    一.前言 之前提供网络技术咨询服务时,有一位实习生同学向我咨询了有关网络准入的相关情景,在这里我结合华为HCIE-datacom中"网络准入控制"这一节等相关资料,对网络准入技术进 ...

最新文章

  1. 整型的赋值超出该类型的取值范围
  2. boost::pfr::detail::offset_based_getter相关的测试程序
  3. 前端学习(1698):前端系列javascript之原型链和instance
  4. Python、C++ lambda 表达式
  5. 使用Fiddler对IPhone手机的应用数据进行抓包分析
  6. 隐马尔可夫模型(五)——隐马尔可夫模型的解码问题(维特比算法)
  7. Spring配置介绍
  8. Sharepoint 站点模板和站点定义、定制站点定义
  9. Redis 快速入门 -- Redis 命令(6)
  10. Pywinauto在Windows Twain Driver自动化测试中的应用研究
  11. 联想智能农业移动应用开发系统用户手册
  12. 一个很酷的快速开发代码生成器系统
  13. cad怎样弄出放线的坐标_利用CAD绘制全站仪放线用的坐标点
  14. 基于 电子海图的海上搜救的研究
  15. h5 a标签下载链接下载文件
  16. 《维C中国》乡村助农暖人心第三站嘉宝果农场
  17. 下一代 Web 应用模型 — Progressive Web App
  18. Jsp中分页功能的实现
  19. 华硕x550JK,i5改进
  20. 没有内容的文集,竟然是不存在的

热门文章

  1. 优秀ASP.NET程序员修炼之路
  2. SQL_由创建表引出
  3. Java使用PDFBox开发包实现对PDF文档内容编辑与保存
  4. 基于OHCI的USB主机 —— 寄存器(其它)
  5. FQND之联想--username@host.domain跟进
  6. RTSP over UDP RTSP over TCP
  7. 小白webpack进行nodejs 前端打包配置
  8. python etree创建xml_利用 Python ElementTree 生成 xml的实例
  9. excel 复制数据 sql server 粘贴_几百个Excel表格的内容要复制粘贴,如何一键自动化搞定?| 州的先生...
  10. python——type()、metaclass元类和精简ORM框架