TCP的链接需要三次握手,当其断开时则需要四次握手。
下图所示为链接的三次握手:
Server:服务器 Client:客户端 SYN :请求 SYN-RCVD :接收
SYN-SEND :发送 ACK :确认 ESTABLISED:已连接状态
在连接的过程中,首先由Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样来回三次TCP连接就建立了。
下图所示为断开的四次握手:
FIN :结束 FIN-WAIT-1 :等待结束 TIME-WAIT :等待 ACK:确认
等待(TIME-WAIT)30秒变成关闭(CLOSE)状态
断开的时候,由Client端发起中断连接请求。如果还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。Server端接到FIN报文后,则回发ACK,这时Client端就进入FIN_WAIT状态,再次等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文。Client端收到FIN报文后,开始准备关闭,向Server端发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。Server端收到ACK后就知道可以断开连接了。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,Client端也可以关闭连接。这就是断开的四次握手。
以上就是个人对于TPC的三次握手与四次断开的浅短见解。
(图片来自于网络)