TCP协议是面向连接的、可靠的、基于字节流的传输层协议。那使用tcp协议进行通信的两端是如何进行通信的?使用tcp协议进行通信的两端是通过套接字(scoket)来建立连接的。套接字socket主要有两种类型,阻塞和非阻塞。通常为了防止进程阻塞以及避免cpu被长时间占用,客户端和服务端一般都会采用非阻塞socket进行通信,其中Nginx就是一个典型的例子。下面我们就以Nginx的upstream机制所涉及的与后端服务器建链的流程来总结下使用非阻塞socket的客户端建链流程。
先来看下Nginx的upstream机制所涉及的与后端服务器建链的流程,其相关函数为ngx_event_connect_peer,该函数的执行流程如下:
客户端非阻塞socket建链流程
业精于勤荒于嬉,行成于思毁于随。
- 本文链接: https://tqr.ink/2016/10/23/client-nonblocking-connect/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!