为什么TCP连接三次握手而TCP断开连接四次分手?

需要明确一点的是TCP基于客户机-服务器模式,这点非常重要。

TCP的三次握手的由来:

客户机A要连接服务器B,首先A发起连接请求,然后B发出对这个连接请求的确认报文,当前的连接还没有完全建立,紧接着B发起对A的连接请求,然后A对B的连接请求进行确认,这样TCP连接才算建立完毕,现在应该算TCP连接进行了四次握手了把。

为什么TCP连接三次握手而TCP断开连接四次分手?

但是,可以观察到确认A的连接和B的连接请求没有必要分为两次发送,完全可以合并。所以B对A的连接请求的回复包括了SYN(连接请求)和ACK标志(确认连接),那么四次握手就合并成了三次握手了。

TCP的四次分手的由来:

首先,断开连接肯定需要4次分手,A向B请求断开,B对A的确认,B向A请求断开,A向B的确认,唯一需要明确的是这些分手能不能合并为一次分手的问题。肯定是不能合并的,因为服务器可能对客户机的断开连接确认后,还需要往客户机发送一些数据,所以并不能合并分手报文。如图。

为什么TCP连接三次握手而TCP断开连接四次分手?