第1章 本书的计划 1
1.1 基本路线和要求 1
1.2 TCP/IP协议层的划分与基本知识 4
1.3 函数到系统调用的过程 6
1.4 网络文件系统 11
第2章 socket的创建 15
2.1 本章几个重要数据结构 15
2.2 分配并初始化socket结构 23
2.3 使用协议族的函数表初始化socket 27
2.4 分配并初始化sock结构 38
2.5 TCP协议对sock结构初始化 43
2.6 socket与文件系统的关联 46
第3章 socket地址设置 51
3.1 地址设置接口 51
3.2 地址结构定义 54
3.3 地址类型 58
3.4 设置地址和端口 62
3.5 网络空间总管init_net 73
第4章 路由 78
4.1 路由函数表结构及关系图 78
4.2 路由函数表的初始化 78
4.3 通过路由函数表查找路由信息 100
4.4 路由的设置及相关结构的初如化 169
4.5 基于输出方向的路由表查找与创建 156
4.6 基于输入方向的路由表查找与创建 189
第5章 通知链 200
5.1 设备通知链节点的挂入 200
5.2 地址通知链节点的挂入 206
5.3 通知链的调用和执行 207
第6章 netlink概述 212
6.1 netlink的创建 212
6.2 注册路由的netlink 217
6.3 通过netlink通信 219
第7章 监听连接请求 234
7.1 内核的监听函数 234
7.2 内核的监听队列 241
第8章 接收连接请求 245
8.1 接收连接函数 245
8.2 异步接收方式 253
8.3 获取连接请求 257
第9章 准备连接请求 262
9.1 内核的连接函数 263
9.2 分配数据包结构和数据块空间 286
9.3 构建、发送TCP数据包 299
9.4 进化成IP数据包 312
9.5 进化成以太网数据包 330
9.6 发送以太网数据包 335
第10章 邻居子系统 345
10.1 邻居子系统的初始化 345
10.2 查找邻居结构 355
10.3 邻居子系统的发送事件 356
10.4 邻居子系统的接收处理 366
第11章 流量控制 374
11.1 排队规则的初始化 374
11.2 排队规则的入队和发送 382
第12章 建立连接的过程 388
12.1 驱动程序接收并建立数据包 388
12.2 查找数据包类型且调用其处理函数 400
12.3 接收或转发IP数据包 408
12.4 TCP数据包的处理 415
12.5 3次握手过程 427
第13章 Internet控制信息的传输 446
13.1 发送ICMP信息 446
13.2 接收ICMP信息 458
第14 章数据包的分段与重组 461
14.1 数据包的分段发送 461
14.2 数据包的分段接收和重组 472
14.3 分段数据包的接收队列 482
14.4 查找与创建分段队列 485
14.5 释放和销毁分段队列 489
第15章 发送和接收数据包 494
15.1 内核的发送、接收函数 494
15.2 客户端发送数据包 501
15.3 服务器接收数据包 529
第16章 socket的关闭 551
16.1 内核的关闭函数 551
16.2 服务器与客户端的共同关闭 563
索引 569
参考文献 579