1

前言

  1. 在复杂的网络通信中,网络交互在线路上产生巨大流量,由于设备性能的差异和缺陷,网络中发生像高速公路的拥塞也是很正常的,为了减少网络中数据拥塞和丢失所造成的损失,因此网络协议中采用了流量控制和拥塞控制技术.
  2. 以下将用最简单的语言和图片解释流量控制和拥塞控制原理.

1. 辨析

  1. 流量控制:流量控制主要由通信双方设备决定,具体为发送方发送窗口和接收方接收窗口决定.一般地,发送窗口会有一定的数据缓存,所以发送方并不能发送最大窗口值数据,而接收方的接受窗口也可能存在数据缓存,于是这两个窗口共同决定了发送方所发送的数据量,因此称之为流量控制.
  2. 拥塞控制:拥塞控制没有那么明确,总的来讲,除开发送端和接收端,其中间网络设备的通信能力,就像一个黑盒子,我们知道接收方返回的确认信息越来越慢,于是我们就猜测其中拥塞程度变大了.这就是网络出现了拥塞.

2. 流量控制

2.1 流量控制过程

1.首先,流量控制涉及四个窗口,即发送方和接收方各有两个(发送窗口,接收窗口),所以流量通信是四个窗口,并不是我们想象中的两个窗口哦,如图:

发送窗口和接收窗口

2.流量控制具体流程

窗口控制

  • 假设窗口大小为300字节,此时已发送出序号101开始的300字节数据,窗口在框1处.
  • 假设此时接收到了接收方的确认ack=301,且窗口大小为200B(流量控制起作用了,即希望下次只发送200B数据),在此,数据并未被完全接收,因此窗口只能滑动到确认号为301的位置.如图中框2,所以窗口中的101,201缓存即被删除.此时待发数据为401和501.
  • 此时收到接收方的确认ack=601,窗口300,即窗口滑动向601,如图窗口3准备发送接下来的601,701,801.
  • 当发送方一直没收到确认或确认包窗口值为0时,会发送一个探测性数据段,返回窗口值为0时,启动超时计时器,到时后继续发送探测,若接收端发送来了窗口值不为0的数据段,则发送端开始正常发送数据.

2.2 流量控制的两种算法

Nagle算法

发送端并不一有数据就发送,而是自己先把数据缓存起来,达到接收方窗口值一半或发送窗口最大值,就即刻发送.

Clark算法

1.接收端让发送方等待,当自己由足够的接收窗口空间时,再发送确认信息.
2.在流量控制中,这两种算法十分重要,并且是结合使用的.

3. TCP拥塞控制

TCP拥塞控制主要依靠TCP连接双方协定的协议来减少数据的发送儿实现的.进入网络的数据大于出口时,就会发生网络拥塞.
实际吞吐量和输入负荷之间的关系:

流量控制理论曲线图

3.1 1988年解决方案

术语

1.CWND : 拥塞窗口大小
2.SSTHRESH : 慢启动阈值

拥塞避免曲线图

过程
  1. 有一初始值SSTHRESH,并维护一拥塞窗口.
  2. 慢启动:2倍速增长.
  3. 拥塞避免:每次加1.
  4. 阻塞后,SSTHRESH变为原来的一半.重新开始步骤2

发送数据段大小:为MAX(发送窗口大小,拥塞窗口)

1990年后新增方案:快速重传/快速恢复

快速重传

发送端发送一个数据段丢失后,发送端并不会停止发送数据,但是接收端会多发三次丢失数据的前一数据的确认,此时发送端即刻发送丢失的数据,尽管可能在超时重传时间内,如图
快速重传

快速恢复

在快速重传数据段后,快速恢复技术即刻发挥作用,即把拥塞窗口值CWND设置为当前SSTHRESH值的一半,以减轻网络负荷,然后执行拥塞避免算法,使CWND缓慢增大,以避免再次出现网络拥塞.


赵栩彬
358 声望600 粉丝

愿,你在遭受打击时,记起你的珍贵,抵抗恶意;