万兆网高速下载,开始的时候,怎么设置ReceiveBufferSize,下载速度都没啥变化,不晓得怎么回事。
后面用wireshark抓包,发现window size 和我设置的ReceiveBufferSize不一致,我这就疑惑了,怎么会事,你TM在逗我。
经过多次试验,发现设置ReceiveBufferSize和SendBufferSize要在socket connect之前设置,链接了再设置都没什么用了。
对于ReceiveBufferSize可以抓包,再Tcp三次握手的时候会确定window size,但是这个SendBufferSize就不晓得怎么能看到这个值,试过把它设置小点,可是对下载速度一点影响都没得,把ReceiveBufferSize设置小下载速度都会跟着变小。
然后就是Tcp协议里面几个字段:
window size:两个字节,以前最大65535字节
wssf:乘积因子,扩大window size,现在能上G了
windows TCP协议参数:
最大接受窗口:TcpWindowSize
https://technet.microsoft.com/zh-cn/library/cc938219
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ interface-name
Data type | Range | Default value |
---|---|---|
REG_DWORD | 0x0–0x3FFFFFFF ( bytes ) | (See description.) |
这个默认值和网卡有关:
小于1Mbps 8kb
1Mbps----100Mbps 17kb
大于100Mbps 64kb
窗口扩大因子:Tcp1323Opts
https://technet.microsoft.com/zh-cn/library/cc938205
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Data type | Range | Default value |
---|---|---|
REG_DWORD | 0 | 1 | 2 | 3 | 3 |
Value | Meaning |
---|---|
0 (00) | Timestamps and window scaling are disabled. |
1 (01) | Window scaling is enabled. |
2 (10) | Timestamps are enabled. |
3 (11) | Timestamps and window scaling are enabled. |