三次握手:
第一次握手:客户端(client)发送SYN包到服务器(server),客户端(client)状态机进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器(server)接收到SYN包,必须发送ACK包到客户端,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端(client)接收到服务器发送的SYN+ACK包,必须向服务器发送确认包ACK,此包发送成功,则客户端和服务器同时进入ESTABLISHED状态。
四次挥手:
假设客户端发起断开连接请求,
第一次挥手:客户端(client)发送FIN报文到Server端
第二次挥手:服务器(server)收到客户端发送的FIN包之后,发送ACK包到客户端,客户端收到服务器发送的ACK之后,进入FIN_WAIT状态,等待server端发送FIN报文
第三次挥手:服务器(server)发送FIN报文到客户端
第四次挥手:客户端收到服务器发送的FIN报文之后,发送ACK包到服务器,服务器收到ACK之后即断开连接,等待一段时间TIME_WAIT之后,客户端发现服务器没有再发FIN过来,就知道服务器已经断开连接,此时客户端也进入断开连接状态。