TCP Fast Open
TCP Fast Open(TFO)是一种TCP协议的扩展,旨在加快建立TCP连接的速度和降低延迟。传统的TCP连接需要进行三次握手(SYN-SYN/ACK-ACK)才能建立连接,而TFO允许在第一个数据包中携带连接建立的请求。
TFO的工作原理如下:
- 客户端在首次建立TCP连接时,在发送的SYN包中插入一个加密的Cookie。这个Cookie由服务器生成并发送给客户端。
- 当客户端发送带有TFO Cookie的SYN包到服务器时,服务器会验证Cookie的有效性。
- 如果Cookie有效,服务器会立即发送带有SYN+ACK标志的数据包,这样客户端就可以立即发送数据而无需等待ACK响应。
- 客户端收到带有SYN+ACK标志的数据包后,发送带有ACK标志的数据包,建立完整的TCP连接。
相关内核参数
net.ipv4.tcp_fastopen
支持如下值:
- 0:关闭
- 1: 作为客户端可以使用 TFO 功能
- 2: 作为服务端可以使用 TFO 功能
- 3: 作为客户端和服务端均可使用 TFO
net.ipv4.tcp_fastopen_key
用来产生 TFO 的 Cookie。