握手TCP的连接建立:
- client发送syn包(syn=x),进入SYN_SENT状态,等待服务器确认。
- server发送SYN+ACK包(ack=x+1,syn=y),进入SYN_RECV状态。
- client发送ack包(ack=y+1)
- client、server进入ESTABLISHED,连接成功。
挥手TCP的连接释放:
- client发送释放数据报文,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),进入FIN-WAIT-1状态。
- server发出确认报文,ACK=1,ack=u+1,seq=v,此时,进入CLOSE-WAIT状态,client收到报文进入FIN-WAIT-2状态。
- server最后数据发送完毕,发送连接释放报文FIN=1,ack=u+1,seq=w,进入LAST-ACK。
- client发出确认报文,ACK=1,ack=w+1,seq=u+1,进入TIME-WAIT状态
- server收到客户端确认报文之后,进入CLOSED状态
- client之后经过最长报文段寿命的时间后,当client撤销相应TCB后,进入CLOSED状态