三次握手和四次挥手都是TCP协议通信过程中建立和关闭连接的步骤。
三次握手的步骤如下:
- 客户端发送
SYN
包,进入SYN-SENT
状态。 - 服务器接收到
SYN
包,回复一个ACK
包和一个SYN
包,进入SYN-RECEIVED
状态。 - 客户端收到
ACK
包和SYN
包,回复一个ACK
包,建立连接并进入ESTABLISHED
状态。
四次挥手的步骤如下:
- 客户端主动关闭连接,发送
FIN
包,进入FIN-WAIT-1
状态。 - 服务器接收到
FIN
包,回复一个ACK
包,进入CLOSE-WAIT
状态。 - 服务器向客户端发送
FIN
包,进入LAST-ACK
状态。 - 客户端接收到
FIN
包,回复一个ACK
包,进入TIME-WAIT
状态,等待2MSL(最长报文段寿命)后关闭。
下面是三次握手和四次挥手的示意图:
三次握手:
客户端 服务器SYN_SENT状态 LISTEN状态---------------SYN包------------>SYN_RECEIVED<---------ACK包和SYN包------------ESTABLISHED
四次挥手:
客户端 服务器ESTABLISHED状态 <---------------FIN包------------FIN_WAIT_1 CLOSE_WAIT<---------------ACK包------------FIN_WAIT_2 LAST_ACK<-------FIN包--------TIME_WAIT <-------ACK包--------CLOSED