TCP fast open
TCP Fast Open 复用 Cookie 快速恢复会话,减少 1 个 RTT 的延迟
传统 TCP 三次握手需 1.5 RTT才能传输应用数据,导致 HTTP 请求延迟较高
TCP Fast Open:为了解决传统 TCP 握手中的延迟问题,通过允许在首次 SYN 握手阶段携带应用数据,从而减少 1 个 RTT 的延迟
内核参数:/proc/sys/net/ipv4/tcp_fastopen
- 快速恢复TCP会话,需要双方都开启这个功能
- 0 关闭(默认),1 客户端使用 Fast Open ,2 服务端使用 Fast Open ,3 客户端&服务器都可以使用 Fast Open
第一次进行数据通讯:获取并缓存 Cookie
- 客户端发送 SYN 报文,该报文包含 Fast Open 选项
- 服务器生成 Cookie,通过 SYN-ACK 返回
- 客户端缓存 Cookie
后续连接:利用 Cookie 快速恢复会话
- 客户端发送 SYN + 应用数据 + 缓存的 Cookie
- 服务端验证 Cookie:
- Cookie 有效:直接确认 SYN 和应用数据,并将应用数据递交给上层应用(节省 1 RTT)
- Cookie 无效:服务器丢弃应用数据,仅确认 SYN,并回复一个不包含 Cookie 的 SYN-ACK(正常的三次握手)