【计算机网络】-TCP的拥塞控制 VS 流量控制

TCP比UDP多提供三个功能,分别是:可靠传输,拥塞能控制和流量控制,其中拥塞控制和流量控制有很多相似之处,本篇文章将展开谈谈这两者的细节之处,并在文章末尾给出对比。

窗口

在此之前,必须要明确TCP中三个窗口的概念。TCP连接的双方分别叫做接收方与发送方,接收方维护一个接收窗口,发送方维护一个发送窗口。可以简单的将窗口理解为内存单元。

1.接收窗口:这是接收方根据自己的缓存大小设置的值,并且要告诉发送方,反应接收方的接收能力。

2.拥塞窗口:这是发送方根据自己估算的网络拥塞程度而设置的窗口值,反应的是当前网络的容量。

3.发送窗口:发送窗口=min(拥塞窗口,接收窗口)。我们来理解一下这个公式。拥塞窗口是发送方自己算出来的,接收窗口是接收方告诉发送方的,发送窗口取这两者的最小值,也就是说发送的数据既不能超过网络的容量,也不能超过接收方的容量。

举个例子,图书馆顶楼有一个容量为30人的自习室,条件非常好,我们班有20个人都想去那里自习,都在一楼的电梯口排队,一楼大厅有一块LED屏幕,会实时显示这个自习室还剩多少个座位。这时候自习室有20个座位已经被别人抢走了!只剩下了10个(自习室的接收窗口为10),那我们班的人肯定得赶快去占位置!但是图书馆的电梯一次只能运12个人(网络的拥塞窗口12),不然就超载了。那我们一趟最多能送多少人上去自习室呢?第一不能超过10,因为自习室只剩下10个座位,第二不能超过12,因为电梯只能装下12个人,所以这一趟我们能上去的最大人数是:min(10,12)也就是10个人,即发送窗口为10.

注意,这三个窗口都是动态改变的,每一趟都会变,这个我们后面再聊

流量控制

流量控制要做的事情:根据自己的接收缓存,告示发送方自己的接收窗口大小,从而动态调整发送方的发送窗口(以字节为单位)大小

流量控制的方法:滑动窗口

1.接收方在确认报文段的窗口字段中将接收窗口rwnd告诉发送方

2.发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值

电梯送上来10个人,这10个人进入到自习室后占了10个位置开始努力学习,此时自习室的30个座位已满,不过这时候有5位同学自习结束,离开了自习教室,实际上还剩余5个空座位。可是楼下的LED屏幕上还显示剩余10个座位呢,那送上来十个人的话岂不是有人没座位了,那可不行呀。这个时候自习室的管理员就会修改LED屏幕上的数字,告知一楼的学生,现在只有5个座位了(接收窗口5),这时候排队的同学就知道了,最多也就只能上去5个人了。

所以说流量控制就是:自习室的管理员修改LED屏幕上剩余座位的过程

拥塞控制

流量控制要做的事情:监测网络状况,用四个算法估算出拥塞窗口的值

既然是图书馆,那准备去其他楼层阅览室的学生,他们也在这里排队,假设我们班的同学进电梯之前,已经有8个其他人站在电梯里面了。这时我们就站在门口算:电梯限载12人,已有8人,那么还能收4人(拥塞控制算法),聪明的我们算出来了拥塞窗口是4,LED屏幕上显式剩余座位5,那么发送窗口=min(4,5)=4,即我们中间只能有4个人能上去。

所以说,拥塞控制就是估算电梯还能装多少人的过程。可是网络是很复杂的,估算拥塞窗口可不是简单的加加减减。

估算拥塞窗口的算法:

横坐标是传输伦次(也就是电梯每上下一趟),纵坐标是拥塞窗口(电梯剩余容量)。需要注意的是,这四个算法之所以呈现上图所示的规律(线性增长,指数增长)有一个假设前提是:接收方有足够的缓存空间,发送窗口大小取决于拥塞程度

1.慢开始算法:连接刚刚建立时,cwnd指数增长,达到慢开始门限ssthresh时改用拥塞避免

2.拥塞避免算法:门限值之后,cwnd线性增长(加法增大),出现超时(网络拥塞时),调整cwnd=1,ssthresh=cwnd/2(乘法减小),改用慢开始算法

3.快重传算法:不是等到真正出现网络拥塞的时候才执行慢开始,而是接收方收到三次冗余ACK之后就改变为慢开始。

4.快恢复算法:cwnd变为新的门限值,继续执行拥塞避免

看到这里会不会有一个疑问呢?既然拥塞窗口等价于电梯剩余容量,为什么在这四个算法中拥塞窗口一次比一次大呢?

在上面的例子中,我们知道电梯的限载,也知道电梯目前已经站了几个其他人,所以每次能准确计算我们班还能上多少人,但是在实际网络中,网络的最大容量以及目前网络上已经在传输的报文数量是未知的,相当于我们看不见电梯里面已经站了多少人,也不知道电梯限载。所以我们只能一次一次试探。第一趟上去1个人,发现没有超载,诶!好事儿,那第二趟我们上去4个人,又没有超载,看来现在还不是很挤嘛~下一趟我们上8个(慢开始),哦吼!电梯报警了,上不去,那估计是已经站了很多其他人了,那这次上4个好了(拥塞避免),看看这一次超不超载。

最后总结拥塞避免和流量控制的相同点和不同点

1.目的不同拥塞控制控制量,流量控制控制速度。拥塞控制是控制电梯超不超载,流量控制是控制运人上来的速度不能太快,导致来不及接收

2.范围不同拥塞控制面向整个网络,流量控制面向当前连接。电梯里面站的人不仅有去顶楼自习室的人,还有去其他楼层的人,是面向整个图书馆的,即拥塞控制面向整个网络。LED上显式的仅仅是该自习室的剩余座位,所以流量控制面向的是当前连接。

3.任务不同拥塞控制的任务是发送方根据四个算法监测网络,不断调整拥塞窗口的大小;流量控制的任务是动态修改报文中的窗口字段,及时告知发送方接收窗口大小是多少。拥塞控制是不断计算电梯可承载的剩余人数,流量控制是自习室管理员动态更新LED屏幕上的剩余座位数。

4.结果相同最终结果都是改变了发送窗口(发送窗口=min(拥塞窗口,接收窗口)来控制发送方发送数据的速度。无论是限制进入自习室的人数,还是限制进入电梯的人数,都是通过改变每次运送人数来实现的。

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/114669660