现在请求的步骤是:

  1. 客户端发起SYN请求
  2. 服务返回SYN+ACK响应
  3. 客户端发起ACK请求,同时会带上具体请求的信息
  4. 服务端返回数据

TCP快速打开的步骤:

  1. 客户端先发起SYN请求
  2. 服务端返回SYN+ACK+Cookie响应
  3. 客户端发起ACK+HTTP请求
  4. 服务端返回数据
  5. 再次连接,客户端发起SYN+Cookie+HTTP请求
  6. 服务端返回SYN+ACK+Data

image.png
TFO的主要思路是:能不能简化三次握手的过程
=> 要简化三次握手的过程就需要知道三次握手主要是为了干什么?

  1. 为了建立可靠的连接
  2. 协商滑动窗口等信息

那么 TFO是否可以首次仍旧照例建立连接,并且在首次连接中把滑动窗口的信息存储在Cookie中带到客户端,当客户端之后再次建立连接时,直接带上Cookie信息然后直接获取数据

TFO 现状

目前很多路由器,防火墙会过滤TFO,很多服务器即使支持TFO但是也会默认关闭该功能,想要打开该功能需要设置net.ipv4.tcp_fastopen