Skip to content

TCP 连接的建立与终止 🤝

TCP 协议作为面向连接的传输层协议,在进行数据传输之前必须先建立连接

连接的本质是通信双方各自在内存中开辟一块空间,用于存储以下关键信息:

  • 📦 数据缓冲区
  • 🔄 连接状态变量
  • ⚙️ 控制信息等

三次握手 (Connection Establishment) 🌟

  1. 🔵 第一次握手:客户端发送 SYN 报文给服务端,请求建立连接
  2. 🔴 第二次握手:服务端收到 SYN 报文后,会发送 SYN + ACK 报文给客户端,确认收到客户端的 SYN 报文
  3. 🔵 第三次握手:客户端收到服务端的 SYN + ACK 报文后,会发送 ACK 报文给服务端,确认收到服务端的 SYN + ACK 报文

三次握手的核心目的是为了确认双方的接收和发送能力是否正常

📞 就像打电话时的对话:

  • A:「喂,能听到吗?」
  • B:「我能听到,你能听到我说话吗?」
  • A:「能听到」

四次挥手 (Connection Termination) 👋

  1. 🔵 第一次挥手:客户端发送 FIN 报文,表示「我这边没有数据要发送了」
  2. 🔴 第二次挥手:服务端收到 FIN 报文后,发送 ACK 报文,表示「我知道了,但我可能还有数据要发送」
  3. 🔴 第三次挥手:服务端处理完所有数据后,发送 FIN 报文,表示「我这边也没有数据要发送了」
  4. 🔵 第四次挥手:客户端收到 FIN 报文后,发送 ACK 报文,表示「好的,那就断开连接吧」

📱 形象地说,就像结束电话时的对话:

  • A:「我说完了,你还有什么要说的吗?」
  • B:「我知道了,稍等,我还有几句话要说」
  • B:「好了,我也说完了」
  • A:「好的,那就挂断吧」