TCP中的三次握手和四次挥手

三次握手:建立客户端和服务器的通信连接

三次握手示意图如下

TCP中的三次握手和四次挥手

解释三次握手的必要性:

三次握手是为了建立TCP的可靠通信,确保客户端(Client)和服务器(Server)都可以正常接收和发送.
第一次握手客户端向服务器发送SYN(同步会话),就是说客户端要想服务器建立连接。这样做就让Server知道,Client的发送是正常的。
第二次握手是服务器向客户端发送SYN/ACK,ACK是确认信息,这样Client就知道Server的接收和发送是没问题的,自己的接收和发送也是没问题的。
第三次握手是客户端向服务器发送ACK,这样Server就知道自己的发送和接收没问题,对方的发送和接收也没问题,可以正常通信。

为什么有SYN还需要ACK?

因为SYN只能知道发送端到接收端是正常的,而ACK用于检测接收端到发送端是否可以正常通信。

四次挥手:用于断开TCP连接

示意图如下

TCP中的三次握手和四次挥手

四次握手的解释

可以通俗理解为,客户端告诉服务器:我要关闭了,然后服务器告诉客户端:我知道了,但是这里客户端是处于半关闭的,他还要等待服务器发送关闭请求,然后服务器发送关闭请求:我也要关闭了,客户端说:我知道了,最后才能真正关闭。
这里的FIN就是关闭信息,而ACK依然是确认信息。

注意:

客户端在收到服务器确认信息后,必须等待两个报文寿命(大概两分钟),等待服务器发送断开连接的请求,不然服务器无法关闭。