TCP传输协议如何进行流量控制?

29、深入解析TCP传输层协议:重传、超时与流量控制 本文深入解析了TCP传输层协议的核心机制,包括重传、超时与流量控制等关键技术。重点探讨了TCP的可靠性数据传输方式、往返时间(RTT)和重传超时(RTO)的计算与影响,以及拥塞崩溃的预防策略。此外,文章还详细介绍了Windows Server 2008和Windows Vista中TCP的新特性,如有限传输、死网关检测和前向RTO恢复(F-RTO)算法,以优化高带宽延迟积(BDP)环境下的网络性能。最后,总结了TCP协议的未来发展方向,以及其在5G和物联网时代面临的挑战与机遇。 阅读详情

TCP流量控制,简单来说就是让数据传输端传输的速率不要太快,让数据接收端来得及接收,利用滑动窗口机制可以很方便的在TCP连接上实现对数据传输端的流量控制。TCP的窗口单位是字节,不是报文段,数据传输端的发送窗口不能超过接收端给出的接收窗口的数值,流量控制的机制是控制丢包率,主要目的:让数据传输端了解数据接收端当前的接收能力,可灵活调整传输速率。流量控制机制图如下图所示:

 

滑动窗口:

TCP采用大小可变的滑动窗口进行流量控制,窗口大小的单位是字节。

数据传输窗口在连接建立时由双方商定。但在通信的过程中,数据接收端可根据自己的资源情况,随时动态地调整对方的传输窗口大小。滑动窗口实例图如下图所示:

 

滑动窗口引进原由:

我们可以把窗口理解为缓冲区(但是有些窗口和缓冲区又不太一样)。

如果没有这些“窗口”,那么TCP每发送一段数据后都必须等到数据接收端确认后才能发送下一段数据,这样做的话TCP传输的效率实在是太低了。

解决的办法就是在发送端等待确认的时候继续发送数据,假设发送到第X个数据段是收到数据接收端的确认信息,如果X在可接受的范围内那么这样做也是可接受的。这就是窗口(缓冲区)引入的缘由。

 

滑动窗口:

A、数据接收端窗口 X

接收端缓冲区大小。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。

B、拥塞窗口 Y

发送端缓冲区大小

C、数据传输窗口 Z

发送窗口的上限值 = Min [X, Y]

① 当 X < Y 时,是接收端的接收能力限制数据传输窗口的最大值。

② 当 Y < X 时,则是网络的拥塞限制数据传输窗口的最大值。

 

滑动窗口实例介绍:

 

数据传输端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。还可发送 300 字节。

数据传输端收到了对方对前 400 字节数据的确认,但对方通知数据传输端必须把窗口减小到 400 字节。现在数据传输端最多还可发送 400 字节的数据。

 

滑动窗口需掌握的知识点:

A、数据接收端将自己可以接受的缓冲区大小放入TCP首部中“窗口大小”字段,通过ACK来通知数据传输端。

B、窗口大小字段越大,说明网络的吞吐率越高

C、窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,即就是说不需要数据接收端的应答,可以一次连续的发送数据。

D、操作系统内核为了维护滑动窗口,需要开辟发送缓冲区,来记录当前还有哪些数据没有应答,只有确认应答过的数据,才能从缓冲区删除。PS:发送缓冲区如果太大,会有空间开销。

E、数据接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给数据传输端,数据传输端收到这个值后,就会减慢自己的发送速度。

F、如果数据接收端发现自己的缓冲区满了,就会将窗口大小设置为0,此时数据传输端不再传输数据,但是需要在定期发送一个窗口探测数据段,使数据接收端把窗口大小告诉数据传输端。

 

PS:在TCP的首部,有一个16为窗口字段,此字段就是用来存放窗口大小信息的。

 

TCP报文段发送时机的选择:

1、TCP维持一个变量,它等于最大报文段长度MSS,只要缓存中存放的数据达到MSS字节就组装成一个TCP报文段发送出去。

2、由发送方的应用程序指明要求发送报文段,即TCP支持的推送操作。

3、是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段发送出去。

 

小程序结合Three.js与gsap:打造流畅3D动画的完整指南 本文详细介绍了如何在小程序中整合Three.js与GSAP动画库,打造流畅的3D动画效果。通过从环境搭建、基础场景创建到模型加载与复杂动画编排的完整指南,帮助开发者克服小程序性能限制,实现如商品360度展示等沉浸式交互体验,提升产品视觉吸引力。 阅读详情

相关推荐

Obsidian笔记同步实战:基于Git的私有化部署与自动化管理

本文详细介绍了如何利用Git为Obsidian笔记构建私有化、自动化且免费的同步方案。通过安装配置Git与Obsidian-git插件,结合Gitee等远程仓库,实现笔记的版本管理、多设备同步与自动备份,打造安全可靠的知识管理体系。

y7z8a的博客 272

TCP协议-TCP的流量控制

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

yunfan 1万+

CANoe从入门到精通“保姆级”教程(二)- 堪称全网“最全”系列

CANoe各功能区介绍;

车载控制器AutoSAR软件开发工程师 2万+

【渝粤题库】广东开放大学 计算机网络 形成性考核

选择题 题目:随着微型计算机的广泛应用,大量的微型计算机是通过局域网连入广域网,而局域网域广域网的互连是通过 实现的。 题目:网络是分布在不同地理位置的多个独立的 的集合。 题目:在OSI参考模型中,在网络层之上的是 。 题目:在OSI参考模型,数据链路层的数据服务单元是 。 题目:在TCP/IP参考模型中,与OSI参考模型的网络层对应的是 。 题目:在TCP/IP协议中,UDP协议是一种 协议。 题目:计算机网络拓扑是通过网中节点与通信线路之间的几何关系表示网络结构,它反映出网络中各实体间的 。 题目:计

渝粤题库 2501

机械臂电机力矩计算

设计 6 轴机械臂时,电机力矩计算是确保机械臂负载能力、运动精度和安全性的核心环节,需围绕和两大核心展开,结合机械臂结构参数(如关节长度、质量分布)、负载需求(如末端负载重量、惯性)和运动参数(如加速度、角速度)逐步推导。

ZPC8210的博客 1856

别再只画GO图了!用R语言+Perl脚本搞定单细胞KEGG富集分析与圈图(附完整代码)

本文详细介绍了如何利用R语言和Perl脚本实现单细胞KEGG富集分析全流程,从基因ID转换到专业圈图可视化。通过对比KEGG与GO分析的互补价值,提供完整的代码实现和优化技巧,帮助研究者高效完成单细胞测序数据的通路分析,并生成高质量的圈图展示结果。

weixin_28694169的博客 403

tcp滑动窗口大小设置_TCP传输协议如何进行流量控制?

TCP流量控制,简单来说就是让数据传输端传输的速率不要太快,让数据接收端来得及接收,利用滑动窗口机制可以很方便的在TCP连接上实现对数据传输端的流量控制。TCP的窗口单位是字节,不是报文段,数据传输端的发送窗口不能超过接收端给出的接收窗口的数值,流量控制的机制是控制丢包率,主要目的:让数据传输端了解数据接收端当前的接收能力,可灵活调整传输速率。流量控制机制图如下图所示:滑动窗口:TCP采用大小可变...

weixin_39966130的博客 4151

杭电oj2023题题目详解(Java版)

杭电oj2023题详解

m0_51065958的博客 977

TCP如何利用滑动窗口实现流量控制(15分钟醍醐灌顶)

TCP如何利用滑动窗口实现流量控制 前言: 为什么需要流量控制 因为如果发送方把数据发送的过快,接收方就可能来不及接收,这就会造成数据的丢失 流量控制就是让发送方的发送速率不要太快,让接收方来得及接收所有数据 TCP中是通过滑动窗口机制在TCP连接上实现对发送方的流量控制(接收方控制发送方) 流量控制的具体细节: 假设先不考虑拥塞控制,发送方的发送窗口等于接收方的接收窗口 假设一个如下的TCP连接情况: 主机A和主机B已建立TCP连接,主机A给主机B发送数据,主机B对主机A进行流量控制

DongZhaoCheng 7875

《企业AI能力地图构建:AI应用架构师的关键秘籍》

构建企业AI能力地图是企业在AI时代实现战略转型和创新发展的关键举措,它需要从评估企业当前AI能力出发,全面了解技术储备、数据资产和人才队伍的现状。将企业业务战略转化为具体的AI应用场景,并进行优先级排序,是确保AI应用能够为企业带来实际价值的重要步骤。通过深入理解业务战略和挖掘应用场景,企业可以找准AI应用的切入点,提高投资回报率。

AI架构全栈开发实战笔记 631

ZYNQ工业级串口方案:AXI UART 16550扩展RS-485实战(自动方向控制+Linux驱动)

可以轻松扩展出多路工业级串口。但常规方案需要手动控制收发方向(DE/RE引脚),存在实时性差、CPU占用高等痛点。本文从硬件逻辑设计到Linux驱动开发,完整实现了ZYNQ平台的RS-485工业通信方案。,解决了传统方案实时性差的痛点。所有代码均经过实际项目验证,可直接用于生产环境。:尝试将此设计扩展为多协议兼容接口(支持RS-422/RS-232切换)!等特性,依然是现场总线通信的首选。,通过硬件逻辑+Linux驱动协同设计,实现零延迟切换。在工业自动化、能源电力等场景中,RS-485凭借。

QQ_778132974的博客 830

详解TCP协议(四)——传输中的流量控制

一、流量控制是什么 防止发送方发送数据太多,耗尽接收方资源,从而使接收方来不及处理,造成数据溢出,造成丢包。流量控制存在于传输层及数据链路层,针对对象为发送方与接收方 二、理解TCP流量控制基础 基于滑动窗口协议实现流量控制 2.1发送缓存与接收缓存 TCP建立连接时,会创建一个发送缓存。在TCP中发送缓存及接收缓存是相对的,即,建立连接时建立的缓存只有一个,即是发送缓存也是接收缓存 2.2TCP...

shang_0122的博客 3882

[QMT量化交易小白入门]-七十九、增加标的后,五年回测收益率达到了2493%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1574

TCP 协议是如何保证可靠传输的?(拥塞控制、流量控制、自动重传、停止等待协议)

数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时 TCP 发送数据端超时后会重发数据; 对失序数据包重排序:既然 TCP 报文段作为 IP 数据报来传输,而 IP 数据报的到达可能会失序,因此 TCP 报文段的到达也可能会失序。TCP 将对失序数据进行重新排序,然后才交给应用层; 丢弃重复数据:对于重复数据,能够丢弃重复数据; 应答机制:当 TC...

yiyiyuebing的博客 1427

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

OSI 七层协议,TCP连接,可靠传输,流量控制,拥塞控制

OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。 五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。 各层协议的具体分工: 物理层:通过媒介传输比特,确定机械及电气规范 数据链路层:将比特组装成帧和点到点的传递(帧Frame) 网络层:负责数据包从源到宿的传递和...

jcsyl_mshot的博客 5852

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

计算机网络-传输层篇-TCP协议的可靠传输,流量控制,拥塞控制与传输效率

计算机网络-传输层篇-TCP协议的可靠传输,流量控制,拥塞控制与传输效率

汤键的博客 1553

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

详解TCP协议__可靠传输__流量控制__拥塞控制(保姆级)

上图是拥塞控制的第一种模式,在数据刚开始建立传输的时候,生成一个拥塞窗口大小CWND,然后CWND一开始指数级增加,在达到阈值ssthresh的时候进入拥塞避免算法,开始加法递增,假如传输过程中出现数据包的丢失,就将拥塞窗口值设为初始值再进行满开始,并且阈值的大小为出现丢包的时候CWND值的一半。,停止等待ARQ协议,原理当A主机往B主机发送一个数据包后,A主机会等待B主机返回一个确认数据,当A主机等待一定时间未收到B主机的确认数据,将会重传上一个数据包。

Xiaofakerr的博客 548

TCP传输协议---滑动窗口、流量控制

滑动窗口、流量控制一. 滑动窗口协议①. 滑动窗口介绍②. 传统方式传输③. 滑动窗口传输方式④. 窗口大小⑤. 发送方的滑动窗口⑥. 数据全部发送完毕⑦. ACK确认应答⑧. 接收方的滑动窗口⑨. 接收窗口和发送窗口的大小二. 流量控制①. 流量控制②. 操作系统缓冲区与滑动窗口③. 收缩窗口、丢包的现象④. 窗口关闭⑤. TCP 解决窗口关闭时,潜在的死锁现象⑥. 糊涂窗口综合症⑦. 解决糊涂窗口综合症方法 一. 滑动窗口协议 ①. 滑动窗口介绍 窗口对应的是一段可以被发送者发送的字节序列,其连续

1439

传输控制协议TCP详解:TCP报文段,连接,可靠传输,流量控制和拥塞控制

一、可靠传输的工作原理 二、TCP报文段的首部格式 三、可靠传输的实现

weixin_51094807的博客 3531

传输层 TCP协议的流量控制

Swing Dialog对话框 对话框有四种:消息对话框,输入对话框,确认对话框,选项对话框 下面展示:信息对话框,警示对话框,输入对话框,确认对话框,选项对话框,前两个属于消息对话框。 //显示信息对话框 public static void showInformationMessageDialog(JFrame jFrame,String title, String infor...

星辰火之梦 528

【计算机网络】传输层TCP协议——协议段格式、三次握手四次挥手、超时重传、滑动窗口、流量控制、

TCP协议详解 摘要: TCP是面向字节流的可靠传输协议,核心机制包括: 确认应答(ACK)确保数据可靠到达 超时重传应对丢包问题 动态调整超时时间优化性能 TCP报文格式特点: 报头长度可变(4位首部长度) 序号/确认序号实现可靠传输 6个标志位(SYN、ACK、FIN等)控制连接状态 连接管理: 三次握手建立连接(验证全双工通信) 四次挥手断开连接(非对称关闭) TIME_WAIT状态确保网络残留报文消散 关键区别: 相比UDP的固定边界,TCP需应用层处理粘包 连接建立有成本(时间/空间) 流量控制通

GGDxianv的博客 2935

网络协议查漏补缺(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)

3、如果client发送ACK后马上释放了,然后又因为网络原因,server没有收到client的ACK,server就会重发FIN,这时可能出现的情况是。例如上述情况,client没有向【server的确认】发出确认,server由于收不到确认,就知道client并没有要求建立连接。:表示收到了对方的FIN报文,并发送出了ACK报文,就等 2MSL 后即可进入CLOSED状态了。,因此不需要维护一些复杂的参数,首部只有8个字节(TCP的首部至少20个字节)

一个写湿的程序猿 572

有关TCP协议的思考 (可靠传输 流量控制 拥塞控制)

之前写过一篇有关网络层的ip协议设计相关的想法,关于tcp我同样来一篇。其实了解TCP协议就必须要了解其首部的每个字节的意义。TCP是可靠传输,传输数据之前必须建立连接 最后也要释放连接。所以要我们自己设计,应该有哪些字段呢?首先应该是目的端口号、源端口号 用于进程到进程的通信。其次序号和确认号 即对每个字节编号,不管是停止等待ARQ还是连续ARQ都是需要知道哪个字节的数据是否收到,那么就需要编号。确认号是告诉对方下一次该从哪个编号的字节开始发送数据。然后 是ACK FIN SYN 等标志位 用于连接相关。

mmmmhello的博客 376

网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)

网络协议从入门到底层原理传输层( Transport)UDP 协议(数据格式、检验和)端口(Port) 传输层( Transport) 传输层有2个协议: TCP(Transmission Control Protocol),传输控制协议 UDP(User Datagram Protocol),用户数据报协议 UDP 协议(数据格式、检验和) 数据格式 UDP是无连接的,减少了建立和释放连接的开销 UDP尽最大能力交付,不保证可靠交付,因此不需要维护一些复杂的参数,首部只有8个字节(TCP的首部至少2

萌宅鹿的技术小屋 4740
上一篇: 你知道TCP协议如何保证数据的顺序传输?干货!速来!
下一篇: 大文件传输软件测评,看完就知道怎么选了
镭速
博客等级 码龄8年 4942粉丝 489原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

镭速

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值