TCP/IP编程之listen函数backlog参数详解(linux)


LISTEN(2)                                                Linux Programmer's Manual                                                LISTEN(2)

NAME
       listen - listen for connections on a socket

SYNOPSIS
       #include <sys/types.h>          /* See NOTES */
       #include <sys/socket.h>

       int listen(int sockfd, int backlog);


根据UNP的讲解,backlog参数是未完成连接队列+已完成连接队列的总大小,实际上,linux的情况不一样:

The behavior of the backlog argument on TCP sockets changed with Linux 2.2.  
Now it specifies the queue length for completely estab‐lished sockets waiting to be accepted, 
instead of the number of incomplete connection requests. 
The maximum length of the queue for incomplete sockets can be set using /proc/sys/net/ipv4/tcp_max_syn_backlog.  
When syncookies are enabled there is no logical maximum length and this setting is ignored.  See tcp(7) for more information.

If the backlog argument is greater than the value in /proc/sys/net/core/somaxconn, 
then it is silently truncated to that value;  the default value in this file is 128. 
In kernels before 2.4.25, this limit was a hard coded value, SOMAXCONN, with the value 128.


注意点:
(1)linux中,未完成连接队列(三次握手),最大限制值由 /proc/sys/net/ipv4/tcp_max_syn_backlog决定。

(2)linux中,已完成连接队列(三次握手),最大限制值由/proc/sys/net/core/somaxconn决定,默认值是128。

(3)如果backlog参数大于/proc/sys/net/core/somaxconn,则发生截断,取/proc/sys/net/core/somaxconn


举例:nginx的backlog默认值是511,系统限制默认值是128,那么实际生效的就是128。


原文出自:http://blog.csdn.net/daiyudong2020/article/details/77727022


End;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值