TCP-流量控制和拥塞控制

流量控制和拥塞控制是计算机网络中确保数据可靠、高效传输的重要机制,它们在功能、作用对象和实现方法上有所不同,下面为你详细介绍:

流量控制

定义

流量控制是一种协调发送方和接收方之间数据传输速率的机制。其主要目的是防止发送方发送数据的速度过快,导致接收方无法及时处理这些数据,从而造成数据丢失。它是端到端层面的控制,关注的是发送方和接收方之间的直接交互。

实现方法

  • 停止 - 等待协议:发送方每发送一个数据帧后,就停止发送,等待接收方的确认帧。只有当收到确认帧后,才会发送下一个数据帧。例如,在一个简单的文件传输场景中,发送方发送一个数据包后,会暂停操作,直到接收到接收方返回的“已收到”确认信息,才继续发送下一个数据包。这种方式实现简单,但效率较低,因为在等待确认的过程中,发送方处于空闲状态。
  • 滑动窗口协议:该协议允许发送方在未收到确认帧的情况下,连续发送多个数据帧。发送方和接收方分别维护一个发送窗口和接收窗口。发送窗口规定了发送方可以连续发送的数据帧范围,接收窗口规定了接收方能够接收的数据帧范围。例如,TCP协议就采用了滑动窗口机制。发送方可以在窗口大小允许的范围内连续发送多个数据包,而不需要等待每个数据包的确认。接收方会根据自身的处理能力动态调整窗口大小,并将窗口大小信息告知发送方,发送方根据该信息调整发送速率。

拥塞控制

定义

拥塞控制是一种全局性的机制,用于防止网络出现拥塞。当网络中的流量过大,超过了网络的承载能力时,就会导致网络性能下降,如数据包延迟增加、丢包率上升等,这种情况被称为网络拥塞。拥塞控制的目的是通过调整发送方的发送速率,使网络中的流量保持在一个合理的范围内,避免网络拥塞的发生。

实现方法

  • 慢启动:发送方在开始发送数据时,先以较小的发送速率发送数据,然后逐渐增加发送速率。具体来说,发送方初始设置一个拥塞窗口(cwnd),初始值通常为 1 个最大报文段(MSS)。每收到一个确认帧,拥塞窗口大小就增加 1 个 MSS。例如,发送方最初发送一个数据包,收到确认后,拥塞窗口变为 2 个 MSS,此时可以发送 2 个数据包,收到这 2 个数据包的确认后,拥塞窗口变为 4 个 MSS,以此类推。
  • 拥塞避免:当拥塞窗口大小达到一个阈值(ssthresh)时,慢启动过程结束,进入拥塞避免阶段。在拥塞避免阶段,发送方每收到一个确认帧,拥塞窗口大小只增加 1/cwnd 个 MSS,这样拥塞窗口的增长速度会变得比较缓慢,从而避免网络拥塞。
  • 快重传:当接收方收到一个失序的数据包时,会立即发送一个对前面已正确接收的数据包的重复确认。当发送方收到 3 个重复确认时,就知道有一个数据包可能丢失了,此时发送方不需要等待超时重传定时器到期,而是立即重传丢失的数据包。
  • 快恢复:在快重传之后,进入快恢复阶段。发送方将拥塞窗口大小减半,同时将阈值(ssthresh)设置为减半后的拥塞窗口大小,然后拥塞窗口大小线性增加。

两者的区别与联系

  • 区别
    • 作用范围:流量控制是端到端的控制,主要关注发送方和接收方之间的流量匹配;拥塞控制是全局性的控制,关注的是整个网络的性能。
    • 触发原因:流量控制是由接收方的处理能力触发的,当接收方缓冲区快满时,会通知发送方降低发送速率;拥塞控制是由网络的拥塞状态触发的,当网络出现拥塞迹象时,发送方需要调整发送速率。
  • 联系:两者都是为了保证数据的可靠传输,并且在实际的网络协议中,它们通常是相互配合使用的。例如,在 TCP 协议中,既包含了流量控制机制(滑动窗口),也包含了拥塞控制机制(慢启动、拥塞避免等)。

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

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

相关文章

ACM寒假集训第四期

ACM寒假集训第四期 有理数取余 思路 bx=a mod m x=((a mod m) * ( b^(-1) ) mod m)) mod m; 问题就转化为如何求解 b 的逆元 b x = 1 mod m ,b对m的逆元,当 gcd(b,m)=1 时才存在。存在 bx+my=1 通过辗转相除法可以得到b,m的最大公约数然后根据最后得到的一系列等式合并为 bx+m…

昆明理工大学2025年硕士研究生调剂汇总表(2月10日更新)

这是今年昆明理工大学调剂信息,目前只更新了部分学院的部分专业,后续会持续更新。 【腾讯文档】昆明理工大学2025年硕士研究生调剂汇总表 https://docs.qq.com/sheet/DZERIbnpPb3JjeHFO

推荐一款人人可用的开源 BI 工具,更符合国人使用习惯的数据可视化分析工具,数据大屏开发神器!

前言 今天大姚给大家推荐一款人人可用的开源、免费的 BI 工具,更符合国人使用习惯的数据可视化分析工具,数据大屏开发神器,Tableau、帆软的开源替代:DataEase。工具介绍 DataEase是一个开源的数据可视化分析工具,可以帮助用户快速分析数据并洞察业务趋势,从而实现业务的改…

清华大学推出的 DeepSeek 从入门到精通(104页)免费教程!

前言 最近 DeepSeek 的出现让 AI 在国内掀起了一股浪潮,各大媒体、平台都在讨论和推广 DeepSeek,帮助各行各样使用 AI 不再有困难。今天大姚给大家分享一个由清华大学推出的、免费的:DeepSeek从入门到精通实用教程,该教材有着足足的104页能够快速的帮助大家了解和使用DeepS…

卞俊良

卞俊良 你猜 你猜我猜不猜

P1314 [NOIP 2011 提高组] 聪明的质监员(前缀和)

这道题最核心就是二分W,然后对于每一个W都构建一个前缀和数组,但要注意ans不能开太小,我开INT_MAX都不行,其次就是二分左右端点的变化,如果s-y>0说明满足要求的点多了,这时候我们要提高标准,就是让W增大,及让beign=W+1,反之让end=W-1;如果s=y,此时ans=0;这时候我…

读读源码-ArrayList究竟是怎么实现增强for循环的?

以我的认知来说,java中的ArrayList实现List,List又是继承Collection,往后就不太清楚了。 今天看源码的时候发现Collection继承了Iterable,Iterable接口的作用是允许对象称为for-each loop语句的目标。 因此如果想了解ArrayList如何实现循环,我们必须先从Iterable看起 1.集…

“此电脑”不是“我的电脑”怎么办

在以前,我们可以按住win+E就可以打开到有盘符的界面(直接看见C盘,D盘,E盘……),现在win11没有这个效果了,我还得再在左边的选项里寻找“此电脑”再进入我想要的“我的电脑”界面,真麻烦!无缘无故多了几个点击步骤,效率真低! 今天,我想改变这个效果!自已自足!。。…

香港海底光缆-转载2020

转自:http://live.xiaohongshu.com.sdwan.ltd/index.php?m=home&c=View&a=index&aid=132香港作为全球重要数据传输驿站之一,其网络传输能力自然不可小瞧。根据香港政府通讯事务管理局办公室给出的资料,截至2019年1月,香港有十一个海缆系统,即亚非欧1号光缆系…

miniconda安装和配置

第一步,下载和安装访问Download Anaconda Distribution | Anaconda,跳过注册"Skip registration",进入下载界面往下拉,选择miniconda的下载。安装时候注意勾选PATH路径的配置选项。第二步,安装完成后通过Anaconda Prompt打开命令行,看到提示符前面有(base)字…