跳到主要内容

TCP的三次握手和四次挥手

TCP(Transmission Control Protocol)是一种可靠的、面向连接的协议。在建立和终止连接时,TCP 使用了三次握手和四次挥手的过程。

三次握手(Three-Way Handshake)

三次握手的目的是确保双方都能够发送和接收数据,同时建立起可靠的通信信道。

  1. 第一次握手(SYN):

    • 客户端发送一个带有 SYN(同步)标志的包,表示客户端请求建立连接。
    • 客户端选择一个初始序列号(ISN)并发送给服务器。
  2. 第二次握手(SYN + ACK):

    • 服务器接收到客户端的 SYN 包,回应一个带有 SYN 和 ACK(确认)标志的包。
    • 服务器也选择一个初始序列号(ISN)并发送给客户端。
  3. 第三次握手(ACK):

    • 客户端接收到服务器的 SYN + ACK 包,回应一个带有 ACK 标志的包。
    • 从这一时刻起,客户端和服务器都认为连接已建立,可以开始双向数据传输。

四次挥手(Four-Way Handshake)

四次挥手的目的是终止已建立的连接。

  1. 第一次挥手(FIN):

    • 客户端发起关闭连接请求,发送一个带有 FIN(结束)标志的包。
  2. 第二次挥手(ACK):

    • 服务器接收到客户端的 FIN 包,回应一个带有 ACK 标志的包,表示确认关闭连接。
  3. 第三次挥手(FIN):

    • 服务器在完成当前数据的发送后,也发送一个带有 FIN 标志的包,表示可以关闭连接。
  4. 第四次挥手(ACK):

    • 客户端接收到服务器的 FIN 包后,回应一个带有 ACK 标志的包,确认收到关闭请求。
    • 服务器收到客户端的 ACK 包后,双方都认为连接已关闭。

这个过程确保了数据的完整性和可靠性,使得客户端和服务器都有足够的时间完成数据的传输和处理。挥手过程比握手过程多一个步骤,是因为关闭连接时需要确保双方都能正确处理完未发送完的数据。

TCP三次握手和四次挥手