三次握手:
客户端A向服务端B放松一个连接请求报文,B收到后发回一个确认报文,A收到确认报文后再发送一个确认报文,B收到后才正式建立连接。为什么后面客户端A需要再发送一个确认报文呢?这是为了防止上一次A发送的滞留在网络中的已失效的连接请求报文突然又送到了B,这时B需要发回确认报文,但A知晓这是失效的连接请求报文,便不发送确认报文,B在等待一段时间没有收到确认,便不再等待,这样就节约了服务端B的资源。
四次关闭:
为什么TCP关闭需要四次呢?是因为TCP连接通信时一个双向的过程,包括客户端A发送数据给服务端B,和服务端B发送数据给客户端A。客户端A发送断开连接报文,服务端B收到后发回确认报文,A收到后便不再发送数据,但此时只是处于半关闭状态,服务端B仍可以发送数据;当B发送完数据后再发送断开连接报文,A收到后发回确认报文,B收到这个确认报文后才算真正完成TCP连接释放。