TCP三次捂手和四次挥手;

第一次握手:建立连接时,

 

客户端发送syn包(syn=j)到服务器,并进入到SYN_SEND状态;等待服务器确认;

第二次捂手:服务器收到syn包时;

必须确认客户的SYN包,必须确认客户的SYN(sck=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器SYN+ACK包;

向服务器发送确认ACK(ack=k+1),此包发送完毕,客服端和服务器进入ESTABLISHED状态,完成三次握手;

TCP的连接的拆除需要发送四个包

因此称为四次挥手(four-way handshake)。

客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。

(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。

(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。