TCP三次握手、四次挥手的原因

大家都知道,TCP建立连接之前首先要进行三次握手,那么TCP为什么是三次握手,而不是二次、四次握手呢?

三次握手:

我们先看一下三次握手:

TCP三次握手、四次挥手的原因

至此,通信双方都能听到对方说话,连接建立成功。

如果是两次握手:

TCP三次握手、四次挥手的原因

如果是四次握手的话:

TCP三次握手、四次挥手的原因

四次挥手:

再来看一下四次挥手:(并不一定非得是客户端发起FIN请求,途中只是一个例子)

TCP三次握手、四次挥手的原因

为什么不能是三次挥手?

如果我们将服务器的ACK和FIN合并为一个报文的话,那么客户端发起断开连接的请求后,服务器确认后就不能继续发送数据了(不管服务器的数据有没有发完),显而易见这是不合理的。

为什么不能是五次挥手?

由图可知,四次挥手就可以完美地达到我们的目的(双方发起请求,双方确认),就没有必要再浪费一个报文段了。