美文网首页
重传的讲究-TCP 拥塞控制

重传的讲究-TCP 拥塞控制

作者: RainingMan | 来源:发表于2019-08-02 17:45 被阅读0次

作者:林沛满
出处:Wireshark网络分析就是这么简单

网络之所以能限制发送窗口,是因为它一口气收到太多数据时就会拥塞。拥塞的结果就是丢包,这是发送方最忌惮的。能导致网络拥塞的数据量成为拥塞点,反送方当然希望把发送窗口控制在拥塞点之下,这样就能避免拥塞了。但问题是连网络设备都不知道自己的拥塞点,即便知道了也无法通知发送方。这种情况下,发送方如何避免触碰拥塞点呢?

方案1. 发送方知道自己的网卡带宽,能否以此推测该连接的拥塞点?

不能。因为发送方和接收方之间还有路由器和交换机,其中任何一个设备都可能是瓶颈。比如发送方的网卡是10Gbit/s,而接收方只有1Gbit/s,如果按照10Gbit/s计算肯定会出问题。就算用1Gbit/s来计算也没有意义,因为网络带宽是多个连接共享的,其他连接也会占用一定带宽。

方案2. 逐次增加发送量,知道网络发生拥塞,这样得到的最大发送量能定为该连接的拥塞点吗?

这是一个好方法,但没有这么简单。网络就像马路一样,有的时候很堵,有的时候很空。所以拥塞点是随时改变的动态值。
经过几代人的努力,总算有了一个最靠谱的策略。这个策略就是在发送方维护一个虚拟的拥塞窗口,并利用各种算法是它尽可能接近拥塞点。网络对发送窗口的限制,就是通过拥塞窗口实现的。下面我们就来看看拥塞窗口如何维护。

拥塞控制的过程分为四个阶段:慢启动、拥塞避免、快重传和快恢复

  1. 慢启动过程思路是不要一开始就发送大量的数据,如果一口气发太多数据就可能遭遇拥塞,所以发送方把拥塞窗口的初始值定得很小。RFC的建议是2个、3个或者4个MSS,具体视MSS大小而定。
    如果发出去的包都得到确认,表明还没有达到拥塞点,可以增大拥塞窗口。由于这个阶段发生拥塞的概率很低,所以增速应该快一些。RFC建议的是每收到n个确认,可以吧拥塞窗口增加n个MSS。这个过程增速很快,但是由于技术低,传输速度还是比较慢的,所以被称为慢启动过程。若出现丢包,则将拥塞窗口减半,进入拥塞避免阶段;
  2. 慢启动过程持续一段时间后,拥塞串口达到一个比较大的值。这个时候传输速度比较快,触碰拥塞点的概率也大了,所以不能采用翻倍的慢启动算法,而是要缓慢一点。RFC建议的算法是在每个往返时间增加1个MSS。这个阶段叫拥塞避免过程
  3. 当收到对一个报文的三个重复的 ACK 时,认为这个报文的下一个报文丢失了,进入快重传阶段,要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方,可提高网络吞吐量约20%)而不要等到自己发送数据时捎带确认;
  • RFC5681 则认为,快重传之后,进入快恢复阶段,为了不该刚发生拥塞的网络雪上加霜,建议把拥塞窗口降到1个MSS,然后再次进入慢启动过程。
  • 在《TCP/IP Illustrated》中,Richard Stevens认为:快重传完成后进入快恢复阶段,将临界窗口值修改为当前拥塞窗口值的一半,从这个临界窗口值开始,继续进入拥塞避免阶段,重复上述过程。

其他参考资料:

  1. 面试头条你需要懂的 TCP 拥塞控制原理

相关文章

  • 重传的讲究-TCP 拥塞控制

    作者:林沛满出处:Wireshark网络分析就是这么简单 网络之所以能限制发送窗口,是因为它一口气收到太多数据时就...

  • 拥塞控制算法对比

    RENO(经典的tcp拥塞控制): 基于丢包的拥塞控制. 分为 慢启动, 拥塞避免, 快速恢复, 快速重传...

  • TCP拥塞控制

    本文主要说明TCP拥塞控制的四种主要算法。 组成TCP拥塞控制的四种算法包括:慢开始,拥塞避免,快重传,快恢复, ...

  • TCP的拥塞控制

    原帖:TCP拥塞控制-慢启动、拥塞避免、快重传、快启动 - CSDN博客 拥塞:即对资源的需求超过了可用的资源。若...

  • 百度SRE实习生二面 TCP慢启动

    TCP拥塞控制-慢启动、拥塞避免、快重传、快启动 一般原理:发生拥塞控制的原因:资源(带宽、交换节点的缓存、处理机...

  • TCP超时重传代码解析

    Linux TCP拥塞控制的代码实现 如果发送的报文丢失,TCP需要重传丢失的报文以保证可靠性。那TCP如何知道报...

  • TCP 重传、滑动窗口、流量控制、拥塞控制

    TCP 重传、滑动窗口、流量控制、拥塞控制 相信大家都知道 TCP 是一个可靠传输的协议,那它是如何保证可靠的呢?...

  • 2018-07-11

    tcp的运输控制分为tcp流量控制和tcp拥塞控制,这里先讲tcp的拥塞控制。 为了讲清楚tcp的拥塞控制,还是利...

  • TCP 重传、滑动窗口、流量控制、拥塞控制

    【图解】你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了 - 小林coding - 博...

  • 计算机网络

    TCPIP协议,熟悉的说一说 了解TCP协议(超时重传、流量控制(滑动窗口)、拥塞控制等等) HTTP和HTTPS...

网友评论

      本文标题:重传的讲究-TCP 拥塞控制

      本文链接:https://www.haomeiwen.com/subject/alaldctx.html