免费注册 查看新帖 |

Chinaunix

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

[网络子系统] Linux kernel tcp 连接建立详解 ——由listen系统调用的backlog参数引发的长篇大论 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-23 22:30 |只看该作者 |倒序浏览
本帖最后由 pwp_cu 于 2013-10-24 16:36 编辑

原文是openoffice写的,图片什么不太好弄,我只把目录和第一章放在这里。

全文的pdf从这里下载。 listen_backlog.pdf (317.95 KB, 下载次数: 101)
再发个流程图。 tcp连接建立流程图.pdf (79.77 KB, 下载次数: 72)

Linux kernel tcp 连接建立详解
                         ——由listen系统调用的backlog参数引发的长篇大论


目录

Linux kernel tcp 连接建立详解 1

第0章 本文的目的 2

第1章 listen()系统调用的困惑 2

1.1 前提条件 2

1.2 分析client程序 2

1.3 分析server程序 2

1.4 第一次观察程序行为 2

1.5 第二次观察程序行为 5

1.6 第三次观察程序行为 7

1.7 略作猜测与分析 10

第2章 tcp 三次握手代码分析 11

2.1 client/server程序结构 13

2.2 server端listen()系统调用 13

2.3 client端connect()系统调用 19

2.4 server端处理SYN包 23

2.5 client端处理SYN/ACK包 32

2.6 server端处理ACK包 34

第3章 accept()系统调用分析 42

3.1 accept()系统调用的分析 42

3.2 连接请求的生命周期 47

第4章 listen()系统调用的参数backlog详解 48

4.1 listen()系统调用的参数backlog的作用 48

4.2 分析1.4节中程序的行为 49

4.3 分析1.5节中程序的行为 52

4.4 分析1.6节中程序的行为 53

4.5 backlog参数的用法 53

附录1 client.c 54

附录2 server.c 55


第0章 本文的目的

一直以来,对tcp的连接的建立过程只停留在三次握手的层面,阅读代码时发现好多逻辑流程不是很清楚。还有就是对系统调用int listen(int sockfd, int backlog)的第二个参数backlog似懂非懂。它到底是限制server端能同时处理的连接请求数量,还是限制同时建立的连接数量,还是限制等待建立连接队列的长度?

代码面前,了无秘密,关键是得探求。如果你也有同样的困惑,不妨读读本文。

我分析的是v3.12-rc4的代码,commit 0e7a3ed04f0c 。本文偏重于连接建立的函数调用过程、sock状态变化,以及backlog参数,其他的也很重要的内容,如tcp序号、拥塞控制等,但是本文从略,否则可以写本书了。并且本文只关注tcp层,IP层及以下也忽略。

第1章是简单的client/server程序,如果你对第1章中的程序行为全部理解,那么恭喜你,完全可以略过本文。

评分

参与人数 2可用积分 +14 收起 理由
Godbach + 6 很给力!
瀚海书香 + 8 赞一个!

查看全部评分

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2013-10-24 08:38 |只看该作者
回复 1# pwp_cu
刚才看了下,分析的非常详细,多谢分享!期待后续大作

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
3 [报告]
发表于 2013-10-24 09:21 |只看该作者
回复 1# pwp_cu

好东西,先收藏
   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2013-10-24 16:38 |只看该作者
回复 1# pwp_cu
多谢 LZ 分享。


   

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
5 [报告]
发表于 2013-11-01 10:08 |只看该作者
刚看了
LZ 分析的非常详细
谢谢 LZ
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP