| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 拥塞控制算法(二) -> 正文阅读 |
|
[网络协议]拥塞控制算法(二) |
为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。 最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成 后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法 再后来在TCP NewReno中又对“快速恢复”算法进行了改进 近些年又出现了选择性应答( selective acknowledgement,SACK)算法,还有其他方面的大大小小的改进,成为网络研究的一个热点。 二、Tahoe算法Tahoe算法只有两个状态①慢启动(SA状态)和②拥塞避免状态(CA状态)
Tahoe算法的惩罚比较严重。 ③快重传的思想是:只要发送方收到了三个重复的ACK,就会立马重传,而不用等到RTO到达(如果没有3个重复的ACK而包丢失了,就只能超时重传); 并且将ssthresh的值设置为当前cwnd的一半,而cwnd减为1,重回slow start阶段。 三、Reno参考链接:Reno、NewReno、SACK 1. 快恢复:①当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半。但是接下去并不执行慢开始算法。 而超时时仍然与Tahoe算法相同,将拥塞窗口设置为1MSS。 2. 缺点
发送方收到三个冗余ACK后,将该段重发(而不是这之后的所有段),然后进入快速恢复阶段。发送方一旦收到一个新的ACK就从快速恢复状态退出,进入冲突避免状态。这就会导致发送速率降低。 四、NewReno参考链接:NewReno、SACK NewReno对Reno的这个缺点进行了改进。 1. Reno TCP的基础上对快速恢复算法进行修改只有一个数据包丢失时:其机制和Reno是一样的 当同时有多个包丢失时:Reno快速恢复算法中发送方收到一个新的ACK就退出快速恢复状态,而New Reno算法中只有当所有报文都被应答后才退出快速恢复状态 改进的快速恢复算法具体步骤:
序号一和序号二中,拥塞窗口的变化是,基于数据包守恒的原则。即同一时刻能在网络中传输的数据包是恒定的,只有当旧数据包离开网络后,才能发送新数据包进入网络。也可以理解为是一个对于Reno的补充,降低拥塞窗口的变化。 一个重复ACK不仅意味着有一个包丢失了,还表示有发送的数据包离开了网络,已经在接收区的缓冲区中,不再占用网络资源,于是将拥塞窗口加一个数据包大小。 2. 添加了恢复应答判断功能使TCP终端可以把一次拥塞丢失多个报文的情形与多次拥塞的情形区分开来,进而在每一次拥塞发生后拥塞窗口仅减半一次,从而提高了TCP的顽健性和吞吐量。 注意区分确认应答(恢复应答RSACK)(最大报文应答)和部分应答(PACK)。 五、SACKSACK针对NewReno算法的一些问题进行了改进。 发送方收到后,会维持一个计分板(scoreBoard),标注这些乱序到达的段,并重发没有到达的段。 发送方考虑以下五种情况:
六、Vegas参考链接: Vegas是基于延时反馈的TCP协议。经典的Vegas算法的基本思路:RTT增加,拥塞窗口减小;RTT减少,拥塞窗口变大。
所以我们考虑使用延迟的变化来探测网络拥塞。
在Vegas算法中
在Vegas算法中的变化:
1. 慢启动阶段
2. 拥塞避免阶段在拥塞避免阶段,Vegas:
其主要思路是主机在网络中段的个数不能太多,太多就会拥塞(降窗),太少网络利用率就不高(增窗)。 3. 重传重传的情况有两种:
重传与网络的拥塞相关联,所以:
4.仿真图
|
|
网络协议 最新文章 |
使用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年11日历 | -2024/11/26 6:33:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |