TCP的传输机制(慢开始,拥塞避免,流量控制,拥塞控制)

概述

TCP相比于UDP,可靠。

而拥塞控制,流量控制可以理解为,为了实现这种可靠传输的几种方法。

 基本的概念

TCP接收方维护接收窗口,发送放维护发送窗口。窗口能够理解为内存空间,即对有限空间合理使用。

  • 接收窗口:接收方根据自己的缓存大小设置的值,并且要告诉发送方,自己的接收能力。
  • 拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的值,是当前网络容量的反映。
  • 发送窗口:发送窗口=min(拥塞窗口,接收窗口),发送窗口取的是,拥塞窗口和接收窗口之间最小的那个。

举例:

自助餐馆很多人去吃,但是该店铺只有50个位置,且餐厅在2楼(一共5层的大楼,那么什别的楼层的人也需要坐电梯,这就是拥塞控制解决的问题,后面会讲到)。

为了避免上楼的人没有位置,楼下设立等待区域。

所以店铺门口电梯处有一个LED大屏幕,用来显示目前剩余的位置数量。

例如,这时候已经有20个位置已经坐了人了,只剩下30个位置(接收窗口为30)。但是电梯一次只能坐上10个人(网络拥塞窗口为10),所以可以计算发送窗口=min(30,10),即同时满足两个条件的最小,取最小值为10。

PS:因为还有吃完离开的人,数据会发生变化,这个就是后面的4种控制算法来计算的。

流量控制

流量控制的任务:流量控制就是,接收方告诉发送方的大小。即餐馆还剩多少位置。

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

  1.         接收方在确认报文段当中,将接收窗口(rwnd)告诉发送方。
  2.         发送方,根据接收窗口,和拥塞窗口来确认发送窗口。

 即假设,在电梯运送了3趟途中(送上去30人),只有5个人吃完了,所以接收窗口的大小变为5,结合拥塞窗口10,min(5,10)=5。所以此时1楼的LED屏幕显示上去5个人。

PS:所以流量控制就是,LED屏幕实时变化的过程。

拥塞控制 

拥塞控制的任务:检测网络的状态(电梯情况),用4种算法来估算拥塞窗口的值。

如果说,流量控制的职责就是检测餐厅剩余的位置。那么拥塞控制就是电梯剩余能坐的位置(因为排队的还有其他楼层的人,即假如有7个人是要去3楼住酒店,那么即使餐厅还有5个位置,排队的人也只能坐3个上去)。

 

借用一张网图。

横坐标是传输轮次(电梯每上下一趟),纵坐标是拥塞窗口(电梯容量)。

而上图所示的增长条件的前提是:接收方目前给出的空间充足。 

慢开始算法:连接刚刚建立的时候,cwnd(拥塞窗口)指数增大。达到门限ssthresh改为第二种算法,拥塞避免算法。

拥塞避免算法:初始的ssthresh之后,cwnd呈加法增大。出现超时(网络拥塞的时候),调整cwnd=1,ssthresh=cwnd/2(乘法式减小)。然后又开始慢开始算法。

快重传算法:不是等到真正出现网络拥塞的时候才执行慢开始,而是接收方收到三次冗余的ACK之后就开始慢开始。(参考TCP建立阶段ACK等的发送

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

总结:即慢开始算法和拥塞避免是一直在这个过程主要循环,而快重传算法和快恢复算法是为了,到了需要变化模式的时候,更快的变换过去。

那么疑问来了,既然电梯剩余的去到餐馆的位置,就是拥塞窗口,为什么还要这样麻烦呢?原因是因为在实际的网络当中,并不能知道,该条连接有多少个资源已经被使用,即我们并不能看见此时电梯里面有几个人,即大家都是蒙上眼睛,听广播和电梯超重提示来试探性的上楼。所以需要每次先上4,8,到达第一个ssthresh之后,改变算法为拥塞避免算法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ybbgrain

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

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

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

打赏作者

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

抵扣说明:

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

余额充值