目录
一、简述TCP协议
-
TCP是应用层的控制传输协议
是面向连接、可靠的传输层协议(传输数据前,必须建立连接) -
TCP
可靠性传输主要体现在:“确认应答”、“连接管理”、“流量控制”、“拥塞控制”等功能
二、什么是拥塞控制
拥塞控制就是为了防止过多的数据注入到网络中,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,因此TCP协议通过四个算法:慢开始、拥塞避免、快重传、快恢复、,来对拥塞进行控制降低网络中的拥塞程度
三、拥塞控制的四个算法
1、慢开始
慢开始是指当第一次发送数据时,如果一次性发送大量数据可能会引起网络拥塞,所以第一次发送时,先发送很小的数据量,进行测试,然后确定发送成功之后,慢慢增大发送量,也就是增大拥塞窗口的数值。
发送方需要维护一个叫做拥塞窗口(cwnd
)的状态变量,最初执行慢开始,令 cwnd = 1
,发送方只能发送 1
个报文段;当收到确认后,将 cwnd
加倍,因此之后发送方能够发送的报文段数量为:2
、4
、8...以此类推
2、拥塞避免
当我们慢开始进行到后期时,它的cmnd窗口增长速度非常快,这样会导致网络出现拥塞,这时候会设置一个慢开始门限 ssthresh
,当 cwnd >= ssthresh
时,进入拥塞避免,每个轮次只将 cwnd
加 1,降低拥塞窗口的增长速度
3、快重传
在接收方,要求每次接收到报文段都应该对最后一个已收到的有序报文段进行确认,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段。
4、快恢复
当发送端收到连续三个重复的确认时,就执行“乘法减小”算法,将cwnd
当前值减半作为新的慢开始门限 ssthresh
值,并让cwnd
的值等于这个新的慢开始门限ssthresh
值。随后开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。
四、拥塞控制的整体流程
值得注意的是:
快恢复和快重传基本上是同时进行的,快恢复是相对于慢开始算法而言的。使用快恢复算法时,cwnd
从较大值开始,通过拥塞避免算法逐渐线性增大,经过较短时间便能恢复比较快的传输速度。