TCP三次握手 四次挥手:一场“确认眼神”与“礼貌告别”的对话

🌟 TCP三次握手 & 四次挥手:一场“确认眼神”与“礼貌告别”的对话 🌟

一、三次握手:建立连接的“确认眼神”

场景:想象你和朋友打电话,如何确认对方能听到你说话?

过程:

1️⃣ 第一次握手(你喊话)→
你:“喂,能听到吗?”(发送 SYN 包,携带初始序列号 seq=x)
状态:你进入 SYN_SENT(等待确认中)

2️⃣ 第二次握手(朋友回应)→
朋友:“能听到!你也能听到我吗?”(发送 SYN+ACK 包,ack=x+1 确认你的消息,并携带自己的序列号 seq=y)
状态:朋友进入 SYN_RCVD(等待你的最终确认)

3️⃣ 第三次握手(你确认)→
你:“当然能!”(发送 ACK 包,ack=y+1)
状态:双方进入 ESTABLISHED(连接成功,开始传数据)

为什么必须三次?

防“诈尸”连接:网络延迟可能让旧的连接请求突然到达服务器。三次握手能识别并拒绝“过期请求”。
同步序列号:确保双方数据顺序一致(比如防止聊天内容错乱)。

二、四次挥手:断开连接的“礼貌告别”

场景:结束通话时,如何确保双方都说完了?

过程:

1️⃣ 第一次挥手(你主动说再见)→
你:“我说完啦,拜拜!”(发送 FIN 包,进入 FIN_WAIT_1 状态)

2️⃣ 第二次挥手(朋友先回应)→
朋友:“好,我听到了!”(发送 ACK 包,进入 CLOSE_WAIT 状态)
此时:你停止发送数据,但朋友可能还有话要说。

3️⃣ 第三次挥手(朋友也说再见)→
朋友:“我也说完啦,拜拜!”(发送 FIN 包,进入 LAST_ACK 状态)

4️⃣ 第四次挥手(你最后确认)→
你:“收到,真的拜拜了!”(发送 ACK 包,进入 TIME_WAIT 状态,等待 2MSL 后关闭)

为什么必须四次?

全双工特性:TCP连接是双向通道,双方需独立关闭自己的“发送端”。
防“最后的话丢失”:TIME_WAIT 状态确保对方收到最终确认,避免服务器无限等待。

三、记忆口诀

三次握手:一喊(SYN)、二应(SYN+ACK)、三确认(ACK) → “确认眼神”。
四次挥手:一拜(FIN)、二应(ACK)、三回拜(FIN)、四确认(ACK) → “礼貌告别”。

四、趣味类比

三次握手:像两人初次见面握手,必须“伸手→握住→再握紧”才算正式认识。
四次挥手:像告别时,一人说“走了啊”,另一人点头;等对方也说“走了”,再挥手目送。

总结

三次握手防错乱,四次挥手保周全。
TCP用“仪式感”确保网络世界的可靠对话,就像生活中的礼貌交流一样!🚀

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

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

相关文章

docker基操

docker基操 首先就是安装docker使用docker:创建容器-制作一个镜像-加载镜像首先就是安装docker 随便找一个教程安装就可以,安装过程中主要是不能访问谷歌,下面这篇文章写了镜像的一些问题: 安装docker的网络问题 使用docker:创建容器-制作一个镜像-加载镜像 主要是参考:这篇…

3D打印注塑件-省模具费90%的解决方案

"开模费用50万,首批订单才200件?" 这是许多制造企业的真实困境。传统注塑工艺动辄数周的开模周期和5-50万元的模具成本,让中小企业的产品迭代举步维艰。 在传统制造流程中,注塑件的生产往往需要高昂的模具开发费用和较…

Java+SpringBoot+Vue+数据可视化的综合健身管理平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统介绍 在当今社会,随着人们生活水平的不断提高和健康意识的日益增强,健…

美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台

作者:美的楼宇科技事业部 先行研究中心智能技术部 美的楼宇科技 IoT 数据平台建设背景 美的楼宇科技事业部(以下简称楼宇科技)是美的集团旗下五大板块之一,产品覆盖多联机组、大型冷水机组、单元机、机房空调、扶梯、直梯、货梯…

matlab 车辆进出检测算法设计GUI界面-论文

1、内容简介 matlab151-车辆进出检测算法设计GUI界面-论文 可以交流、咨询、答疑 2、内容说明 略 随着科学技术的进步,社会的发展,各行各业都在发生着巨大的变化。近段时间以来,“无人化”智能产业正处于一个风口阶段,似乎我们…

python学习书籍推荐

### Python 学习路线图概述 为了有效地掌握Python这门编程语言并应用于不同领域,构建一个合理的学习路径至关重要。此学习路径不仅涵盖了基础语法,还深入到特定应用方向的关键技术。 #### 基础阶段 在这个初始阶段,重点在于理解Python的基…

基于Spring Boot的农事管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

在 Ansys Motion 中创建链式伸缩臂的分步指南

介绍 链传动在负载和/或运动要远距离传递的机器中非常多产,例如,在两个平行轴之间。链条驱动系统的设计需要了解载荷传递和运动学如何影响链条张力、轴轴承中的悬臂载荷、轴应力和运动质量等。使用 Ansys Motion,可以轻松回答上述所有问题以…

Web Scraper,强大的浏览器爬虫插件!

Web Scraper是一款功能丰富的浏览器扩展爬虫工具,有着直观的图形界面,无需编写代码即可自定义数据抓取规则,高效地从网页中提取结构化数据,而且它支持灵活的数据导出选项,广泛应用于电商监控、内容聚合、市场调研等多元…

数据结构:栈和队列详解(下)

目录 一.如何用队列实现栈 1.思路: 2.具体代码: 二.如何用栈实现队列 1.思路: 2.具体代码: 一.如何用队列实现栈 原题来源:https://leetcode.cn/problems/implement-stack-using-queues/description/ 前言&#xf…

DeepSeek智能测试知识库助手PRO版:多格式支持+性能优化

前言 测试工程师在管理测试资产时,需要面对多种文档格式、大量文件分类及知识库的构建任务。为了解决这些问题,我们升级了 DeepSeek智能测试知识库助手,不仅支持更多文档格式,还加入了 多线程并发处理 和 可扩展格式支持,大幅提升处理性能和灵活性。 主要功能亮点: 多格…

宝塔面板开始ssl后,使用域名访问不了后台管理

宝塔面板后台开启ssl访问后,用的证书是其他第三方颁发的证书 再使用 域名/xxx 的形式:https://域名:xxx/xxx 访问后台,结果出现如下,不管使用 http 还是 https 的路径访问都进不后台管理 这个时候可以使用 https://ip/xxx 的方式来…

机器学习_12 逻辑回归知识点总结

逻辑回归是机器学习中一种重要的分类算法,广泛应用于二分类和多分类问题。它不仅能够预测分类结果,还能提供每个类别的概率估计。今天,我们就来深入探讨逻辑回归的原理、实现和应用。 一、逻辑回归的基本概念 1.1 逻辑回归与线性回归的区别…

AI Agent实战:打造京东广告主的超级助手 | 京东零售技术实践

前言 自2022年末ChatGPT的问世,大语言模型(LLM)技术引发全球关注。在大模型技术落地的最佳实践中,智能体(Agent)架构显现出巨大潜力,成为业界的普遍共识,各大公司也纷纷启动Agent技…

【工具篇】【深度解析 DeepAI 工具:开启 AI 应用新体验】

一、DeepAI 基本信息 嘿,咱先来说说 DeepAI 这工具到底是啥。DeepAI 是一个综合性的人工智能平台,就像是一个装满各种 AI 魔法的百宝箱。它把好多先进的人工智能技术整合到一起,让咱们普通人也能轻松用上这些高大上的 AI 功能。 这个平台背后有一群超厉害的技术人员,他们…

C语言之typedef

目录 前言 一、基本数据类型定义 二、作用 自带阅读 封装复杂类型的描述过程 三、指针类型定义 ​ 四、函数类型定义 总结 前言 typedef是C语言中用来为已有数据类型取别名的关键字。通过使用typedef关键字,可以方便地为数据类型定义新的名称,提高代码的…

如何在 SpringBoot 项目使用 Redis 的 Pipeline 功能

本文是博主在批量存储聊天中用户状态和登陆信息到 Redis 缓存中时,使用到了 Pipeline 功能,并对此做出了整理。 一、Redis Pipeline 是什么 Redis 的 Pipeline 功能可以显著提升 Redis 操作的性能,性能提升的原因在于可以批量执行命令。当我…

【HBase】HBaseJMX 接口监控信息实现钉钉告警

目录 一、JMX 简介 二、JMX监控信息钉钉告警实现 一、JMX 简介 官网:Apache HBase ™ Reference Guide JMX (Java管理扩展)提供了内置的工具,使您能够监视和管理Java VM。要启用远程系统的监视和管理,需要在启动Java…

鸿蒙开发环境搭建-入门篇

本文章讲述如何搭建鸿蒙应用开发环境:新建工程、虚拟机运行、真机调试等。 开发工具: DevEco Studio 5.0.3.906 os系统: mac 参考文档:https://juejin.cn/post/7356143704699699227 官网鸿蒙应用开发学习文档:https://developer.huawei.com/c…

[OD E 100] 生成哈夫曼树

题目 题目描述 给定长度为 n 的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于 1 。请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。 为了保证输出的二…