三次握手
1、客户端发送syn包(同步序列编号Synchronize Sequence Numbers)到服务器,并进入SYN_SENT状态,等待服务器确认;
2、服务器收到syn包,并返回给客户端SYN+ACK包,此时服务器进入SYN_RECV状态;
3、客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),建立连接,完成三次握手。
四次挥手
1、客户端申请断开FIN,进入FIN-WAIT-1状态。
2、服务器收到FIN并发送ACK,进入CLOSE-WAIT状态。
3、客户端收到ACK后,进入进入FIN-WAIT-2状态。此时服务器仍可以向客户端发送数据。
4、服务器确认数据均发送完毕后,向客户端发送FIN,进入LAST-ACK状态,等待客户端确认。
5、客户端收到FIN后回复ACK,进入了TIME-WAIT状态,经过2MSL(最大报文段生存时间)后进入CLOSE状态。
6、服务端收到ACK后进入CLOSE状态。