TCP的流量控制
- 规定TCP要求接收方必须有累计确认功能
- 没规定不按顺序到达的数据的处理方式
窗口
窗口越大接收方一次确认前就可以发送越多数据,传输效率也更高。
拥塞窗口(发送窗口)
- 未收到确认时可连续将窗口内的数据发送出去,起始为20字节。
通知窗口(接收窗口)
- 只允许接收落入窗口内的数据
- 通知窗口不总是和拥塞窗口一样大(因为网络存在时延,窗口大小更新消息不同步)
- 不支持接收窗口前沿向后收缩
拥塞控制
- 在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏产生拥塞。
- 出现资源拥塞的条件很简单:对资源需求的总和>可用资源。
慢开始
cwnd
:发送窗口rwnd
:接收窗口
拥塞避免
当发送窗口达到门限值将不会指数增长而是线性增长。
ssthresh
:门限值
快重传
连续收到3个重复确认,立即重传,即使时间未达到RTO。
快恢复
当发送端收到连续三个重复的确认时,由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,而是执行FR算法(快恢复算法):
- 更新慢开始门限:
ssthresh
=cwnd
/2; - 更新发送窗口:
cwnd
=ssthresh
; - 发送窗口继续线性增大。