3次握手建立连接和4次握手断开连接

三次握手协议指的是在发送数据的准备阶段,服务器和客户端之间需要进行三次交互:第一次握手:客户端发送syn包(syn=j)到服务器,并进入到SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的syn(ack=j+),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入到SYN_RECV状态;第三次握手:客户端收到服务器的SYN_ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。连接建立后,客户端和服务器就可以开始进行数据传输了。

         由于TCP连接时全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接,收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接收到一个FIN后仍能发送数据,首先进行关闭的一方是主动断开方,而另一方是被动断开方。四次断开过程

         1、客户端发送一个FIN,用来关闭客户端到服务器的数据传送,此时客户端进入TIME_WAIT1状态

         2、服务器收到这个FIN后,它发回一个ACK,确认号为收到的序号加1,和SYN一样,一个FIN将占用一个序号,此时服务器进入到CLOS_WAIT2;

         3、当服务器端也没有要传送的数据时,服务器关闭与客户端的连接,发送一个FIN给客户端,服务器进入LAST_ACK

         4、客户端发回ACK报文确认,并将确认号设置为收到序列号加1,客户端进入到TIME_WAIT,等待2MSL-120s,服务器接受后进入CLOSED。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章