TCP 握手
TCP (传输控制协议) 使用三次握手(也称为 TCP 握手、三次报文握手、SYN-SYN-ACK)来在基于 IP 的网络上建立 TCP/IP 连接。类似地,四次握手用于终止连接。
TCP 用来协商和启动 TCP 会话传输的三条报文分别昵称为 SYN、SYN-ACK 和 ACK,分别代表SYNchronize (同步)、SYNchronize-ACKnowledgement (同步-确认) 和 ACKnowledge (确认)。这种三条报文的机制是为了让想要相互传递信息的两台计算机能够在传输 HTTP 浏览器请求等数据之前,先协商好连接的参数。
- 发起方,通常是浏览器,向另一方(通常是服务器)发送一个 TCP SYNchronize (同步) 报文。
- 服务器接收到 SYN 后,会回发一个 SYNchronize-ACKnowledgement (同步-确认) 报文。
- 发起方接收到服务器的 SYN-ACK 后,会发送一个 ACKnowledge (确认) 报文。服务器接收到 ACK 后,TCP 套接字连接就建立完成了。
在建立安全连接时,此握手步骤发生在 DNS 查询之后,TLS 握手之前。连接可以通过连接的双方独立终止,采用四次握手,其中 FIN (finish,结束) 和 ACK (确认) 报文对会由双方独立发送和接收。
- 发起方向另一方发送一个 FIN 报文。
- 另一方向发起方发送一个 ACK 报文。
- 此时,连接处于半关闭状态,另一方仍然可以发送数据。(例如,当客户端关闭了到服务器的连接后,服务器仍然可以完成发送数据给客户端。)
- 另一方向发起方发送一个 FIN 报文。
- 发起方向另一方发送一个 ACK 报文。
另见
- 传输层安全 (TLS) 协议
- 相关词汇表术语
- 维基百科上的传输层安全