TCP连接是全双工的,因此每个方向都必须单独关闭。
TCP连接的拆除需要发送四个包,因此这个过程也叫做四次挥手(four-way handshake)
以下为过程:
(1)客户端(Client)发送断开连接请求,向服务器端(Server)发送一个FIN=1,seq=u的中止标志位。表示客户端关闭链路前发送的数据已发送完毕,可以开始关闭链路。
(2)服务器端收到这个FIN并发送一个ACK加以确认,确认的序号为ack=u+1,并发送seq=v的消息给客户端,表示接收到请求关闭链路的操作请求。
(3)服务器关闭与客户端的连接并发送中止标志位FIN=1.ACK=1,seq=w,ack=u+1的消息给客户端,表示关闭链路前服务器向客户端发送的消息已发送完毕,请求确认关闭链路。
(4)客户端收到FIN后发送ACK=1,seq=u+1,ack=w+1的消息给服务端,表示接收到断开请求并准备断开链路。
最后等待2MSL后连接释放,客户端进入CLOSE状态。
原文:https://www.cnblogs.com/mycs198/p/14586180.html