1、三次握手
(1)首先客户端发送连接请求报文,服务器端接受连接后回复ACK报文,并且这次连接分配资源。客户端接收ACK报文也向服务器端发送ACK报文,并分配资源,这样TCP连接就建立了。
2.四次挥手
假设客户端发起中断连接请求,也就是发送FIN报文。服务器端接到FIN报文后,意思是说"我客户端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,“告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息”。这个时候客户端就进入FIN_WAIT状态,继续等待服务器端的FIN报文。当服务器端确定数据已发送完成,则向客户端发送FIN报文,告诉客户端,“好了,我这边数据发完了,准备好关闭连接了"。客户端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果服务器端没有收到ACK则可以重传。“,服务器端收到ACK后,“就知道可以断开连接了”。客户端等待了2MSL后依然没有收到回复,则证明客户端已正常关闭,那好,我客户端也可以关闭连接了。Ok,TCP连接就这样关闭了!
来源:https://blog.csdn.net/cm4002/article/details/98966518