(1)第一次握手:客户端发送SYN包(SYN=j)到服务器,并进入SYN_SEND状态,等待服务器确认。

(2)第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。

(3)第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据

 

由于TCP连接是全双工的,连接的拆除需要发送四个包,因此称为“四次挥手”。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

(1)第一次挥手:客户端发送一个FIN,用来关闭客户到服务器的数据传送。 

(2)第二次挥手:服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。

(3)第三次挥手:服务器关闭与客户端的连接,发送一个FIN给客户端。 

(4)第四次挥手:客户端发回ACK报文确认,并将确认序号设置为收到序号加1。