免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4767 | 回复: 6
打印 上一主题 下一主题

关于listen(int sockfd, int backlog)backlog的意思(诚心求教) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-03 00:19 |只看该作者 |倒序浏览
listen(int sockfd, int backlog);
我在书上看到在unix编程中backlog这个表示:当有多个客户端程序和服务端相连时,使用backlog这个表示可以接受的排队长度。
但是我在书上看到这个值一般设为5到10之间
但是我有个疑问,假设我把这个backlog设定为7,就意味着最大排列长度为7
如果有20个客户端的程序同时发起对服务端的连接,那么就表示20-7=14个客户端发起的连接失败了,不知道这样理解对不对
但是一个大型网站,不可能连20个tcp连接都搞不定吧

论坛徽章:
0
2 [报告]
发表于 2008-11-03 09:54 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2008-11-03 10:02 |只看该作者
概念没有弄清楚

论坛徽章:
0
4 [报告]
发表于 2008-11-03 12:47 |只看该作者
原帖由 zonewone 于 2008-11-3 09:54 发表
http://bbs.chinaunix.net/viewthread.php?tid=870564

这个帖子我看了,还是不是太懂。
如果backlog设置为7的话,如果同时有20个tcp请求(syn)过来,那最大等待队列只有7个,也就是其它13个要被丢弃,是这么理解么?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
5 [报告]
发表于 2008-11-03 12:59 |只看该作者
DESCRIPTION
       To  accept  connections,  a  socket  is first created with socket(2), a willingness to accept incoming connections and a queue
       limit for incoming connections are specified with listen(), and then the connections are accepted with  accept(2).   The  lis-
       ten() call applies only to sockets of type SOCK_STREAM or SOCK_SEQPACKET.

       The  backlog  parameter  defines  the  maximum  length  the queue of pending connections may grow to.  If a connection request
       arrives with the queue full the client may receive an error with an indication of ECONNREFUSED or, if the underlying  protocol
       supports retransmission, the request may be ignored so that retries succeed.

论坛徽章:
0
6 [报告]
发表于 2008-11-04 16:01 |只看该作者
这个backlog只是同时尝试建立链接的数目,不是已经链接的数目

论坛徽章:
0
7 [报告]
发表于 2008-11-04 23:50 |只看该作者
整个过程是这样的:
在server端维护了两个队列,一个是完整队列,在这个队列中的描述符都是完成了三次握手的,一个是未完整队列,在这个队列中的描述符还没有接收到客户端最后的那个ACK。
而我认为在Linux中这个backlog指的就是那个完整队列的长度(实际上按照UNP的说法,这个backlog一直以来都存在混淆),所以说虽然这个队列只能拥有不到20个连接的处理能力,但是对于还没有处理的连接,会存放到未完整队列中的。当完整队列中的描述符被accept取走之后就可以移到完整队列中来了。
你可以看看这个贴子,里面的实验可以说明:
http://bbs.chinaunix.net/viewthr ... 3Ddigest&page=1
从这里面可以看出,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP