listen() backlog 是什么?
1. Linux 服务器上的一些程序会监听特定端口.
2. 当有 client 连接到服务器的相应端口,进行完 tcp 三次握手之后,相应的连接会放到服务器相应 socket 的队列,等待服务器的应用程序调用 accept() 来读取这个连接;
3. 这个队列的长度,就是 listen() backlog.
以 apache httpd 为例。
1. httpd 会监听 80 端口;
2. 当有用户端连接到服务器的 80 端口,首先会进行 tcp 的三次握手。进行完三次握手后,这个连接会被放到 80 端口这个 socket 的队列里,等待 httpd 去获取这个连接;
3. httpd 随后会调用 accept() 来获取这个连接。这个连接被获取之后,会从这个队列里移除;
4. 这个监听 80 端口的 socket 对应的队列长度,就是 listen() backlog.
继续阅读“Socket listen() backlog 是什么?”