流量控制
针对流量收发两方处理数据的速度不相同的问题。
方法:
1. 停止等待:每次发送完都需要等待ack
2. 滑动窗口:回退+选择重传,ack:下一个需要发送的数据序号+当前窗口的大小。
拥塞控制
拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。
发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口。
- 小于等于ssthresh:慢开始 指数级别
- 大于ssthresh:拥塞避免
快重传和快恢复:
连续三个重复确认,ssthresh减少一半