TCP 三次握手 (SYN, SYN-ACK, ACK)

什么是 TCP 三次握手?

三次握手或 TCP 三次握手是 TCP/IP 网络中用于在服务器和客户端之间建立连接的进程。这是一个三步过程,在实际数据通信进程开始之前,需要客户端和服务器交换同步和确认数据包。

三次握手过程的设计方式是,双方可以同时启动、协商和分离 TCP 套接字连接。它允许您同时在两个方向上传输多个 TCP 套接字连接。

TCP 消息类型

消息 描述
SYN 用于启动和建立连接。它还有助于同步设备之间的序列号。
ACK 帮助向对方确认已收到 SYN。
SYN-ACK 来自本地设备的 SYN 消息和对先前数据包的 ACK。
FIN 用于终止连接。

TCP 三次握手过程

TCP 流量以三次握手开始。在此 TCP 握手过程中,客户端需要通过请求与服务器的通信会话来启动对话。

Three-Way Handshake Process
3 次握手图
  • 步骤 1:在第一步中,客户端与服务器建立连接。它发送一个带有 SYN 的段,并告知服务器客户端应开始通信,以及其序列号应是什么。
  • 步骤 2:在此步骤中,服务器使用设置的 SYN-ACK 信号响应客户端的请求。ACK 有助于表示收到的段的响应,而 SYN 表示其应开始分段的序列号。
  • 步骤 3:在最后一步中,客户端确认服务器的响应,然后两者建立稳定的连接,并将开始实际的数据传输过程。

现实生活中的例子

Real-world Example

这是一个由三个步骤组成的三次握手过程的简单示例

  • 主机 X 通过向目标主机发送 TCP SYN 数据包来启动连接。数据包包含一个随机序列号(例如,4321),指示主机 X 应传输的数据序列号的开始。
  • 之后,服务器将收到数据包,并响应其序列号。它的响应还包括确认号,即主机 X 的序列号加 1(此处为 4322)。
  • 主机 X 通过发送确认号来响应服务器,该确认号通常是服务器序列号加 1。

数据传输过程结束后,TCP 会自动终止两个独立端点之间的连接。

摘要

  • TCP 三次握手或三路握手或 TCP 三路握手是 TCP/IP 网络中用于在服务器和客户端之间建立连接的进程。
  • Syn 用于启动和建立连接
  • ACK 有助于向对方确认已收到 SYN。
  • SYN-ACK 是来自本地设备的 SYN 消息和对先前数据包的 ACK。
  • FIN 用于终止连接。
  • TCP 握手过程,客户端需要通过请求与服务器的通信会话来启动对话。
  • 在第一步中,客户端与服务器建立连接。
  • 在此第二步中,服务器使用设置的 SYN-ACK 信号响应客户端的请求。
  • 在最后一步中,客户端确认服务器的响应。
  • TCP 会自动终止两个独立端点之间的连接。