TCP 协议详解(五)-- TCP拥塞控制

前言

TCP(Transmisson Control Protocol)又叫传输控制协议作为传输层最重要的协议,对于信息的可靠传输有着重要的意义,针对这一协议的攻击也数不胜数,这里就对这一协议以及相关内容进行详细的总结,将从以下几个方面进行介绍。
本文以韩立刚老师的《计算机网络》网课为基础,感兴趣的话可以私信我要资料

1. 拥塞控制的一般原理

首先要搞明白的一点是:TCP的流量控制是发送方和接收方双方协商的结果,只是通过改变rwnd来控制发送端发送的速度,而网络的拥塞涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
拥塞出现的原因:对网络资源的需求>网络资源的总量。比如一根宽带的网络带宽是50M/s,这根宽带接在一台路由器上,路由器组成的局域网内有10台主机,当主机与互联网的交互流量达到80M/s时,就会出现网络拥塞。
拥塞控制就是为了解决这种问题。
先看一下网络的吞吐量和负载之间的关系:
在这里插入图片描述
可以看到,在没有拥塞控制的情况下,实际情况是当负载持续增大超过某个临界点时,网络的吞吐量会迅速减少,原因是:路由器等网络设备也有操作系统,可以想象你的计算机CPU利用率达到98%的情况,处理效率会大幅下降,出现卡死、宕机等情况。

当使用了拥塞控制以后,虽然也不可能把网络的吞吐量100%利用,但是如图所示,实际情况会比无拥塞控制好得多。

2. 常用的控制算法

那么如何控制网络中的流量呢?
我们可以使用逐步试探的方式,先发一个数据包,没有出现拥塞的话,再发2个,还可以的话再发4个…8个…16个,这样,如图:
在这里插入图片描述
这里引入了一个新概念cwnd(congestion window 拥塞窗口),这是由网络情况决定的,维持在发送方的窗口,我们就是通过控制其大小来进行拥塞控制。
具体控制的方法有慢开始和拥塞避免算法,快重传和快恢复等。

  1. 慢开始和拥塞避免
    通过一张图查看其原理:
    在这里插入图片描述
    慢开始是从1开始,刚开始每一轮次发送的报文段数呈指数型增长,到达门限值时,改为线性增长(也就是拥塞避免算法),假如在24时出现超时的情况,下一轮次就还从1开始,但是门限值降低为原来的一半,如此往复,达到控制拥塞的目的。

  2. 快重传和快恢复
    在第一种算法中,当出现丢包情况时,还是会按照停止等待协议,超过设置的时限以后再重传,但是这样的话速度就会变慢,为了提高速度,产生了快重传:快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认。这样做可以让发送方及早知道有报文段没有到达接收方。当发送端收到连续三个重复的确认时,说明网络还是很畅通的,就没必要从1开始,而是把慢开始门限 ssthresh 减半,但拥塞窗口 cwnd 现在不设置为 1,而是设置为慢开始门限 ssthresh 减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。如图:
    在这里插入图片描述
    那么真实的发送窗口的大小就是由cwnd和rwnd一起决定的。
    公式如下: 发送窗口的上限值 =Min [rwnd, cwnd]
    发送方的发送窗口的上限值应当取为接收方窗口 和拥塞窗口 这两个变量中较小的一个。

猜你喜欢

转载自blog.csdn.net/qq_29566629/article/details/106115750
今日推荐