TCP的3次握手和4次断开
Tcp的三次握手和四次断开就是tcp通信建立连接及断开过程
1:三次握手的过程
三次握手的过程即是通信双方发送请求序列号并确认收到序列号的过程。
第一次握手:
客户端向服务端发送一个syn报文(seq=a syn=1),并等待确定。客户端进入syn_sent状态,完成第一次握手。
第二次握手:
由服务端向客户端发送syn<请求>和ack<确认>报文(ack=a+1 ,seq=b,syn=1)。
①服务端收到了客户端的请求,向客户端回复一个确认信息(ack=a+1)
②服务端再向客户端发送一个 syn 包(seq=b)建立连接的请求,此时服务器进入 syn_recv 状态。完成第二次握手。
第三次握手
收到回复后,客户端向服务端发送ack(确认)报文,发送完毕客户端和服务器进establishd 状态,完成 3 次握手。
2:四次断开的过程
四次断开即断开TCP连接,需要客户端和服务端总共发送4个包以确认连接的断开的过程。
①第一次断开
客户端发送一个FIN报文(fin=1 seq=c),用来关闭客户端到服务端的数据传送,客户端进入fin_wait_1状态,第一次断开完成。
②第二次断开
服务端接收 fin后,给客户端发送 ack 报文(ack=c+1)表明已经收到客户端的报文了,此时服务端处于 close_wait 状态。第二次断开完成。
③第三次断开
服务端发给客户端fin 报文(fin=1,seq=d)。此时服务端处于 last_ack的状态。第三次断开完成。
④第四次断开
客户端收到服务端的fin报文后,对此发出ack<确认>报文(ack=1,seq=c+1,ack=d+1),客户端进入time_wait(时间等待)状态。此时tcp未完全断开,需要经过时间等待计时器设置的时间2msl后,客户端才进入closed状态。第四次断开完成。