"# TCP的三次握手和四次挥手
TCP三次握手
TCP(传输控制协议)建立连接的过程称为三次握手。这个过程确保了客户端和服务器之间的连接是可靠的。具体步骤如下:
-
第一次握手:客户端发送一个SYN(同步)包给服务器,要求建立连接。此时,客户端处于SYN_SEND状态。
Client ---- SYN ----> Server -
第二次握手:服务器收到SYN包后,回复一个SYN-ACK(同步-确认)包,表示同意建立连接,并向客户端确认已收到SYN包。此时,服务器处于SYN_RECV状态。
Server ---- SYN-ACK ----> Client -
第三次握手:客户端收到SYN-ACK包后,发送一个ACK(确认)包给服务器,表示连接建立成功。此时,客户端和服务器都处于ESTABLISHED状态。
Client ---- ACK ----> Server
完成三次握手后,TCP连接建立,双方可以进行数据传输。
TCP四次挥手
TCP断开连接的过程称为四次挥手。这个过程用于确保双方都能正常断开连接。具体步骤如下:
-
第一次挥手:客户端发送一个FIN(结束)包给服务器,表示希望关闭连接。此时,客户端进入FIN_WAIT_1状态。
Client ---- FIN ----> Server -
第二次挥手:服务器收到FIN包后,回复一个ACK包,确认收到FIN包。此时,服务器进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态。
Server ---- ACK ----> Client -
第三次挥手:服务器准备关闭连接,发送一个FIN包给客户端,表示可以关闭连接。此时,服务器进入LAST_ACK状态。
Server ---- FIN ----> Client -
第四次挥手:客户端收到FIN包后,回复一个ACK包给服务器,确认收到FIN包,进入TIME_WAIT状态,等待可能的重传。服务器在确认后进入CLOSED状态。
Client ---- ACK ----> Server
在TIME_WAIT状态下,客户端会保持一段时间,以确保服务器收到ACK包后,最终进入CLOSED状态。完成四次挥手后,TCP连接成功断开。"