注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络操作系统LinuxLinux 网络体系结构-Linux内核中网络协议的设计与实现

Linux 网络体系结构-Linux内核中网络协议的设计与实现

Linux 网络体系结构-Linux内核中网络协议的设计与实现

定 价:¥59.00

作 者: 威尔
出版社: 清华大学
丛编项: Linux内核中网络协议的设计与实现
标 签: 操作系统

ISBN: 9787302130192 出版时间: 2006-07-01 包装: 平装
开本: 其它 页数: 489 字数:  

内容简介

  本书讲述的是Linux内核的网络子系统架构。创作本书的想法源自德国Karlsruhe大学信息通信学院。在该校,Linux内核被运用于许多项目的研究,且其网络功能分别得到了有针对性的改进和提高。例如,针对下一代Internet开发出了新的服务和协议,并对它们的行为也进行了研究。此外,对于现有的协议(如TCP传输协议)也进行了修改,以改善其行为和适应Intemet的新情况。在这些项目的研究过程中我们发现,Linux内核非常适合于新的网络功能性的研究,因为它对于TCPfIP协议族具有一个稳定和广泛的实现。Linux源代码的免费可得性使得我们可以方便地对协议实例的功能进行修改和提升。此外,内核模块原理对内核功能性的提升提供了很好的支持。然而,这一领域的许多研究和论文表明,对某一协议实例行为进行修改的前提是必须熟悉Linux网络架构,而这需要耗费大量的时间和精力。不幸的是,造成这一情况的主要原因在于Linux内核网络子系统的注解非常糟糕,且没有用于解释和总结基本概念的材料。

作者简介

  (美)威尔(Wehrle,K.),在撰写本书的时候,作者KlausWehrle、FrankPahlke、HartmutRitter、DanielMuller及MarcBechler等人员是德国卡尔斯鲁厄大学(TH)远程信息处理学院的学术人员。他们作为信息技术之远程通信方面的研究人员,使用Linux作为工作基础,开发并评价着崭新的网络服务及协议。

图书目录

第一篇  Linux内核
第1章  推动因素    2
1.1  Linux操作系统    3
1.2  什么是Linux    4
1.3  使用Linux的理由    4
第2章  内核结构    7
2.1  整体式体系结构和微内核    8
2.2  Linux内核中的活动    9
2.2.1  进程和系统调用    10
2.2.2  硬件中断    11
2.2.3  软件中断    12
2.2.4  任务蕾    12
2.2.5  下半区    13
2.3  加锁——原子运算    14
2.3.1  位运算    15
2.3.2  环形锁    16
2.3.3  读写环形锁    17
2.3.4  信号量    18
2.4  内核模块    18
2.4.1  内核模块的管理    19
2.4.2  模块功能的注册和注销    21
2.4.3  在加载模块时传递参数    21
2.4.4  内核符号表和模块    22
2.5  设备驱动程序    23
2.6  内核中的存储管理    26
2.6.1  精选的存储管理函数    26
2.6.2  缓存    27
2.7  Linux内核中的定时    28
2.7.1  标准定时器    29
2.7.2  使用APIC作为高解析频率定时器    30
2.8  proc文件系统    33
2.9  版本化    36
第二篇  网络实现的体系结构
第3章  通信系统的体系结构    38
3.1  基于层的通信模型    38
3.1.1  ISO/OSI参考模型    39
3.1.2  TCP/IP参考模型    40
3.2  服务和协议    41
第4章  管理内核中的网络报文    44
4.1  套接字缓存    44
4.1.1  套接字缓存上的操作    48
4.1.2  其他函数    53
4.2  套接字缓存队列    53
第5章  网络设备    57
5.1  net_device接口    58
5.2  管理网络设备    66
5.2.1  网络设备的注册与注销    67
5.2.2  网络设备的开启与关闭    69
5.2.3  创建和寻找网络设备    70
5.2.4  为状态改变而设计的通知链    72
5.2.5  在网络设备上进行传输    73
5.3  网络设备    73
5.3.1  初始化网络适配器    74
5.3.2  打开和关闭网络适配器    79
5.3.3  传输数据    81
5.3.4  包传输过程中的问题    87
5.3.5  运行时配置    88
5.3.6  适配器相关的ioctl()命令    89
5.3.7  网络设备的统计信息    90
5.3.8  适配器层次的多播支持    91
第三篇  第I + II层——介质访问和逻辑链路层
第6章  数据链路层简介    94
6.1  数据链路层的结构    94
6.2  数据链路层上的进程    96
6.2.1  数据包的接收    98
6.2.2  数据包的传输    100
6.3  第3层协议的管理    103
第7章  串行线路Internet协议(SLIP)    107
7.1  简介    107
7.2  Linux内核中的SLIP实现    109
7.2.1  TTY设备和线路规范    109
7.2.2  一般过程    111
7.2.3  函数和数据结构    112
7.2.4  驱动器的初始化及连接的建立    115
7.2.5  网络设备的激活及撤销    116
7.2.6  拆除连接及取消驱动器的初始化    116
7.2.7  IP数据包的传输    116
7.2.8  IP数据包的接收    117
第8章  点对点协议(PPP)    118
8.1  简介    118
8.1.1  子协议    118
8.1.2  Linux实现的组成部分    119
8.2  Linux中的PPP配置    120
8.2.1  内核选项    120
8.2.2  pppd-PPP守护程序    121
8.2.3  Dial on Demand    122
8.2.4  自动回叫    122
8.3  Linux内核中的PPP实现    122
8.3.1  通用PPP驱动程序的功能和数据结构    122
8.3.2  异步PPP驱动程序的函数和数据结构    125
8.3.3  初始化    127
8.3.4  发送IP包    127
8.3.5  检测帧边界    127
8.3.6  接收IP包    128
8.4  实现PPP守护程序    129
8.4.1  管理子协议    129
8.4.2  状态    130
第9章  以太网上的PPP技术    132
9.1  简介    132
9.2  RFC 2516中的PPPOE规范    132
9.3  用户空间中的实现    133
9.4  Liniux内核中的实现    134
9.4.1  内核的变化    134
9.4.2  ppp守护程序的任务    136
9.4.3  配置    137
第10章  异步传输模式——ATM    138
10.1  简介    138
10.2  在linux中实现ATM    138
10.2.1  永久性虚拟通道    139
10.2.2  有信号虚拟通道    142
10.2.3  ATM设备驱动程序    144
10.2.4  进一步的ATM支持    145
10.3  配置    146
第11章  Linux中的蓝牙    147
11.1  主机控制器接口(HCI)    148
11.1.1  指令封包    149
11.1.2  事件封包    149
11.1.3  数据封包    150
11.1.4  访问主机控制器接口    151
11.2  L2CAP    151
11.2.1  连接建立阶段    152
11.2.2  配置阶段    153
11.2.3  数据传输阶段    153
11.3  其他协议    154
第12章  透明桥    155
12.1  介绍    155
12.2  基本概念    155
12.2.1  透明桥的属性    156
12.2.2  转发函数    157
12.2.3  学习功能    158
12.2.4  生成树协议    158
12.3  在Linux下配置桥    163
12.3.1  配置内核和网络适配器    163
12.3.2  用brctl工具配置Linux桥    163
12.3.3  检查桥功能    164
12.3.4  配置实例    164
12.4  实现    166
12.4.1  桥实现的体系结构    166
12.4.2  生成和连接重要的数据结构    167
12.4.3  包在内核中的路径    168
12.4.4  学习新MAC地址    170
12.4.5  实现生成树协议    171
第四篇  网络层
第13章  推动因素    182
Internet协议族    182
第14章  IPv4    185
14.1  IP的属性    185
14.1.1  在路由器之间路由IP包    185
14.1.2  IP包头    186
14.1.3  IP数据包的生存期    188
14.1.4  Internet上的寻址    188
14.1.5  IP地址和IP地址分类    188
14.2  IP的实现    190
14.2.1  传入IP包的路径    192
14.2.2  传输层的包    195
14.2.3  包的分片    196
14.2.4  IP实体的数据    200
14.2.5  一些IP辅助函数    203
14.3  IP的选项    204
14.3.1  标准IP包选项    205
14.3.2  配置    208
14.3.3  Linux内核中的ip_options类    210
14.3.4  IP层中的IP选项    212
14.4  Internet控制消息协议(ICMP)    214
14.4.1  ICMP的功能原理    214
14.4.2  ICMP的配置    219
14.4.3  Linux内核中的ICMP    219
第15章  地址解析协议(ARP)    223
15.1  运用地址解析协议    223
15.1.1  ARP协议数据单元的结构    224
15.1.2  接收一个ARP报文并应答    225
15.2  ARP命令    226
15.3  实现Linux内核中的ARP实例    227
15.3.1  管理ARP缓存中可达的计算机    227
15.3.2  地址解析协议(ARP)的运作方式    232
第16章  IP路由    240
16.1  序言    240
16.1.1  网络和路由器    240
16.1.2  转发和路由    241
16.1.3  IP地址    242
16.1.4  转发步骤    244
16.1.5  路由缓存    245
16.1.6  基于规则的路由    246
16.2  配置    247
16.2.1  内核的配置    247
16.2.2  proc文件系统中的文件    249
16.2.3  系统层级的配置    250
16.3  实现    254
16.3.1  路由规则    254
16.3.2  路由表    258
16.3.3  路由缓存    264
16.3.4  转发进程    268
第17章  用于组通信的IP多播    272
17.1  组通信    272
17.1.1  单播    272
17.1.2  广播    273
17.1.3  多播    273
17.2  IP多播    274
17.2.1  用作多播组的地址    275
17.2.2  Linux中的IP多播配置    276
17.2.3  多播编程    277
17.3  Internet组管理协议(IGMP)    279
17.3.1  IGMP包的格式与传送    280
17.3.2  不同的版本    280
17.3.3  IGMP协议的运作    281
17.3.4  IGMP的实现    283
17.4  Linux内核中的多播数据路径    285
17.4.1  MAC层上的多播支持    285
17.4.2  IP中的多播数据路径    287
17.5  当今Internet上的多播    293
17.5.1  多播骨干网(MBone)    294
17.5.2  通过mrouted守护进程访问MBone    294
17.5.3  DVMRP路由算法    300
17.6  多播传输协议    302
第18章  用流量控制支持服务质量(QoS)    303
18.1  引言    303
18.2  Linux中的流量控制的基本结构    303
18.3  外发方向上的流量控制    304
18.4  内核结构和接口    306
18.4.1  句柄    306
18.4.2  排队规则    306
18.4.3  类    309
18.4.4  过滤器    311
18.5  入口限制    313
18.6  实现一个排队规则    313
18.7  配置    316
18.7.1  RT网络连接接口    316
18.7.2  用户接口    316
第19章  包筛选器与防火墙    317
19.1  介绍    317
19.1.1  防火墙的工作原理    317
19.1.2  协议相关特性:TCP、FTP以及其他协议    318
19.1.3  筛选器实现的质量标准    319
19.1.4  防火墙工作原理的局限性    319
19.2  2.2版本Linux的ipchains体系结构    320
19.2.1  ipchains规则语法    321
19.2.2  ipchains体系结构的缺陷    322
19.3  2.4版本Linux的Netfilter体系结构    323
19.3.1  Linux内核中的Netfilter钩子    323
19.3.2  注册和注销包筛选函数    325
19.3.3  iptables与ipchains的比较    327
19.3.4  iptables命令行工具    327
19.3.5  netfilter标准模块    328
第20章  连接跟踪    331
20.1  简介    331
20.2  实现    331
20.2.1  基本结构    331
20.2.2  连接记录    332
20.2.3  传输协议    334
20.2.4  Helper模块    334
20.2.5  全局变量    334
20.2.6  函数    335
第21章  网络地址转换(NAT)    340
21.1  简介    340
21.1.1  重要术语    340
21.1.2  透明地址分配    340
21.1.3  透明路由    341
21.1.4  正确处理ICMP包    341
21.1.5  NAT与2.2版本Linux中的地址伪装有何不同    341
21.1.6  NAT的变化形式    342
21.1.7  相关问题    343
21.2  在Linux中配置NAT    343
21.3  实现NAT模块    345
21.3.1  重要的数据结构    345
21.3.2  初始化NAT模块和卸载NAT模块    348
21.3.3  NAT模块如何处理经过的IP包    348
21.3.4  初始化地址绑定过程    349
21.3.5  实际的地址转换    350
21.4  NAT模块的扩展接口    351
21.4.1  传输协议    351
21.4.2  Helper模块    352
第22章  扩展Linux网络体系结构功能--KIDS    354
22.1  管理动态可扩展的各项功能    354
22.2  KIDS构造系统的结构    355
22.2.1  基本QoS组件    355
22.2.2  钩子    357
22.3  用KIDS实例扩展Liunx网络体系结构    358
22.3.1  组件及其实例    358
22.3.2  注册和管理组件    362
22.3.3  管理组件实例    363
22.3.4  实现钩子    364
22.3.5  组件的工作方式    364
22.3.6  配置各KIDS组件    366
第23章  Ipv6--Internet协议第6版    368
23.1  介绍    368
23.2  IPv6的各项特性    368
23.2.1  地址分配    368
23.2.2  IPv6包报头    370
23.2.3  包报头扩展    371
23.3  IPv6实现    374
23.3.1  传入包    374
23.3.2  转发包    375
23.3.3  本地投递包    375
23.3.4  传输层包    376
第五篇  第四层--传输层
第24章  传输控制协议(TCP)    378
24.1  概述    378
24.1.1  对TCP的要求    378
24.1.2  TCP数据包的格式    379
24.2  TCP协议实例的实现    380
24.2.1  输入TCP段的处理    380
24.2.2  TCP段的发送    387
24.2.3  TCP实例的数据结构    390
24.3  连接管理    395
24.3.1  TCP状态机    396
24.3.2   建立连接    397
24.3.3  连接的拆卸    399
24.4  数据交换的协议机制    404
24.4.1  流控制    404
24.4.2  拥塞的检测、回避和处理    415
24.4.3  拥塞回避    421
24.5  TCP中的计时器管理    423
24.5.1  数据结构    423
24.5.2  函数    424
24.5.3  配置    426
第25章  用户数据报协议(UDP)    428
25.1  简介    428
25.2  数据结构    429
25.2.1  传递有效负荷    429
25.2.2  UDP数据报    430
25.2.3  UDP至网络体系结构的集成    431
25.3  UDP数据报的收发    433
第26章  套接字的概念    436
26.1  简介    436
26.2  BSD套接字    437
26.3  特定于协议的套接字    440
26.3.1  PF_INET套接字    440
26.3.2  PF_PACKET套接字    441
26.3.3  PF_NETLINK套接字    442
第六篇  第五层——应用层
第27章  涉及套接字的网络编程    446
27.1  简介    446
27.1.1  套接字的地址    446
27.1.2  一些套接字操作    447
27.2  套接字API函数    448
27.2.1  用于连接管理的函数    448
27.2.2  用于数据传输的函数    453
27.2.3  字节排序方法    454
27.2.4  用于处理Internet地址的函数    455
27.3  示例    456
第七篇  附录
附录A  LXR源代码浏览器    458
A.1  功能    458
A.2  安装    461
附录B  Linux内核中的调试    463
B.1  记录Linux内核输出    463
B.1.1  使用 printk() 创建日志输出    463
B.1.2  syslogd 守护进程    464
B.1.3  使用 console_print() 进行直接输出    466
B.2  在内核中创建字符串    467
B.3  /PROC目录中的相关信息    469
B.4  用调试器调试Linux内核    473
附录C  用于网络操作的工具和命令    476
C.1  使用ifconfig以管理网络设备    476
C.2  使用ping以测试可抵达性    478
C.3  使用netstat以查看网络状态    479
C.4  使用route以处理路由信息    481
C.5  使用tcpdump以进行网络分析    482
C.6  使用traceroute以跟踪包    485
C.7  其他工具    487

本目录推荐