| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> TCP拥塞控制 -> 正文阅读 |
|
[网络协议]TCP拥塞控制 |
1.TCP 什么是TCP:TCP是一种传输层的网络协议他是可靠性的传输协议主要是1对1,他拥有流量控制和拥塞控制两大优点; 2.TCP的拥塞控制如何实现 实现拥塞控制主要靠4个拥塞控制算法(慢开始、拥塞避免、快重传、快恢复); tcp会维护一个拥塞窗口(cwnd)的状态量拥塞窗口只是一个变量实际决定发送量的还是发送方窗口 TCP的拥塞控制可以用下图理解: 1.慢开始:在开始发送数据时发送较少的数据然后慢慢增长数据量采用乘法增加; 如图开始发送数据时由cwnd=1,2,4,8,16,采用乘法增长,当到达ssthresh(慢开始阈值)时就会进入到拥塞避免阶段 2.拥塞避免:当进入拥塞避免阶段数据会采用加法增长 如图cwnd=16当到达ssthresh时采用拥塞避免此时16,17,18......;当此时发生拥塞; 3.拥塞阶段:当进入拥塞阶段则会触发重传机制 1.超时重传:当发生重传超时则会出发超时重传,此时ssthresh则会变为cwnd的一半,然后cwnd变为1,再次执行慢开始;(超时重传在TCP Tahoe版本已经不用) 如图当发生拥塞时ssthresh由原来的16变为当前cwnd24的一半12,cwnd变为1重新执行慢开始; 2.快速重传:当发送方收到三次冗余的ACK时这是不进行超时重传,直接进行快速重传; 进行快速重传时回有一个问题因为由三个SAK接收方不知道重新发送那个数据所以会有SACK方法在首部格式中的[选项]中会有一个SACK它可以将缓存的地图发送给发送方,这样发送方就可以知道哪些数据收到了,哪些数据没收到,知道了这些信息,就可以只重传丢失的数据。 4.快恢复:当丢包事件被3次冗余的ACK事件触发,此时会进入快速恢复状态,因为TCP认为还能收到3个重复的ACK,网络并没有那么糟糕,所有反应也没有那么强烈。 如图此时将如果收到新数据的 ACK 后,把 cwnd 设置为cwnd(发生三次冗余ACK时cwnd) / 2 + 接收到冗余ACK的数量为:12,ssthresh = cwnd(发生三次冗余ACK时cwnd) / 2,原因是该 ACK 确认了新的数据,说明从 duplicated ACK 时的数据都已收到,该恢复过程已经结束,再次进入【拥塞避免】阶段。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 6:02:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |