前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TCP四次挥手

TCP四次挥手

作者头像
清菡
发布2022-03-30 09:04:44
2410
发布2022-03-30 09:04:44
举报
文章被收录于专栏:清菡软件测试

一、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之后,等待一定的时间,确认服务器这边已经收到我的消息并且关闭之后,我再去关闭就可以了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 清菡软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、TCP四次挥手的例子
  • 二、TCP四次挥手的过程
  • 三、TCP四次挥手的状态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档