定义
TCP 三次握手(Three-Way Handshake)是 TCP 连接建立的过程,通过交换三个报文段来同步双方的序列号和确认号,确保双方收发能力正常。
过程
客户端 服务器
| SYN=1, seq=x |
| --------------------> |
| |
| SYN=1, ACK=1, seq=y |
| ack=x+1 |
| <-------------------- |
| |
| ACK=1, seq=x+1 |
| ack=y+1 |
| --------------------> |
- 第一次握手:客户端发送 SYN=1,seq=x
- 第二次握手:服务器发送 SYN=1, ACK=1,seq=y,ack=x+1
- 第三次握手:客户端发送 ACK=1,seq=x+1,ack=y+1
为什么是三次?
- 防止历史重复连接请求导致错误
- 同步双方初始序列号
- 确认双方收发能力正常
四次挥手
连接释放需要四次握手(Four-Way Wave):
- 客户端发送 FIN=1,seq=u
- 服务器发送 ACK=1,seq=v,ack=u+1
- 服务器发送 FIN=1,seq=w,ack=u+1
- 客户端发送 ACK=1,seq=u+1,ack=w+1