【图解计算机网络】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.mzph.cn/bicheng/11420.shtml

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

相关文章

mysql 离线安装

package download mysql https://dev.mysql.com/downloads/mysql/ libaio http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm 根据自己服务器选择下载对应的安装包及依赖 删除本机自带mysql相关 # 首先排查服务器自身是否有安装对应m…

抖音小店怎么运营才能出单呢?就这一个步骤做好,爆单不是梦!

哈喽~我是电商月月 新手做抖音小店绝对会有这两个问题:怎么运营?不出单怎么办?被这两个问题困扰着的商家,别着急! 看完我这一篇分享,你就知道自己的问题所在了! 抖音小店的运营中&#xff0c…

找不到msvcp100.dll,无法继续执行代码的问题详细解析

当您在运行某个程序或游戏时遇到提示“找不到msvcp100.dll,无法继续执行代码”,这通常意味着系统中缺失了一个重要的动态链接库文件,从而导致应用程序无法正常启动。为了解决这个问题,本文将介绍5种常见的解决方法,帮助…

法国签证照片尺寸怎么调整?图片调整尺寸的方法介绍

在我们的平时生活中,个人证件照是我们必不可少的身份证明,它是一种具有严格尺寸和比例要求的特殊照片,对于一些特定的场合,比如我们在申请法国签证的时候,需要把照片调整到规定的大小尺寸,那么,…

数字人实训室助推元宇宙人才培养

如今,全身动作捕捉设备已经大量应用在影视、动画、游戏领域,在热门的元宇宙内容领域中,全身动作捕捉设备逐步发挥着重要的作用,在包括体育训练、数字娱乐虚拟偶像、虚拟主持人、非物质文化遗产保护等等场景,数字人实训…

通过任意文件读取获取weblogic账号密码

对于weblogic获取到账号密码的前提是有任意文件读取存在,当任意文件读取存在时是可以读取配置文件来对账号密码进行解密。weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可…

为什么跨境电商大佬都在自养号测评?看完你就懂了!

在跨境电商的激烈竞争中,各大平台如亚马逊、拼多多Temu、shopee、Lazada、wish、速卖通、煤炉、敦煌、独立站、雅虎、eBay、TikTok、Newegg、Allegro、乐天、美客多、阿里国际、沃尔玛、Nike、OZON、Target以及Joom等,纷纷成为商家们竞相角逐市场份额的焦…

【C#】.net core 6.0 ApiController,API控制器方法,API接口以实体类作为接收参数应该注意的点

欢迎来到《小5讲堂》 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景实体类参数API接口不可空参数可空参数参数类型MVC历程相关文章 背…

【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL(已更新)

1.一直以来想写下基于kettle的系列文章,作为较火的数据ETL工具,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下FTP服务器相关知识体系 3.欢迎批评指正,跪谢一键三连! kettle访问FTP服务器文件并处理数据至PostgreS…

南京中科微Ci24R1(DFN8)无线收发射频芯片性能介绍

Ci24R1是南京中科微研发的低成本高性能2.4GHz GFSK 无线收发芯片(支持蓝牙版),专为低功耗无限场合设计,集成嵌入式ARQ基带协议引擎的无线收发器芯片。 工作频率为2400MHz-2525MHz,共有126个1MHz带宽的信道&#xff0c…

美股开户,你需要知道这些!

想投资美股,却不知道开户需要多少钱? 别担心,这篇专栏将告诉你美股开户的资金要求以及相关注意事项。 1. 美股开户需要多少钱? 答案是:有的,但门槛并不高。不同平台对开户资金的要求有所不同,一…

APP反抓包 - 服务端证书验证

案例引入: app:泡泡聊天 版本:v1.7.4 发送登录请求,抓包发现提示:403 Forbidden 这里就是使用了服务端证书校验,因为charles没有安装证书,所以到达服务器的响应没有通过验证,返回异常。 美之图: 一,校验逻辑 在安卓开发时,在客户端预设证书(p12/bks),客户端…

flink cdc,读取datetime类型

:flink cdc,读取datetime类型,全都变成了时间戳 Flink CDC读取MySQL的datetime类型时会转换为时间戳的问题,可以通过在Flink CDC任务中添加相应的转换器来解决。具体来说,可以在MySQL数据源的debezium.source.converter配置项中指…

AI仿站源码教程

AI仿站源码教程 随着AI技术的不断发展,仿站技术已经越来越成熟,通过AI一键仿站,开发者们可以更快速、更高效地搭建网站。传统的前端开发过程中,需要大量的手工编码和设计,而AI仿站技术可以通过截图或视频,…

智慧公厕:数据驱动的公共厕所智慧化管理

公共厕所作为城市基础设施的重要组成部分,对于城市居民的生活质量和城市形象有着不可忽视的影响。然而,传统的公共厕所管理模式存在诸多问题,如设施老化、卫生状况不佳等,严重限制了公众对于公共厕所的使用体验。随着大数据和智能…

计算机毕业设计系列~~~基于SSM的宠物销售网站

目录 一、项目介绍 二、开题报告 三、项目截图 一、项目介绍 本项目是一款基于SSM的宠物销售网站,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1. 包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2. …

【笔记】从零开始做一个男性人体的流程/躯干篇(补充)

1.做手臂和腿部都记着【关键节点】的重要性

2024年得物搬砖项目:轻松上手的高利润副业选择

越来越多的人都开始将目光转向互联网,无论是商家还是消费者,都已经习惯网上卖货和购买 其实,其主要原因还是因为如今的生活节奏快,现在的消费主力军转移到了90、00后身上。他们往往忙于工作或者是家庭,无暇去逛商场&a…

jQuery-2.鼠标焦点事件、节点操作、遍历元素、效果

鼠标事件 鼠标事件是当用户在文档上移动或单击鼠标时而产生的事件,常用的鼠标事件: 方法 描述 执行时机 click() 触发或将函数绑定到指定元素的click事件 单击鼠标时 mouseover() 触发或将函数绑定到指定元素的mouse over事件 鼠标移过时 mous…

《一“企”谈》∣企企通走进『鹏辉能源』,探索百亿储能上市企业如何实现供应链数字化转型

随着运营模式的升级和市场竞争的加剧,采购数字化已成为企业提升竞争力的关键。通过整合人工智能、大数据、云计算和物联网等先进技术,采购流程正逐步实现智能化、协同化和绿色化,大幅提升采购效率和决策质量。 广州鹏辉能源科技股份有限公司&…