下面这篇分析tcp连接建立超时时间,很好。
linux上默认超时时间为127s,
因为发出syn后,若没有收到回复,默认重传次数为6,且采用指数退避方式
1-1
2-2
3-4
4-8
5-16
6-32
64s后认为失败。
一共是127s。
http://www.chengweiyang.cn/2017/02/18/linux-connect-timeout/
拥塞窗口
窗口大小的单位是TCP最大段大小 maximum segment size, MSS。
发送窗口为接收窗口和拥塞窗口的最小值。
接收窗口默认最大65536,但可以用窗口放大方法放大窗口。
拥塞窗口,对于windows默认初始是2,对于lwip默认初始是1,之后,每收到一个ack会增加2倍,慢启动过程(虽说是慢启动,但因为是指数增加,因此,一点也不慢)。
此外还有一个慢启动阈值(slow start threshold)ssthresh(Lwip默认阈值是10),当拥塞窗口到达这个阈值大小后,就开始每收到一个ack加1,拥塞避免过程。
如果发生超时(默认超时时间是???),超时后拥塞窗口会变为1,ssthresh=当前拥塞窗口的一半。然后,重新开始慢启动过程。
如果收到某个段3个重复ack,(网络小概率发生拥塞,可能只有该段丢失,而后续段都收到了)那么,进入快速重传阶段,ssthresh=当前拥塞窗口的一半,拥塞窗口则变为ssthresh,进入拥塞避免阶段。