1、什么是TCP四次挥手?
TCP链接在关闭时,会进行四次通信,此时客户端或者服务端都可以主动发起,这就是所谓的四次挥手,在这四次通信后,TCP链接就会正在断开,否则仅仅只是半链接而已。
2、TCP四次挥手流程详解
TCP四次挥手,具体要分四个步骤来分析,具体如下:
1、A端向先向其TCP发出释放链接的请求报文,此时FIN=1,seq=x,且开始停止发送数据给B端,主动开始关闭A端的TCP链接,进行FIN-WAIT-1阶段;
2、B端收到了A端的关闭请求后,发出确认报文。此时ACK1,ack=x+1,seq=y,且B也开始进入Close-WAIT阶段,此时TCP已经进入半关闭状态,A->B的链接已经被释放。
3、A端接收到了B端的确认报文后进入FIN-WAIT-2状态,等待B再次发出链接释放请求报文。B再次发送释放链接的报文。此时FIN=1,ACK=1,seq=z,ack=x+1,B进入LAST-ACK状态,等待A的确认。
4、A再次收到B的链接释放报文后,再次对该请求报文发出确认报文,此时ACK=1,ack=z+1,seq=x+1。A也进入了最终的时间等待TIME_WAIT阶段。这里的等待时间是2MSL,之后A就会进入Closed阶段。
3、为什么要进行2MSL的等待
这里为什么要进行2MSL的等待,主要还是因为要假设网络是不可靠的,有可能最后一个ACK会丢失。这里的TIME-WAIT时间段主要是用来让对端进行消息重传的。这里的2MSL也是有讲究的。叫做2个最大报文段生存时,。刚好用来配合重传。
4、四次挥手的图解