一、TCP四次挥手的例子
男生女生建立恋爱关系,一段时间后,他们要分手了。
1.男生:请求分手:我想跟你分手了,可以么?
2.女生收到了消息,发一个确认消息:我收到了你的消息,我同意跟你分手。
3.女生还要继续发一个消息,请求分手:我也想跟你分手。
4.男生确认消息:我也收到分手消息,就分手。
这样他们两个之间就没有什么关系。这样一个过程同样像极了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四次挥手的状态
1.刚开始是建立连接的状态。发送报文,直到客户端发送完毕了想释放连接。所以发了个FIN包过去给服务端。
2.客户端就进入等待对方给我一个确认的状态,服务端收到FIN之后给它进行了一个回应。发送了一个ack的确认包。发完确认包,就进入已经知道这个连接应该会被断开的状态,就是等待连接关闭的一个状态。
3.客户端再次进入等待服务端给我发FIN包。服务端发完ack和FIN,也要释放连接。告诉客户端之后,就进入最后等待的时间。最后等待客户端给我发确认包。
4.客户端收到了服务器发的FIN之后,就会发一个ack包回去,之后自己就进入等待一定的时间之后再去关闭。服务器这边一旦收到客户端的确认消息,立马进入关闭状态。
5.客户端这边发完ack之后,等待一定的时间,确认服务器这边已经收到我的消息并且关闭之后,我再去关闭就可以了。
-
TCP通信
+关注
关注
0文章
146浏览量
4221
发布评论请先 登录
相关推荐
评论