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

三次握手——确保信息传输的可靠性

1766933270462
这个问题本质上问的是:为什么是 TCP 三次握手。
👉 HTTP 本身不握手,HTTP 是基于 TCP 的,真正“三次握手”的是 TCP 协议。大家习惯性把它说成“HTTP 三次握手”。

下面我分层说清楚:为什么不是两次?为什么没必要四次?

一、先一句话结论

三次握手 = 在最少次数下,保证“双方都确认了:我能发、你能收,而且序号没问题”
• 两次 👉 不安全
• 三次 👉 刚刚好
• 四次 👉 没必要,多余

二、TCP 要解决什么问题?

建立连接前,TCP必须确认 3 件事:
1. 我 → 你:能发
2. 你 → 我:能收
3. 双方的“初始序列号”是确认过的(防止历史连接干扰)

三、为什么不是“两次握手”?❌

两次握手流程(假设):

客户端 → 服务端:SYN
服务端 → 客户端:SYN + ACK
(连接建立?)

致命问题:服务端不知道客户端是否“真的收到了确认”

举个经典场景(重点)👇
1. 客户端发送 SYN(第一次)
2. 这个 SYN 在网络中延迟
3. 客户端以为失败,又重新发一个 SYN
4. 服务端收到了第二个 SYN,建立连接
5. 这时,第一个“旧 SYN”突然到了

👉 如果是“两次握手”,
服务端会 错误地认为这是一个新连接,白白占用资源

📌 这叫:历史连接(旧报文)问题

两次握手无法防止“旧 SYN 报文造成错误连接”

四、三次握手是怎么解决的?✅

三次握手流程(标准 TCP)

1️⃣ 客户端 → 服务端:SYN(我想连你)
2️⃣ 服务端 → 客户端:SYN + ACK(我收到了,你也收一下)
3️⃣ 客户端 → 服务端:ACK(我确认了)

关键点在第 3 次 👇
• 客户端用 ACK 明确告诉服务端:
• “我确实收到了你刚刚的 SYN+ACK”
• “这是当前连接,不是历史垃圾包”

👉 服务端收到第 3 次 ACK,才敢真正建立连接

📌 所以三次握手 =

防止旧连接 + 确认双方收发能力 + 同步序列号

五、那为什么不是“四次握手”?❌

如果硬要四次,大概会是:

1️⃣ SYN
2️⃣ ACK
3️⃣ SYN
4️⃣ ACK

但问题是:
• 第 2 次和第 3 次完全可以合并
• TCP 把「确认你」和「我也要连你」合成一个包:SYN + ACK

👉 不影响安全性
👉 减少一次网络往返(RTT)
👉 性能更好

📌 TCP 的设计目标之一就是:够用就行,不多一步

六、一句话对比总结

次数 能不能用 原因
两次 ❌ 不行 无法防止历史连接,服务端不安全
三次 ✅ 最优 最少次数,解决所有问题
四次 ❌ 没必要 功能重复,浪费性能

七、再帮你纠正一个常见误区

❌ HTTP 三次握手
✅ TCP 三次握手

HTTP:
• 是应用层
• 不关心连接怎么建
• 只管“请求 / 响应”

TCP:
• 是传输层
• 负责连接建立、可靠传输
• 才有三次握手、四次挥手

http://www.jsqmd.com/news/155986/

相关文章:

  • 2025-12-28
  • Jupyter Lab扩展安装指南:增强PyTorch开发体验
  • 杂题选做
  • 树链剖分 I
  • english-12-word-25-12-28, on a healthy kick 热衷于健康的生活方式 ,没想到吧除了 kick you还有如此表达
  • Mysql 有buff_pool 为什么在很多场景下还要使用redis缓冲热点数据
  • MySQL 8.4.7版本下载安装详细教程(Win11环境)
  • CNN过拟合解决方案:PyTorch实现早停机制
  • 2025年南通汉科新能源热处理技术盘点:金属冲压件渗碳氮化等十大工艺实力解析,厂家哪家好权威推荐 - 品牌企业推荐师(官方)
  • Springboot图书借阅管理系统bh5st(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 2025.9.28社团管理系统
  • LINUX应用编程 第三十一章 CMAKE 进阶 学习笔记(3) cmake 进阶
  • Springboot图书阅读与推荐系统wlxpk(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 开发体验的华丽转身
  • Anaconda更换清华源后仍无法安装PyTorch?原因解析
  • LINUX应用编程 第三十一章 CMAKE 进阶 学习笔记(2)CMakeLists.txt 语法规则
  • 当AI开始“重构”我们的代码与工具
  • SSH公钥私钥生成与部署完整指南
  • [特殊字符]天津超火!前台设计装饰公司揭秘✨
  • sy7
  • 年份进化又不带我?
  • 如何在NVIDIA显卡上运行PyTorch模型?这个镜像直接开跑
  • HuggingFace镜像网站推荐列表:国内高速下载大模型参数
  • Thinkphp_Laravel框架开发的vue在线问卷调查系统痕迹
  • PyTorch GPU环境配置避坑指南:常见错误及解决方案汇总
  • 【计算机毕业设计案例】基于SpringBoot的工厂供应链管理系统的设计与实现(程序+文档+讲解+定制)
  • secure crt使用ssh密钥登录提示未知文件格式
  • Markdown数学公式编写:用于描述PyTorch损失函数推导
  • Django Auth:深入理解与最佳实践
  • GDKOI2025游记