📜  为什么 TCP 连接终止需要 4 次握手?(1)

📅  最后修改于: 2023-12-03 15:06:16.495000             🧑  作者: Mango

为什么 TCP 连接终止需要 4 次握手?

TCP 是一种可靠的传输协议,它提供了全双工的连接,保证了数据的可靠传输。为了建立连接,TCP 需要进行三次握手,而为了终止连接,TCP 需要进行四次握手。为什么需要四次握手呢?

首先,我们来回顾一下 TCP 连接的建立过程。在建立连接时,客户端向服务器发送一个 SYN 请求,服务器接收到后返回一个 SYN-ACK 响应,客户端再次发送一个 ACK 响应确认连接建立。这三次握手保证了双方都能收到对方的请求和响应,建立起了可靠的连接。

但是在终止连接时,情况会更加复杂。

第一次握手

当客户端希望终止连接时,需要发送一个 FIN 请求给服务器,表示不再发送数据。客户端进入 FIN_WAIT_1 状态,等待服务器的响应。这是第一次握手。

第二次握手

服务器收到客户端的 FIN 请求后,会发送一个 ACK 响应给客户端,表示已经收到了该请求。服务器进入 CLOSE_WAIT 状态,等待收到客户端的 FIN 请求。这是第二次握手。

第三次握手

当服务器也希望终止连接时,会向客户端发送一个 FIN 请求,表示不再发送数据。服务器进入 LAST_ACK 状态,等待客户端的响应。这是第三次握手。

第四次握手

客户端收到服务器的 FIN 请求后,会发送一个 ACK 响应,表示收到了该请求。客户端进入 TIME_WAIT 状态,等待一段时间后关闭连接。这是第四次握手。

为什么需要第四次握手呢?因为在收到服务器的 FIN 请求后,客户端可能还有未发送完成的数据包需要发送,需要等待一段时间后才能关闭连接。这个等待时间称为 TIME_WAIT 时间,一般是 2MSL(Maximum Segment Lifetime,最大分段生存时间)。

总的来说,四次握手保证了双方都能正确地终止连接,避免了因网络中的延迟或错误而导致连接无法正常关闭的情况。

## 为什么 TCP 连接终止需要 4 次握手?

TCP 是一种可靠的传输协议,它提供了全双工的连接,保证了数据的可靠传输。为了建立连接,TCP 需要进行三次握手,而为了终止连接,TCP 需要进行四次握手。为什么需要四次握手呢?

首先,我们来回顾一下 TCP 连接的建立过程。在建立连接时,客户端向服务器发送一个 SYN 请求,服务器接收到后返回一个 SYN-ACK 响应,客户端再次发送一个 ACK 响应确认连接建立。这三次握手保证了双方都能收到对方的请求和响应,建立起了可靠的连接。

但是在终止连接时,情况会更加复杂。

### 第一次握手

当客户端希望终止连接时,需要发送一个 FIN 请求给服务器,表示不再发送数据。客户端进入 FIN_WAIT_1 状态,等待服务器的响应。这是第一次握手。

### 第二次握手

服务器收到客户端的 FIN 请求后,会发送一个 ACK 响应给客户端,表示已经收到了该请求。服务器进入 CLOSE_WAIT 状态,等待收到客户端的 FIN 请求。这是第二次握手。

### 第三次握手

当服务器也希望终止连接时,会向客户端发送一个 FIN 请求,表示不再发送数据。服务器进入 LAST_ACK 状态,等待客户端的响应。这是第三次握手。

### 第四次握手

客户端收到服务器的 FIN 请求后,会发送一个 ACK 响应,表示收到了该请求。客户端进入 TIME_WAIT 状态,等待一段时间后关闭连接。这是第四次握手。

为什么需要第四次握手呢?因为在收到服务器的 FIN 请求后,客户端可能还有未发送完成的数据包需要发送,需要等待一段时间后才能关闭连接。这个等待时间称为 TIME_WAIT 时间,一般是 2MSL(Maximum Segment Lifetime,最大分段生存时间)。

总的来说,四次握手保证了双方都能正确地终止连接,避免了因网络中的延迟或错误而导致连接无法正常关闭的情况。