一、什么是四次挥手?
四次挥手即 TCP 连接的释放,这里假设客户端主动释放连接。在挥手之前主动释放连接的客户端结束 ESTABLISHED 阶段,随后开始四次挥手。
首先客户端向服务端发送一段TCP报文表明想要释放TCP连接,其中:
-
首先客户端向服务端发送一段TCP报文,表示想要释放TCP连接,其中:
标志位为FIN(表示请求释放连接),序号Seq=u;
随后客户端进入FIN-WAIT-1阶段,即半关闭阶段,并且停止向服务端发送通信数据; -
服务端接收到客户端请求断开连接的FIN报文后,结束ESTABLISHED阶段,进入CLOSE-WAIT阶段并返回一段TCP报文,其中:
标志位为ACK(表示接收到客户端想要释放连接的请求),序号为Seq=V,确认号为Ack=u+1;
客户端收到服务器发送过来的TCP报文后,确认服务器已经收到了客户端连接释放的请求,随后客户端结束FIN-WAIT-1阶段,进入FIN-WAIT-2阶段。 -
服务器在发出ACK确认报文后,服务端会继续将遗留的待传数据传送给客户端,传输完成后结束CLOSE-WAIT阶段,同时会再次向客户端发出一段TCP报文,其中:
标志位为FIN和ACK,序