三次握手(Three-way handshake)和四次挥手(Four-way handshake)是TCP协议中用于建立和终止连接的过程。
三次握手的过程如下:
- 客户端向服务器发送一个SYN(同步)报文,其中包含自己的初始序列号,并进入SYN_SENT状态。
- 服务器接收到SYN报文后,回复一个SYN和ACK(确认)报文,其中SYN标志位被设置为1,ACK标志位被设置为1,并且确认号为客户端的初始序列号加1。服务器进入SYN_RCVD状态。
- 客户端收到服务器的SYN和ACK报文后,发送一个ACK报文,确认号为服务器的初始序列号加1。客户端和服务器都进入ESTABLISHED状态,连接建立成功。
四次挥手的过程如下:
- 客户端发送一个FIN(结束)报文,请求关闭连接,并进入FIN_WAIT_1状态。
- 服务器收到FIN报文后,发送一个ACK报文作为响应,确认收到FIN报文。服务器进入CLOSE_WAIT状态,而客户端进入FIN_WAIT_2状态。
- 当服务器不再需要连接时,发送一个FIN报文关闭连接,并进入LAST_ACK状态。
- 客户端收到服务器的FIN报文后,发送一个ACK报文作为确认,并进入TIME_WAIT状态。在等待一段时间后,客户端关闭连接,最终进入CLOSED状态,服务器也关闭连接并进入CLOSED状态。
通过三次握手,客户端和服务器能够确保双方都能够正常通信。通过四次挥手,双方能够安全地关闭连接,释放资源。这种握手和挥手的过程保证了可靠的数据传输和连接的正常终止。