计算机网络基础(十五)---传输层-TCP的拥塞控制

文章内容概览

在这里插入图片描述

TCP的拥塞控制

当网络中的数据报文过多的时候,就会造成网络的拥塞

网络拥塞的根源

在这里插入图片描述

  • 一条数据链路经过非常多的设备
  • 数据链路的各个部分都可能成为网络传输的瓶颈(网络中各种路由器的性能可能不一样、或者传输媒介性能有差别)
  • 网络对一些硬件设备的性能要求,大于可用资源,因此就导致了拥塞
TCP的拥塞控制和TCP的流量控制有什么区别?
  • 流量控制考虑点对点的通信量控制(主要是通过窗口来控制通信量,考虑接收方的接收性能)
  • 拥塞控制考虑整个网络,是全局性的考虑(它会感知到整个网络是否发生拥塞)

拥塞控制是一个很庞大的问题,因为它考虑到了整个网络,并且对于拥塞控制,很难有最优解。这里只对拥塞控制有一个简单的认识

如果要进行拥塞控制,首先需要有一个方法去判断网络是否发生拥塞。判断的方法简单粗暴,如果发送方发送的报文发生了超时,就认为网络发生了拥塞。但是,通过报文超时来判断网络是否一定拥塞是不成立的

如果在传输的某一个阶段,把光纤给断了,这个也会导致报文超时,这时就不是因为拥塞所造成的了,而是网络故障所造成的。所以,报文超时只是判断网络拥塞的一个方法(下边的内容先不考虑网络故障的情况)

拥塞控制的两个算法
慢启动算法
  • 由小到大逐渐增加发送的数据量
  • 每收到一个确认报文就增加(假如第一次收到了1个确认报文,下一次就发送2个报文;如果第二次收到2个确认报文,下一次就发送4个报文,依次1、2、4、8)

可以看到发送的报文是按指数增长的,指数增长的增长速率是非常快的。慢启动算法,它的指数增长会有一个阈值,称为慢启动阈值(ssthresh),增长到这个慢启动阈值之后就不再增长了。增长到这个阈值之后,它就会进行第二个算法

拥塞避免算法
  • 维护一个拥塞窗口的变量(这个变量大于慢启动阈值)
  • 只要网络不拥塞(即只要报文不超时),就试探着增大拥塞窗口(每次加一)

假设慢启动到达了阈值(假设是16),此时就会启动拥塞避免算法,它会试探着将拥塞窗口调大,如果16个报文都收到了确认,它就会再发送17个报文,如果没有发生超时,下一次就会发送18个报文。一直这样一个一个的调大,直到发生拥塞。这就是拥塞避免算法

拥塞避免算法可以保证在网络不发生拥塞的情况下,更多的发送数据

这是一张慢启动算法和拥塞避免算法的图(纵坐标:每一次发送数据报文的数量;横坐标:发送的轮次)
在这里插入图片描述

在到达阈值之前,数据报文的数量是指数增长的。当数据报文的数量达到阈值的时候就会启动拥塞避免算法,之后数据报文的数量就是线性增长的

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

!一直往南方开.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值