当前位置: 首页 > news >正文

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用“仪式感”确保网络世界的可靠对话,就像生活中的礼貌交流一样!🚀

相关文章:

  • Linux中ps -ef命令详解
  • 开源低代码平台与 Vue.js
  • JVM篇:内存分区及作用及各部分可能发生的异常
  • 前端八股——计算机网络+浏览器原理
  • 编程小白冲Kaggle每日打卡(12)--kaggle学堂:<机器学习简介>模型如何工作
  • 《论模型驱动架构设计方法及其应用》审题技巧 - 系统架构设计师
  • 为AI聊天工具添加一个知识系统 之117 详细设计之58 思维导图及观察者效应 之2 概念全景图
  • 深入剖析抽象工厂模式:设计模式中的架构利器
  • 【每日一算法】二分查找
  • 学习经验分享【39】YOLOv12——2025 年 2 月 19 日发布的以注意力为核心的实时目标检测器
  • vue2 和 vue3 中 computer 计算属性的用法
  • 单臂路由
  • 【算法系列】荷兰国旗问题:三指针法原地排序
  • comfy 面部修复(ComfyUI-Impact-Pack)
  • mybatis 细节(${ ..}和#{..},resultType 和 resultMap的区别,别名的使用,Mapper 代理模式)
  • vue-treeselect显示unknown的问题及解决
  • React 高阶组件的优缺点
  • CMake入门
  • HDFS Java 客户端 API
  • QML MouseArea 鼠标事件详解
  • 上海劳模风采馆焕新升级后重新开放,展示480位劳模先进故事
  • 韩德洙成为韩国执政党总统大选候选人
  • 春秋航空:如果供应链持续改善、油价回落到合理水平,公司补充运力的需求将会增长
  • 遇冰雹天气,西安机场新航站楼成“水帘洞”
  • 中俄元首今年首次面对面会谈,达成哪些新的重要共识?
  • 东亚社会的“苦难诗学”:从《苦尽柑来遇见你》说起