1、滑动窗口:为了避免网络拥塞,滑动窗口里已发送但未收到ack确认的消息,收到ack后,发送消息的窗口往前移以便发送新的数据。 这个过程就是滑动窗口
2、为了避免网络拥塞,发送端的发送速度由(接收窗口和拥塞窗口大小决定,发送端窗口大小取两者最小值)
a、慢开始算法:tcp连接后拥塞窗口为1,然后每次收到消息确认后 指数增加(不断乘以2),当拥塞窗口的值达到慢开始门限时,改用拥塞避免算法
b、拥塞避免算法:此时达到慢开始门限的拥塞窗口加法增长(每次加1),直到当消息包出现超时的情况后。就将慢开始门限的值设置为此时的拥塞窗口的1/2 。
然后拥塞窗口值设为1,重新回到 慢开始算法,重复上面ab的过程。
如下图:
注:该图引用自http://blog.csdn.net/zjf280441589/article/details/44940475
3、快重传算法和快恢复算法
快重传和快恢复是对慢开始和拥塞避免算法的改进
a、快重传算法:当发送发连续收到三个重复的ack报文后,直接重传对方未收到的报文,而不用等超时时间到。(收到三个重复的ack,代表接收方收到了乱序的数据包,三个重复的ack信息代表原本应该接收到的消息,提示发送方快重传)
b、快恢复算法:当发送发连续收到三个重复的ack报文后,
就将慢开始门限的值设置为此时的拥塞窗口的1/2 。
同时将拥塞窗口值重新设为新的慢开始门限,因为此时拥塞窗口达到慢开始门限了,所以马上进入拥塞避免算法。
总结:慢开始算法、拥塞避免算法,快重传算法,快恢复算法 的运用都是根据网络拥塞情况,动态调节自身的发包速度,使得发包速度和网络及接收窗口最大程度上的匹配。