TCP协议的拥塞控制
目录
一、简述TCP协议
二、什么是拥塞控制
三、拥塞控制的四个算法
1、慢开始
2、拥塞避免
3、快重传
4、快恢复
四、拥塞控制的整体流程
一、简述TCP协议
TCP是应用层的控制传输协议
是面向连接、可靠的传输层协议(传输数据前,必须建立连接)TCP
可靠性传输主要体现在:“确认应答”、“连接管理”、“流量控制”、“拥塞控制”等功能
二、什么是拥塞控制
拥塞控制就是为了防止过多的数据注入到网络中,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,因此TCP协议通过四个算法:慢开始、拥塞避免、快重传、快恢复、,来对拥塞进行控制降低网络中的拥塞程度
三、拥塞控制的四个算法
1、慢开始
慢开始是指当第一次发送数据时,如果一次性发送大量数据可能会引起网络拥塞,所以第一次发送时,先发送很小的数据量,进行测试,然后确定发送成功之后,慢慢增大发送量,也就是增大拥塞窗口的数值。
发送方需要维护一个叫做拥塞窗口(cwnd
)的状态变量,最初执行慢开始,令 cwnd = 1
,发送方只能发送 1
个报文段;当收到确认后,将 cwnd
加倍,因此之后发送方能够发送的报文段数量为:2
、4
、8...以此类推
2、拥塞避免
当我们慢开始进行到后期时,它的cmnd窗口增长速度非常快,这样会导致网络出现拥塞,这时候会设置一个慢开始门限 ssthresh
,当 cwnd >= ssthresh
时,进入拥塞避免,每个轮次只将 cwnd
加 1,降低拥塞窗口的增长速度
3、快重传
在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。
4、快恢复
当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,将cwnd
当前值减半作为新的慢开始门限 ssthresh
值,并让cwnd
的值等于这个新的慢开始门限ssthresh
值。随后开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。
四、拥塞控制的整体流程
值得注意的是:
快恢复和快重传基本上是同时进行的,快恢复是相对于慢开始算法而言的。使用快恢复算法时,cwnd
从较大值开始,通过拥塞避免算法逐渐线性增大,经过较短时间便能恢复比较快的传输速度。
TCP协议的拥塞控制相关推荐
- TCP协议的流量控制
我们知道TCP有流量控制和拥塞控制的功能.首先两者是有区别的:流量控制只与发送者和接收者之间的端-端通信有关,也就是它是一个局部的控制:但是拥塞控制是一个全局的问题,涉及所有主机.路由器及路由器的存储 ...
- 从TCP三次握手说起——浅析TCP协议中的疑难杂症(转载)
[转载] 原博文来自:https://blog.csdn.net/qiansg123/article/details/80126677 作者:黄日成,手Q游戏中心后台开发,腾讯高级工程师. 因为写得太 ...
- 从TCP三次握手说起——浅析TCP协议中的疑难杂症
PeterWang_bupt 贡献值:2 等級:L1 0 发布 0 评论 1 顶 发布链接发布图文 全部主题 我关注的主题 GEEKNEWS Rust Swift 全栈工程师 /home Pres ...
- 从TCP三次握手说起–浅析TCP协议中的疑难杂症(2)
在"从TCP三次握手说起–浅析TCP协议中的疑难杂症(1)"文章中,我们提到第6个疑问:TCP的头号疼症TIME_WAIT状态,下面我们继续这个问题的解答: 6. 疑症(6) TC ...
- 820-彻底弄懂TCP协议
疑症(1)TCP 的三次握手.四次挥手 下面两图大家再熟悉不过了,TCP 的三次握手和四次挥手见下面左边的"TCP 建立连接"."TCP 数据传送"." ...
- 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★
文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...
- c++tcp接收文件缓存多大合适_网易面经:深剖TCP协议的流量控制和拥塞控制,你懂了吗?...
1.自我介绍+项目 2.RPC框架和普通http有什么区别和优势? 基于Tcp封装还是http封装的 3.rpc是长连接吗?如果要传输一个特别大的文件 底层还是基于流吗? Nio是一个什么IO模型? ...
- TCP/IP协议族之运输层(TCP流量控制和拥塞控制 [1])
TCP的流量控制 1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失.所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收. 利用滑动 ...
- 网络 传输层 | UDP协议与TCP协议详解(三次握手及四次挥手、滑动窗口、拥塞控制)
概念 传输层:是负责应用程序之间的数据传输(通过端口的描述,描述了哪两个进程间的通信):传输层的两个主要协议:UDP 和 TCP UDP协议 UDP协议全称:用户数据报协议(User Dategram ...
最新文章
- c语言fac函数求n的阶乘,急求C语言编辑题:Cnm=n!/m!(n-m)!其中n,m 由键盘输入。要求设计一个函数fac(n)求某个正整数n 的阶乘。...
- ps制作html图标素材,如何用PS制作一个简单的扁平化图标?
- painticon java_新人,关于java的 paintIcon()方法
- 有向图的深度/广度优先遍历算法
- android /data/system/dropbox,Android导出dropbox日志
- linux mem cache,Linux内存:MemTotal、MemFree、MemAvailable三者区别
- matlab基于dct的图像压缩编码解码_一篇文章搞定DCT在JPEG中的本质
- ios 判断手机角度_iPhone那么贵,为什么电池还那么小呢?安卓手机电池都那么大了!...
- Core Data持久化数据存储(1)
- 处理App状态改变的策略
- 多商户商城系统功能拆解01讲-产品架构
- java知识体系结构图
- 什么是Apple Pay?
- 教你如何选型到合适的OA系统
- linux 中meltdown指令,用代码切身实践体会meltdown漏洞——初学者的体验感受
- html用图片链接网址
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day37】—— 并发编程3
- 关于无法进入XP系统的解决方法
- 微软计算器按钮按键AC CE MC MR MS M+中英文对照 使用方法
- Excel如何快速插入指定数目空白行