三次握手:
第一次握手 请求由客户端向服务端发送一个FIN包,这个包就表明自身的各种状态又代表他想要建立起第一次服务;
第二次握手 则由服务端向客户端发送一个FIN包和ACK包,FIN包即表明自身状态并想要建立一次连接,ACK包,即为确定包,确定第一次握手发来的FIN包,服务端已经确认收到;
第三次握手 为客户端向服务端在回复一个ACK包,以表示确认接收到了第二次握手时的ACK包和FIN包。
四次挥手:
第一次挥手 A数据传输完毕需要断开连接,A的应用进程向其TCP发出连续释放报文段(FIN=1,序列号SEQ=u)并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态,等待B确认;
第二次挥手 B收到连续释放报文段后,便发出确认报文段(ACK=1,确认号ACK=u+1,序列号SEQ=v)B进入CLOSE-WAIT关闭等待状态,此时TCP处于半关闭状态,而A收到B的确认后进入到FIN-WAIT-2状态,等待B发出的连续释放报文段;
第三次挥手 当B数据传输完毕后,B发出连续释放报文段(FIN=1,ACK=1,序列号SEQ=w,确认号ACK=v+1)B进入LAST-ACK最后确认状态,等待A的最后确认;
第四次挥手 A收到B的连续释放报文段后,对此发出确认报文(ACK=1,SEQ=u+1,ACK=W+1)A进入TIME-WAIT时间等待状态,此时TCP未释放掉,需要经过时间等待器设置的时间2MSL后,A才能进入CLOSE状态