1.运输层:TCP拥塞控制
笔记来源:
湖科大教书匠:TCP的拥塞控制
声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考
网络资源:在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等
拥塞:在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。
输入负载与吞吐量的关系
拥塞控制的三个算法:慢开始、拥塞避免、快重传、快恢复
发送窗口swnd、拥塞窗口cwnd、慢开始门限值ssthresh
1.1 慢开始
每个传输轮次结束后,拥塞窗口按指数值增长
执行慢开始算法,发送方每收到一个报文段的确认时,就把拥塞窗口cwnd+1,然后开始下一轮传输,当cwnd = ssthresh时,改为执行拥塞避免算法
收到报文段确认后,拥塞窗口cwnd+1,cwnd变为2
发送窗口swnd=2(swnd=cwnd),现在可以发送接下来的2个报文段了(1 ~ 2号报文段)
cwnd=2+2=4(收到2个报文段确认),发送窗口swnd=4(swnd=cwnd),现在可以发送接下来的4个报文段了(3 ~ 6号报文段)
接下来情况如上所示
直到cwnd达到16,发送窗口swnd=16,可以发送15 ~ 30号报文段,由于cwnd等于慢开始门限值ssthresh,所以下一轮传输要使用拥塞避免算法
1.2 拥塞避免
每个传输轮次结束后,拥塞窗口线性增长
cwnd=16+1=17,swnd=cwnd
可以发送接下来17个报文段(31 ~ 47号)
发送方收到确认报文段,收到后cwnd+1
经过多次传输后,若cwnd=24,swnd=cwnd时发送的171 ~ 194号报文段丢失,触发超时重传
触发超时重传,判断网络出现拥塞
ssthresh = 发送拥塞时的cwnd / 2
重置cwnd=1,重新执行慢开始算法
小总结1.1和1.2
1.3 快重传
快重传,就是使发送方尽快进行重传,而不是等超时重传计时器超时再重传。
采用快重传算法可以让发送方尽早知道发生了个别报文段的丢失
1.要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认:
2.即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
3.发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传,而不是等该报文段的超时重传计时器超时再重传。
1.4 快恢复
发送方一旦收到3个重复确认,就知道现在只是丢失了个别的报文段。于是不启动慢开始算法,而执行快恢复算法:
发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;开始执行拥塞避免算法。
1.5 小总结
慢开始拥塞窗口cwnd指数增长,当cwnd达到ssthresh时,之后采用拥塞避免,拥塞窗口cwnd线性增长每次加一,出现超时重传后,ssthresh减少为原来的一半,拥塞窗口cwnd重置为1,重新开始传输,经历慢开始算法、拥塞避免算法后,若收到3个重复确认,则执行快重传,ssthresh减少为原来的一半,之后快恢复,cwnd重置为这个ssthresh值,随后执行拥塞避免算法