开始客户端和服务器都处于closed(关闭)的状态,然后服务端开始监听某个端口,近入LISTEN(监听)状态。
- 第一次握手(SYN = 1,seq = x)发送完毕后,客户端进入SYN_SEND状态。
- 第二次握手(SYN = 1,ACK = 1,seq = y,ACKnum = x +1)发送完毕后,服务器进入SYN_RCV状态。
- 第三次握手(ACK = 1,ACKnum = y+1)发送完毕后。当服务器端接收到这个包时,客户端进入ESTABLISHED(连接)状态。
四次挥手
第一次挥手(FIN = 1,seq = u)发送完毕后,客户端进入FIN_WAIT_1状态。
第二次挥手(ACK = 1,ack = u+1,seq = v)发送完毕后,服务器进入CLOSE_WAIT状态。客户端接收到这个确认包之后,进入FIN_WAIT_2状态。
第三次挥手(FIN = 1,ACK1,seq = w,ack = u+1)发送完毕后,服务器进入LAST_ACK状态,等待来自客户端的最后一个ACK。
第四次挥手(ACK=1,seq = u +1,ack = w +1)客户端接收来自服务器的关闭请求,发送一个确认包,并进入TIME_WAIT状态,等待了某个固定时间之后,等没有收到服务器的ACK,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入CLOSED状态。服务器端接收到这个确认包之后,关闭连接,进入CLOSED状态。