温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

TCP三次握手为何必要

发布时间:2026-07-25 15:34:14 来源:亿速云 阅读:82 作者:小樊 栏目:软件技术

TCP三次握手(Three-way Handshake)是建立TCP连接时的核心过程,目的是确保双方都能确认彼此的收发能力正常,并同步初始序列号。其必要性可以从以下几个角度理解:


一、三次握手的基本过程

  1. 第一次握手:客户端发送 SYN,告诉服务器“我想建立连接”。
  2. 第二次握手:服务器回复 SYN+ACK,表示“我收到了,也同意建立连接”。
  3. 第三次握手:客户端发送 ACK,表示“我也收到了你的回复”。

二、为什么三次是“必要”的?

1. 防止旧连接请求干扰新连接(核心原因)

如果只有两次握手

  • 网络中可能存在延迟的旧 SYN 包
  • 服务器收到旧 SYN 后,直接建立连接并进入 ESTABLISHED 状态。
  • 但客户端并不知道这个连接,不会发送数据,服务器白白等待,浪费资源。

三次握手的作用

  • 第三次握手的 ACK 让服务器确认:客户端真的想要建立连接
  • 如果服务器收到的是旧 SYN,客户端不会发送第三次 ACK,连接就不会真正建立。

2. 确认双方的收发能力都正常

  • 第一次握手:服务器知道“客户端的发送能力正常”。
  • 第二次握手:客户端知道“服务器的接收和发送能力都正常”。
  • 第三次握手:服务器知道“客户端的接收能力也正常”。

两次握手只能确认单向能力,三次才能确认双向通信能力


3. 同步双方的初始序列号(ISN)

TCP 是面向字节流的协议,需要:

  • 双方各自生成初始序列号(ISN)。
  • 通过三次握手交换并确认对方的 ISN。

如果只有两次握手:

  • 服务器无法确定客户端是否收到了自己的 ISN。
  • 后续数据传输的可靠性和顺序性无法保证。

4. 避免资源浪费(半连接问题)

两次握手时:

  • 服务器在收到 SYN 后就分配资源(缓冲区、变量等)。
  • 如果客户端不响应,服务器资源会被长期占用,容易遭受 SYN Flood 攻击

三次握手:

  • 服务器在第三次握手完成后才真正分配资源。
  • 即使有恶意 SYN,服务器也不会立即进入 ESTABLISHED 状态。

三、为什么不是四次?

三次已经能完成:

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

第四次握手不会带来额外收益,反而增加延迟。


四、一句话总结

TCP 三次握手是为了在不可靠的网络中,可靠地建立连接,防止旧连接干扰,并同步双方的初始状态。

如果你愿意,我也可以画一个时序图或用**类比(如打电话)**帮你更直观地理解。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI