TCP协议是面向连接的、可靠的、基于字节流的传输层协议。那使用tcp协议进行通信的两端是如何进行通信的?使用tcp协议进行通信的两端是通过套接字(scoket)来建立连接的。套接字socket主要有两种类型,阻塞和非阻塞。通常为了防止进程阻塞以及避免cpu被长时间占用,客户端和服务端一般都会采用非阻塞socket进行通信,其中Nginx就是一个典型的例子。下面我们就以Nginx的upstream机制所涉及的与后端服务器建链的流程来总结下使用非阻塞socket的客户端建链流程。
先来看下Nginx的upstream机制所涉及的与后端服务器建链的流程,其相关函数为ngx_event_connect_peer,该函数的执行流程如下:
