极资讯

  • 关于我们
  • 全栈AI助手
极资讯
这里有好的科技资讯
  1. 首页
  2. 概念
  3. 正文

图解网络:揭开TCP四次挥手背后的原理,结合男女朋友分手的例子

2022 年 7 月 10 日 3922点热度 0人点赞 0条评论
我们注意到了TIME_WAIT状态,客户端发送最后一个 ACK段后,连接不会立即终止,由于不能保证最后发送的数据包确实已经到达,客户端或服务器最初将保持时间等待状态,直到 ACK 段和任何新 FIN 段的最大生命周期(MSL,Maximum Segment Lifetime )才能彻底进入CLOSED状态。

​本节,瑞哥继续带您图解网络,探究一下TCP四次挥手断开连接背后的原理。

让我们直接开始!

TCP三次握手简单回顾

TCP 是一种全双工协议,为了建立连接,通过三次握手就能建立可靠的链路:

  • 首先客户端将发送一个SYN消息(SYNchronize 的缩写)表示客户端要建立与服务端的连接。
  • 服务端收到客户端的SYN报文后,回复SYN-ACK报文,包括一个SYN序列号和一个ACK号。
  • 客户端收到服务端的 SYN-ACK 消息后,向服务端发送ACK消息。

图解网络:揭开TCP四次挥手背后的原理,结合男女朋友分手的例子

TCP三次握手简单过程

TCP四次挥手

生活中的例子

连接的两端都可以终止 TCP 连接,甚至单侧终止也是可能的,这也称为半开连接,即使一方已经断开连接,另一方仍然可以传输数据。

我们说的四次挥手,指的是双方断开连接。

我们先以生活中例子来解释一下:

图解网络:揭开TCP四次挥手背后的原理,结合男女朋友分手的例子

四次挥手-生活中的例子:分手

小美和小明是大学同学,刚上大学的时候,小明高大帅气,还会打篮球,小美对他非常崇拜,小明也非常喜欢小美,就这样,在一个夜黑风高的夜晚,他们成了情侣。

不过随着时间的推移,加上环境的变化,两个人渐渐失去了热情,所以小美向小明提出了分手。分手的过程就类似于TCP四次挥手:

  • 第一次:小美对小明说“小明,相处那么长时间了,我觉得我们不合适,分手吧”
  • 第二次:小明听完其实没有太吃惊,但是也不能直接答应啊,不然不就成了铁打的渣男了嘛,所以第二次挥手,他礼貌的说了一下“别,我还有话和你说,其实你蛮好的,不仅人长得漂亮,性格也挺好的,也通情达理,学习也蛮刻苦的,非常开心在大学能够遇到你!”
  • 第三次:小明哔哩啪啦也讲的差不多了,是时候露出真面目了,随后他就对小美说“既然你想好了,我再纠缠你也没意思,那就和平分手吧~”
  • 第四次:小美听完小明一大堆虚伪的话,非常生气,就甩了一句“那就这样了,互删微信吧,再见!”

然后小明的微信上就会出现大大的红感叹号!

图解网络:揭开TCP四次挥手背后的原理,结合男女朋友分手的例子

微信拉黑

这就是四次挥手,是不是很形象?

下次假如阁下忘了TCP四次挥手的步骤,我想你可以把自己当作渣男想象一下

好了,咱们言归正传,我们好好分析一下TCP四次挥手的原理。

四次挥手原理分析

图解网络:揭开TCP四次挥手背后的原理,结合男女朋友分手的例子

四次挥手过程

如图,客户端想要和服务端断开连接:

  • 客户端会发送一个 FIN 消息,FIN是FINISH的缩写,FIN 消息的目的是使 TCP 能够优雅地终止已建立的连接,然后客户端进入称为FIN-WAIT 状态的状态,在 FIN-WAIT 状态下,客户端继续接收来自服务端的消息,并继续处理已经在队列中的消息,但客户端不会发送任何额外的数据。

这个可以联想,小美在发分手消息过程中,男朋友小明一直在发消息给小美,小美没看的消息就进入到了队列,队列中的消息,小美还是会看的,但是不会再主动回复这些消息。

  • 服务端向客户端发送ACK消息,确认他已经收到了结束的消息了,这个时候服务端将不再接受来自客户端的数据。
  • 服务端可以继续向客户端发送数据(最后交代点事情),如果服务端没有更多数据要发送,它也会通过发送 FIN 消息来终止连接。
  • 然后客户端向服务端发送ACK确认收到了服务端主动断开的消息。

至此,TCP连接断开!

图解网络:揭开TCP四次挥手背后的原理,结合男女朋友分手的例子

TCP四次挥手——带序列号

如图,M和N都是序列号,分别代表是客户端和服务端,也是为了区别服务端和客户端的,比如看到M就想到消息是来自于客户端,看到N就想到消息来自于服务端。

所以过程又变成:

  • 客户端向服务端发送FIN M给服务端。
  • 服务端向客户端发送 ACK M+1,客户端收到M+1,就知道服务端收到了自己的Finish消息。
  • 服务端向客户端发送FIN N代表是服务端主动向客户端发送结束消息。
  • 客户端向服务端回复ACK N+1消息,服务端看到是自己的N,所以就知道客户端也收到了自己的结束消息了。

至此TCP就成功断开连接了。

断开连接的最大生命周期

这里还是举个例子,小美在发完“那就这样了,互删微信吧,再见!”的消息后,会最多等待四分钟,给小明机会去挽留:

图解网络:揭开TCP四次挥手背后的原理,结合男女朋友分手的例子

等待四分钟

假如在这四分钟内,小明没有挽留,那不好意思,彻底结束吧!Game Over!

在【四次挥手原理分析】图中,我们注意到了TIME_WAIT状态,客户端发送最后一个 ACK段后,连接不会立即终止,由于不能保证最后发送的数据包确实已经到达,客户端或服务器最初将保持时间等待状态,直到 ACK 段和任何新 FIN 段的最大生命周期(MSL,Maximum Segment Lifetime )才能彻底进入CLOSED状态。

这种机制主要出于两种考虑:

  • 防止使用相同源地址、源端口、目的地址和目的端口的其他 TCP 连接接收到延迟的数据段。
  • 保证TCP连接被远程正确关闭,即等待被动关闭连接的一方收到ACK对应的消息。

标签: TCP
最后更新:2022 年 7 月 10 日

admin

这个人很懒,什么都没留下

点赞
⇦“元宇宙+人工智能”,到底是谁能成就谁?
IoNT和区块链可以结合使用吗? ⇨

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

最新 热点 随机
最新 热点 随机
阿里云服务器“镜像”怎么选择?看这一篇文章就够了! 积极贯彻落实《公司法》 推动存量公司依法调整注册资本 更新版!一些有趣或实用的生成器! 整理一波写作必备网站,供大家参考 远离抑郁症的方法之一:增强多巴胺、内啡肽、血清素、催产素的神经质地分泌 网络社区这种模式为什么注定会失败 靠着AI自动生成视频撸自媒体收益,赚了包辣条~ 有钱人是如何面对美色诱惑的 失业的中年人在北京过得真的有多心酸 最年轻的“十八罗汉”,阿里巴巴的新CEO-吴泳铭
AI 开发有了新编程语言, 比 Python 快 35000 倍 《羊了个羊》火了之后,让游戏开发者们看到希望了吗? 张同学还没学会当主播 三分钟读懂NFT和数字藏品 人工智能AI生成的小姐姐集合-ChilloutAI 最近很火的“30秒展现女孩的一生”AI视频制作全流程 抖音28级刷了多少人民币 抖音等级价格对照表2023 1到75级价格表一览 OpenAI 正式发布 GPT-4 马斯克用 26 天重置 Twitter:裁了近八成工程师、整顿系统架构! 元宇宙社交:「宇宙」内还没微信群人多
归档
  • 2024 年 10 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 10 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 6 月
  • 2023 年 5 月
  • 2023 年 4 月
  • 2023 年 3 月
  • 2023 年 2 月
  • 2022 年 12 月
  • 2022 年 11 月
  • 2022 年 10 月
  • 2022 年 9 月
  • 2022 年 8 月
  • 2022 年 7 月
  • 2022 年 6 月
  • 2019 年 8 月
  • 2019 年 7 月
  • 2019 年 6 月
分类
  • AI
  • IT
  • 云计算
  • 互联网
  • 创业
  • 开发
  • 开源资讯
  • 未分类
  • 概念
  • 科技
  • 移动互联网
  • 自媒体
  • 趋势
标签聚合
ChatGPT Linux 人工智能 开发 web3.0 小红书 软件 AI 编程语言 AI绘画 程序员 iphone 编程 电商 元宇宙 直播 AIGC 短视频 golang 抖音

COPYRIGHT © 2022-2025 极资讯. ALL RIGHTS RESERVED.

京ICP备18039103号-2