背景
最近看到一个题,也是很普遍的一个现象,是这么描述的:进入电梯里,信号变差了,断网了,出电梯后,网络恢复时,前几秒钟网速特别慢是怎么回事?这个问题相信多多少少都遇到过,我也遇到过,但是没思考背后的逻辑,最近回想一下,结合查询资料,记录一下答案。
tcp相关知识点:
TCP 慢启动(TCP Slow Start)
TCP慢启动(TCP Slow Start)是TCP协议中一种流量控制机制,用于防止网络拥塞。当TCP连接刚开始时,发送方并不知道网络的拥塞状况,因此通过慢启动的方式逐步增加发送窗口的大小,以减少对网络的负载,避免网络在开始时就遭受过多的数据传输,从而引发丢包或其他拥塞问题。
慢启动的基本原理:
-
初始窗口大小:TCP连接开始时,拥塞窗口(cwnd)的大小通常为1个最大报文段大小(MSS)。
-
指数增长:每经过一个往返时延(RTT),拥塞窗口的大小增加1个MSS,即窗口大小呈指数增长(每收到一个确认报文,发送方就可以增加一个MSS的数据)。这种增加速度较快,帮助TCP连接迅速找到一个适合当前网络环境的窗口大小。
- 每次成功接收 ACK,拥塞窗口会增加,通常按照以下规律: CWND=CWND+MSSCWND = CWND + MSSCWND=CWND+MSS
- 这意味着每个 RTT(Round-Trip Time)期间,数据发送量可能会翻倍。
-
慢启动阈值(ssthresh):当拥塞窗口大小达到某个阈值(ssthresh,通常默认的值为64KB),慢启动进入拥塞避免阶