TCP协议的三次握手建联:
1.首先,我们要清楚在实际通信过程中,我们是不区分客户端(Client)与服务器端(Server)的,但是为了方便区分,我们将率先发起建联的一端称为客户端,将响应建联请求的称为服务器端。
2. 在开始时,服务器端(Server)会一直有一个监听的端口来判断是否有建联请求,此时服务器端(Server)的状态是Listen状态,当客户端(Client)发送SYN包给服务器后,客户端(Client)的状态变为SYN_SENT状态,而当服务器端(Server)接受到客户端(Client)发送的SYN包后,服务器(Server)会发送一个ACK包来回复客户端(Client),同时还会发送一个SYN包,请求与客户端(Client)建立连接(我们知道TCP协议的全双工通信,需要建立双向通信的通道),此时发送完两个包的服务器端(Server)的状态为SYN_RCVD,收到ACK应答包的客户端(Client)的状态变为了ESTABLISHED状态(表示由客户端向服务器端建立的链接成功),而且为了响应服务器端(Server)建联的请求,也向服务器端(Server)发送了ACK应答包,接受到ACK应答包的服务器端(Server)状态变成了ESTABLISHED状态(表示由服务器端向客户端建立的链接成功),此时TCP协议的双向通信建立成功。