计算机原理-TCP到底怎么流量控制?

计算机网络复习--TCP可靠传输、流量控制、拥塞控制原理 1、TCP可靠传输:TCP是可靠的传输层协议,主要用过序号确认机制和超时重传机制来实现可靠传输。 (1)、序号确认机制:TCP将要传送的整个应用层报文看成一个个字节组成的数据流,然后对每个字节进行编号, 所以对于同一个应用层报文,每一个字节都一个唯一的序号,这个序号代表着这个字节在这个报文中是第几个字节数据。 在连接建立时,TCP将每一次所传送的报文段中的第一个数据字节的序号,放在TCP首部的序号... 阅读详情

我们都知道TCP是一种可靠的,面向连接的传输层协议。我们总是希望TCP能够传输的数据越快越好。如果存在这样一种情况,发送方数据发送的非常快,而且接收方耗尽自己的资源也根本来不及接收,那这些多余的数据就会被丢弃,这就违背了TCP可靠的宗旨了。

 

所以就需要引入一种流量控制的手段:让发送方不要发送太快,既让接收方能够顺利接收数据,而且也不会造成网络链路的阻塞。

 

 

思路

沿着这个思路:让发送方不要发送的太快。那就让接收方控制发送方的数据大小,每次应答的时候通知发送方自己还剩多少空间可以接收数据。当然实际交互没有这么的简单,只是提供了一种思路。利用这种思路,诞生了滑动窗口的方式。

 

滑动窗口

滑动窗口类似一个窗口,是用来告诉发送方可以发送数据的大小。也可以说是窗口标记了接收方缓冲区的大小。窗口大小也就表示一次能发送多少数据量,而且这个窗口可以滑动,滑动窗口因此得名。

 

怎样告知发送方窗口大小?

怎样通知发送方窗口大小呢?难道要重新发送一包数据告诉对方吗,这显然是不合理的。可以巧妙的使用确认应答包。有了确认应答包还是不够,如果是第一次交互呢?所以还需要在三次握手时候,就需要告知对方。(rwnd表示接收窗口)

 

 

在原来的确认应答策略中,每一次发送数据,都需要Ack应答,在接收到Ack之后才会发送下一个数据段,发送方没有接收到Ack应答呢?这样做的方式效率实在太低。使用了滑动窗口,可以多次发送数据,只要不要超过对方窗口大小。这样就大大提高了效率。

 

滑动窗口细节

  1. 接收方将自己能够接收的缓冲区大小是在TCP首部中的“窗口大小”字段表示的,通过Ack通知发送方。

  2. 窗口大小是发送方可以发送的最大值,也就是说可以不需要Ack应答,可以发送多次数据,前提发送总数据量不要超过窗口大小。

  3. 窗口大小大说明网络的吞吐率高

  4. 操作系统内核维护了一块接收缓冲区,只有Ack应答之后的数据才能从缓冲区中删除。

  5. 接收方一旦发现自己的缓冲区快满了,就会通知对方自己的窗口为更小的值。

  6. 如果接收方发现自己的缓冲区满了,就会将窗口的大小设置为0,此时发送方将不再发送数据,但是需要定期发送一个窗口探测数据段,使接收方把窗口大小告诉发送方 。(针对这一点重点说明下为什么需要定期发送窗口探针?可以想象下,如果接收方缓冲区满了,然后通过Ack告知发送方窗口大小为0。发送方从此不会发送数据给接收方,接收方也没办法告知对方自己缓冲区可以接收数据,就会出现“卡死”的情况)

 

实例

A 向 B 发送数据。在连接建立时,B 告诉 A:“我的接收窗口 rwnd = 400(字节)。注意:图中的箭头上面大写的ACK表示首部中的确认位ACK,小写ack表示确认字段的值。

 

上面的过程是这样的:

  1. A发送了数据序号1至100,还能发送300字节

  2. A发送了数据序号101至200,还能发送200字节

  3. A发送了数据序号201至300,但是丢失了数据

  4. B发送了ACK,同时通知A,允许A发送序号201至500,300字节

  5. A发送了数据序号301至400,还能发送100字节

  6. A发送了数据序号401至500,不能发送数据了

  7. A超时重传旧的数据,但不能发送新数据

  8. B发送了ACK,同时通知A,允许A发送序号501至600,100字节

  9. A发送了数据序号501至600,不能发送数据了

  10. B发送了ACK,同时通知A,不允许A发送数据

【b站-湖科大教书匠】5 运输层 - 计算机网络微课堂 具体内容如下。如上图所示,局域网1上的主机,与局域网2上的主机,通过互联的广域网进行通信。网络层的作用范围是主机到主机,但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。上图,AP1和AP2是局域网1这台主机中的与网络通信相关的2个应用进程。AP3和AP4是局域网2上这台主机的与网络通信相关的2个应用进程。AP是应用进程的英文缩写词。运输层协议又称为端到端协议,运输层的作用范围是应用进程到应用进程,也称为端到端。从计算机网络体系结构的角度看运输层应用进程在应用层。 阅读详情

相关推荐

计算机网络第三章知识点复习总结

计算机网络

qq_36146165的博客 6838

计算机网络-传输层-TCP

1.TCP的流量控制机制 >为什么要实现流量控制? 因为当发送方向接收方传送数据包速度过快时,由于接收方来不及接收就会导致数据包的丢失。 因此就需要流量控制(Flow Control):让发送方发送速率不要太快,要让接收方来得及接受。 >流量控制举例 A向B发送数据 ①TCP为面向连接,因此先建立会话,B向A发送TCP数据,此时Ack=0(确认序号为0),r...

Step By Step 909

TCP原理

通过本文的介绍,我们对TCP协议的原理有了更深入的了解。TCP作为计算机网络中的重要协议,保证了数据的可靠传输,连接的建立和终止,以及流量和拥塞的控制。TCP是一种面向连接的协议,它提供了可靠的、全双工的数据流传输。TCP连接的建立采用三次握手过程,即客户端发送连接请求,服务器回应连接请求,最后客户端发送确认。而连接的终止则采用四次挥手,双方分别发送关闭连接的请求和确认,最终完成连接的关闭。这些字段在TCP的数据传输过程中扮演了重要的角色,用于控制连接的建立、数据的传输和连接的终止。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 2万+

TCP的流量控制

1、利用滑动窗口的流量控制   一般来说,我们总希望数据传输的更快一些。但如果发送方把数据发得过快,接收方就可能来不及接收,这就会造成数据的丢失。流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。   利用滑动窗口机制可以很方便地在TCP连接上实现发送方流量控制。通过接收方的确认报文中的窗口字段,发送方能够准确地控制发送字节数。 2、TCP传输效率 2.1、MSS   TCP维持一个持续变量,他等于最大报文段长度MSS(类似以太网协议中的MTU值)。只要缓存中存放的数

ZBraveHeart的博客 2万+

TCP协议:设计原理与编程实现

TCP协议是计算机网络中一种重要的传输协议,它提供了可靠的、有序的数据传输机制。本文将深入探讨TCP协议的设计原理,并提供相应的编程实现示例,帮助读者更好地理解和应用TCP协议。本文将深入探讨TCP协议的设计原理,并提供相应的编程实现示例,帮助读者更好地理解和应用TCP协议。数据分段与重组:TCP将应用层传递的数据分割成适当的大小,并在接收端将这些数据段重新组装成完整的数据。数据分段与重组:TCP将应用层传递的数据分割成适当的大小,并在接收端将这些数据段重新组装成完整的数据。服务器和客户端之间通过。

YOLO_CODE的博客 225

五天带你学完《计算机网络》·第三天·传输层

文章目录一、运输层的功能✪✪二、端口三、UDP✪✪四、TCP✪✪✪✪概述可靠传输工作原理两个协议TCP报文段总结 一、运输层的功能✪✪ 为相互通信的应用进程提供端到端的逻辑通信 封装后的数据为数据段 二、端口 16位二进制数作为端口号 分为服务器端口(熟知端口,登记端口)和客户端端口 常见熟知端口✪✪✪:计算机网络·各应用层协议对应的运输层协议及端口号 三、UDP✪✪ 是无连接的 发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。 尽最大努力交付 即不保证可靠交付,同时也不使用拥塞

ngtnmd的博客 5083

TCP协议-TCP的流量控制

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

yunfan 1万+

从科研小白到动物行为分析:我的DeepLabCut 3.0安装与初体验全记录

本文记录了从科研小白到成功安装并使用DeepLabCut 3.0进行动物行为分析的全过程。详细介绍了Anaconda环境配置、CUDA版本选择、DeepLabCut安装步骤及验证方法,并分享了初体验中的实用技巧和跨学科研究心得,为生物研究者提供了AI工具应用的实战指南。

weixin_30235225的博客 402

【TCP专题】-流量控制与拥塞控制

【TCP专题】-流量控制与拥塞控制

kybabcde的博客 1903

深信服防火墙路由模式开局部署-手把手教学(小白篇)

手把手教学,拿到深信服的防火墙路由模式该如何开局?

m0_64423407的博客 2万+

计算机网络-TCP可靠传输及流量控制实现原理

TCP可靠传输及流量控制实现原理 一、为什么TCP是可靠传输?   1. 停止等待协议 通过确认与超时重传机制实现可靠传输 在发送完一个分组后,必须暂时保留已发送的分组的副本。 分组和确认分组都必须进行编号。 超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。   出现差错或丢失的时候,发送方会将自己备份的副本再重传一次,直到收到接收的确认信息。当接收方...

cxu123321的博客 1776

BLDC方波控制 vs. FOC:技术选型指南与未来演进

本文深入对比BLDC电机方波控制与FOC技术的核心差异,分析两者在成本、性能和应用场景上的权衡。方波控制凭借低成本和易实现性,在电动工具和家电领域优势明显;而FOC则以平滑高效控制见长,适用于高端精密应用。文章为工程师提供了实用的技术选型指南,并展望了未来技术融合的发展趋势。

yhn4567890的博客 1172

计算机网络原理——传输层TCP协议的十个重要特性之滑动窗口机制、拥塞控制和流量控制

滑动窗口和流量控制滑动窗口没有滑动窗口带滑动窗口滑动窗口下三种丢包情况拥塞控制流量控制总结 这两种机制在可靠性的前提下,进一步的提高传输效率 滑动窗口 没有滑动窗口 传输过程,发一个收到一个,是串行过程,每次传输数据都要对应一个等待时间 传输N份数据就要等待N次应答时间 总的传输时间=N份数据传输时间+N份应答传输时间 带滑动窗口 滑动窗口是发送方的概念.接收方只有一一个接受缓冲区,没有"滑动窗口大小"这样的概念. 发送方的窗口大小太大,是可能导致问题的.但是这个事情不是由连接管理协商出来的而是靠拥塞控制

char_m的博客 1016

Kettle 连接 Oracle 数据库全流程指南

例如:C:\Oracle\product\19.0.0\dbhome_1\jdbc\lib\ojdbc8.jar 2. 替换 Kettle 驱动文件 将驱动文件复制到 Kettle 的 目录: 删除旧版本驱动:如 ojdbc14.jar 只能保留一个oracle驱动 重启 Kettle 以加载新驱动 二、配置数据库连接 1. 启动 Kettle 并新建转换 运行 (Windows)或 (Linux)。 新建转换(Transformation),添加 “表输入” 步骤,双击进入配置。 2.

qq_44724453的博客 3483

将Keil中的变量数组导出

首先,写好导出数据的函数。

小柚子的博客 1952

《计算机网络》深入学:流量控制与可靠传输

本文介绍了计算机网络中流量控制和可靠传输的基本原理与实现机制。首先阐述了发送方与接收方处理能力差异导致的问题,提出了流量控制和可靠传输两种解决机制。随后详细分析了三种核心协议:停止-等待协议的简单低效特性,后退N帧协议的累积确认机制及其重传问题,以及选择重传协议通过缓存乱序包实现的更高效率。文章还探讨了现代TCP协议如何结合这些理论,采用混合确认机制和动态窗口调整,并指出当前面临的长肥管道等新挑战。最后通过对比表格总结了三种协议的差异,强调这些机制在网络传输效率与可靠性平衡中的重要性。

计算机科学、人工智能、数据分析和大数据方向的研发和教学。 1324

DO-297标准详解:IMA系统开发与认证指南

DO-297的前言部分为读者提供了本指南的概述,说明了该标准的编写背景、主要目标、目标受众以及该文件在开发和认证集成模块化航空电子(IMA,Integrated Modular Avionics)系统中的作用。作为现代航空电子架构的重要组成部分,IMA系统大幅度简化了航空电子系统的硬件配置,增加了灵活性并降低了成本。因此,DO-297成为确保IMA系统开发、集成和认证符合适航标准的核心文件。在现代航空领域,系统复杂性逐渐增加,传统上各子系统独立运行的方式已经不适应多任务、多功能的需求。

qq_41854911的博客 1585

计算机网络——传输层-TCP协议

A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。(2)由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,即拥塞窗口 cwnd 现在不设置为 1,而是设置为慢开始门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法。• 拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长。

m0_74249744的博客 930

AutoSAR系列讲解 - 前言

博主xyfx是一名汽车行业的嵌入式软件工程师,本职工作是同步电机的驱动控制(主要做FOC的,这个大家要是有兴趣,以后可以单独开一个专栏来讲解一下),由于做控制器的时候需要用到AutoSAR,所以特意的去学习了相关知识,同时博主自己也在同步提高中,有写的不合理的地方也请大家指正。我准备对AutoSAR开设两个大的方面来讲解,一是AutoSAR的入门篇,二是AutoSAR的实践篇,分别讲述AutoSAR的理论基础和工具的使用。

雪云飞星的博客 4万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

计算机保研/考研面试复习专业课篇——计算机网络

计算机保研/考研面试复习专业课篇——计算机网络

zeng699304的博客 1421

假人有限元模型

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

计算机网络总结——运输层

本篇文章是对 湖科大计算机网络微课堂 中运输层的笔记总结,希望对大家有所帮助。 文章目录5.1运输层概述5.2运输层端口号、复用与分用的概念1.端口号2.发送方的复用和接收方的分用3.应用层常用协议使用的端口号4.举例说明端口号的作用5.3 UDP和TCP的对比5.4 TCP的流量控制5.5 TCP的拥塞控制1.基本概念2.拥塞控制算法(1)拥塞窗口和慢开始门限(2)慢开始算法(3)拥塞避免算法(4)快重传(5)快恢复算法5.6 TCP超时重传时间的选择 5.1运输层概述 在计算机网络中进行通信的真正实.

OYMNCHR的博客 3256

数学建模模型总结

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

计算机网络——运输层【重点】

数据链路层

打怪升级 2377

TCP原理:揭秘计算机网络中的可靠性机制

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它为应用程序提供了一种可靠的、有序的和错误校验的数据传输方式。在数据传输阶段,TCP提供了顺序号、确认号、重传机制等来保证数据的可靠传输。TCP的关闭连接遵循“四次挥手”过程:首先,一方发送FIN请求,等待另一方的ACK回应;TCP通过拥塞控制算法(如慢开始、拥塞避免、快重传和快恢复等)来动态调整数据发送速率,从而确保网络的稳定性和高效性。通过设置接收窗口的大小,接收方告诉发送方自己当前的处理能力,以避免因数据堆积而导致的丢包或系统崩溃。

qq_56579776的博客 390

计算机网络第五章—运输层

计算机网络运输层概述运输层端口号,复用,分用的概念UDP和TCP的对比 运输层概述 计算机网络体系结构中的物理层,数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了**主机到主机(端系统到端系统)**的通信。 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议 运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑,所采用的路由选择协议等),它使应用进程看见的好像是在两个

星星leslie的博客 1149
上一篇: 计算机原理-Linux中直接I/O的机制原理
下一篇: 计算机原理-Linux网络协议栈【驱动和网卡怎样交互?】
shankusu2017
博客等级 码龄15年 155粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值