TCP的流量控制

TCP流量控制 TCP流量控制为什么要TCP流量控制?TCP流量控制不是为了减少网络压力,那是TCP拥塞控制的作用。下面简单介绍一下TCP流量控制的目的: 作用对象:相互连接着的两个终端(发送端与接收端)。 解决问题:解决发送端与接收方吞吐量不匹配的问题,比如当一个发送端A每秒发10个数据包,而接收端B每秒只能接受1个数据包,那么就会出现丢包的情况,所以发送端与接收端要的吞吐量要匹配。 目的:让发送端根据接收 阅读详情

1.TCP的滑动窗口

       为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认。

       TCP的两端都有发送/接收缓存和发送/接收窗口。TCP的缓存是一个循环队列,其中发送窗口可以用3个指针表示。而发送窗口的大小受TCP数据报中窗口大小的影响,TCP数据报中的窗口大小是接收端通知发送端其还可以接收多少数据,所以发送窗口根据接收的的窗口大小的值动态变化。

       以下的几张图片就帮助理解一下滑动窗口的机制:

       注意上图中的3个指针P1、P2、P3!此时接收窗口中接收的数据可能是失序的,但是也先存储在接收缓存之中。发送确认号的时候依然发送31,表示B期望接收的下一个数据报的标示符是31。

       当B收到31后连同之前接收到的数据报,发送确认号34,此时A的滑动窗口可以向前移动了。

       如果发送窗口中的数据报都属于已发送但未被确认的话,那么A就不能再继续发送数据,而需要进行等待。

2.TCP流量控制

       所谓流量控制就是让发送发送速率不要过快,让接收方来得及接收。利用滑动窗口机制就可以实施流量控制。

       原理这就是运用TCP报文段中的窗口大小字段来控制,发送方的发送窗口不可以大于接收方发回的窗口大小。

       考虑一种特殊的情况,就是接收方若没有缓存足够使用,就会发送零窗口大小的报文,此时发送放将发送窗口设置为0,停止发送数据。之后接收方有足够的缓存,发送了非零窗口大小的报文,但是这个报文在中途丢失的,那么发送方的发送窗口就一直为零导致死锁。

       解决这个问题,TCP为每一个连接设置一个持续计时器(persistence timer)。只要TCP的一方收到对方的零窗口通知,就启动该计时器,周期性的发送一个零窗口探测报文段。对方就在确认这个报文的时候给出现在的窗口大小(注意:TCP规定,即使设置为零窗口,也必须接收以下几种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段)。

3.传输效率及Nagle算法

       TCP的数据传输分为交互数据流和成块数据流,交互数据流一般是一些交互式应用程序的命令,所以这些数据很小,而考虑到TCP报头和IP报头的总和就有40字节,如果数据量很小的话,那么网络的利用效率就较低。

       数据传输使用Nagle算法,Nagle算法很简单,就是规定一个TCP连接最多只能有一个未被确认的未完成的小分组。在该分组的确认到达之前不能发送其他的小分组。

       但是也要考虑另一个问题,叫做糊涂窗口综合症。当接收方的缓存已满的时候,交互应用程序一次只从缓存中读取一个字节(这时候缓存中腾出一个字节),然后向发送方发送确认信息,此时发送方再发送一个字节(收到的窗口大小为1),这样网络的效率很低。

素以要解决这个问题,可以让接收方等待一段时间,使得接收缓存已有最够的空间容纳一个最长报文段,或者等到接收缓存已有一半的空间。只要这两种情况出现一种,就发送确认报文,同时发送方可以把数据积累成大的报文段发送。

 

tcp的流量控制 为了防止这种情况发生,当主机A收到零窗口通知时就会启动一个持续计时器,每隔一段时间就发送一个只有1字节数据的探测报文段,主机B对这条报文进行确认并发送ack和自己的接收窗口大小,如果还是0那么主机A还会重复上述操作直到主机B发送的窗口大小不为0。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。接收方将自己接收窗口的大小通知给发送方,发送方调整自己的发送窗口为同样大小,这样就算发送方未收到接收方的回应也可以将自己发送窗口内的数据全部发送,下图中发送方的发送窗口为400。 阅读详情

相关推荐

【阿里云大模型高级工程师ACP习题集】2.4 自动化评测答疑机器人的表现(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 2477

TCP详解(三):TCP流量控制——Flow Control

两个应用程序通过TCP协议在网络中传输数据时,双方在硬件性能和软件性能上均可能存在差异,导致双方处理数据的速度不一致。当发送方的发送速度低于接收方接的处理速度时,不会出现问题。而当发送方的发送速度高于接收方的处理速度时,接收方会抛弃暂时无法“安置”的数据包。由于这些丢弃的数据包得不到确认,发送方会重新发送它们,直到他们被成功接收,造成资源浪费。TCP流量控制就是确保发送方的发送速度不要超出接收方的处理能力。

Android Engineer. 4701

从飞机翼型仿真到燃烧模拟:Fluent多物理场耦合的3种实战策略

本文深入探讨了Fluent在多物理场耦合仿真中的三种实战策略,涵盖可压缩流动与燃烧耦合、湍流模型选择及网格策略,以及顺序耦合、强耦合和混合耦合方法。通过具体案例和工程实践,帮助中高级用户提升仿真精度和效率,适用于航空航天和能源化工等领域。

aa123的博客 993

计算机网络 | 谈谈TCP的流量控制与拥塞控制

谈一谈有关TCP协议中较难理解的流量控制与拥塞控制

做技术人 · 产优质博客 · 找好工作 7872

从SSD到UFS:3分钟搞懂存储技术进化史(含最新协议对比)

本文梳理了从SSD到UFS的存储技术演进历程,重点解析了eMMC与UFS在架构上的核心差异。UFS凭借高速串行全双工接口,实现了性能与能效的飞跃。文章还对比了最新的UFS 4.0与PCIe 5.0 SSD协议,并探讨了3D NAND、SLC缓存等底层技术,揭示了移动与PC存储技术融合的未来趋势。

weixin_29294597的博客 276

Ultralytics YOLO模块自定义与替换实战技巧

本文详细介绍了在Ultralytics YOLO框架中进行模块自定义与替换的实战技巧。通过从零开始添加全新模块(如注意力模块)到进阶替换现有模块(如增强版卷积),并涵盖模块注册、YAML配置、模型融合及ONNX导出等关键步骤,帮助开发者深度定制YOLO模型,以应对复杂检测任务与部署需求。

numpy6sculptor的博客 930

TCP详解之流量控制

TCP可靠性之流量控制

Janonez的博客 1743

基于STM32F407VET6的智能巡检小车灰度循迹系统优化设计

本文详细介绍了基于STM32F407VET6主控芯片的智能巡检小车灰度循迹系统优化设计。通过将传感器输出从数字量升级为模拟量以获取更丰富的路面信息,并采用PD控制算法结合速度管理策略,有效提升了小车在复杂弯道上的循迹稳定性与适应性。文章分享了硬件电路抗干扰设计、软件滤波及实战调优经验,为嵌入式开发者提供了从“能跑”到“跑得稳”的系统性解决方案。

weixin_28273593的博客 442

什么是TCP流量控制?(解释说明+过程+示例)

基本上从名字就能看出它的作用,比如接收窗口的大小就是指,接收方当前能接收的数据量大小,发送窗口的大小就指发送方当前能发的数据量大小。“通俗点讲,就是接受方每次收到数据包,在发送确认报文的时候,同时告诉发送方,自己的缓存区还有多少空余空间,缓冲区的空余空间,我们就称之为接受窗口大小。接收方接收到数据报段后,会返回一个ACK确认报文给接收方,ACK就是他期待收到的下一个数据报的序列号;如果报文中win=0,发送方停止发送,开启一个定时任务,每隔一段时间,就去询问接受方,直到 win 大于 0,才继续开始发送;

qq_46631497的博客 9250

定位教程7---旋转中心标定之方法二

手算相机相对机器人关系

Quintin 6230

Qt入门教程【数据类型篇】数值类型

Qt中的数值类型

小鱼酱的博客 1万+

TCP流量控制和拥塞控制详解!图解分析,两分钟搞定TCP知识点!

1、TCP流量控制和拥塞控制有什么区别? 2、介绍下TCP 的流量控制? 3、介绍下TCP的拥塞控制? TCP流量控制和拥塞控制详解!图解分析,两分钟搞定TCP知识点!

weixin_41500064的博客 1万+

Android Shadow插件化框架分析与集成(一)

到此为止,本篇文章先介绍到这里,本篇文章主要介绍了:从源码的角度去集成shadow框架,从下载源码开始,到集成到自己的项目中,其中插件项目我是新建的demo应用,宿主应用是之前搭的一个MVP框架。文章中一步一步详细的介绍了宿主该如何集成,并提供了源码;介绍了插件该如何集成,同时也提供了源码。文章中还介绍了gradle的版本与AGP版本使用不当造成的问题,以及shadow源码的gradle版本与APG版本的配置,及和宿主插件应用gradle版本与AGP版本的关系。

superzhang6666的博客 1234

TCP协议-TCP的流量控制

一、前言 一般来说,我们总是希望数据传输能尽可能快一点。但如果发送方把数据发送得过快的话,接收方就可能来不及接收,这就会造成数据的丢失。而TCP的流量控制机制就是为了解决这个端到端的数据传输速率问题。 所谓流量控制就是根据接收方的接收数据能力,来控制发送方的数据发送速率。从而让发送方的发送速率不要太快,要让接收方来得及接收。 流量控制解决的是一个端到端的问题,是接收端控制发送端发送数据的速率,以便使接收端来得及接收。 TCP协议使用滑动窗口机制来实现对发送方的流量控制。 二、滑动窗口机制 2..

yunfan 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【图解】小白入门TCP流量控制

上篇文章讲了TCP拥塞控制机制的原理,没看过的不妨看下:三分钟读懂拥塞控制,这篇文章讲讲TCP流量控制机制。 一、为什么需要流量控制? 双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发送方的发送速率太快,会导致接收方处理不过来,这时候接收方只能把处理不过来的数据存在缓存区里(失序的数据包也会被存放在缓存区里)。 如果缓存区满了发送方还在疯狂着发送数据,接收方只能把收到的数据包丢掉,...

帅地 6593

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TCP中的流量控制

TCP流量控制通过滑动窗口机制防止发送方数据过快导致接收方缓冲区溢出。接收方通过窗口大小字段告知可用缓冲区空间,发送方据此动态调整发送窗口。窗口分为已确认、已发送未确认、可发送和禁止发送区域,通过ACK和窗口更新动态滑动边界。当接收方窗口减小时,发送方收缩窗口避免溢出;窗口增大时,发送方扩大窗口提高效率。流量控制与拥塞控制协同工作,确保点对点通信的速度匹配与网络资源合理利用。

2302_80908313的博客 1481

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TCP的流量控制的实现

流量控制机制的益处防止过载:流量控制可以防止发送方发送数据的速度超过接收方处理数据的能力,从而避免接收方的缓冲区溢出。提高资源利用率:通过允许接收方根据其当前的处理能力和可用资源来调整窗口大小,流量控制有助于更有效地利用网络资源。避免数据丢失:如果接收方无法及时处理数据,流量控制可以减少因缓冲区溢出导致的数据丢失。适应不同网络条件:流量控制机制可以根据网络的当前状况(如带宽、延迟和拥塞)动态调整数据传输速率,以适应不同的网络环境。提高传输效率。

weixin_74994990的博客 1101

linux TCP流量控制

I.流量控制 TCP使用流量控制来管理数据流量。流量控制限制发送字节大小,防止接收方接收缓存溢出。   1.发送方发送数据速度比接收方处理速度高;这种情况会使接收方缓存溢出,引起数据段被丢弃   2.应用取socket中的缓存数据存在间隔,所以只会偶尔出现缓存为空的情况;比如多媒体数据的接收速度高于播放速度 所以流量控制可以避免因接收方缓存溢出而产生的数据包丢弃,引起不必要的重传 TCP

永无止境 4270

TCP流量控制是怎么实现的?

流量控制是TCP协议中的一项关键机制,旨在确保数据发送方的传输速率不会超过接收方的处理能力,从而避免接收方的缓冲区溢出,保证通信的稳定性和有效性。在数据传输过程中,接收方会不断更新窗口大小,告知发送方当前的接收能力,发送方根据这一信息调整数据发送速率。来调节数据流的传输速率,具体来说,发送方根据接收方的窗口大小来决定可以发送多少数据。这些字段配合滑动窗口机制工作,使得TCP能够根据接收方的能力调整数据传输速率。流量控制关注的是接收方的能力,而拥塞控制关注的是网络的承载能力。

qq_45906596的博客 634

tcp 流量控制

TCP流量控制是TCP/IP协议中用于控制发送方和接收方之间数据传输速率的一种机制,以防止网络拥塞和确保网络资源的有效利用。流量控制主要通过调整TCP窗口大小来实现,确保发送方不会发送超出接收方处理能力的数据量。

坚定目标,超越自我 1101

TCP是如何实现流量控制的?

洪爵上节给大家介绍了TCP报文段的首部格式: 《面试必问的TCP,你真的回答对了吗?》, 今天就给大家讲一下TCP的流量控制是如何实现的吧~ 可能很多人面试被问到过流量控制和拥塞控制的一个区别是什么,在回答这个问题之前,你肯定需要知道流量控制和拥塞控制到底是什么? 首先说下,为什么需要流量控制。一般来说,我们总是希望数据是能传输的更快一些,但是如果发送方发送数据过快,可能会导致接收方来不及接收导致数据丢失。至于流量控制(flow control)就是让发送方的发送速率不要太快,让接收方来得及接收。 接下来我

KnightHONG的博客 2657
上一篇: TCP与UDP的区别
下一篇: TCP的拥塞控制
sicofield
博客等级 码龄18年 169粉丝 169原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值