延迟
- 分组从信息源发送到目的地所需要的时间
带宽
- 逻辑或物理通信路径上的最大吞吐量
TCP连接 三次握手:
- 为什么说在发送数据之前需要经历一次完整的往返?
- 建立TCP连接需要3次SYN分组确认,而在发送第三次SYN确认分组后,发送端可以立即发送数据。此时已经经历了一次完整的往返。但是接收端必须在第三次SYN到达确认后才可以接收数据。
流量控制
- 每个ACK分组都会携带rwnd值以便客户端和服务器动态调整发送数据大小
rwnd 接收窗口
cwnd 拥塞窗口
拥塞控制
- 服务器发送数据的值为
min(rwnd, cwnd)
, 每个ACK确认,cwnd + 1
, 直到达到rwnd的值
慢启动重启 Slow-Start Restart SSR
- 连接空闲后重置连接的拥塞窗口
拥塞预防
- 把丢包作为网路拥塞的标志,采取删包措施
- 删包算法
- AIMD 倍减加增 发生丢包时拥塞窗口减半
- PRR 比例降速
BDP 带宽延迟积
+ 任意时刻处于在途未确认状态的最大数据量
TCP队首阻塞 HOL (Head of Line)
- 每个TCP分组都带有唯一序号,分组必须按序被接收。如果中途有分组未到达,后续分组进入TCP缓冲区,等待丢失分组被重发并确认。
抖动
- 分组到达时间存在无法预知的延迟变化(因为HOL),这个时间变化称为抖动
针对TCP的调优
- 增大TCP的初始拥塞窗口
- 禁用慢启动重启
- 窗口缩放
- 支持大于64k的rwnd, 在TCP握手阶段rnwd标志位左移16位,使支持最大1G的发送数据
- TCP快速打开(需要客户端于服务器的共同支持)