具体说明:
1)三次握手 服务器端对新的客户端都会置于LISTEN状态。
第一次握手,客户端给服务端发出连接请求报文,SYN=1,seq=x,客户端状态变为SYN_SENT。
第二次握手,服务器接收到连接请求报文后,同样发送确认报文给客户端。内容为SYN=1,ACK=1,ack=x+1,seq=y,然后服务器端状态从LISTEN变为SYN_RCVD。
第三次握手,客户端收到服务器端的确认后,再次发送确认报文。内容为ACK=1,ack=y+1,客户端状态变为ESTABLISHED;服务器接收到确认报文后,状态从SYN_RCVD变为ESTABLISHED。
2)四次挥手
第一次挥手,客户端向服务器端发出断开连接请求报文,发送FIN=1,seq=u,客户端状态由ESTABLISHED变为FIN_WAIT_1;
第二次挥手,服务器端接收到客户端发送的断开连接请求报文,发送确认报文给客户端。FIN=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;
第四次挥手,客户端接收到服务器端发送的断开连接请求报文,发送确认报文给服务器端。FIN=1,ACK=1,ack=w+1,seq=u+1,客户端从TIN_WAIT_2变为TIME_WAIT;服务器端收到确认后,关闭服务器写通道,服务器端状态由LAST-ACK->CLOSED;客户端经过2MSL的等待后,关闭客户端读通道,状态由TIME-WAIT->CLOSED;