关于TCP拥塞控制的理解和TCP流量控制

拥塞和拥塞控制
TCP的拥塞控制(详解)
拥塞及控制
这两篇讲的非常好。赞。。。

抽一些方便理解

网络拥塞概念

拥塞 当网络中存在过多的报文时,网络的性能就会相应下降,这种现象就被成为拥塞。即拥塞窗口小于数据数量,造成大量丢包,就会造成拥塞。

拥塞控制 要考虑到整个网络环境,使其负载不能超过网络的最大承受能力。

显然拥塞发生的原因是因为“需求”大于了“供给”,网络中的有限资源被多用户共享使用,网络本身无法根据资源的利用情况来限制某些用户,并且随着目前互联网的发展,上网的用户和应用的数量也随之增长,这样,如果不采取某种措施来协调资源的使用,那么拥塞的发生就是必然的。

一般来说,拥塞控制算法包括拥塞避免和拥塞控制两个方面,拥塞避免是一种预防机制,也就是说避免网络进入拥塞状态,尽量使得网络保持在高吞吐量和低延迟的情况下。对应的拥塞控制就是恢复机制了,它使得网络一旦发生了拥塞,需要从拥塞状态中恢复出来,重新进入高吞吐量和低延迟的状态。看起来比较容易,然后事情不是想象中的那么简单。

TCP拥塞控制的四个阶段

  1. 慢启动阶段
  2. 拥塞避免阶段
  3. 快速重传
  4. 快恢复阶段

概念:
cwnd:拥塞窗口
swnd:发送窗口 = 拥塞窗口
ssthresh:慢开始门限

所以,把TCP拥塞控制用大白话说就是
慢开始:将拥塞窗口,即拥塞窗口的值设置为1,即发送方发送一个数据报文段,接收方收到报文后,回复一个确定报文段后,发送方收到确认报文后,将拥塞串口的值翻倍。因此此时,发送窗口的增长是指数增长。
拥塞避免:当达到设定的慢开始门限的时候,就开始拥塞避免阶段,此时是线性+1增长拥塞窗口,直到出现超时重传。这时有两个选择,重新进入慢开始,或者快速重传。
快速重传:即发送方立即重传,而不是等到超时才重传。在一下机制和时机才会快速重传:接收方要立即发送确认,收到了失序的报文段的时候进行重复确认,一旦发送发收到三个连续的重复确认,就立即重传丢失的报文,而不是等到超时。这时会进入快恢复阶段。
快恢复:的拥塞窗口的初始值是之前设置的慢开关门限值的一半。然后进入拥塞控制阶段。

流量控制

TCP 流量控制

双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发送方的发送速率太快,会导致接收方处理不过来,这时候接收方只能把处理不过来的数据存在缓存区里(失序的数据包也会被存放在缓存区里)。

如果缓存区满了发送方还在疯狂着发送数据,接收方只能把收到的数据包丢掉,大量的丢包会极大着浪费网络资源,因此,我们需要控制发送方的发送速率,让接收方与发送方处于一种动态平衡才好。

以上的话就是说,接收方有一个接受缓存区,满了就处理不了,就丢包,就浪费网络啦。

解决办法(流量控制):接收方确认时,带上缓存区的空间,为0时,发送方就先不发,过段时间,发送方来询问是否可以继续发啦,如果还是0,就再过段时间来问,如>0就继续发送。

你可能感兴趣的:(前端小芝士)