【图解计算机网络】TCP 重传、滑动窗口、流量控制、拥塞控制

TCP 重传、滑动窗口、流量控制、拥塞控制

  • TCP 重传
    • 超时重传
    • 快速重传
  • 滑动窗口
  • 流量控制
  • 拥塞控制
    • 慢启动
    • 拥塞避免
    • 拥塞发生
    • 快速恢复

TCP 重传

TCP重传是当发送的报文发生丢失的时候,重新发送丢失报文的一种机制,它是保证TCP协议可靠性的一种机制。

TCP重传有超时重传和快速重传两种机制。

超时重传

超时重传是当报文发送出去的时候,设一个定时器,当定时器到期的时候也没有收到确认应答报文的时候,就重新发送丢失的报文。

比如发送的请求报文丢失:
在这里插入图片描述

或者是返回的确认应答报文丢失:
在这里插入图片描述

这个定时器的超时时间是有具体公式的,它必须保证超时时长不会太长也不会太短。太短的话可能存在并没有丢包但是却触发重传的情况;太长的话就会等待多余的时间。

快速重传

快速重传则是当连续收到3个相同ack num的报文的时候,就可以确定对端有报文没有接收到,于是未等超时重传的定时器到期,就发送对端缺失的报文。

在这里插入图片描述

上面的这个例子,当对端收到了缺失的报文之后,对端返回的ack是4001,代表4000以前的数据都已经接收到,不需要2001、3001等ack都发送一遍,这个叫做累计确认机制。

滑动窗口

TCP的报文头有一个窗口大小的字段,是接收端告诉发送端自己缓冲区还有多少空间可以接收发送端发送的报文。在窗口大小还足够的前提下,发送端不必等待上一个报文接收端返回ack报文,就可以发送下一个TCP请求报文。

在这里插入图片描述

比如现在接收端的窗口大小是3000,每个数据包大小都是1000,那么现在发送端就可以连续发送三个数据包而不需要等待接收端的ack。

在这里插入图片描述

此时,由于有TCP的累计确认机制,如果中间有某个ack丢失,也不必重发,只要更大的ack被发送方接收到,就能确认前面的数据包都被接收到,发送方无需重发数据包,接收方的ack也不需要重发。

在这里插入图片描述

流量控制

有了滑动窗口,接收方就可以通过窗口控制发送方的发送速度,使得发送方不会无脑的发送。

每次接收端返回ack数据包的时候,都会携带当前窗口的可用大小。

在这里插入图片描述

当窗口缩小为0的时候,发送方就会停止数据包的发送。然后接收方如果读取了TCP缓存区里的数据,窗口又会腾出空间,此时接收方又可以继续接收数据包。但是此时发送方是不知道的,所以发送方会定时发送探测报文,接收方接收到探测报文时会返回当时的窗口大小。

在这里插入图片描述

发送方发送探测报文以后,接收方返回的ack数据包显示窗口又有可用空间了,就会继续发送数据包。当然如果接收方的可用空间太小,发送发还是不会发送的,因为如果只发送几个字节的数据,TCP头部的大小都比数据大的多,那么就非常浪费带宽资源。

拥塞控制

拥塞控制是用于控制发送方发送的速度,避免发生的数据过多导致网络拥塞的。

为了控制发送方的发送速度,定义了一个控制窗口的概念。有了控制窗口,发送发的发送窗口(swnd)就是接收方窗口(rwnd)大小和控制窗口(cwnd)的最小值:swnd = min(rwnd, cwnd)。

拥塞控制主要包括四个算法:慢启动、拥塞避免、拥塞发生、快速恢复。

慢启动

一开始初始化cwnd的大小为1,表示可以传输一个MSS大小的数据。然后每收到一个ack,cwnd就会增加1。

比如一开始发送端发送了一个TCP报文,然后收到接收端返回的ack,此时发送端的cwnd增长为2;然后发送端发送两个TCP报文,当这两个TCP报文的ack都接收到之后,发送方的cwnd就增长为4…如此成倍数增长。

在这里插入图片描述

拥塞避免

当cwnd上涨到ssthresh(慢启动门限),就会进入拥塞避免算法。进入拥塞避免算法之后,每收到一个ack,cwnd就增加1/cwnd。

比如按照上图的这个例子,如果ssthresh=8,那么当cwnd上涨到8时,就进入拥塞避免算法,此时每收到一个ack,cwnd就增加1/8,当收到8个ack时,cwnd才变成9,然后后面收到9个ack,cwnd才变成10。

在这里插入图片描述

拥塞发生

一旦发生超时重传,就会促发拥塞发生算法,ssthresh变成cwnd/2,cwnd重置为1。

在这里插入图片描述

快速恢复

当重复收到3个相同的ack时,就会促发快速恢复算法。快速恢复算法不会像拥塞发生算法那样“一把回到解放前”,因为还能收到3个相同的ack,那表示现在网络状况也不太差,因此不会把cwnd重置为1。

此时会把ssthresh重置为cwnd/2,cwnd重置为新的ssthresh值,然后进入拥塞避免算法。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/691578.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AJ65SBT2B-64DA 三菱CC-Link D/A转换模块

AJ65SBT2B-64DA 是将数字值(16位有符号BIN数据)转换为模拟值(电压或电流)的模块。 AJ65SBT2B-64DA参数说明:4通道;输入分辨率0~12000,-12000~12000,-16000~16000;输出DC-10~10V,DC0~20mA;转换速…

掌握未来搜索的钥匙:深入解析 Milvus 向量搜索引擎的终极指南!

在大数据时代,向量搜索技术愈发重要。作为一个开源的向量相似性搜索引擎,Milvus 提供了基于向量的相似性搜索功能,广泛应用于机器学习、人工智能等领域。本文将深入介绍 Milvus 的基本概念,包括其介绍、主要作用、使用方法及注意事…

pair对组创建

创建方式1: pair<type,type> p(value1,value2); pair<string, int> p("Tom", 20); cout << "name:" << p.first << "age:" << p.second << endl; 创建方式2: pair<type,type> pmake_pair(v…

树莓派4B-搭建一个本地车牌识别服务器

实现目标&#xff1a; 一、设备自启后能够获得服务的ip与端口号&#xff0c;用于计算机连接设备&#xff1b; 二、计算机可以通过服务ip与端口访问设备服务&#xff1b; 三、上传需要处理的数据&#xff0c;返回结果反馈给用户&#xff1b; 四、上传到服务器的数据不会导致设备…

Oracle 数据库

前言 今天开始学习 Oracle 数据库&#xff0c;这是实习公司要求的&#xff0c;虽然还没开始实习&#xff0c;但是事先熟练到岗之后就不需要再花费时间学习了。有了 MySQL 的基础&#xff0c;学习 Oracle 应该问题不大&#xff0c;不过 MySQL 一些进阶的内容依然需要再精进一下。…

数据链路层(详细版)【02】

接 数据链路层&#xff08;详细版&#xff09;【01】 文章目录 四、以太网MAC层&#xff08;一&#xff09;MAC地址组成&#xff08;1&#xff09;48位MAC地址格式&#xff08;2&#xff09;单播地址 & 多播地址 & 广播地址&#xff08;3&#xff09;全球管理 & 本…

十二、Redis主从复制

与其他的中间件存在同样的问题&#xff0c;在单机的情况&#xff0c;随着业务的增长&#xff0c;会面临着灾备、性能方面的压力。Redis在这方面提供了一主一从、一主多从的结构。这种结构同时也是实现读写分离功能的基础。即主节点提供写能力&#xff0c;从节点提供读能力。为了…

vue3.0(六) toRef,toValue,toRefs和toRow,markRaw

文章目录 toReftoValuetoRefstoRowmarkRawtoRef和toRefs的区别toRaw 和markRaw的用处 toRef toRef 函数可以将一个响应式对象的属性转换为一个独立的 ref 对象。返回的是一个指向源对象属性的 ref 引用&#xff0c;任何对该引用的修改都会同步到源对象属性上。使用 toRef 时需…

Datax数据采集

一、Datax介绍 官网&#xff1a; DataX/introduction.md at master alibaba/DataX GitHub DataX 是阿里云 DataWorks数据集成 的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。 DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、…

稳定网络的诀窍:静态住宅代理解决方案

在数字化时代&#xff0c;网络稳定性对于个人和企业都至关重要。然而&#xff0c;由于多种因素的影响&#xff0c;如地理位置、网络拥堵或网络安全问题等&#xff0c;网络稳定性常常受到挑战。为了应对这些挑战&#xff0c;静态住宅代理作为一种高效且可靠的网络解决方案&#…

CCF-Csp算法能力认证, 202309-1坐标变换(其一)(C++)含解析

前言 推荐书目&#xff0c;在这里推荐那一本《算法笔记》&#xff08;胡明&#xff09;&#xff0c;需要PDF的话&#xff0c;链接如下 「链接&#xff1a;https://pan.xunlei.com/s/VNvz4BUFYqnx8kJ4BI4v1ywPA1?pwd6vdq# 提取码&#xff1a;6vdq”复制这段内容后打开手机迅雷…

路由器、交换机和网卡

大家使用VMware安装镜像之后&#xff0c;是不是都会考虑虚拟机的镜像系统怎么连上网的&#xff0c;它的连接方式是什么&#xff0c;它ip是什么&#xff1f; 路由器、交换机和网卡 1.路由器 一般有几个功能&#xff0c;第一个是网关、第二个是扩展有线网络端口、第三个是WiFi功…