从确认与丢失调整在途数据
TCP拥塞窗口限制尚未确认的数据量,经典算法包括慢启动、拥塞避免以及丢失后的恢复。发送方通过确认推进、丢失或超时等观察调整行为,而不是预先知道所有路由器的空余容量。
QUIC也定义丢失检测和拥塞控制,但报文编号、确认及协议组织方式与TCP不同。采用UDP承载不等于自动绕过拥塞责任,所用传输仍需要自身的控制机制。
丢包不是唯一的拥塞信号。经典ECN在端点协商支持后,让路由器可给具备ECN能力的报文设置CE标记并继续转发;TCP接收端用ECE把标记反馈给发送端,发送端作拥塞响应,再用CWR表示已经作出响应。这样可以在不靠丢弃该报文的情况下传达拥塞,但不保证以后绝不丢包,也不代表收到标记就可继续原速发送。这是RFC 3168的经典TCP机制,不能概括所有后续ECN扩展的精细反馈规则。
算法选择并不只有一种
CUBIC使用三次函数组织拥塞窗口增长,RFC 9438在既有实现和研究基础上给出标准轨规范,并更新RFC 5681的相关允许行为。经典线性增长的描述不能代表所有现行TCP算法。
评价算法不能只看某条独享链路的最高速度。遇到延迟变化、其他流量或链路损失时,稳定性与共享方式同样重要;拥塞控制也不保证每个应用获得固定带宽或时限。