TCP 挥手为什么需要四次呢?

再来回顾一下四次挥手中双方发送FIN包的过程,就能理解为什么需要四次挥手了。

  • 当关闭连接时,客户端向服务端发送FIN包时,它仅仅表示客户端不再发送数据了,但仍然可以接收数据。
  • 当服务端收到客户端的FIN包时,它首先发送一个ACK应答报文作为回应。然而,服务端可能仍然有未处理完的数据需要发送,所以在完成数据的发送之后,服务端才会发送FIN包给客户端,表示同意现在关闭连接。

从上述过程可以看出,服务端通常需要等待完成数据的发送和处理,因此服务端的ACK和FIN通常会分开发送,这就导致了四次挥手的过程,相比三次握手多了一次。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题, 计算机网络, 计算机网络面试题