一,流量控制
1.概念
防止发送方发的太快,耗尽接收方的资源,从而使接收方来不及处理。
2.知识点
- 接收端抑制发送端的依据:接受缓冲区的大小
- 流量控制的目标是接收端,就怕接收端来不及处理。
- 流量控制的机制是丢包。
3.实现流量控制
使用滑动窗口
1.滑动窗口的概念
滑动窗口就类似于一个窗口一般的大小,是用来告诉发送端可以发送数据的大小或者说是窗口标记了接收缓冲区的大小,这样就可以实现。ps:窗口指一次批量的发送多少数据。
2.为什么会出现滑动窗口
在确认应答策略时,对每一发送的数据段,都要给一个ACK确认应答,收到ACK后发送下一个数据段。这样做有一个比较大的缺点,就是性能比较差,尤其是数据往返时间长的时候。使用滑动窗口可以一次发送多条数据,从而提高性能。
3.滑动窗口的知识点。
(1)接收端将自己的可以接受的缓冲区大小放入TCP头部中的“窗口大小”字段,通过ACK来通知发送端。
(2)窗口大小越大,说明网络的吞吐率越高。
(3)窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,即就是说无需接收端答应,可以连续的发送数据。
(4)操作系统内核为了维护滑动窗口,需要开辟发送缓冲区,来记录当前还有那些数据没有应答,只有确认应答过的数据,才可以从缓冲区中删掉。
(5) 接收端一旦发现自己的缓冲区快满了,就会将窗大小设置为一个更小的值通知给发送端。发送端接受到值后,就会减慢自己的发送速度。
(6)如果接收端发现自己的缓存区快满了,就将窗口的大小设置为0,此时发送端就不会在接受数据,但是需要定期发送一个窗口的探测数据段,把接收端把窗口的大小告诉发送端。 ps:在TCP首部中,有一个16窗口字段的大小。此字段就是用来存放窗口大小的信息。
4.滑动窗口的优点
可以高效可靠的发送大量的数据。
二,拥塞控制
1.概念
防止发送的太块,使得网络来不及处理,从而导致网络拥塞。
2.发送端如何知道丢包
1.定时器超时;2.收到三个重复的ACK
3.拥塞控制的工作控制
1,初始阶段:
2.慢开始阶段(一)
慢开始阶段(二)
慢开始阶段(三)
慢开始(四)
拥塞避免阶段:
拥塞调整阶段:
阶段(一)
阶段(二)
阶段(三)
三,流量控制和拥塞控制的区别
1.相同点
- 现象都是丢包;
- 实现机制都是让发送方发慢一点,发的少一点。
2.不同点
- 丢包位置不同
流量控制丢包是在接收端
拥塞丢包是在路由器上
- 作用对象不同
流量控制的对象使接收方,怕发送方发的太快使得接收方来不及处理。
拥塞控制的对象是网络,怕发的太快,阻塞在网络上,使得网络处理不过来。
3,联系
拥塞控制:通常表示的是一个全局性的过程,它会涉及到网络中所有的主机,所有的路由器和降低网络传输性的所有因素。
流量控制:发生在发送端和接收端,只是点到点之间的控制。
参考资料:https://blog.youkuaiyun.com/dangzhangjing97/article/details/81008836