ZDecode
Frontend

三次握手

三次握手(Three-way Handshake) 是建立 TCP 连接时的过程,用于确保客户端和服务器之间双方都准备好进行通信,并且双方都能接收和发送数据。

它的过程如下:

  • 客户端发送 SYN:客户端向服务器发送一个 SYN(同步)包,请求建立连接;

  • 服务器回应 SYN + ACK:服务器收到后回应一个 SYN + ACK 包,表示“我收到了你的请求,也准备好了”;

  • 客户端回应 ACK:客户端再次发送一个 ACK,确认连接建立。

  • 三次握手完成后,· 连接正式建立,HTTP 才能基于它发送请求。

对前端来说,三次握手影响首屏加载的延迟,在弱网环境下更明显。所以前端在优化性能时,可能会关注:

  • 使用 HTTP/2HTTP/3 减少连接开销;

  • Keep-Alive 连接复用,避免频繁握手;

  • CDN 优化、预连接(dns-prefetch, preconnect) 等手段降低握手延迟。

一、TCP 三次握手(建立连接)

用于建立稳定的 TCP 连接,过程如下:

  1. 客户端 → 服务器:SYN

    • 发送连接请求(SYN = 1,序号 x
  2. 服务器 → 客户端:SYN + ACK

    • 同意连接(SYN = 1ACK = 1,确认号 = x + 1,序号 y
  3. 客户端 → 服务器:ACK

    • 确认连接(ACK = 1,确认号 = y + 1

👉 三次握手完成,双方就可以开始数据通信,比如发起 HTTP 请求。

💡 前端角度:

  • 建立 TCP 的延迟会影响首屏加载;

  • 可通过 preconnect 预连接域名降低影响。