TCP四次挥手的过程与状态

电子说

1.3w人已加入

描述

一、TCP四次挥手的例子

TCP通信

男生女生建立恋爱关系,一段时间后,他们要分手了。

1.男生:请求分手:我想跟你分手了,可以么?

2.女生收到了消息,发一个确认消息:我收到了你的消息,我同意跟你分手。

3.女生还要继续发一个消息,请求分手:我也想跟你分手。

4.男生确认消息:我也收到分手消息,就分手。

这样他们两个之间就没有什么关系。这样一个过程同样像极了TCP要断开连接的过程。

二、TCP四次挥手的过程

TCP通信

客户端和服务端正在进行消息的发送。直到有一方消息发送完毕,发一个FIN包,表示我的报文发送完毕了。我想释放连接,主动发了一个释放连接的请求。

**客户端向服务器端主动发了一个释放连接的请求:标志位FIN=1;seq=n** (这几个标志位里面哪个位置会被标志为1呢?要发一个FIN包,FIN位要被标记为1。每个包都有序号,这个包的序号是seq=n,请求发给了服务器。)

发给服务器后,服务器回复一个确认包,确认消息:标志位ACK=1;ack(确认号)=n+1;(n指的是上面收到包的序号。)

**我收到了你这个释放连接的请求,我也同意。我也要发一个主动请求释放连接的报文:标志位FIN=1;seq=m**

客户端要进行一个确认消息:标志位ACK=1;ack(确认号)=m+1 (ACK位要置1。这个确认号是对要求请求释放连接的一个确认,所以确认号等于上一个包的序号加一。)

TCP四次挥手的过程就完成了。

三、TCP四次挥手的状态

TCP通信

1.刚开始是建立连接的状态。发送报文,直到客户端发送完毕了想释放连接。所以发了个FIN包过去给服务端。

2.客户端就进入等待对方给我一个确认的状态,服务端收到FIN之后给它进行了一个回应。发送了一个ack的确认包。发完确认包,就进入已经知道这个连接应该会被断开的状态,就是等待连接关闭的一个状态。

3.客户端再次进入等待服务端给我发FIN包。服务端发完ack和FIN,也要释放连接。告诉客户端之后,就进入最后等待的时间。最后等待客户端给我发确认包。

4.客户端收到了服务器发的FIN之后,就会发一个ack包回去,之后自己就进入等待一定的时间之后再去关闭。服务器这边一旦收到客户端的确认消息,立马进入关闭状态。

5.客户端这边发完ack之后,等待一定的时间,确认服务器这边已经收到我的消息并且关闭之后,我再去关闭就可以了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分