1 .为了tfo改善web APP应用的适当的延迟,谷歌发表了通过修改TCP协议利用3次握手进行数据交换的TFO(TCPfastopen,RFC 7413 )。
TFO允许在TCP握手期间发送和接收第一个SYN包中的数据。 如果客户端和服务器都支持TFO功能,则可以减少到同一服务器的多个TCP连接的延迟。这是通过在初始TCP握手之后在客户端上存储TFO cookie来实现的客户端稍后重新连接时,会将此TFO cookie发送到服务器,以便通过连续的TCP握手跳过往返延迟,从而减少延迟。
2. TFO原理
第一次连接:
客户端发送SYN包,具有Fast open选项,cookie值为空的客户端接收SYN,稍后生成cookie,放入ACK SYN包的Fast open选项中,然后发送回客户端
客户端向服务器发送ACK时,我还带走了刚缓存的cookie,还带走了数据
服务器验证收到的cookie的合法性。 如果不合法,扔掉现在的包,普通握手三次。 如果合法,服务器将向客户发送ACK SYN并携带数据包
客户端向服务器发送ACK进行确认
3. TFO的好处第一次连接断开了,开始第二次连接了:
当第二次请求时,TFO可以将请求消息和响应消息放在前面的第二次握手的过程中,因此第二次请求可以在一个RTT中获得响应数据