TCP流量控制与拥塞控制

TCP流量控制与拥塞控制

转自大神博客

什么是流量控制,目的,

  1. 如果发送者发送数据过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。
  2. 流量控制根本目的是防止分组丢失,它是构成TCP可靠性的一方面。

如何实现流量控制

由滑动窗口协议(连续ARQ协议)实现。
滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。
主要的方式就是接收方返回的 ACK 中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。

流量控制引发的死锁?

当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。但是如果这个窗口不为0的应答在传输过程丢失,发送者一直等待下去,而接收者以为发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。

怎么避免死锁的发生?

为了避免流量控制引发的死锁,TCP使用了持续计时器。每当发送者收到一个零窗口的应答后就启动该计时器。时间一到便主动发送报文询问接收者的窗口大小。若接收者仍然返回零窗口,则重置该计时器继续等待;若窗口不为0,则表示应答报文丢失了,此时重置发送窗口后开始发送,这样就避免了死锁的产生。

拥塞控制和流量控制的区别

  1. 拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现网络负载过大的情况;
    常用的方法就是:( 1 )慢开始、拥塞避免( 2 )快重传、快恢复。
  2. 流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收,防止分组丢失的。

你可能感兴趣的:(网络,网络协议,TCP,流量控制,拥塞控制)