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

简介: 上一节我们图解了TCP的三次握手,了解了三次握手过程的原理、为啥需要三次握手而不是两次握手就能建立连接,那么建立连接时三次握手,那TCP断开连接是如何断开的呢?

你好,这里是网络技术联盟站。

上一节我们图解了TCP的三次握手,了解了三次握手过程的原理、为啥需要三次握手而不是两次握手就能建立连接,那么建立连接时三次握手,那TCP断开连接是如何断开的呢?

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

让我们直接开始!

TCP三次握手简单回顾

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

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

TCP三次握手简单过程

TCP四次挥手

生活中的例子

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

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

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

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

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

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

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

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

微信拉黑

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

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

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

四次挥手原理分析

四次挥手过程

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

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

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

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

至此,TCP连接断开!

TCP四次挥手——带序列号

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

所以过程又变成:

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

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

断开连接的最大生命周期

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

等待四分钟

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

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

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

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

总结

本文,瑞哥用生动形象的例子给大家阐述了TCP四次挥手的过程,相信大家一看就懂,然后还深入分析了四次挥手的原理,我们来看下本文内容的概况:

  • TCP三次握手简单回顾
  • TCP四次挥手

    • 生活中的例子
    • 四次挥手原理分析
  • 断开连接的最大生命周期
  • 总结

感谢您的阅读,如果觉得文章对您有帮助,别忘了点赞👍、收藏⭐哦!有任何问题,欢迎在下方评论区与我讨论!!!

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
10月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
942 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
域名解析 网络协议 安全
计算机网络TCP/IP四层模型
本文介绍了TCP/IP模型的四层结构及其与OSI模型的对比。网络接口层负责物理网络接口,处理MAC地址和帧传输;网络层管理IP地址和路由选择,确保数据包准确送达;传输层提供端到端通信,支持可靠(TCP)或不可靠(UDP)传输;应用层直接面向用户,提供如HTTP、FTP等服务。此外,还详细描述了数据封装与解封装过程,以及两模型在层次划分上的差异。
2535 13
|
10月前
|
监控 负载均衡 安全
WebSocket网络编程深度实践:从协议原理到生产级应用
蒋星熠Jaxonic,技术宇宙中的星际旅人,以代码为舟、算法为帆,探索实时通信的无限可能。本文深入解析WebSocket协议原理、工程实践与架构设计,涵盖握手机制、心跳保活、集群部署、安全防护等核心内容,结合代码示例与架构图,助你构建稳定高效的实时应用,在二进制星河中谱写极客诗篇。
WebSocket网络编程深度实践:从协议原理到生产级应用
|
11月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
852 11
|
11月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
1726 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
11月前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
1485 0
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
691 7
|
监控 应用服务中间件 Linux
掌握并发模型:深度揭露网络IO复用并发模型的原理。
总结,网络 I/O 复用并发模型通过实现非阻塞 I/O、引入 I/O 复用技术如 select、poll 和 epoll,以及采用 Reactor 模式等技巧,为多任务并发提供了有效的解决方案。这样的模型有效提高了系统资源利用率,以及保证了并发任务的高效执行。在现实中,这种模型在许多网络应用程序和分布式系统中都取得了很好的应用成果。
384 35
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
528 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析