tcp基础

下面这篇分析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,进入拥塞避免阶段。

原文地址:https://www.cnblogs.com/yanhc/p/11984927.html