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

TCP三次握手

 TCP三次握手

两个核心概念
​SYN包:SYN=1,表示请求建立连接​(相当于说“我要和你通话!”)。
​ACK包:ACK=1,表示确认收到数据​(相当于说“我收到了!”)。

三次握手
第一次握手:客户端发一个 SYN=1 的包给服务端
目的:“我要和你建立连接!”

第二次握手:​服务端发送SYN+ACK包给客户端
目的:
ACK=1:“我收到你的请求了!”
SYN=1:“我也要和你建立连接!”


第三次握手:客户端发一个 ACK=1 的包给服务端
​目的:“我收到你的回应了,连接正式建立!”

一句话总结流程
客户端:SYN(我要连接) → ​服务端:ACK+SYN(同意+我也要连接) → ​客户端:ACK(同意) → ​开始传数据!​

为什么TCP要三次握手,两次却不可以

  • 两次握手时,服务端发送完SYN-ACK后,无法确认客户端是否真的收到了。如果这个包丢失,服务端会以为连接已建立(开始浪费资源),但客户端实际没收到,导致服务端空等。三次握手的最后一次ACK就是让服务端明确知道:“客户端已准备好,双方可以可靠通信了。
核心问题​(两次握手的致命缺陷):

​无法验证客户端的接收能力
服务端发送 SYN+ACK 后,若客户端未返回 ACK,服务端无法确定客户端是否能正常接收数据,可能建立“半开连接”(服务端以为连接成功,客户端实际未建立)。

​无法抵抗网络丢包和延迟干扰
若服务端的 SYN+ACK 丢失,客户端不会发送数据,但服务端会一直等待,导致资源被长期占用。
http://www.dtcms.com/a/64122.html

相关文章:

  • 前馈神经网络 - 自动梯度计算
  • Mac 如何在idea集成SVN
  • JAVA SE 4.Java各版本特性
  • 如何通过自动化测试提升DevOps效率?
  • Dify后端结构与二次开发指南(一)
  • 《PYTHON 语言程序设计》2018版 第1章第21题改进中(十)做到这,这个题下轮再说吧
  • 物联网(IoT)技术在水电站、光伏电站和风电场中的应用
  • 【Node.js】--- win11安装 Node.js
  • 【调研】olmOCR解析PDF
  • c++领域展开第十六幕——STL(vector容器的了解以及模拟实现、迭代器失效问题)超详细!!!!
  • 买瓜 第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组
  • linux 的免密切换用户PAM配置
  • 【最后203篇系列】014 AI机器人-1
  • JS—闭包:3分钟从入门到放弃
  • OpenAI Agent 工具包深度解析:重塑 AI 代理开发的未来图景
  • 2025/03/12(嵌入式学习开始第六天)<刷题>
  • Windows 图形显示驱动开发-WDDM 3.2- WDDM 功能的内核模式测试
  • docker安装和卸载
  • AGI大模型(4):编程调用 OpenAI API
  • 计算机组成原理之基本元器件和逻辑门构成
  • 从学习ts的三斜线指令到项目中声明类型的最佳实践
  • CSP模拟考试系统共享
  • Web网页制作之爱家居的设计(静态网页)
  • 辨析Corollary、Theorem和lemma
  • unet模型在车道线检测上的应用【代码+数据集+python环境+GUI系统】
  • 当输入没有注册的用户名和密码,直接跳转到了一个404页面是怎么回事
  • 判断能否形成等差数列 - 简单
  • P9241 [蓝桥杯 2023 省 B] 飞机降落
  • 第44天:WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式
  • SpaceSync智能排班:重构未来办公空间的神经中枢