当前位置首页 > 百科> 正文

Linux网路编程(第2版)

2019-06-09 01:44:12 百科
Linux网路编程(第2版)

Linux网路编程(第2版)

《Linux网路编程(第2版)》是清华大学出版社出版的图书,作者是宋敬彬。

基本介绍

  • 书名:Linux网路编程(第2版)
  • 作者:宋敬彬
  • ISBN:7302335281
  • 页数:674页
  • 出版社:清华大学出版社
  • 装帧:平装 
  • 开本:16

内容介绍

《Linux网路编程(第2版)》是获得大量读者好评的“Linux典藏大系”中的《Linux网路编程》的第2版。《Linux网路编程(第2版)》第1版出版后获得了读者的高度评价。《Linux网路编程(第2版)》循序渐进,从套用层到Linux核心,从基本知识点到综合案例,全面、系统地向读者介绍了如何在Linux下进行网路程式设计。《Linux网路编程(第2版)》涉及面广,从基本的编程工具介绍和编程环境搭建,到高级技术和核心原理,再到项目实战,几乎涉及Linux网路编程的所有重要知识。
Linux网路编程(第2版)Linux网路编程(第2版)
《Linux网路编程(第2版)》共分4篇。
第1篇介绍Linux作业系统概述、Linux编程环境、档案系统简介、程式、进程和执行绪;
第2篇介绍TCP/IP协定族简介、套用层网路服务程式简介、TCP网路编程基础、伺服器和客户端信息的获取、数据的IO和复用、基于UDP协定的接收和传送、高级套接字、套接字选项、原始套接字、伺服器模型选择,以及IPv6的简介;
第3篇介绍Linux核心中网路部分结构,以及分布和netfilter框架内报文处理;
第4篇介绍三个网路编程的实例:Web伺服器的例子SHTTPD、网路协定栈的例子SIP、防火墙的例子SIPFW。

目录

第1篇 Linux网路开发基础
第1章 Linux作业系统概述2
1.1 Linux发展历史2
1.1.1 Linux的诞生和发展2
1.1.2 Linux名称的由来3
1.2 Linux的发展要素3
1.2.1 UNIX作业系统3
1.2.2 Minix作业系统4
1.2.3 POSIX 标準4
1.3 Linux与UNIX的异同5
1.4 作业系统类型选择和核心版本的选择5
1.4.1 常见的不同公司发行的Linux异同5
1.4.2 核心版本的选择6
1.5 Linux的系统架构7 1.5.1 Linux核心的主要模组7
1.5.2 Linux的档案结构8
1.6 GNU通用公共许可证9
1.6.1 GPL许可证的历史9
1.6.2 GPL的自由理念10
1.6.3 GPL的基本条款11
1.6.4 关于GPL许可证的争议12
1.7 Linux软体开发的可借鉴之处12
1.8 小结13
第2章 Linux编程环境14
2.1 Linux环境下的编辑器14
2.1.1 Vim使用简介14
2.1.2 使用Vim建立档案15
2.1.3 使用Vim编辑文本16
2.1.4 Vim的格式设定18
2.1.5 Vim配置档案.vimrc18
2.1.6 使用其他编辑器19
2.2 Linux下的GCC编译器工具集19
2.2.1 GCC简介19
2.2.2 编译程式的基本知识21
2.2.3 单个档案编译成执行档案21
2.2.4 编译生成目标档案22
2.2.5 多档案编译22
2.2.6 预处理24
2.2.7 编译成彙编语言24
2.2.8 生成和使用静态程式库25
2.2.9 生成动态程式库26
2.2.10 动态载入库29
2.2.11 GCC常用选项31
2.2.12 编译环境的搭建33
2.3 Makefile档案简介33
2.3.1 一个多档案的工程例子33
2.3.2 多档案工程的编译35
2.3.3 Makefile的规则37
2.3.4 Makefile中使用变数39
2.3.5 搜寻路径42
2.3.6 自动推导规则43
2.3.7 递归make44
2.3.8 Makefile中的函式46
2.4 用GDB调试程式47
2.4.1 编译可调试程式48
2.4.2 使用GDB调试程式49
2.4.3 GDB常用命令52
2.4.4 其他的GDB59
2.5 小结60
第3章 档案系统简介61
3.1 Linux下的档案系统61
3.1.1 Linux下档案的内涵61
3.1.2 档案系统的创建62
3.1.3 挂接档案系统65
3.1.4 索引节点inode65
3.1.5 普通档案66
3.1.6 设备档案66
3.1.7 虚拟档案系统VFS68
3.2 档案的通用操作方法72
3.2.1 档案描述符72
3.2.2 打开创建档案open()函式、create()函式73
3.2.3 关闭档案close()函式76
3.2.4 读取档案read()函式77
3.2.5 写档案write()函式79
3.2.6 档案偏移lseek()函式80
3.2.7 获得档案状态fstat()函式83
3.2.8 档案空间映射mmap()函式85
3.2.9 档案属性fcntl()函式88
3.2.10 档案输入输出控制ioctl()函式92
3.3 socket档案类型93
3.4 小结93
第4章 程式、进程和执行绪94
4.1 程式、进程和执行绪的概念94
4.1.1 程式和进程的差别94
4.1.2 Linux环境下的进程95
4.1.3 进程和执行绪96
4.2 进程产生的方式96
4.2.1 进程号96
4.2.2 进程複製fork()函式97
4.2.3 system()函式方式98
4.2.4 进程执行exec()函式系列99
4.2.5 所有用户态进程的产生进程init100
4.3 进程间通信和同步101
4.3.1 半双工管道101
4.3.2 命名管道107
4.3.3 讯息伫列108
4.3.4 讯息伫列的一个例子114
4.3.5 信号量116
4.3.6 共享记忆体121
4.3.7 信号124
4.4 Linux下的执行绪127
4.4.1 多执行绪编程实例127
4.4.2 Linux下执行绪创建函式pthread_create()129
4.4.3 执行绪的结束函式pthread_join()和函式pthread_exit()129
4.4.4 执行绪的属性130
4.4.5 执行绪间的互斥132
4.4.6 执行绪中使用信号量133
4.5 小结136
第2篇 Linux用户层网路编程
第5章 TCP/IP协定族简介138
5.1 OSI网路分层介绍138
5.1.1 OSI网路分层结构138
5.1.2 OSI的7层网路结构139
5.1.3 OSI参考模型中的数据传输140
5.2 TCP/IP协定栈141
5.2.1 TCP/IP协定栈参考模型141
5.2.2 主机到网路层协定143
5.2.3 IP协定144
5.2.4 网际控制报文协定(ICMP)146
5.2.5 传输控制协定(TCP)150
5.2.6 用户数据报文协定(UDP)154
5.2.7 地址解析协定(ARP)156
5.3 IP位址分类与TCP/UDP连线埠158
5.3.1 网际网路中IP位址的分类159
5.3.2 子网掩码(subnet mask address)161
5.3.3 IP位址的配置162
5.3.4 连线埠163
5.4 主机位元组序和网路位元组序163
5.4.1 位元组序的含义163
5.4.2 网路位元组序的转换164
5.5 小结166
第6章 套用层网路服务程式简介167
6.1 HTTP协定和服务167
6.1.1 HTTP协定概述167
6.1.2 HTTP协定的基本过程168
6.2 FTP协定和服务170
6.2.1 FTP协定概述170
6.2.2 FTP协定的工作模式172
6.2.3 FTP协定的传输方式172
6.2.4 一个简单的FTP过程173
6.2.5 常用的FTP工具173
6.3 TELNET协定和服务173
6.3.1 远程登录的基本概念174
6.3.2 使用TELNET协定进行远程登录的工作过程174
6.3.3 TELNET协定174
6.4 NFS协定和服务175
6.4.1 安装NFS伺服器和客户端175
6.4.2 伺服器端的设定176
6.4.3 客户端的操作176
6.4.4 showmount命令177
6.5 自定义网路服务177
6.5.1 xinetd/inetd177
6.5.2 xinetd服务配置178
6.5.3 自定义网路服务179
6.6 小结180
第7章 TCP网路编程基础181
7.1 套接字编程基础知识181
7.1.1 套接字地址结构181
7.1.2 用户层和核心层互动过程183
7.2 TCP网路编程流程184
7.2.1 TCP网路编程架构184
7.2.2 创建网路插口函式socket()186
7.2.3 绑定一个地址连线埠对函式bind()189
7.2.4 监听本地连线埠listen192
7.2.5 接受一个网路请求函式accept()194
7.2.6 连线目标网路伺服器函式connect()199
7.2.7 写入数据函式write()200
7.2.8 读取数据函式read()201
7.2.9 关闭套接字函式202
7.3 伺服器/客户端的简单例子202
7.3.1 例子功能描述202
7.3.2 伺服器网路程式202
7.3.3 伺服器读取和显示字元串205
7.3.4 客户端的网路程式205
7.3.5 客户端读取和显示字元串206
7.3.6 编译运行程式206
7.4 截取信号的例子207
7.4.1 信号处理207
7.4.2 信号SIGPIPE207
7.4.3 信号SIGINT208
7.5 小结208
第8章 伺服器和客户端信息的获取209
8.1 位元组序209
8.1.1 大端位元组序和小端位元组序209
8.1.2 位元组序转换函式211
8.1.3 一个位元组序转换的例子213
8.2 字元串IP位址和二进制IP位址的转换216
8.2.1 inet_xxx()函式216
8.2.2 inet_pton()和inet_ntop()函式218
8.2.3 使用8.2.1节地址转换函式的例子219
8.2.4 使用函式inet_pton()和函式inet_ntop()的例子221
8.3 套接字描述符判定函式issockettype()222
8.3.1 进行档案描述符判定的函式issockettype()222
8.3.2 main()函式223
8.4 IP位址与域名之间的相互转换223
8.4.1 DNS原理223
8.4.2 获取主机信息的函式224
8.4.3 使用主机名获取主机信息的例子227
8.4.4 函式gethostbyname()不可重入的例子229
8.5 协定名称处理函式230
8.5.1 xxxprotoxxx()函式231
8.5.2 使用协定族函式的例子232
8.6 小结235
第9章 数据的IO和复用236
9.1 IO函式236
9.1.1 使用recv()函式接收数据236
9.1.2 使用send()函式传送数据238
9.1.3 使用readv()函式接收数据239
9.1.4 使用writev()函式传送数据239
9.1.5 使用recvmsg()函式接收数据241
9.1.6 使用sendmsg()函式传送数据243
9.1.7 IO函式的比较245
9.2 使用IO函式的例子245
9.2.1 客户端处理框架的例子245
9.2.2 伺服器端程式框架247
9.2.3 使用recv()和send()函式248
9.2.4 使用readv()和write()函式250
9.2.5 使用recvmsg()和sendmsg()函式252
9.3 IO模型255
9.3.1 阻塞IO模型255
9.3.2 非阻塞IO模型255
9.3.3 IO复用256
9.3.4 信号驱动IO模型256
9.3.5 异步IO模型257
9.4 select()函式和pselect()函式258
9.4.1 select()函式258
9.4.2 pselect()函式260
9.5 poll()函式和ppoll()函式261
9.5.1 poll()函式261
9.5.2 ppoll()函式262
9.6 非阻塞编程263
9.6.1 非阻塞方式程式设计介绍263
9.6.2 非阻塞程式设计的例子263
9.7 小结264
第10章 基于UDP协定的接收和传送265
10.1 UDP编程框架265
10.1.1 UDP编程框图265
10.1.2 UDP伺服器编程框架267
10.1.3 UDP客户端编程框架267
10.2 UDP协定程式设计的常用函式267
10.2.1 建立套接字socket()和绑定套接字bind()268
10.2.2 接收数据recvfrom()/recv()268
10.2.3 传送数据sendto()/send()273
10.3 UDP接收和传送数据的例子277
10.3.1 UDP伺服器端277
10.3.2 UDP伺服器端数据处理278
10.3.3 UDP客户端279
10.3.4 UDP客户端数据处理279
10.3.5 测试UDP程式280
10.4 UDP协定程式设计中的几个问题280
10.4.1 UDP报文丢失数据280
10.4.2 UDP数据传送中的乱序282
10.4.3 UDP协定中的connect()函式284
10.4.4 UDP缺乏流量控制285
10.4.5 UDP协定中的外出网路接口287
10.4.6 UDP协定中的数据报文截断288
10.5 小结289
第11章 高级套接字290
11.1 UNIX域函式290
11.1.1 UNIX域函式的地址结构290
11.1.2 套接字函式291
11.1.3 使用UNIX域函式进行套接字编程291
11.1.4 传递档案描述符293
11.1.5 socketpair()函式294
11.1.6 传递档案描述符的例子295
11.2 广播299
11.2.1 广播的IP位址300
11.2.2 广播与单播的比较300
11.2.3 广播的示例301
11.3 多播307
11.3.1 多播的概念308
11.3.2 广域网的多播308
11.3.3 多播的编程308
11.3.4 核心中的多播310
11.3.5 一个多播例子的伺服器端313
11.3.6 一个多播例子的客户端315
11.4 数据链路层访问317
11.4.1 SOCK_PACKET类型317
11.4.2 设定套接口以捕获链路帧的编程方法317
11.4.3 从套接口读取链路帧的编程方法318
11.4.4 定位IP包头的编程方法319
11.4.5 定位TCP报头的编程方法321
11.4.6 定位UDP报头的编程方法322
11.4.7 定位套用层报文数据的编程方法323
11.4.8 使用SOCK_PACKET编写ARP请求程式的例子323
11.5 小结326
第12章 套接字选项328
12.1 获取和设定套接字选项getsocketopt()/setsocketopt()328
12.1.1 getsockopt()函式和setsocketopt()函式的介绍328
12.1.2 套接字选项329
12.1.3 套接字选项简单示例330
12.2 SOL_SOCKET协定族选项334
12.2.1 SO_BROADCAST广播选项334
12.2.2 SO_DEBUG调试选项335
12.2.3 SO_DONTROUTE不经过路由选项335
12.2.4 SO_ERROR错误选项335
12.2.5 SO_KEEPALIVE保持连线选项336
12.2.6 SO_LINGER缓冲区处理方式选项337
12.2.7 SO_OOBINLINE带外数据处理方式选项339
12.2.8 SO_RCVBUF和SO_SNDBUF缓冲区大小选项340
12.2.9 SO_RCVLOWAT和SO_SNDLOWAT缓冲区下限选项340
12.2.10 SO_RCVTIMEO和SO_SNDTIMEO收发逾时选项341
12.2.11 SO_REUSERADDR地址重用选项341
12.2.12 SO_EXCLUSIVEADDRUSE连线埠独占选项342
12.2.13 SO_TYPE套接字类型选项342
12.2.14 SO_BSDCOMPAT与BSD套接字兼容选项342
12.2.15 SO_BINDTODEVICE套接字网路接口绑定选项343
12.2.16 SO_PRIORITY套接字优先权选项344
12.3 IPPROTO_IP选项344
12.3.1 IP_HDRINCL选项344
12.3.2 IP_OPTNIOS选项344
12.3.3 IP_TOS选项344
12.3.4 IP_TTL选项345
12.4 IPPROTO_TCP选项345
12.4.1 TCP_KEEPALIVE选项345
12.4.2 TCP_MAXRT选项346
12.4.3 TCP_MAXSEG选项346
12.4.4 TCP_NODELAY和TCP_CORK选项346
12.5 使用套接字选项348
12.5.1 设定和获取缓冲区大小348
12.5.2 获取套接字类型的例子353
12.5.3 使用套接字选项的综合例子353
12.6 ioctl()函式358
12.6.1 ioctl()函式的命令选项358
12.6.2 ioctl()函式的IO请求360
12.6.3 ioctl()函式的档案请求362
12.6.4 ioctl()函式的网路接口请求362
12.6.5 使用ioctl()函式对ARP高速快取操作369
12.6.6 使用ioctl()函式传送路由表请求371
12.7 fcntl()函式371
12.7.1 fcntl()函式的选项372
12.7.2 使用fcntl()函式修改套接字非阻塞属性372
12.7.3 使用fcntl()函式设定信号属主372
12.8 小结373
第13章 原始套接字374
13.1 概述374
13.2 原始套接字的创建375
13.2.1 SOCK_RAW选项375
13.2.2 IP_HDRINCL套接字选项376
13.2.3 不需要bind()函式376
13.3 原始套接字传送报文376
13.4 原始套接字接收报文377
13.5 原始套接字报文处理时的结构377
13.5.1 IP头部的结构377
13.5.2 ICMP头部结构378
13.5.3 UDP头部结构381
13.5.4 TCP头部结构382
13.6 ping的例子384
13.6.1 协定格式384
13.6.2 校验和函式385
13.6.3 设定ICMP传送报文的头部386
13.6.4 剥离ICMP接受报文的头部387
13.6.5 计算时间差388
13.6.6 传送报文389
13.6.7 接收报文390
13.6.8 主函式过程391
13.6.9 主函式main()393
13.6.10 编译测试396
13.7 洪水攻击396
13.8 ICMP洪水攻击397
13.8.1 ICMP洪水攻击的原理397
13.8.2 ICMP洪水攻击的例子397
13.9 UDP洪水攻击401
13.10 SYN洪水攻击405
13.10.1 SYN洪水攻击的原理405
13.10.2 SYN洪水攻击的例子405
13.11 小结409
第14章 伺服器模型选择410
14.1 循环伺服器410
14.1.1 UDP循环伺服器410
14.1.2 TCP循环伺服器413
14.2 简单并发伺服器415
14.2.1 并发伺服器的模型416
14.2.2 UDP并发伺服器416
14.2.3 TCP并发伺服器419
14.3 TCP的高级并发伺服器模型421
14.3.1 单客户端单进程,统一accept()422
14.3.2 单客户端单执行绪,统一accept()425
14.3.3 单客户端单执行绪,各执行绪独自accept(),使用互斥锁427
14.4 IO复用循环伺服器431
14.4.1 IO复用循环伺服器模型介绍431
14.4.2 IO复用循环伺服器模型的例子432
14.5 小结436
第15章 IPv6简介437
15.1 IPv4的缺陷437
15.2 IPv6的特点438
15.3 IPv6的地址439
15.3.1 IPv6的单播地址439
15.3.2 可聚集全球单播地址439
15.3.3 本地使用单播地址440
15.3.4 兼容性地址441
15.3.5 IPv6多播地址441
15.3.6 IPv6任播地址442
15.3.7 主机的多个IPv6地址442
15.4 IPv6的头部443
15.4.1 IPv6头部格式443
15.4.2 与IPv4头部的对比444
15.4.3 IPv6的TCP头部444
15.4.4 IPv6的UDP头部444
15.4.5 IPv6的ICMP头部445
15.5 IPv6运行环境447
15.5.1 载入IPv6模组447
15.5.2 查看是否支持IPv6447
15.6 IPv6的结构定义448
15.6.1 IPv6的地址族和协定族448
15.6.2 套接字地址结构448
15.6.3 地址兼容考虑450
15.6.4 IPv6通用地址450
15.7 IPv6的套接字函式451
15.7.1 socket()函式451
15.7.2 没有发生改变的函式451
15.7.3 发生改变的函式452
15.8 IPv6的套接字选项452
15.8.1 IPv6的套接字选项452
15.8.2 单播跳限IPV6_UNICAST_HOPS453
15.8.3 传送和接收多播包454
15.8.4 IPv6中获得时间戳的ioctl命令455
15.9 IPv6的库函式455
15.9.1 地址转换函式的差异455
15.9.2 域名解析函式的差异455
15.9.3 测试宏458
15.10 IPv6的编程的一个简单例子458
15.10.1 伺服器程式458
15.10.2 客户端程式460
15.10.3 编译调试461
15.11 小结462
第3篇 Linux核心网路编程
第16章 Linux核心中网路部分结构以及分布464
16.1 概述464
16.1.1 代码目录分布464
16.1.2 核心中网路部分流程简介466
16.1.3 系统提供修改网路流程点468
16.1.4 sk_buff结构469
16.1.5 网路协定数据结构inet_protosw471
16.2 软中断CPU报文伫列及其处理473
16.2.1 Linux核心网路协定层的层间传递手段——软中断473
16.2.2 网路收发处理软中断的实现机制475
16.3 socket数据如何在核心中接收和传送476
16.3.1 socket()的初始化476
16.3.2 接收网路数据recv()476
16.3.3 传送网路数据send()477
16.4 小结477
第17章 netfilter框架内报文处理478
17.1 netfilter478
17.1.1 netfilter简介478
17.1.2 netfilter框架479
17.1.3 netfilter检查时的表格480
17.1.4 netfilter的规则480
17.2 iptables和netfilter481
17.2.1 iptables简介481
17.2.2 iptables的表和链481
17.2.3 使用iptables设定过滤规则483
17.3 核心模组编程485
17.3.1 核心“Hello World!”程式485
17.3.2 核心模组的基本架构487
17.3.3 核心模组载入和卸载过程489
17.3.4 核心模组初始化和清理函式490
17.3.5 核心模组初始化和清理过程的容错处理490
17.3.6 核心模组编译所需的Makefile491
17.4 5个钩子点492
17.4.1 netfilter的5个钩子点492
17.4.2 NF_HOOK宏493
17.4.3 钩子的处理规则494
17.5 注册/注销钩子494
17.5.1 结构nf_hook_ops494
17.5.2 注册钩子495
17.5.3 注销钩子496
17.5.4 注册注销函式497
17.6 钩子的简单处理例子498
17.6.1 功能描述498
17.6.2 需求分析498
17.6.3 ping回显禁止实现498
17.6.4 禁止向目的IP位址传送数据的实现499
17.6.5 连线埠关闭实现499
17.6.6 动态配置实现499
17.6.7 可载入核心实现代码501
17.6.8 套用层测试代码实现508
17.6.9 编译运行508
17.7 一点多个钩子的优先权508
17.8 校验和问题509
17.9 小结510
第4篇 综合案例
第18章 一个简单Web伺服器的例子SHTTPD512
18.1 SHTTPD的需求分析512
18.1.1 SHTTPD启动参数可动态配置的需求513
18.1.2 SHTTPD的多客户端支持的需求515
18.1.3 SHTTPD支持方法的需求515
18.1.4 SHTTPD支持的HTTP协定版本的需求516
18.1.5 SHTTPD支持头部的需求517
18.1.6 SHTTPD定位URI的需求517
18.1.7 SHTTPD支持CGI的需求518
18.1.8 SHTTPD错误代码的需求519
18.2 SHTTPD的模组分析和设计519
18.2.1 SHTTPD的主函式520
18.2.2 SHTTPD命令行解析的分析设计521
18.2.3 SHTTPD配置档案解析的分析设计523
18.2.4 SHTTPD的多客户端支持的分析设计523
18.2.5 SHTTPD头部解析的分析设计526
18.2.6 SHTTPD对URI的分析设计526
18.2.7 SHTTPD支持方法的分析设计527
18.2.8 SHTTPD支持CGI的分析设计527
18.2.9 SHTTPD错误处理的分析设计530
18.3 SHTTPD各模组的实现532
18.3.1 SHTTPD命令行解析的实现532
18.3.2 SHTTPD档案配置解析的实现535
18.3.3 SHTTPD的多客户端支持的实现536
18.3.4 SHTTPD所请求URI解析的实现540
18.3.5 SHTTPD方法解析的实现541
18.3.6 SHTTPD回响方法的实现541
18.3.7 SHTTPD支持CGI的实现545
18.3.8 SHTTPD支持HTTP协定版本的实现548
18.3.9 SHTTPD内容类型的实现548
18.3.10 SHTTPD错误处理的实现550
18.3.11 SHTTPD生成目录下档案列表档案的实现552
18.3.12 SHTTPD主函式的实现554
18.4 SHTTPD的编译、调试和测试555
18.4.1 建立源档案555
18.4.2 製作Makefile555
18.4.3 製作执行档案555
18.4.4 使用不同的浏览器测试伺服器程式556
18.5 小结557
第19章 一个简单网路协定栈的例子SIP558
19.1 SIP网路协定栈的功能描述558
19.1.1 SIP网路协定栈的基本功能描述558
19.1.2 SIP网路协定栈的分层功能描述559
19.1.3 SIP网路协定栈的用户接口功能描述559
19.2 SIP网路协定栈的架构560
19.3 SIP网路协定栈的存储区快取561
19.3.1 SIP存储缓冲的结构定义561
19.3.2 SIP存储缓冲的处理函式565
19.4 SIP网路协定栈的网路接口层567
19.4.1 SIP网路接口层的架构568
19.4.2 SIP网路接口层的数据结构568
19.4.3 SIP网路接口层的初始化函式570
19.4.4 SIP网路接口层的输入函式571
19.4.5 SIP网路接口层的输出函式574
19.5 SIP网路协定栈的ARP层577
19.5.1 SIP位址解析层的架构577
19.5.2 SIP位址解析层的数据结构577
19.5.3 SIP位址解析层的映射表579
19.5.4 SIP位址解析层的ARP映射表维护函式580
19.5.5 SIP位址解析层的ARP网路报文构建函式581
19.5.6 SIP位址解析层的ARP网路报文收发处理函式583
19.6 SIP网路协定栈的IP层586
19.6.1 SIP网际协定层的架构586
19.6.2 SIP网际协定层的数据结构587
19.6.3 SIP网际协定层的输入函式589
19.6.4 SIP网际协定层的输出函式593
19.6.5 SIP网际协定层的分片函式594
19.6.6 SIP网际协定层的分片组装函式595
19.7 SIP网路协定栈的ICMP层599
19.7.1 SIP控制报文协定的数据结构599
19.7.2 SIP控制报文协定的协定支持600
19.7.3 SIP控制报文协定的输入函式601
19.7.4 SIP控制报文协定的回显应答函式602
19.8 SIP网路协定栈的UDP层603
19.8.1 SIP数据报文层的数据结构603
19.8.2 SIP数据报文层的控制单元603
19.8.3 SIP数据报文层的输入函式605
19.8.4 SIP数据报文层的输出函式606
19.8.5 SIP数据报文层的建立函式606
19.8.6 SIP数据报文层的释放函式607
19.8.7 SIP数据报文层的绑定函式607
19.8.8 SIP数据报文层的传送数据函式608
19.8.9 SIP数据报文层的校验和计算609
19.9 SIP网路协定栈的协定无关层610
19.9.1 SIP协定无关层的系统架构611
19.9.2 SIP协定无关层的函式形式611
19.9.3 SIP协定无关层的接收数据函式612
19.10 SIP网路协定栈的BSD接口层613
19.10.1 SIP用户接口层的架构613
19.10.2 SIP用户接口层的套接字建立函式613
19.10.3 SIP用户接口层的套接字关闭函式614
19.10.4 SIP用户接口层的套接字绑定函式614
19.10.5 SIP用户接口层的套接字连线函式615
19.10.6 SIP用户接口层的套接字接收数据函式615
19.10.7 SIP用户接口层的传送数据函式616
19.11 SIP网路协定栈的编译617
19.11.1 SIP的档案结构617
19.11.2 SIP的Makefile618
19.11.3 SIP的编译运行618
19.12 小结618
第20章 一个简单防火墙的例子SIPFW620
20.1 SIPFW防火墙的功能描述620
20.1.1 SIPFW防火墙对主机进行网路数据过滤的功能描述620
20.1.2 SIPFW防火墙用户设定防火墙规则的功能描述621
20.1.3 SIPFW防火墙配置档案等附加功能的功能描述621
20.2 SIPFW需求分析621
20.2.1 SIPFW防火墙条件和动作621
20.2.2 SIPFW防火墙支持过滤的类型和内容622
20.2.3 SIPFW防火墙过滤的方式和动作625
20.2.4 SIPFW防火墙的配置档案626
20.2.5 SIPFW防火墙命令行配置格式627
20.2.6 SIPFW防火墙的规则档案格式628
20.2.7 SIPFW防火墙的日誌档案数据格式630
20.2.8 SIPFW防火墙构建所採用的技术方案630
20.3 使用netlink进行用户空间和核心空间数据互动631
20.3.1 netlink的用户空间程式设计632
20.3.2 netlink的核心空间API635
20.4 使用proc进行记忆体数据用户空间映射637
20.4.1 proc虚拟档案系统的结构637
20.4.2 创建proc虚拟档案638
20.4.3 删除proc虚拟档案639
20.4.4 proc档案的写函式639
20.4.5 proc档案的读函式640
20.5 核心空间的档案操作函式641
20.5.1 核心空间的档案结构641
20.5.2 核心空间的档案建立操作641
20.5.3 核心空间的档案读写操作642
20.5.4 核心空间的档案关闭操作643
20.6 SIPFW防火墙的模组分析和设计644
20.6.1 SIPFW防火墙的总体架构644
20.6.2 SIPFW防火墙的用户命令解析645
20.6.3 SIPFW用户空间与核心空间的互动649
20.6.4 SIPFW防火墙核心链上的规则处理651
20.6.5 SIPFW防火墙的PROC虚拟档案系统654
20.6.6 SIPFW防火墙的配置档案和日誌档案处理655
20.6.7 SIPFW防火墙的过滤模组设计657
20.7 SIPFW防火墙各功能模组的实现660
20.7.1 SIPFW防火墙的命令解析代码660
20.7.2 SIPFW防火墙的过滤规则解析模组代码664
20.7.3 SIPFW防火墙的网路数据拦截模组代码666
20.7.4 SIPFW防火墙的PROC虚拟档案系统668
20.7.5 SIPFW防火墙对配置档案的解析670
20.7.6 SIPFW防火墙核心模组初始化和退出671
20.7.7 用户空间处理主函式672
20.8 编译、调试和测试673
20.8.1 用户程式和核心程式的Makefile673
20.8.2 编译及运行674
20.8.3 下发过滤规则,测试过滤结果674
20.9 小结676
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net