《深入理解Linux网络技术内幕》PDF下载

  • 购买积分:25 如何计算积分?
  • 作  者:克里斯汀·本著
  • 出 版 社:北京:中国电力出版社
  • 出版年份:2009
  • ISBN:9787508379647
  • 页数:997 页
图书介绍:本书与O'Reilly出版社的其他两本内核方面的书《深入理解Linux内核》和《Linux设备驱动》一起,对于希望学习更多的Linux内核知识的人士来说,代表着一个新的开始。本书主要内容包括用户空间和内核之间的接口;网络代码关键组件的初始化工作,以及网络设备如何被注册和初始化;设备驱动和协议处理程序之间的接口;透明网桥和生成树协议;封包在IPv4层如何被接收、传输、转发和本地提交;IPv4和传输协议之间的接口;ICMP的实现;邻居协议;路由等内容。并把焦点集中在网络代码上,从设备驱动与协议处理程序之间的接口,到IPv4与L4协议间的接口,并选择一些具有代表性的功能子集作为内核网络实现的最佳起点。本书将使你熟悉Linux网络的内在工作机理,但本书不仅仅是一种学术演练。你将了解到Linux网络数据包的工作过程。本书有助于你充分展现Linux网络的魅力。

前言 1

第一部分 基础背景第一章 简介 13

基本术语 13

常见编码模式 14

用户空间工具 28

浏览源代码 29

当功能以补丁形式提供时 30

第二章 关键数据结构 32

套接字缓冲区:sk_buff结构 32

net_device结构 53

本章涉及的文件 67

第三章 用户空间与内核的接口 68

概论 68

procfs与sysctl 70

ioctl 77

Netlink 80

配置改变串行化 81

第二部分 系统初始化第四章 通知链 85

使用通知链的原因 85

概论 87

定义链 88

链注册 88

链上的通知事件 89

网络子系统的通知链 91

通过/proc文件系统的调整 92

本章涉及的函数和变量 92

本章涉及的文件和目录 93

第五章 网络设备初始化 94

系统初始化概论 94

设备注册和初始化 96

NIC初始化的基本目标 96

设备与内核之间的交互 97

初始化选项 102

模块选项 103

设备处理层初始化:net_dev_init 104

用户空间辅助程序 106

虚拟设备 110

通过/proc文件系统调整 112

本章涉及的函数和变量 113

本章涉及的文件和目录 114

第六章 PCI层和网络接口卡 115

本章涉及的数据结构 115

PCI NIC设备驱动程序的注册 117

电源管理和网络唤醒 118

PCI NIC驱动程序注册范例 119

大蓝图 121

通过/proc文件系统调整 123

本章涉及的函数和变量 123

本章涉及的文件和目录 123

第七章 组件初始化的内核基础架构 124

引导期间的内核选项 124

模块初始化代码 130

优化宏卷标 133

引导期间初始化函数 136

内存最优化 138

通过/proc文件系统调整 142

本章涉及的函数和变量 142

本章涉及的文件和目录 143

第八章 设备注册和初始化 144

设备注册之时 145

设备除名之时 145

分配net_device结构 146

NIC注册和除名的架构 147

设备初始化 149

net_device结构的组织 153

设备状态 155

设备的注册和除名 157

设备注册 162

设备除名 164

开启和关闭网络设备 167

更新设备队列规则状态 169

从用户空间配置设备相关信息 174

虚拟设备 177

上锁 179

通过/proc文件系统调整 179

本章涉及的函数和变量 179

本章涉及的文件和目录 181

第三部分 传输和接收第九章 中断和网络驱动程序 185

决策和流量方向 186

接收到帧时通知驱动程序 186

中断处理函数 191

softnet_data结构 213

第十章 帧的接收 217

与其他功能交互 218

设备的开启和关闭 218

队列 219

通知内核帧已接收:NAPI和netif_rx 219

设备驱动程序与内核间的旧接口:netif_rx的第一部分 225

拥塞管理 231

处理NET_RX_SOFTIRQ:net_rx_action 234

第十一章 帧的传输 245

传输的开启和关闭 247

第十二章 中断事件一般性参考数据 267

统计数据 267

通过/proc和sysfs文件系统调整 268

本部分涉及的函数和变量 269

本部分涉及的文件和目录 271

第十三章 协议处理函数 272

网络协议栈概论 272

执行正确的协议处理函数 280

协议处理函数的组织 284

协议处理函数的注册 285

Ethernet与IEEE 802.3帧 287

通过/proc文件系统进行调整 299

本章涉及的函数和变量 299

本章涉及的文件和目录 300

第四部分 桥接第十四章 桥接:概念 303

中继器、网桥以及路由器 303

网桥与交换机 305

主机 306

用网桥合并LAN 306

桥接不同技术的LAN 307

地址学习 308

多台网桥 310

第十五章 桥接:生成树协议 316

基本术语 316

阶层交换式L2拓扑范例 318

生成树协议的基本元素 321

网桥ID和端口ID 326

网桥协议数据单元(BPDU) 328

定义活跃拓扑 332

定时器 340

拓扑变化 344

BPDU封装 350

传输配置BPDU 350

处理入口帧 352

收敛时间 354

新版生成树协议概况 355

第十六章桥接:Linux实现 360

网桥设备抽象 360

重要的数据结构 364

桥接程序的初始化 365

建立网桥设备和网桥端口 366

建立一个新网桥设备 367

网桥设备设置函数 368

删除网桥 369

给网桥添加端口 369

启动和关闭网桥设备 371

启动和关闭网桥端口 373

改变网桥端口状态 374

大蓝图 375

转发数据库 377

处理入口流量 380

网桥设备上的传输 383

生成树协议(STP) 385

netdevice通知链 394

第十七章 桥接:其他主题 395

用户空间配置工具 395

通过/proc文件系统调整网桥 400

通过/sys文件系统调整网桥 400

统计数据 402

本部分涉及的数据结构 402

本部分涉及的函数和变量 407

本部分涉及的文件和目录 409

第五部分 因特网协议第4版(IPv 4

第十八章 因特网协议第4版(IPv4):概念 413

IP协议:大蓝图 413

IP报头 415

IP选项 418

封包的分段/重组 424

校验和 435

第十九章 因特网协议第4版(IPv4):Linux的原理和功能 442

主要IPv4数据结构 442

封包的一般性处理 446

IP选项 456

第二十章 因特网协议第4版(IPv4):转发和本地传递 469

转发 469

本地传递 475

第二十一章 因特网协议第4版(IPv4):传输 476

进行传输的重要函数 477

衔接邻居子系统 512

第二十二章 因特网协议第4版(IPv4):处理分段 515

IP分段 516

IP重组 525

第二十三章 因特网协议第4版(IPv4):其他主题 539

长效IP端点信息 539

选择IP报头的ID字段 543

IP统计资料 544

IP配置 548

IP-over-IP 553

IPv4:问题出在哪儿? 553

通过/proc文件系统做调整 555

本部分涉及的数据结构 558

本部分涉及的函数和变量 568

本部分涉及的文件和目录 571

第二十四章 L4协议和Raw IP的处理 572

可用的L4协议 572

L4协议的注册 574

L3到L4的传递:ip_local_deliver_finish 577

IPv4 vs IPv6 585

通过/proc文件系统做调整 585

本章涉及的函数和变量 585

本章涉及的文件和目录 586

第二十五章 因特网控制消息协议(ICMPv4) 587

ICMP报头 588

ICMP有效载荷 589

ICMP类型 590

ICMP协议的应用程序 597

大蓝图 598

协议的初始化 602

本章涉及的数据结构 602

传输ICMP消息 605

接收ICMP消息 613

ICMP统计资料 619

把错误通知传给传输层 622

通过/proc文件系统调整 623

本章涉及的函数和变量 624

本章涉及的文件和目录 625

第六部分 邻居子系统第二十六章 邻居子系统:概念 629

邻居是什么? 629

需要邻居协议的原因 632

Linux实现 637

邻居协议代理 640

何时发送和处理Solicitation请求 643

邻居状态和网络不可到达性探测(NUD) 645

第二十七章 邻居子系统:基础结构 654

主要的数据结构 654

L3协议和邻居协议间的通用接口 658

邻居基础结构的一般任务 668

邻居结构的引用计数 673

创建一个邻居项 673

删除邻居 676

担任代理 682

L2帧头缓存 686

协议初始化和清理 690

与其他子系统的交互 691

邻居协议和L3传输函数的交互 695

排队 696

入口队列 698

第二十八章 邻居子系统:地址解析协议(ARP) 702

ARP封包格式 703

ARP事务范例 705

无端ARP 705

多个网络接口的应答 709

调整ARP选项 711

初始化ARP协议 718

初始化neighbour结构 720

传输和接收ARP封包 725

处理入口ARP封包 730

ARP代理 738

实例 743

外部事件 746

ARPD 747

逆向地址解析协议(RARP) 750

ND(IPv6)对ARP(IPv4)的改进 750

第二十九章 邻居子系统:其他问题 752

邻居的系统管理 752

使用/proc文件系统调整邻居性能 755

本部分涉及的数据结构 761

本部分涉及的文件和目录 778

第七部分 路由第三十章 路由:概念 781

路由器、路由与路由表 782

路由的基本元素 786

路由表 797

查找 801

封包接收与封包传输 803

第三十一章 路由:高级路由 806

策略路由背后的概念 806

多路径路由背后的概念 812

与其他内核子系统的交互 818

路由协议守护进程 822

Verbose监控 824

ICMP_REDIRECT消息 825

反向路径过滤 831

第三十二章 路由:Linux的实现 833

内核选项 833

主要的数据结构 836

路由scope与地址scope 841

主IP地址与辅助IP地址 843

常用的辅助程序与宏 844

全局锁 846

路由子系统初始化 847

外部事件 848

与其他子系统的交互 861

第三十三章 路由:路由缓存 864

路由缓存初始化 864

Hash表的组织 865

主要的缓存操作 866

多路径缓存 876

DST与调用协议间的接口 882

刷新路由缓存 888

垃圾回收 889

出口ICMP REDIRECT限速 900

第三十四章 路由:路由表 901

路由Hash表的组织 901

路由表初始化 907

路由的添加与删除 908

策略路由及其对路由表定义的影响 913

第三十五章 路由:查找 915

查找函数的高层概述 915

辅助函数 916

路由表查找:fn_hash_lookup 917

fib_lookup函数 922

为接收和发送设置函数 923

输入和输出路由函数的一般结构 926

输入路由 928

输出路由 936

多路径对下一跳选择的影响 945

策略路由 948

源路由 951

策略路由与基于路由表的分类器 952

第三十六章 路由:相关主题 956

用户空间配置工具 956

统计数据 962

通过/proc文件系统调整 963

开启和关闭转发 971

本书此部分中的数据结构功能 972

本部分涉及的函数和变量 992

本部分涉及的文件和目录 995