| |
|
开发:
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的拥塞控制,慢开始是什么? |
先来了解一下什么是拥塞控制: 所谓的拥塞控制就是放止过多的数据注入到网络中,这样可以使的网络中的路由器,或者链路不会发生过载,拥塞控制所要做的就是都有一个前提,就是网络能够承受现有的网络负荷.,拥塞控制是一个全局性的过程,涉及到所有的主机,路由器,以及与降低网络除数性能相关的因素. 拥塞控制的一般原理: 在某段时间中,若网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏,这种情况就称为拥塞, 关系式: 对资源的需求>可用资源 要解决网络拥塞的发生,不能简单增加不足的资源,如:把某个节点的缓存空间扩大,或换更高的链路,网络拥塞是一个复杂的问题,不能简单的处理,而且,发生拥塞的原因也有很多, 拥塞尝尝会趋于恶化,这是因为:一个节点或路由器没有了足够的缓存空间,他就会丢弃一些新来数据分组,而这些分组的发送方一直没有收到回应信息,就会不断的触发重传机制,所以就会更加阻塞网络. 拥塞控制和流量控制: 拥塞控制是一个全局过程,更加关注网络中阻塞情况,通过tcp链接的端点,迟迟收不到回复的确认包,就会判断网络中可能出现的拥塞现象,但不能具体发生的位置,也不知道发生的具体原因, 流量控制: 主要就是为了不让发送方发送的速率过快,要给接受方时间来接受数据,,一般采用滑动窗口实现对流量的控制,流量控制是指点对点通信量的控制, 进行拥塞控制,是要付出代价的,首先需要获得网络内部流量分布的信息,在实现拥塞控制时,还需要在借点之间,交换信息和命令,以便选择控制的策略和实施控制.这样会产生一定额外开销, ? 在图中可以看出,横坐标是提供的负载,代表单位时间内输入给网络的分组数组,因此提供的负载也称为输入负载或网络负载,纵坐标是吞吐量,代表单位时间内从网络输出的分组数目, 具有理想拥塞控制的网络,在吞吐量饱和之前,网络吞吐量应等于提供的负载,故吞吐量的曲线是45度的斜线. 同时,可以看出随着提供的负载变大,网络吞吐量的部分变小,也就是说,在网络吞吐量还未达到饱和时,就已经有一部分输入的分组被丢弃了.当网络的吞吐量明显地小于理想的吞吐量时,网络就进入了轻度拥塞的状态,. 接下来,当提供的负载达到某一数值的时候,网络的吞吐量反而随提供的负载的增大而下降,这时网络就进入了拥塞状态,当提供的负载继续增大到某一个数值时,网络得到吞吐量就下降到了零,网络就已经无法工作了,这就是所谓的死锁, 在对拥塞控制方法设计的时候主要分为两种控制方法: 1.开环控制 指在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞,但一旦整个系统运行起来,就不再中途进行改正, 2.闭环控制:是基于反馈环路的概念 检测网络系统以便检测到拥塞在何时,何处发生,把拥塞发生的信息传送到可采取行动的地方,调整网络系统的运行以解决出现的问题, tcp的拥塞控制方法tcp进行拥塞控制的算法有四种,慢开始(slow-start),拥塞避免(congestion-avoidance),块重传(fast-retransmit)和快恢复(fast-recovery).
拥塞控制也叫做基于窗口的拥塞控制,为此,发送方维持一个叫作拥塞窗口(cwnd)的状态,的转态变量,拥塞窗口的大小取决于网络的拥塞程度,并且动态变化,发送方让自己的发送窗口等于拥塞窗口. 发送方控制拥塞窗口的原则是: 只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多分组发送出去,这样就可以提高网络的利用率,但只要网络出现拥塞或有可能出现拥塞,就必须把拥塞窗口减小一些,以用来减少注入到网络中分组数,以便缓解网络出现的拥塞. 发送方通过判断网络拥塞的依据就是出现了超时 下面将讨论拥塞窗口cwnd大大小是怎么样变化的,先从慢开始算法开始: 慢开始算法的思路:当主机在开始发送数据时,由于并不清楚网络的负荷情况,所以如果立即把大量数据字节注入网络中,那么就很有可能引起网络发生拥塞,即由小到大逐渐增大发送窗口,就是采用从小到大逐渐增大拥塞窗口数值. 慢开始规定: 在收到一个对新的报文段的确认后,可以把拥塞窗口增加最多一个smss的数值,. 过程: 发送方每收一个新的报文段的确认,就使发送方的拥塞窗口加1,因此发送方在收到两个确认后,cwnd就从2增大到4个,,所以在使用慢开始算法后,每经过一个传输轮次,拥塞窗口cwnd就加倍. 这里的慢开始不是说cwnd增加的速率慢,而是值tcp开始发送报文段时先设置到cwnd=1 为了防止拥塞窗口增长过大引导网络拥塞,还需要设置一个慢开始的门限, ?拥塞避免算法的思路是让拥塞窗口cwnd缓慢的增大,即每经过一个往返时间RTT就把发送方的拥塞窗口的cwnd加1,,而不像慢开始那样加倍的变大,. 无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为无法判定,所以都当做拥塞来处理),就把慢开始门限设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为1,执行慢开始算法 ?快重传机制:快重传要求接受方在收到一个失序的报文段后,就立即发出重复确认.而不是等到发送数据的时候,捎带发送确认包,快重传的算法规定,发送方只要收到一连三个重复的确认就应该立即重传对方尚未收到的报文段,而不是继续等待设置的超时重传计时器到期. ? 快恢复: 快重传配合使用的还有快恢复算法,有以下两个要点: 当发送方连续收到三个重复确认包时,就执行”乘法减小”算法,将把ssthresh门限减半。但是接下去并不执行慢开始算法。考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,所有这是网络可能没有发生拥塞,所以此时不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。 ? ? |
|
网络协议 最新文章 |
使用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/29 11:20:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |