backlog - 有关Listen系统调用中的backlog简要说明

AI 摘要: 网络服务处理连接的过程,包括套接字创建、绑定、监听和接收连接

很多网络编程中都会接触到backlog这个概念,简要整理了这块内容

网络服务处理连接的过程

网络服务接收一个连接,经历以下几个步骤:

  1. 套接字创建:socket(2)系统调用,同时可以指定套接字的相关属性,比如NOBLOCK
  2. 套接字绑定到接口地址上:bind(2),以便其他套接字可以通过connect(2)来连接他
  3. 通过listen(2)将套接字监听起来,其接收传入连接的队列限制由listen系统调用的backlog指定
  4. 连接通过accept(2)被网络服务接收,然后通过fork监听套接字fork一个连接套接字,通过子进程进行对应的数据处理,将处理的数据通过连接套接字传回给到客户端;处理完后子进程退出,通过SIGCHILD信号告知父进程,父进程注册的相关信号处理函数回调执行,通过wait系统调用捕获到子进程退出,完成相关资源回收过程(这块是典型的CGIFork and Exec模型)

连接队列差异

参见: TCP连接队列相关 - 呼入连接请求队列