TCP拥塞控制是为了解决发送方以过高的速率发送导致网络中出现阻塞,其核心思想就是发生重传时控制发送方滑动窗口(通过控制拥塞窗口cwnd)的大小,从而控制其发送速率。
1. 拥塞网络的代价
1、当分组的到达速率率接近链路容量时,分组经历巨大的排队时延 。
2、发送方必须执行重传以补偿因为缓存溢出而丢弃(丢失)的分组 。
3、发送方在遇到大时延时所进行的不必要重传会引起路由器利用其链路带宽来转发不必要的分组副本 。
4、当一个分组沿一条路径被丢弃时,每个上游路由器用于转发该分组到丢弃该分组而使用的传输容量最终被浪费掉了。
总结: 排队时延、不必要重传;丢弃:重传、浪费路由器。
2. TCP拥塞控制概述
1、如何限制发送速率:控制cwnd,进而控制滑动窗口,限制发送方中未被确认的数据量,间接影响发送速率。
2、如何感知拥塞与否:丢包事件(超时或3个冗余的ACK);收到(非冗余)ACK指示网络正常。
3、感知拥塞时何种算法改变速率:收到(非冗余)ACK,增大发送速率,探测是否出现丢包,丢包则降低速率,重新开始探测。(ACK和丢包事件充当了隐式信号)