这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
本堂课重点内容
TCP拥塞控制之慢启动和拥塞避免
详细知识点介绍
TCP拥塞控制
上一篇文章中记录到了TCP流量控制中滑动窗口中的接收窗口是用来控制发送端能传输的数据量大小的。而TCP拥塞控制中的拥塞窗口也是用来控制发送端能传输的数据量大小的,发送窗口由接收窗口和拥塞窗口共同控制,也就是说发送端发送数据量的控制是由两者共同控制的。
发送窗口大小=min(接收窗口,拥塞窗口)
接收窗口和拥塞窗口的区别
- 接收窗口(rwnd)是
接收端给的限制 - 拥塞窗口(cwnd)是
发送端的限制
拥塞控制
拥塞控制控制了拥塞窗口的大小
慢启动
拥塞控制首先就是要采用一种保守的算法来慢慢地适应整个网络,过程如下:
- 首先,三次握手,双方宣告自己的接收窗口大小
- 双方初始化自己的拥塞窗口(cwnd)大小
- 在开始传输的一段时间,发送端每收到一个 ACK,拥塞窗口大小加 1,也就是说,每经过一个 RTT,cwnd 翻倍。如果说初始窗口为 10,那么第一轮 10 个报文传完且发送端收到 ACK 后,cwnd 变为 20,第二轮变为 40,第三轮变为 80,依此类推。
但是窗口大小不会一直翻倍增加下去,当窗口大小增大到慢启动阈值时,就开始了拥塞避免,原本窗口大小是翻倍,现在时每个RRT(数据包来回时间)只增加1。
慢启动和拥塞避免共同控制了拥塞窗口的大小
课后个人总结
TCP中的慢启动和拥塞避免是拥塞控制的两个算法,他们是一体的,共同控制了拥塞窗口的大小。