Frontend
三次握手
三次握手(Three-way Handshake) 是建立 TCP 连接时的过程,用于确保客户端和服务器之间双方都准备好进行通信,并且双方都能接收和发送数据。
它的过程如下:
-
客户端发送
SYN:客户端向服务器发送一个SYN(同步)包,请求建立连接; -
服务器回应
SYN + ACK:服务器收到后回应一个SYN + ACK包,表示“我收到了你的请求,也准备好了”; -
客户端回应
ACK:客户端再次发送一个ACK,确认连接建立。 -
三次握手完成后,· 连接正式建立,
HTTP才能基于它发送请求。
对前端来说,三次握手影响首屏加载的延迟,在弱网环境下更明显。所以前端在优化性能时,可能会关注:
-
使用
HTTP/2、HTTP/3减少连接开销; -
Keep-Alive连接复用,避免频繁握手; -
CDN优化、预连接(dns-prefetch, preconnect) 等手段降低握手延迟。
一、TCP 三次握手(建立连接)
用于建立稳定的 TCP 连接,过程如下:
-
客户端 → 服务器:
SYN- 发送连接请求(
SYN = 1,序号x)
- 发送连接请求(
-
服务器 → 客户端:
SYN + ACK- 同意连接(
SYN = 1,ACK = 1,确认号 =x + 1,序号y)
- 同意连接(
-
客户端 → 服务器:
ACK- 确认连接(
ACK = 1,确认号 =y + 1)
- 确认连接(
👉 三次握手完成,双方就可以开始数据通信,比如发起 HTTP 请求。
💡 前端角度:
-
建立 TCP 的延迟会影响首屏加载;
-
可通过 preconnect 预连接域名降低影响。