Tcp协议的三次握手及四次挥手过程解析(图)

TCP是一个面向连接的协议,在连接双方发送数据之前,需要先建立连接。建立连接的过程就是三次握手。

断开这个连接,同样需要一个过程那就是四次挥手啦。

从建立连接到数据传输,在到断开连接,整体过程如下图:

Tcp协议的三次握手及四次挥手过程解析(图)

一、三次握手

第一次握手:客户端发送syn包(syn=x)到服务器,等待服务器确认;(SYN理解为同步请求)

第二次握手:服务器收到syn包,确认客户的SYN(ack=x+1),同时发送SYN包(syn=y),组合成SYN+ACK包;

第三层握手:客户端收到SYN+ACK包后,进行确认(ack=y+1)。

至此完成三次握手过程


二、四次挥手(这里以客户端发起断开请求)

第一次挥手:客户端向服务器发送FIN(fin=x+2),如果需要进行应答,可以组成fin+ack包,等待服务器确认;

第二次挥手:服务器收到fin+ack包,对fin进行确认(ack=x+3),注意,此时服务器可能有数据还没发送完,不会发送fin;客户端收到ACK(ack=x+3),会改变状态为FIN_WAIT2,并继续等待服务器回应fin;

第三次挥手:没有数据需要发送时,服务器向客户端发送FIN(fin=y+1),进入LAST_ACK状态,等待客户端确认;

第四次挥手:客户端收到fin包(fin=y+1),进行确认(ack=y+2),并进入TIME_WAIT等待状态,等待时间为2MSL,超时没有收到回复,说明服务器已经关闭连接,客户端关闭连接。

连接断开,通信结束。