listen函数backlog参数

函数原型:

    int listen(int sockfd,int backlog);

作用:
1. 将套接字从CLOSE状态转换到LISTEN状态
2.设置此套接字上排队的最大连接个数

backlog其实是一个连接队列,以下是backlog队列大小公式。
backlog队列总和 = 未完成三次握手队列 + 已经完成三次握手队列
注:
并不是指backlog的上限就是那么大。
listen()对应的内核实现为sys_listen()。

为了理解backlog参数,我们必须认识到内核为任何一个给定的监听套接口维护两个队列:

1、未完成连接队列(incomplete connection queue):服务器处于listen状态时收到客户端syn 报
文(connect)时放入未完成队列中
2、已完成连接队列(completed connection queue):三路握手的第二个状态即服务器syn+ ack响
应client后,此时第三个状态ack报文到达前(客户端对服务器syn的ack)一直保留在未完成连接队列中,
如果三路握手完成,该条目将从未完成连接队列搬到已完成连接队列尾部.

修改连接数:

    backlog参数设置既可以在linux内核参数设置(修改文件/etc/sysctl相关参数),也可以在
socket系统调用listen函数时设置(第二个参数),这二者区别是,前者为全局性的,影响所有socket,
后者为局部性的,影响当前socket。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值