TCP拥塞控制和流量控制区别含义深刻理解
因为最近学习了TCP/IP协议,学习TCP其中内部的两个很大的特点,就是流量控制和拥塞控制两个优化数据传输的方法,因为两者有很多细节的知识,所以再这里记录一下,希望能很直白清楚的解释这两个概念,也方便记忆和理解.
拥塞控制和流量控制是TCP用来解决传输数据中产生的一些问题,而采取的两种优化方法,
两者作用上的区别
- 流量控制是为了解决发送方和接收方速度不同而导致的数据丢失问题,当发送方发送的太快,接收方来不及接受就会导致数据丢失,流量控制用滑动窗口的形式解决问题
- 拥塞控制是为了解决过多的数据注入到网络,导致网络奔溃,超过负荷.当发送方发送数据大量的数据会注入到网络,如果没有限制,网络就会超负荷变卡,拥塞控制的用的是拥塞窗口解决的问题的
窗口的意义
窗口就是缓冲区,用来暂时存储数据等待发送和接收,其实就是对每一次发送的数据大小进行限制,每个窗口的都有大小限制,超过部分不能发送,可以不用每次发送报文等待ACK确认,只要保证发送的报文再发送窗口内部就行,消除了等待确认的时间,大大提高效率
流量控制
流量控制协议通过滑动窗口来实现.
简单来说就是发送窗口的大小,取接受方ACK提供的大小和发送方的拥塞窗口大小的最小值,来确定大小,发送窗口的大小不能超过滑动窗口的大小.为什么称为滑动窗口,因为当发送方接收到数据的确认信息,滑动窗口会更具返回的序号动态的改变窗口的位置.滑动的窗口大小得到了重置,同时滑动窗口会根据网络状况动态变化.
上面就是滑动窗口的具体例子,滑动窗口用来控制流量大小,并动态变化窗口大小.
拥塞控制
拥塞控制是为了解决过多的数据注入到网络,导致网络奔溃,超过负荷,拥塞控制包含四个策略
-
慢开始
慢开始的含义就是讲窗口先设置为1,每个传输轮次大小增长一倍,直到大道慢开始的门限(ssthresh),这时候慢开始阶段结束
-
拥塞避免
慢开始结束后,接下来就是拥塞避免,这个阶段拥塞窗口在每个传输轮次数量加1,直到触发了网络拥塞,窗口大小和门限都变为拥塞时最大的值得一半,然后重新开始慢开始阶段
-
快重传
快重传指的是当接受方收到顺序错误得数据时不接收数据,同时重复发起对于之前数据的确认,发动到第三次,发送方得知自己的一部分数据再发送中丢失,立即发起重传,不需要等待下一次发送信息时一起发送过去.,且重传时触发和拥塞一样得情况,进入快恢复阶段
途中M3丢失 ,接收方不接受M4和M5 ,而是不断发送确认M2得报文,三次之后,发送方重传M3的数据
-
快恢复
快恢复就是再发生拥塞和重传时,窗口经历了拥塞避免阶段,然后进入快恢复阶段,和拥塞避免一样都是每次加一,这样能提高恢复速度,像老版本(Tahoe)中需要重新经历慢开始