TCP三次握手
第一次握手
服务器端对新的客户端都会置于Listen状态。
首先,客户端向服务器端发出连接请求报文,发送SYN=1,seq=x,此时客户端的状态为SYN-SENT;
第二次握手
服务器端收到连接请求报文后,同样发送报文给客服端确认,内容为SYN=1,ACK=1,ack=x+1,seq=y,此时服务器端状态
由Listen->SYN-RCVD;
第三次握手
客户端收到服务器端的确认后,再次发送确认报文ACK=1,ack=y+1,
seq=x+1,此时客户端状态由SYN-SENT->ESTABLISHED;
服务器再次收到后状态由SYN-RCVD->ESTABLISHED;
至此三次握手完成,客户端和服务器端可进行数据传递~
TCP四次挥手
第一次挥手
客户端向服务器端发出断开连接请求报文,发送FIN=1,seq=u,客户端状态
由ESTABLISHED->FIN-WAIT-1;
第二次挥手
服务器端收到客户端请求后,确认请求,发送ACK=1,ack=u+1,seq=v,服务器端状态由ESTABLISHED->CLOSE-WAIT;
客户端收到确认后,状态由FIN-WAIT-1->FIN-WAIT-2;
第三次挥手
服务器端也发送断开连接请求报文,发送FIN=1,ACK=1,ack=u+1,seq=w,服务器端状态由CLOSE-WAIT->LAST-ACK;
第四次挥手
客户端收到请求报文后,发送ACK=1,ack=w+1,seq=u+1,客户端状态
由FIN-WAIT-2->TIME-WAIT;
服务器端收到确认后,服务器端状态由LAST-ACK->CLOSED;
客户端经过2MSL的等待后,状态由TIME-WAIT->CLOSED;
至此四次挥手完成。