[出版]--基于2.6.26内核的《追踪LINUX TCP/IP代码运行》
本帖最后由 qinjiana0786 于 2010-05-16 11:15 编辑http://ec4.images-amazon.com/images/I/51uJKnmZElL._AA500_.jpg
非常感谢大家的关注,很多朋友为了学习方便来信要求将《TCP/IP协议内核源码分析》付印成书,经过严格修订后终于由北京航空航天大学出版社出版了,点击此处查看详细图书信息,点击此处直接转到卓越书店订购,该书名为《追踪Linux TCP/IP代码运行——基于2.6内核》,它由十六章组成,全书仍旧采取从应用程序到内核的分析方法,大家可以先看一下样章,样章点击此处下载。
初稿电子书仍然提供下载,但是它存在一些不足,这些问题都已经在正式书稿中改进完善了,特此提醒读者以正式出版的书为准。
初稿电子书让大家引起了误解,它并不是即将出版的书稿,只是前期的草稿,而且内容不全,初稿电子书不到二百页,而整理后的书稿全书超过了五百页并且以服务阅读的角度对内容进行了分类整理,书中所列的许多函数与结构都是在网络上无法搜索到的,它们是辛苦总结而来的,由此看出本书的学习价值。
特别强调一点,本书是基于2.6.26版本的LINUX内核,它是从实践到理论式的讲解,这对于想掌握网络的朋友是珍贵的资料,并不象TCP详解那样铺天盖地罗列理论,也不象深入LINUX网络内幕那样毫无主线对函数解析,并且这二者都不是针对最流行的2.6内核。相信本书的出版一定会使读者很容易进入并掌握LINUX的网络世界。
内容简介:
本书以应用程序为线索,详细描述了数据包在协议栈的分段、重组、发送、接收过程,同时分析了路由的初始化和设置过程,主要包括socket应用程序、 TCP/IP协议、路由、通知链、邻居子系统等内容。全书涵盖了协议栈的全部知识点,对于广大的读者来说这是一本极其难得的技术资料。同时,书中论述了网络设备的工作原理,解释了RTL8169和嵌入式CS8900、DM9000网卡设备的核心过程。
本书可作为3G网络开发人员、嵌入式通信产品开发人员、网络应用开发人员、网络管理人员及网络爱好者、从事网络方向的本科生、研究生的参考书。
前言:
学习过TCP/IP协议的读者可能会感觉面对长篇大论的一堆文字往往不知道从何入手,甚至很多读者在认真阅读之后也无法领会协议的作用,更无法进入内核的协议栈阅读代码,以至于无法从事网络方面的开发与维护,然而,高速发展的网络时代要求技术人员必须快速掌握和运用协议的知识,那么有没有一种有效的方法可以帮助我们实现这一目标呢?相信读者可以在本书中找到答案。
理论的学习固然是基础,但是不一定具备了理论才开始阅读代码,就象以往的英语学习方法,大家只采取背单词、记语法的方式,结果十几年之后仍然不会说英语,不会用英语,因为这种英语教学方法只停留在理论层上,现代的英语教学则打破了理论为主线的学习方法,从应用性和实用性出发,从而极大改变了学习的效果。因此,本书借鉴现代英语的学习模式,选择从实际应用出发,以应用程序为主线进入Linux内核,通过应用程序的工作过程层层解析内核的协议栈,揭示协议栈的工作路线,揭露网络的真实过程,帮助读者彻底掌握协议栈,读者在阅读完本书之后将会有一种登上泰山顶峰的兴奋之情。目前,市场针对Linux网络的讲解书籍已经很多,内容基本都是对理论的泛泛而谈,有的书籍缺少主线,有的书籍缺少与实际应用的结合,有的书籍采用的内核版本过于陈旧,这些问题加大了阅读的难度,导致很多读者使用 “压箱子底”的办法放弃了学习。与此相反,本书克服了上述全部问题,并且在描述每一个关键过程时,采取穿插图片和逐行解释的方式解决了这些难点,从而使全书象一部小说那样具备整体性和情节性。
本书针对的是2.6版本的Linux内核,对于内核的进程管理、内存管理、文件系统等内容,请读者借鉴本书推荐书籍或者直接跳过这些内容只阅读核心部分,对于难以理解的内容可以先放一放,往往在读第二遍时就会自然而解,这是因为内核的知识点互为补充的结果。由于内容繁多,不足和漏洞之处可能还会存在,请读者谅解并提出修改建议。
冯伟对本书的图片编辑提供了帮助,同时对本书的编辑提供支持的还有:
罗燕军、杨永祥、张文盛、李华、倪巍、刘国兵、葛德奇、朱德良、罗兵、彭海
白瑜、颜诗敏、傅海荧、李柱栋、盛晓晖、修宸、张泽荣、陈嘉顺、时安营、周丹
江均勇、杨硕、罗伟彬、李洪彬、杨春雷、付金平、缪晓、钟海文、卓深、林晓川
在此向他们的辛勤付出表示感谢。
目录:
第1章 本书的计划1
1.1基本路线和要求1
技术要点:分析路线服务器程序学习要求
1.2 TCP/IP协议层的划分与基本知识4
技术要点:协议层知识服务器与客户端的通信路线
1.3函数到系统调用的过程6
技术要点:库函数的真实定义系统调用的总入口及传值
1.4网络文件系统11
技术要点:网络文件系统的特点initcall机制网络文件系统的安装
第2章 socket的创建15
2.1本章几个重要数据结构15
技术要点:socket结构、sock结构、sk_buff结构、tcp_sock结构的定义
2.2分配并初始化socket结构23
技术要点:分配socket结构空间分配文件节点
2.3使用协议族的函数表初始化socket27
技术要点:登记函数表定义、注册及初始化协议族结构
2.4分配并初始化sock结构38
技术要点:分配结构空间初始化sock结构及数据包队列头
2.5TCP协议对sock结构初始化43
技术要点:TCP协议的初始化函数tcp_sock等结构的关联
2.6socket与文件系统的关联46
技术要点:分配文件指针和文件号指定文件操作表
第3章 socket地址设置51
3.1地址设置接口51
技术要点:地址设置过程查找socket和文件指针复制数据到内核
3.2地址结构定义54
技术要点:结构的定义及赋值协议族的设置函数网络空间结构
3.3地址类型58
技术要点:地址类型的概念 查验地址类型获取路由函数表
3.4设置地址和端口62
技术要点:地址与端口的队列结构地址与端口的查找与建立
3.5网络空间总管init_net73
技术要点:init_net结构的初始化 队列头的初始化
第4章 路由78
4.1路由函数表结构及关系图78
技术要点:fib_table结构、fn_zone结构、fib_node结构及fib_info结构的关系
4.2路由函数表的初始化78
技术要点:路由表队列、路由函数表队列的初始化路由规则结构、路由函数表结构、路由区结构的定义子网掩码的作用
4.3通过路由函数表查找路由信息100
技术要点:路由区及路由节点的匹配和查找路由信息、路由跳转结构的查找
4.4路由的设置及相关结构的初如化109
技术要点:设置路由的三条路线路由配置结构的定义路由区的建立路由信息的创建和调整队列节点的链入与摘除路由跳转结构的初始化路由函数表的查找
路由别名结构的建立路由表的冲刷与释放
4.5基于输出方向的路由表查找与创建156
技术要点:路由键值结构的定义路由表结构的定义路由表队列的轮询路由表的创建与查找
4.6基于输入方向的路由表查找与创建189
技术要点:为数据包查找路由表创建转发的路由表
第5章 通知链200
5.1设备通知链节点的挂入200
技术要点:通知链节点结构的定义设备配置结构的定义设备通知链的建立
5.2地址通知链节点的挂入206
技术要点:地址通知链的定义和链入
5.3通知链的调用和执行207
技术要点:网络设备结构的登记注册通知节点函数的调用
第6章 netlink概述212
6.1netlink的创建212
技术要点:netlink的sock结构定义及初始化
6.2注册路由的netlink217
技术要点:路由的netlink结构定义及注册
6.3通过netlink通信219
技术要点:netlink的信息结构、消息头结构、路由消息结构的定义及初始化netlink数据包的建立及发送
第7章 监听连接请求234
7.1内核的监听函数234
技术要点:协议族监听函数的调用连接数的控制监听结构的建立及定义连接请求结构及队列
7.2内核的监听队列241
技术要点:监听队列的链入过程监听队列的睡眠等待和唤醒
第8章 接收连接请求245
8.1接收连接函数245
技术要点:协议族接收函数的调用定时等待连接请求
8.2异步接收方式253
技术要点:异步接收实例异步唤醒路线查询客户端sock结构和连接请求结构
8.3获取连接请求257
技术要点:客户端socket、sock结构的对接获取客户端的地址INET协议族结构的定义
第9章 准备连接请求262
9.1内核的连接函数263
技术要点:客户端程序及服务器程序的通信效果协议族连接函数的调用源路由的分类和查找TCP协议的socket结构定义端口的查找与复用SYN数据包的建立路由项结构的定义MTU、MSS的作用及设置滑动窗口的初始化
9.2分配数据包结构和数据块空间286
技术要点:创建并初始化数据包共享结构的定义及数据块的分类TCP的控制结构发送队列的链入和计数数据包的结构示意图
9.3构建、发送TCP数据包299
技术要点:TCP头部的定义TCP层的发送过程克隆数据包的建立重发数据包的依据拥塞报告的建立
9.4进化成IP数据包312
技术要点:IP层的发送过程IP选项的定义IP头部的定义及初始化ID编号的生成和设置链路层头部缓存结构的定义邻居子系统的发送函数
9.5进化成以太网数据包330
技术要点:链路层头部及其缓存结构的初始化以太网头部结构的定义及初始化
9.6发送以太网数据包335
技术要点:分段发送的检测网卡驱动程序的发送过程
第10章 邻居子系统345
10.1邻居子系统的初始化345
技术要点:ARP的邻居表结构、邻居结构的定义邻居表的链入查找、创建ARP的邻居函数表
10.2查找邻居结构355
技术要点:邻居结构的查找过程
10.3邻居子系统的发送事件356
技术要点:邻居结构的状态类型及检测邻居结构的定时器、定时函数ARP包的建立及初始化ARP头部的定义ARP包的发送
10.4邻居子系统的接收处理366
技术要点:ARP数据包类型结构ARP数据包的接收和处理解包获取客户端地址
更新邻居结构
第11章 流量控制374
11.1排队规则的初始化374
技术要点:排队规则的定义网卡设备结构的登记与注册排队规则的创建及初始化
排队规则函数表的定义
11.2排队规则的入队和发送382
技术要点:排队规则的入队操作排队规则对数据包的流量控制和发送过程
第12章 建立连接的过程388
12.1驱动程序接收并建立数据包388
技术要点:网卡驱动程序的接收过程构建数据包软中断数据结构的运用软中断函数的接收过程
12.2查找数据包类型且调用其处理函数400
技术要点:数据包类型结构的定义IP数据包类型及数据包类型队列IP层的接收过程
12.3接收或转发IP数据包408
技术要点:IP选项的检查源路由的执行路由表的转发和接收过程
12.4TCP数据包的处理415
技术要点:传输层函数表结构的定义TCP协议的函数表注册TCP层的接收过程
查找与唤醒服务器进程
12.53次握手过程427
技术要点:查找、创建客户端sock结构建立连接请求结构创建并发送ACK包连接请求的转接
第13章 Internet控制信息的传输446
13.1发送ICMP信息446
技术要点:ICMP的作用ICMP的发送函数 ICMP信息结构、头部结构、缓存结构的定义 ICMP控制结构数组 ICMP发送速率的设置
13.2接收ICMP信息458
技术要点:ICMP协议的函数表 ICMP协议的接收过程
第14章 数据包的分段与重组461
14.1数据包的分段发送461
技术要点:数据包的分段示意图 IP层的分段函数 快发送、慢发送过程 分段数据的复制
14.2数据包的分段接收和重组472
技术要点:IP层的重组函数 整理、合并分段数据包过程
14.3分段数据包的接收队列482
技术要点:IP分段队列结构INET协议族的分段队列头结构 网络空间、INET协议族的分段管理结构
14.4查找与创建分段队列485
技术要点:IPv4分段信息结构查找、创建INET分段队列头初始化IP分段队列结构
14.5释放和销毁分段队列489
技术要点:清除分段队列释放分段数据包和队列头
第15章 发送和接收数据包494
15.1内核的发送、接收函数494
技术要点:3种发送、接收的系统调用过程网络文件系统的发送、接收函数
15.2客户端发送数据包501
技术要点:消息结构、缓冲区结构的定义与初始化 构建发送数据包 TCP层的发送过程TCP层的分段发送阻塞的检测
15.3服务器接收数据包529
技术要点:TCP层的接收过程预处理队列的链入和处理预处理进程的接收过程
复制数据到程序的缓冲区 处理后备队列的数据包
第16章 socket的关闭551
16.1内核的关闭函数551
技术要点:网络文件系统的关闭函数删除、释放异步结构 释放接收队列的数据包 释放、销毁sock结构、连接请求结构
16.2服务器与客户端的共同关闭563
技术要点:服务器与客户端FIN、ACK、RST包的交互过程状态改变与强制关闭
索引569
参考文献579 我帮你传到网上吧,你这样邮箱不安全啊
回复 #1 qinjiana0786 的帖子
支持lz 去学习下 谢谢timdcn ,希望传完后,将地址公布在这里以做便大家都能看到 强悍!:em09: :em09: :em09:已下载,谢谢!
[ 本帖最后由 wuasiam 于 2009-3-6 10:11 编辑 ] qinjiana0786 兄好久不来了吧。现在CU也指出书了,你可以了解一下啊 谢谢版主帮助分卷了,呵呵,竟然没想起这个办法
[ 本帖最后由 qinjiana0786 于 2009-3-6 10:33 编辑 ]