网络世界的“握手”与“告别”:揭秘TCP的三次握手与四次挥手

在网络世界中,数据的传输就像是一场精心编排的舞蹈,而TCP(Transmission Control Protocol,传输控制协议)则是这场舞蹈的指挥家。它确保数据在网络中的传输既稳定又可靠。那么,在这背后,TCP是如何通过“三次握手”和“四次挥手”来确保数据的稳定传输和优雅告别的呢?让我们用比喻的方式,一起揭开这个秘密。
一、三次握手:建立连接的舞蹈
想象你和一个朋友想要进行一次对话,但你们需要先确保双方都已经做好了准备,才能确保对话的顺利进行。这就是TCP三次握手的作用。

  1. 第一次握手:你向朋友挥挥手,说:“我准备好了,可以开始对话吗?” 在TCP中,这相当于客户端向服务器发送一个SYN(同步)包,并附带一个序列号seq=x,表示客户端的初始序列号。
  2. 第二次握手:朋友看到你挥手后,也向你挥挥手,回应说:“我也准备好了,我的初始序列号是y,请确认。” 在TCP中,这相当于服务器收到SYN包后,返回一个SYN+ACK(同步确认)包,ack=x+1表示对客户端的SYN包进行确认,同时自己也发送一个SYN包,序列号seq=y。
  3. 第三次握手:你收到朋友的回应后,再次挥手确认:“好的,我确认我们都准备好了,可以开始对话了。” 在TCP中,这相当于客户端收到服务器的SYN+ACK包后,向服务器发送一个确认包ACK(ack=y+1),表示对服务器的SYN包进行确认。

通过这三次握手,客户端与服务器之间就建立了一个可靠的连接,可以开始传输数据了。

什么?看完上面讲的还是没懂?没关系,(拿起水杯喝一口润润嗓)那我就再换种方式讲一次,客户端和服务单为什么要三次握手?

  1. **第一次握手:**客户端给服务端发送消息后进入等待状态,这个时候客户端并不知道自己的发送和接收是否正常,需要服务端收到消息以后再告诉客户端我收到你发的消息啦,才能确认自己的发送和接收都是正常的。
  2. **第二次握手:**服务端收到客户端发来的消息后给客户端回复消息,这个时候服务端知道自己的接收是正常的,但是不知道发送是否正常,需要客户端收到消息以后再告诉服务端我收到你发的消息啦,才能确认自己的发送也是正常的。
  3. **第三次握手:**客户端收到服务端发来的消息后,最终确认了自己的发送和接收都是正常的。接着最后一次回复服务端告诉他我们的接收和发送都是正常的,可以开始传输数据了。

别着急,文字不想看,有办法,我再画个图:

二、四次挥手:优雅告别的仪式
当你们的对话结束后,你们需要以一种优雅的方式告别,确保双方都已经知道对话已经结束。这就是TCP四次挥手的作用。

  1. 第一次挥手:你向朋友表示:“我数据说完了,准备关闭连接了。” 在TCP中,这相当于客户端发送一个FIN(结束)包,序列号seq=u,表示客户端已经发送完所有数据。
  2. 第二次挥手:朋友收到你的告别后,回应说:“我收到了你的告别,但我可能还有一些数据要发送给你。” 在TCP中,这相当于服务器收到FIN包后,返回一个ACK包,ack=u+1,表示对客户端的FIN包进行确认。
  3. 第三次挥手:当服务器也发送完所有数据后,它再次向客户端表示:“我也发送完所有数据了,准备关闭连接了。” 在TCP中,这相当于服务器发送一个FIN包,序列号seq=v。
  4. 第四次挥手:你收到服务器的告别后,回应说:“我收到了你的告别,现在我们可以正式告别了。” 在TCP中,这相当于客户端收到FIN包后,返回一个ACK包,ack=v+1,表示对服务器的FIN包进行确认。

通过这四次挥手,客户端与服务器之间就优雅地结束了连接,确保双方都已经知道连接已经关闭。
三次握手懂了,但是四次挥手还是没懂?没关系,(再次拿起水杯喝一口润润嗓)那我就再换种方式讲一次,客户端和服务单为什么要四次挥手?
TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了 TCP 连接。

  1. **第一次握手:**客户端在和服务端建立连接后,开始传输数据,但是客户端很快就结束了,然后告诉服务端我已经结束了,你完事没?然后进入等待状态。
  2. **第二次握手:**服务端要比客户端持久,收到客户端的结束信号以后,告诉客户端你再等会,我还没完事呢。
  3. **第三次握手:**过了一会儿,服务端也完事了,然后通知客户端可以关闭了,然后等待客户端响应。
  4. **第四次握手:**客户端收到后,给服务端抛一个媚眼表示收到。服务端收到后立马关闭了连接,而客户端等了一会儿也关闭了连接。

上面这个流程就不用画图表示了,其实TCP的三次握手和四次挥手很好理解,这些动作最终都是为了保证数据在传输过程中的安全性,它们通过精确的序列号和确认机制,确保了数据在传输过程中的稳定性和安全性。这种机制不仅保证了数据传输的可靠性,也为我们在网络世界中提供了更好的通信体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/752567.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

红黑树原理 部分模拟实现

1.红黑树的概念及性质 红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出…

Redis和PHP的Bitmap于二进制串的相互转换

Redis和PHP的Bitmap于二进制串的相互转换 场景 错题集的存储,需要有正确的题号id集合,错误的题号id集合,两者并集后在全量题的集合中取反就是未答题号id 选型 基于场景的数据结构设计,有试过列表等,测试结果&#xff1…

python笔记----少儿编程课程

第1课: 认识新朋友-python 知识点: 1、在英文状态下编写Python语句。 2、内置函数print()将结果输出到标准的控制台上,它的基本语法格式如下: print("即将输出的内容") #输出的内容要用引号引起来,可…

【Ant Design Vue的更新日志】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

SAP 创建BP 提示 CVI_MAPPING 011

原因编号不是外部给号的问题

腾讯云TI平台的大模型精调解决方案

腾讯云TI平台的大模型精调解决方案 随着人工智能和大数据技术的快速发展,大模型在各行各业的应用日益广泛。然而,大规模模型的训练和部署面临着诸多挑战,包括训练资源的高效利用、模型训练的稳定性和国产化适配需求。腾讯云TI平台凭借其强大…

智能网络构建:探索大模型在网络领域的应用

网络领域以其高度复杂性和快速迭代为特点,完成从网络设计、配置、诊断到安全的网络任务需要广泛的专业知识。这些任务的固有复杂性,加上网络技术和协议不断变化的格局,为传统基于机器学习的方法带来了显著的障碍。这些方法在泛化和自动化网络…

已训练好模型如何测试自己数据

1、前言 上一篇博客详细介绍了利用MNIST数据集训练模型,得到了训练参数,那么如何将这训练好的模型,用于训练自己的数据呢?本博客详细介绍,如何利用上篇博客训练好的模型参数,来预测自己的数据集。 2、测试数据 2.1 数据准备 在测试自己数据前,确保你的数据格式与训练时…

【linux/shell案例实战】解决Linux和Windows的换行符CRLF和LF问题

目录 一.什么是Linux 和 Windows 的换行符 CRLF 和 LF 二.使用Linux 中命令 dos2unix 和 unix2dos 实现CRLF 和LF的转换 三.使用 windows 中的代码编辑器实现 CRLF 和 LF 的转换(Notepad) 一.什么是Linux 和 Windows 的换行符 CRLF 和 LF CR是Carria…

EDA 虚拟机 Synopsys Sentaurus TCAD 2018.06-SP2 CentOS7.9

下载地址(制作不易,下载使用需付费,不能接受的请勿下载): 链接:https://pan.baidu.com/s/1358rH_Ner1TYdc_TgoXrew?pwdyq3p 提取码:yq3p

瑞文标准IQ智商测验题其中三项

最近在网上看到想尝试一下,看到这三个题目感觉挺有意识!!!

如何进行黄金期货日内波段交易-EE trade

日内波段交易是一种在单个交易日内抓取较大波段趋势的方法,旨在利用市场的短期波动获取利润。黄金期货市场由于其高波动性和高杠杆性,成为日内波段交易的理想选择。以下是黄金期货日内波段交易的详细策略和方法。 一、日内波段交易整体设计思想 1. 顺应…

Redis数据迁移-RedisShake

redis-shake是阿里云Redis团队开源的用于Redis数据迁移和数据过滤的工具。 一、基本功能 redis-shake它支持解析、恢复、备份、同步四个功能 恢复restore:将RDB文件恢复到目的redis数据库。 备份dump:将源redis的全量数据通过RDB文件备份起来。 解析deco…

VUE中,table border属性的不同使用方式

在vue中&#xff0c;使用table&#xff0c;在给table设置边框属性时&#xff0c;按照以往的习惯&#xff1a; <table border"1px solid"><table> 这种写法&#xff0c;产生的效果如下&#xff1a;下边、右边的边框明显和上边、左边不同。border属性设置…

DBA联创:区块链的架构正在不断趋同

原文标题&#xff1a;《We’re All Building the Same Thing》 撰文&#xff1a;Jon Charbonneau&#xff0c;DBA 联创 编译&#xff1a;Tia&#xff0c;Techub News 介绍 这篇文章分析了以下内容 异步执行——为什么高性能集成区块链&#xff08;例如 Solana 和 Monad&…

芒果YOLOv10改进64:主干Backbone篇RepVGG结构:简单但功能强大的卷积神经网络架构

💡本篇内容:YOLOv10改进RepVGG结构:简单但功能强大的卷积神经网络架构 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv10 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,YOLOv10 应部分读者要求,新增一篇RepVGG 论文理论部分 + 原创最…

滑动窗口算法——部分OJ题详解

目录 关于滑动窗口 部分OJ题详解 209.长度最小的子数组 3.无重复字符的最长字串 1004.最大连续1的个数Ⅲ 1658.将x减到0的最小操作数 904.水果成篮 438.找到字符串中所有字母异位词 30.串联所有单词的子串 76.最小覆盖子串 关于滑动窗口 其实滑动窗口也是通过双指针…

气膜移动宴会厅:现代化宴会解决方案—轻空间

随着社会经济的发展和人们生活水平的提高&#xff0c;各类宴会、庆典和活动的需求日益增加。然而&#xff0c;传统的宴会厅受限于固定的地点和昂贵的建设成本&#xff0c;无法灵活应对不同规模和地点的需求。在此背景下&#xff0c;气膜移动宴会厅作为一种创新的解决方案&#…

北京小程序开发如何选择开发团队与开发语言?

随着移动互联网的飞速发展&#xff0c;小程序的开发与使用也变得越来越频繁。对于商户来说&#xff0c;市面上的小程序开发团队数量众多又鱼龙混杂&#xff0c;应该如何选择合适的开发团队与开发语言呢&#xff1f; 一&#xff0e; 北京小程序的开发语言的种类及不同 北京小程…

吉时利 Keithley2461 数字源表

Keithley2461吉时利SMU高电流数字源表 2461 型图形化高电流数字 SourceMeter SMU 2461 高电流 SMU 凭借其 10A/1000W 脉冲电流和 7A/100W 直流电流能力以及双 18 位 1MS/s 数字转换器&#xff0c;优化用于检定和测试高功率材料、器件和模块&#xff0c;例如碳化硅 (SiC)、氮化…