Skip to content 计算机网络-FastOpen如何解决三次握手的延迟问题
1. 什么是 TFO
(TCP Fast Open
)
TFO
是一种提高 TCP
传输效率的办法。- 其技术方案依然建立在标准的三次握手的基础上,只是在第三次握手之前就开始数据传输,因此能够提高效率。
- 常常用于频繁建立短连接的场景当中,用以提升连接阶段的数据传输效率。
2. TFO
的原理
- 客户端和服务端建立连接之后,客户端会存放服务端的
TCP Cookie
,是一种看上去很像 Cookie
的凭证。 - 借助
TCP Cookie
, 客户端再次和服务端建立连接之后,在第一次握手的阶段,就能够通过 TCP Cookie
确定客户端身份,因此,可以在第一次握手之后就进行数据传输,不必等待三次握手全部结束。
3. TCP Cookie
的机制
TCP Cookie
是 TFO
技术中的一个核心概念- 首次连接:在客户端首次与服务端建立标准的
TCP
连接时,服务端生成一个 TCP Cookie
发送给客户端。这个 Cookie
是基于一系列参数(如服务端的密钥、客户端IP地址等)计算得出的,确保了每个 Cookie
的唯一性和安全性。 - 存储
Cookie
:客户端收到 TCP Cookie
后将其存储起来,用于后续的连接请求。 - 再次连接:当客户端需要再次与服务端建立连接时,它会在发送的SYN包中携带之前存储的
TCP Cookie
。 - 身份验证:服务端接收到带有
TCP Cookie
的 SYN
包后,会验证这个 Cookie
的有效性。服务端通过比较客户端发送的 Cookie
与自己根据相同算法和密钥计算出的 Cookie
是否一致,来确认客户端的身份。这个过程不需要额外的往返通信,因此大大减少了连接建立的时间。 - 数据传输:一旦
TCP Cookie
验证通过,服务端就认为这个连接是可信的,第一次握手的时候就可以携带数据。