JAVAEE之网络原理_传输控制协议(TCP)的滑动窗口、流量控制、拥塞控制、延迟应答、捎带应答机制

前言

 在前面几节,我们讲解了TCP协议的基本概念、报文格式。还介绍了确认应答机制、超时重传、连接管理机制,在本节中 我们将会继续介绍TCP协议的其他机制。


一、滑动窗口机制(效率机制)

 在前面的章节中我们讨论了确认应答策略,对每一个发送的数据段,都要给一个ACK确认应答。收到ACK后再发送下一个数据段。这样做有一个比较大的缺点,就是性能较差。尤其是数据往返的时间较长的时候。
在这里插入图片描述

  • 窗口大小指的是无需等待确认应答而可以继续发送数据的最大值。上图的窗口大小就是4000 个字节(四个段)。
  • 发送前四个段的时候,不需要等待任何ACK,直接发送; 收到第一个ACK后,滑动窗口向后移动,继续发送第五个段的数据;依次类推;
  • 操作系统内核为了维护这个滑动窗口,需要开辟 发送缓冲区 来记录当前还有哪些数据没有应 答;只有确认应答过的数据,才能从缓冲区删掉;
  • 窗口越大,则网络的吞吐率就越高;

如果出现了丢包,如何进行重传?

情况一:数据包已经抵达,ACK丢了

在这里插入图片描述
&esmp;在这种情况下,部分ACK丢失了不要紧,因为可以通过后的ACK进行确认。

情况二:数据包直接丢了

在这里插入图片描述

  • 当某一段报文段丢失之后,发送端会一直收到 1001 这样的ACK,就像是在提醒发送端 “我想要的是 1001” 一样;
  • 如果发送端主机连续三次收到了同样一个 “1001” 这样的应答,就会将对应的数据 1001 -2000 重新发送;
  • 这个时候接收端收到了 1001 之后,再次返回的ACK就是7001了(因为2001 - 7000)接收端其实之前就已经收到了,被放到了接收端操作系统内核的接收缓冲区中;

这种机制被称为 “高速重发控制”(也叫 “快重传”)。

二、流量控制机制(安全机制)

 接收端处理数据的速度是有限的。如果发送端发的太快,导致接收端的缓冲区被打满,这个时候如果发送端继续发送,就会造成丢包,继而引起丢包重传等等一系列连锁反应。
 因此,TCP支持根据接收端的处理能力,来决定发送端的发送速度。这个机制就叫做流量控制(FlowControl)

  • 接收端将自己可以接收的缓冲区大小放入 TCP 首部中的 “窗口大小” 字段,通过ACK端通知发送端;
  • 窗口大小字段越大,说明网络的吞吐量越高;
  • 接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给发送端;
  • 发送端接受到这个窗口之后,就会减慢自己的发送速度;
  • 如果接收端缓冲区满了,就会将窗口置为0;这时发送方不再发送数据,但是需要定期发送一个窗口探测数据段,使接收端把窗口大小告诉发送端。

三、拥塞控制(安全机制)

 虽然TCP有了滑动窗口机制,能够高效可靠的发送大量的数据。但是如果在刚开始阶段就发送大量的数据,仍然可能引发问题。因为网络上有很多的计算机,可能当前的网络状态就已经比较拥堵。在不清楚当前网络状态下,贸然发送大量的数据,是很有可能引起更加阻塞的问题。

&emsp:针对拥塞问题,TCP引入 慢启动 机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据;

慢启动算法(Slow Start)过程

1. 刚开始先引入一个拥塞窗口

在这里插入图片描述

  • 发送开始的时候,定义拥塞窗口大小为1;
  • 每次收到一个ACK应答,拥塞窗口加1;
  • 每次发送数据包的时候,将拥塞窗口和接收端主机反馈的窗口大小做比较,取较小的值作为实际发送的窗口;

2.像上面这样的拥塞窗口增长速度,是指数级别的。“慢启动” 只是指初使时慢,但是增长速度非常快

  • 为了不增长的那么快,因此不能使拥塞窗口单纯的加倍。
  • 此处引入一个叫做慢启动的阈值
  • 当拥塞窗口超过这个阈值的时候,不再按照指数方式增长,而是按照线性方式增长。

在这里插入图片描述

  • 当TCP开始启动的时候,慢启动阈值等于窗口最大值;
  • 在每次超时重发的时候,慢启动阈值会变成原来的一半,同时拥塞窗口置回。

 少量的丢包,我们仅仅是触发超时重传;大量的丢包,我们就认为网络拥塞;当TCP通信开始后,网络吞吐量会逐渐上升;随着网络发生拥堵,吞吐量会立刻下降;
 拥塞控制,归根结底是TCP协议想尽可能快的把数据传输给对方,但是又要避免给网络造成太大压力的折中方案。

四、延迟应答(效率机制)

 如果接收数据的主机立刻返回ACK应答,这时候返回的窗口可能比较小。窗口越大,网络吞吐量就越大,传输效率就越高。我们的目标是在保证网络不拥塞的情况下尽量提高传输效率;

那么所有的包都可以延迟应答吗?

  • 数量限制:每隔N个包就应答一次;
  • 时间限制:超过最大延迟时间就应答一次;

具体的数量和超时时间,依操作系统不同也有差异;一般N取2,超时时间取200ms;
在这里插入图片描述

五、捎带应答(效率机制)

 在延迟应答的基础上,我们发现,很多情况下,客户端服务器在应用层也是 “一发一收” 的。意味着客户端给服务器说了 “How are you”,服务器也会给客户端回一个 “Fine, thank you”;
 那么这个时候ACK就可以搭顺风车,和服务器回应的 “Fine,thank you” 一起回给客户端。

总结

 本节及前几节的内容中,我们讲解TCP的各种机制。那么, TCP 协议的可靠性和安全性是如何实现和保证的?我们可以得知 TCP 的可靠性和安全性的保证是由 以确认应答机制为核心,其他机制为辅

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

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

相关文章

springboot微信点餐小程序-计算机毕业设计源码82910

目 录 摘要 1 绪论 1.1 项目开发背景 1.2目的和意义 1.3springboot框架介绍 2 微信点餐小程序系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 …

Transformer的诞生和崛起

智能问答与文本生成:Transformer模型的超能力 ©作者|wy 来源|神州问学 一、引言 NLP(自然语言处理)作为人工智能领域的一个重要分支,致力于使计算机能够理解和处理人类语言。随着互联网的发展和信息时代的到来,…

蔡依林与彭于晏那些被时光珍藏的甜蜜

蔡依林与彭于晏:那些被时光珍藏的甜蜜近日,一段尘封已久的往事再次被翻出,人们再次关注起这对曾经的“金童玉女”——蔡依林与彭于晏。据台媒报道,他们曾有过一段鲜为人知的恋情,这一消息无疑让粉丝们激动不已&#xf…

示波器探头口碑性价比好的品牌有哪些推荐

示波器探头作为测试测量设备中的重要组成部分,市场上存在多个知名品牌。以下是一些主要的示波器探头品牌及其相关信息: Pintech品致:作为全球示波器探头第一品牌,Pintech品致是示波器探头技术标准倡导者,以及“两点浮…

常见网络攻击威胁分享

今天我来分享一下比较常见的网络攻击形式, ARP 欺骗攻击、CC 攻击和 DDoS 流量攻击是较为常见且危害巨大的攻击方式。 一、ARP欺骗攻击 ARP(AddressResolutionProtocol,地址解析协议)是用于将IP地址转换为MAC地址的协议。ARP欺骗…

《A++ 敏捷开发》- 25A 北京手记

北京是全国文化之都,来到北京晚上有空便去欣赏各类表演节目。连续3晚:听了一场音乐会,看了两套话剧。 国家大剧院管弦乐团演奏马勒第三交响曲 到了最后第六乐章的最后5分钟,两位定音鼓手同步咚、咚、咚、咚,像为步兵…

CCSK认证考试详解:内容、形式、费用及备考指南

CCSK认证考试,也称为CCSK考试,是关于云计算安全的专业认证,由国际云安全联盟(Cloud Security Alliance, CSA)推出。以下是关于CCSK认证考试的详细信息: 考试内容 CCSK考试内容涵盖了云安全的基础知识&…

Linux命令学习2

一.文件基础命令 1.alias-给某个命令取别名 使用方式:alias cl ls -la 说明:将ls -la命令取别名为cl,使用这种方式只是临时将命令取别名,重启中断后,就会失效。 问题1:如何永久性的设置命令的别名? 答…

找不到x3daudio1_7.dll无法运行的原因分析及6种解决方法

当您遇到软件或游戏中提示“x3daudio1_7.dll丢失”的问题时,通常意味着您的系统中缺少这个特定的动态链接库文件。x3daudio1_7.dll 是微软DirectX的一部分,找不到x3daudio1_7.dll会导致软件游戏无法启动运行,下面小编就分享几种靠谱的解决方法…

saas产品运营案例 | 联盟营销计划如何帮助企业提高销售额?

在当今数字化时代,SaaS(软件即服务)产品已成为企业提高效率、降低成本的重要工具。然而,面对激烈的市场竞争,如何有效地推广SaaS产品、提高销售额,成为许多企业面临的挑战。林叔将以ClickFunnels为例&#…

Linux_应用篇(22) 音频应用编程

ALPHA I.MX6U 开发板支持音频,板上搭载了音频编解码芯片 WM8960,支持播放以及录音功能!本章我们来学习 Linux 下的音频应用编程, 音频应用编程相比于前面几个章节所介绍的内容、 其难度有所上升, 但是笔者仅向大家介绍…

【2024最新版】Windows11 23H2中文家庭版:免费下载!

Windows 11 23H2中文家庭版系统拥有稳定的性能、丰富的功能和卓越的安全性,很多用户都喜欢给自己的电脑安装上这个版本。但是,许多新手用户不清楚在哪里才能下载到Windows11家庭版?接下来小编给大家带来2024年最新的Windows 11 23H2中文家庭版…

精通pip:Python开发者的必备技能

目录 1. 安装 pip 2. 使用 pip 安装包 3. 卸载包 4. 更新包 5. 列出已安装的包 6. 搜索包 7. 使用 requirements.txt 文件安装多个包 8. 升级 pip 自身 9. 虚拟环境 10. 冻结依赖 11. 使用国内镜像源 12. 安装特定版本的包 13. 批量安装包 14. 显示帮助信息 15.…

Java字符串处理深度解析:String、StringBuffer与StringBuilder的奥秘

摘要: 本文将深入探讨Java语言中处理字符串的基础构件:String、StringBuffer和StringBuilder。我们将详细讲解它们的内部原理、适用场景、性能对比以及在现代开发实践中的使用策略。同时,结合当下编程行业的热点技术,如微服务架构…

【大数据技术原理与应用(概念、存储、处理、分析与应用)】第2章-大数据处理架构 Hadoop习题与知识回顾

文章目录 单选题多选题知识点回顾什么是Hadoop?Hadoop有哪些特性?Hadoop生态系统是怎么样的?(1) HDFS(2) HBase(3) MapReduce(4) Hive(5) Pig(6) Mahout(7) Zookeeper(8) Flume(9) Sqoop(10) Ambari 单选题 1、下列哪个不属于Hadoop的特性&am…

Oracle 23ai的Windows平台版本发布了

Oracle 23ai free的版本之前只有Linux平台的版本,刚刚增加了Windows平台的版本,这里尝一下鲜。 关于号主,姚远: Oracle ACE(Oracle和MySQL数据库方向)华为云最有价值专家《MySQL 8.0运维与优化》的作者拥有…

多路h265监控录放开发-(15)回放页面中的三个槽函数进行视频的录放(0.1版本项目完结篇)

xviewer.h 中的回放页面的三个槽函数: void SelectCamera(QModelIndex index);//选择摄像机129void SelectDate(QDate date); //选择日期129void PlayVideo(QModelIndex index); //选择时间播放视频129 SelectCamera槽函数解析: 点击相机列表日…

乐鑫ESP32-WROOM-32E模组设备低功耗控制方案,启明云端乐鑫代理商

在数字化浪潮的推动下,物联网(IoT)正迅速成为我们日常生活的一部分。而在这个领域中,ESP32-WROOM-32E模组以其卓越的性能和多功能性,成为了开发者和制造商的选择。 ESP32-WROOM-32E模组集成了ESP32-D0WD-V3芯片&#…

项目maven标志消失,pom文件显示为橙色/橘色标志

背景: 公司开发新的项目,我要拉一下item服务的工程进行开发,等我把代码拉下来发现我idea右侧边栏的maven没了,pox.xml文件也变成了这种橙色/橘色的标志。 分析: 这个是一个不正常的maven项目pom,可能是由于…

OpenVINO在iGPU上加载模型比CPU慢

官方解答地址: 为什么模型加载时间比 CPU 长? (intel.cn) 总结 快速步骤以改善 GPU 上的模型加载时间 说明 将输入模型的中间表示 (IR) 加载到 GPU 需要的时间比将相同模型加载到 CPU 还要长。 解决方法 在应用程序的工作目…