(特价书)深入浅出Linux TCP/IP协议栈
- 定价:¥49.00
- 校园优惠价:¥24.50 (50折) (马上了解)
- 评分:




(已有14条评价)
- 促销活动:
- 此商品暂时缺货(可留下联系方式,到货将第一时间通知您)
-
如果您急需团购,可点击“团购急调”按钮将此书加入购物车,由客服人员为您协调调货!
>> 查看详细说明
信息提示
关闭
如果您急需团购,可点击“团购急调”按钮将此书加入购物车,由我们的客服人员为您协调调货!
- 团购订单标准如下:
- 单品满30册可选择团购服务。
- 提交团购订单后,服务人员会主动和您联系,并根据您的会员等级、购买数量、金额、时间、配送要求等情况和您协商,以促成最终的成交。
- 有关团体购书的任何问题请随时联系:(010)63970506
编辑推荐
学Linux TCP/IP,从这里开始!
从Linux 2.6内核基础讲起,引导读者快速入门
运用大量示意图,清晰讲解函数之间的调用关系
详细分析核心代码实现思想,代码注释详尽
内容简介
书籍 计算机书籍
本书主要对Linux 2.6.18内核协议栈源代码做了一些基本的分析,这些分析基于作者在操作系统方面的研究和网络协议开发过程中的经验和笔记,编写本书的目的主要是使读者能够在尽可能短的时间内掌握Linux内核协议栈的工作机理,为移植和扩展协议栈打下基础。
本书首先介绍了内核源码的整体概况及协议栈初始化过程,然后结合配置、用户使用协议栈的方法,采取深入浅出、由上及下的策略对协议栈的代码进行了分解和注释。最后还介绍了通信界里较流行的VLAN技术和LACP协议。
本书适合Linux网络开发人员以及对Linux内核感兴趣的读者阅读。
作译者
罗钰:贵州人,国防科学技术大学硕士毕业,多年Linux底层开发经验,精通软件分析与设计、TCP/IP协议,曾开发Windows/Linux/Vxworks/FreeBSD等平台的设备驱动,开发过以太网芯片驱动、二层协议以及OSPF路由协议,对MPLS架构设计有非常丰富的经验,擅长编译器、CPU技术,近年来一直致力于无线网络产品系统的分析与设计工作。
目录
第1章 操作系统、网络、协议栈、代码 1
1.1 Linux操作系统介绍 2
1.1.1 Linux操作系统架构简介 2
1.1.2 网络协议发展介绍 3
1.2 本书的组织和安排 7
1.2.1 基本的数据结构和计算机术语 8
1.2.2 图片风格演示 10
1.2.3 本书的组织 11
第2章 内核系统初始化 14
2.1 系统初始化流程简介 15
2.2 内核文件解读 19
2.2.1 ELF文件格式 19
2.2.2 Link Scripts知识 22
2.2.3 Linux内核镜像解析 23
2.3 中断及任务调度管理 32
2.3.1 中断及软中断模型 32
2.3.2 各种语境下的切换 43
2.3.3 内核下的同步与互斥 44
2.3.4 各种异步手段 47
2.4 虚拟文件系统 49
2.5 网络协议栈各部分初始化 52
2.5.1 网络基础系统初始化 53
2.5.2 网络内存管理 54
2.5.3 网络文件系统初始化 63
2.5.4 网络协议初始化 65
2.5.5 初步了解路由系统 74
2.6 Linux设备管理 75
2.6.1 底层PCI模块的初始化 78
2.6.2 网络设备接口初始化例程 80
第3章 配置网络系统 92
3.1 配置过程分析 93
3.1.1 配置是如何下达到内核的? 93
3.1.2 socket系统调用 95
3.1.3 ioctl代码的实现 104
3.1.4 loopback接口的配置过程 113
3.1.5 IP别名的实现 115
3.2 回顾FIB系统初始化 119
3.3 深入FIB系统 122
3.4 FIB系统发生了什么样的变化 132
3.5 直接访问路由表 149
3.6 接口状态变化的处理过程 151
第4章 网络层实现的初步研究 154
4.1 从ping 127.0.0.1开始旅程 155
4.2 再次相遇Socket系统调用 157
4.3 IP数据报文格式 158
4.4 send系统调用 159
4.5 在路由系统中游历 164
4.5.1 查找出口 164
4.5.2 当目的地址是远端主机时 177
4.5.3 创建对应路由cache表项 180
4.5.4 创建对应邻居表项 184
4.6 回到发送的路径 189
4.6.1 IP层发送过程 189
4.6.2 揭密hh_cache 193
4.7 ARP的作用 202
4.7.1 ARP的机制 202
4.7.2 ARP报文格式 203
4.7.3 Linux ARP协议的实现 204
4.8 到达设备驱动层 219
4.8.1 数据链路层帧格式 219
4.8.2 Loopback设备的发送过程 224
4.9 接收过程:从中断到路由系统 225
4.10 ICMP 240
4.10.1 ICMP报文格式 241
4.10.2 ping本机地址及回环地址 242
4.10.3 ping外部地址 243
4.11 从内核到用户 249
第5章 传输层实现的研究 253
5.1 进一步到UDP 254
5.1.1 UDP用户代码 254
5.1.2 UDP数据报文格式 255
5.1.3 服务器端bind的实现 255
5.1.4 接收代码 261
5.1.5 释放UDP的socket 264
5.2 更高阶的TCP 266
5.2.1 TCP用户代码 266
5.2.2 TCP数据报文格式 266
5.2.3 TCP栈及socket的初始化 268
5.2.4 服务器端bind和listen的实现 271
5.2.5 服务器端accept的实现 276
5.2.6 客户端connect的实现——发起三次握手 278
5.2.7 TCP报文的接收 286
5.2.8 三次握手的实现 291
5.2.9 内核收到报文转到用户态 295
5.2.10 释放TCP的socket 300
5.3 TCP拥塞控制 303
5.3.1 TCP拥塞控制机制介绍 305
5.3.2 Linux内核拥塞控制功能的实现 307
第6章 Select系统调用的实现机制 310
6.1 如何使用select 312
6.2 Select的内核实现 313
第7章 数据链路层协议实现 318
7.1 基本的2层知识 319
7.2 Linux桥实现的基本框架 320
7.3 VLAN 321
7.3.1 VLAN概念 321
7.3.2 Linux下VLAN——存在巨大的缺陷 323
7.4 LACP协议 330
7.4.1 聚合端口简介 330
7.4.2 LACP在Linux中的实现 333
7.5 2层功能总结 339
后记 341
参考文献 342
前言
这是一本介绍协议栈实现源代码的书,不是介绍“协议”的书。很多人对网络非常感兴趣,但却不理解内部是如何运作的,或知之不多,那么最终的结果就是行之不远。本书尝试用浅显的语言和合理的安排带领读者到Linux内核网络模块的代码丛林中一游,既让你有所知,也让您有所思。
为什么选定Linux来介绍网络实现?首先,某些操作系统不是开源的,本人看不到也不能拿来解说;其次,Linux的市场占有率还是比BSD要高的;最后,Linux是经过成千上万用户使用过并且还将不断发展的。目前Linux在服务器市场上已经证明其设计的精巧和健壮,特别是当内核也从非抢占式发展成为抢占式后,嵌入设备市场上也将要掀起一股风浪。于是Linux内核分析的资料层出不穷,但有的太老(内核的代码还使用2.2的),有的对网络部分的分析不甚详细,于是作者萌发了分析整个Linux网络协议栈的想法。希望能在研究一些经典代码时发现与时俱进的部分,抛砖引玉,吸引更多的人参与到研究网络协议栈的实现技巧以及移植工作上,而不用对照枯燥的RFC文档和代码。
本人做过一些网络通信产品开发,所以对网络内部实现很感兴趣,于是在学习和工作时间之余记录下分析和调试Linux的网络协议栈的心得体会。
2005年开始计划写这本书,当时研究的内核版本是2.6.5,但是现在我使用RHEL5作为研究平台时,内核却升级到了2.6.18版本,协议栈的部分代码就已经发生了很多变化,最新的内核版本已经是2.6.26版本,再一次感叹计划赶不上变化的同时,还是锁定了这个版本,毕竟这是知名公司服务器使用的内核版本,有问题还可以到社区寻找援助。
本书的整体风格是比较随性的记录。我的目标读者是广大对Linux和TCP/IP协议栈实现感兴趣的读者,而且要有一定研发经验和编程基础。只对协议感兴趣的读者,本书是不太适合的,要看最好是去看RFC或者相关的手册。
编者
2009年10月
序言
早在2001年年初我创办《永远的UNIX》(fanqiang.com)网站时,就梦想有一天能将众多技术高手的工作经验集结成册,使广大网友在实际应用中能随手翻查。那时候国内爱好者的学习热情很高,为了给网友提供一个更易于互动交流的平台,我在2001年年底创建了www.chinaunix.net社区网站(简称CU)。
经过8年的发展,在广大CUer的支持下,CU社区的注册用户已经超过百万,ChinaUnix已经成为全球最大、人气最旺的以交流Linux、UNIX和开源技术为主的中文社区。CU网站聚集了大量富有工作经验的系统架构师、软件工程师、DBA和网络架构工程师等,她已经成为广大开源技术爱好者学习、工作和生活中不可缺少的伙伴。
随着网站一点点壮大,网友也不断成长起来。大量的版主利用业余时间义务解答网友问题、维护论坛版块秩序、服务广大网友。很多网友将自己的学习、工作经验发帖分享出来,更有网友花费大量时间将自己多年的经验整理成书,供更多的人学习、分享。他们的成长是国内技术社区成长的基础,也必将推动国内技术社区的进一步发展。
今天,在CU管理员瑞儿mm(周平)、人民邮电出版社的李大微经理、黄焱编辑和广大CU作者们的共同努力下,这套“ChinaUnix技术图书大系”终于和大家见面了,非常感谢人民邮电出版社的鼎立支持!人民邮电出版社是工业和信息化部主管的大型专业出版社,他们出版了一系列优秀的Linux/UNIX图书,在读者中有着巨大的影响力。希望“ChinaUnix技术图书大系”的出版能够为Linux、UNIX和开源技术在中国的普及、推广做出应有的贡献。
借此序,再次感谢一直以来关心和支持过ChinaUnix的网友、版主以及所有朋友们!
ChinaUnix网站创始人樊强(CU网名:fanqiang)
2009年7月