三次握手和四次挥手
三次握手(Three-Way Handshake)和四次挥手(Four-Way Handshake)是 TCP(Transmission Control Protocol,传输控制协议)连接建立和断开的过程。
三次握手:
第一步(SYN):
客户端向服务器发送一个 SYN(同步)包,表示客户端请求建立连接,并选择一个初始序列号(Sequence Number)。
第二步(SYN-ACK):
服务器接收到 SYN 包后,会发送一个 SYN-ACK 包作为响应。该包中包含了确认号(Acknowledgment Number),其值为客户端发送的序列号+1,同时服务器也选择一个初始序列号。
第三步(ACK):
客户端接收到服务器发送的 SYN-ACK 包后,会发送一个 ACK(确认)包作为确认。该 ACK 包中的确认号为服务器发送的序列号+1,表示客户端已经接收到了服务器的确认。
这样,通过这三次握手,TCP 连接就建立起来了,双方都可以开始进行数据传输。
四次挥手:
第一步(FIN):
当客户端想要关闭连接时,会向服务器发送一个 FIN(结束)包,表示客户端不再发送数据。
第二步(ACK):
服务器接收到客户端发送的 FIN 包后,会发送一个 ACK 包作为确认。但是,服务器可能还有未发送完的数据,因此服务器此时不会立即关闭连接。
第三步(FIN):
当服务器完成发送所有数据后,会向客户端发送一个 FIN 包,表示服务器已经准备好关闭连接了。
第四步(ACK):
客户端接收到服务器发送的 FIN 包后,会发送一个 ACK 包作为确认。然后,客户端等待一段时间(TIME_WAIT 状态),以确保服务器已经接收到了最后的 ACK 包,然后关闭连接。
这样,通过这四次挥手,TCP 连接就彻底关闭了。
总的来说,三次握手是建立 TCP 连接的过程,而四次挥手则是断开 TCP 连接的过程。这些过程确保了数据的可靠传输和连接的正常终止。