这两天学了TCP的【拥塞控制】相关的知识,尝试下用自己的语言总结下拥塞控制的相关知识先
拥塞控制是什么?
其实第一次看到这个词,我是搞不懂和TCP的流量控制有什么区别的
没错,其实从结果来说,他们都是一样的,因为他们最终的结果,都是调整发送端的发送数据量而已
不一样的地方是什么呢?
- 【流量控制】是从端对端的角度来看待问题的来源的,他强调的是,接收方有没有能力处理这么多的报文,来不来得及处理报文,根据发送方和接收方的能力来定的一个发送速度
- 【拥塞控制】是从通信双方的大环境来看待问题的,就算发送方和接收方的处理能力,接收能力都很强,但是两个人之间的链路“风太大了”,发出去的东西都被吹跑了,在大环境差的情况下,任何个人的努力都只能起到很微小的作用。
拥塞控制能干嘛呢?
很简单,TCP协议照顾了大环境的好坏,根据大环境的好坏程度,用一个叫做【拥塞窗口】的东西,来标记整个大环境网络的状态。
因此,发送端发送数据的话,就只能在【发送窗口大小】和【拥塞窗口大小】之间,选择最小的那个来作为他发送数据的大小了。
顺着这个思路,我们很自然地会想到一些相关的问题:
- TCP怎么感知到外部环境好坏,拥塞程度呢?
- 如果他知道了拥塞程度之后,他是怎么针对性地进行调整的,他在调整过程当中,都考虑到了什么?