图书介绍

Linux网络编程PDF|Epub|txt|kindle电子书版本网盘下载

Linux网络编程
  • 宋敬彬,孙海滨等编著 著
  • 出版社: 北京:清华大学出版社
  • ISBN:9787302207177
  • 出版时间:2010
  • 标注页数:690页
  • 文件大小:343MB
  • 文件页数:714页
  • 主题词:Linux操作系统-程序设计

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Linux网络编程PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第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操作系统4

1.2.2 Minix操作系统4

1.2.3 POSIX标准4

1.3 Linux与UNIX的异同5

1.4 操作系统类型选择和内核版本的选择5

1.4.1 常见的不同公司发行的Linux异同6

1.4.2 内核版本的选择6

1.5 Linux的系统架构7

1.5.1 Linux内核的主要模块7

1.5.2 Linux的文件结构9

1.6 GNU通用公共许可证10

1.6.1 GPL许可证的历史10

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配置文件.vimrc19

2.1.6 使用其他编辑器19

2.2 Linux下的GCC编译器工具集19

2.2.1 GCC简介19

2.2.2 编译程序的基本知识21

2.2.3 单个文件编译成执行文件22

2.2.4 编译生成目标文件22

2.2.5 多文件编译23

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文件简介34

2.3.1 一个多文件的工程例子34

2.3.2 多文件工程的编译36

2.3.3 Makefile的规则37

2.3.4 Makefile中使用变量39

2.3.5 搜索路径43

2.3.6 自动推导规则44

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 挂接文件系统64

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()函数72

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 字节序的含义164

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协议和服务174

6.3.1 远程登录的基本概念174

6.3.2 使用TELNET协议进行远程登录的工作过程174

6.3.3 TELNET协议174

6.4 NFS协议和服务176

6.4.1 安装NFS服务器和客户端176

6.4.2 服务器端的设定176

6.4.3 客户端的操作177

6.4.4 showmount命令177

6.5 自定义网络服务177

6.5.1 xinetd/inetd178

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 关闭套接字函数close()201

7.3 服务器/客户端的简单例子202

7.3.1 例子功能描述202

7.3.2 服务器网络程序203

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 信号SIGPIPE208

7.4.3 信号SIGINT208

7.5 小结208

第8章 服务器和客户端信息的获取210

8.1 字节序210

8.1.1 大端字节序和小端字节序210

8.1.2 字节序转换函数212

8.1.3 一个字节序转换的例子214

8.2 字符串IP地址和二进制IP地址的转换217

8.2.1 inet_xxx()函数217

8.2.2 inet_pton()和inet_ntop()函数219

8.2.3 使用8.2.1节地址转换函数的例子220

8.2.4 使用函数inet_pton()和函数inet_ntop()的例子223

8.3 套接字描述符判定函数issockettype()223

8.3.1 进行文件描述符判定的函数issockettype()224

8.3.2 main()函数224

8.4 IP地址与域名之间的相互转换225

8.4.1 DNS原理225

8.4.2 获取主机信息的函数226

8.4.3 使用主机名获取主机信息的例子228

8.4.4 函数gethostbyname()不可重入的例子230

8.5 协议名称处理函数232

8.5.1 xxxprotoxxx()函数232

8.5.2 使用协议族函数的例子233

8.6 小结236

第9章 数据的IO和复用237

9.1 IO函数237

9.1.1 使用recv()函数接收数据237

9.1.2 使用send()函数发送数据239

9.1.3 使用readv()函数接收数据240

9.1.4 使用writev()函数发送数据240

9.1.5 使用recvmsg()函数接收数据242

9.1.6 使用sendmsg()函数发送数据244

9.1.7 IO函数的比较246

9.2 使用IO函数的例子246

9.2.1 客户端处理框架的例子246

9.2.2 服务器端程序框架248

9.2.3 使用recv()和send()函数249

9.2.4 使用readv()和write()函数251

9.2.5 使用recvmsg()和sendmsg()函数253

9.3 IO模型256

9.3.1 阻塞IO模型256

9.3.2 非阻塞IO模型257

9.3.3 IO复用257

9.3.4 信号驱动IO模型258

9.3.5 异步IO模型258

9.4 select()函数和pselect()函数259

9.4.1 select()函数259

9.4.2 pselect()函数261

9.5 poll()函数和ppoll()函数262

9.5.1 poll()函数263

9.5.2 ppoll()函数264

9.6 非阻塞编程264

9.6.1 非阻塞方式程序设计介绍264

9.6.2 非阻塞程序设计的例子264

9.7 小结266

第10章 基于UDP协议的接收和发送267

10.1 UDP编程框架267

10.1.1 UDP编程框图267

10.1.2 UDP服务器编程框架269

10.1.3 UDP客户端编程框架269

10.2 UDP协议程序设计的常用函数270

10.2.1 建立套接字socket()和绑定套接字bind()270

10.2.2 接收数据recvfrom()/recv()270

10.2.3 发送数据sendto()/send()275

10.3 UDP接收和发送数据的例子279

10.3.1 UDP服务器端279

10.3.2 UDP服务器端数据处理280

10.3.3 UDP客户端281

10.3.4 UDP客户端数据处理281

10.3.5 测试UDP程序282

10.4 UDP协议程序设计中的几个问题282

10.4.1 UDP报文丢失数据282

10.4.2 UDP数据发送中的乱序284

10.4.3 UDP协议中的connect()函数287

10.4.4 UDP缺乏流量控制287

10.4.5 UDP协议中的外出网络接口289

10.4.6 UDP协议中的数据报文截断290

10.5 小结291

第11章 高级套接字292

11.1 UNIX域函数292

11.1.1 UNIX域函数的地址结构292

11.1.2 套接字函数293

11.1.3 使用UNIX域函数进行套接字编程293

11.1.4 传递文件描述符296

11.1.5 socketpair()函数296

11.1.6 传递文件描述符的例子297

11.2 广播302

11.2.1 广播的IP地址302

11.2.2 广播与单播的比较303

11.2.3 广播的示例304

11.3 多播310

11.3.1 多播的概念310

11.3.2 广域网的多播311

11.3.3 多播的编程311

11.3.4 内核中的多播313

11.3.5 一个多播例子的服务器端317

11.3.6 一个多播例子的客户端318

11.4 数据链路层访问319

11.4.1 SOCK_PACKET类型319

11.4.2 设置套接口以捕获链路帧的编程方法320

11.4.3 从套接口读取链路帧的编程方法321

11.4.4 定位IP包头的编程方法322

11.4.5 定位TCP报头的编程方法323

11.4.6 定位UDP报头的编程方法325

11.4.7 定位应用层报文数据的编程方法326

11.4.8 使用SOCK_PACKET编写ARP请求程序的例子326

11.5 小结329

第12章 套接字选项330

12.1 获取和设置套接字选项getsocketopt()/setsocketopt()330

12.1.1 getsockopt()函数和setsocketopt()函数的介绍330

12.1.2 套接字选项331

12.1.3 套接字选项简单示例332

12.2 SOL_SOCKET协议族选项336

12.2.1 SO_BROADCAST广播选项336

12.2.2 SO_DEBUG调试选项337

12.2.3 SO_DONTROUTE不经过路由选项337

12.2.4 SO_ERROR错误选项338

12.2.5 SO_KEEPALIVE保持连接选项338

12.2.6 SO_LINGER缓冲区处理方式选项339

12.2.7 SO_OOBINLINE带外数据处理方式选项342

12.2.8 SO_RCVBUF和SO_SNDBUF缓冲区大小选项342

12.2.9 SO_RCVLOWAT和SO_SNDLOWAT缓冲区下限选项343

12.2.10 SO_RCVTIMEO和SO_SNDTIMEO收发超时选项343

12.2.11 SO_REUSERADDR地址重用选项344

12.2.12 SO_EXCLUSIVEADDRUSE端口独占选项344

12.2.13 SO_TYPE套接字类型选项345

12.2.14 SO_BSDCOMPAT与BSD套接字兼容选项345

12.2.15 SO_BINDTODEVICE套接字网络接口绑定选项345

12.2.16 SO_PRIORITY套接字优先级选项346

12.3 IPPROTO_IP选项347

12.3.1 IP_HDRINCL选项347

12.3.2 IP_OPTNIOS选项347

12.3.3 IP_TOS选项347

12.3.4 IP_TTL选项347

12.4 IPPROTO_TCP选项348

12.4.1 TCP_KEEPALIVE选项348

12.4.2 TCP_MAXRT选项348

12.4.3 TCP_MAXSEG选项349

12.4.4 TCP_NODELAY和TCP_CORK选项349

12.5 使用套接字选项351

12.5.1 设置和获取缓冲区大小351

12.5.2 获取套接字类型的例子355

12.5.3 使用套接字选项的综合例子356

12.6 ioctl()函数361

12.6.1 ioctl()函数的命令选项361

12.6.2 ioctl()函数的IO请求363

12.6.3 ioctl()函数的文件请求365

12.6.4 ioctl()函数的网络接口请求365

12.6.5 使用ioctl()函数对ARP高速缓存操作372

12.6.6 使用ioctl()函数发送路由表请求374

12.7 fcntl()函数374

12.7.1 fcntl()函数的选项375

12.7.2 使用fcntl()函数修改套接字非阻塞属性375

12.7.3 使用fcntl()函数设置信号属主376

12.8 小结376

第13章 原始套接字377

13.1 概述377

13.2 原始套接字的创建379

13.2.1 SOCK_RAW选项379

13.2.2 IP_HDRINCL套接字选项379

13.2.3 不需要bind()函数380

13.3 原始套接字发送报文380

13.4 原始套接字接收报文380

13.5 原始套接字报文处理时的结构381

13.5.1 IP头部的结构381

13.5.2 ICMP头部结构382

13.5.3 UDP头部结构384

13.5.4 TCP头部结构386

13.6 ping的例子387

13.6.1 协议格式388

13.6.2 校验和函数389

13.6.3 设置ICMP发送报文的头部390

13.6.4 剥离ICMP接受报文的头部391

13.6.5 计算时间差392

13.6.6 发送报文393

13.6.7 接收报文394

13.6.8 主函数过程395

13.6.9 主函数main()397

13.6.10 编译测试400

13.7 洪水攻击400

13.8 ICMP洪水攻击401

13.8.1 ICMP洪水攻击的原理401

13.8.2 ICMP洪水攻击的例子401

13.9 UDP洪水攻击405

13.10 SYN洪水攻击409

13.10.1 SYN洪水攻击的原理409

13.10.2 SYN洪水攻击的例子409

13.11 小结413

第14章 服务器模型选择414

14.1 循环服务器414

14.1.1 UDP循环服务器414

14.1.2 TCP循环服务器417

14.2 简单并发服务器420

14.2.1 并发服务器的模型420

14.2.2 UDP并发服务器420

14.2.3 TCP并发服务器423

14.3 TCP的高级并发服务器模型426

14.3.1 单客户端单进程,统一accept()426

14.3.2 单客户端单线程,统一accept()429

14.3.3 单客户端单线程,各线程独自accept(),使用互斥锁431

14.4 IO复用循环服务器435

14.4.1 IO复用循环服务器模型介绍435

14.4.2 IO复用循环服务器模型的例子436

14.5 小结440

第15章 IPv6简介441

15.1 IPv4的缺陷441

15.2 IPv6的特点442

15.3 IPv6的地址443

15.3.1 IPv6的单播地址443

15.3.2 可聚集全球单播地址443

15.3.3 本地使用单播地址444

15.3.4 兼容性地址445

15.3.5 IPv6多播地址446

15.3.6 IPv6任播地址446

15.3.7 主机的多个IPv6地址447

15.4 IPv6的头部447

15.4.1 IPv6头部格式447

15.4.2 与IPv4头部的对比448

15.4.3 IPv6的TCP头部449

15.4.4 IPv6的UDP头部449

15.4.5 IPv6的ICMP头部449

15.5 IPv6运行环境451

15.5.1 加载IPv6模块451

15.5.2 查看是否支持IPv6452

15.6 IPv6的结构定义453

15.6.1 IPv6的地址族和协议族453

15.6.2 套接字地址结构453

15.6.3 地址兼容考虑455

15.6.4 IPv6通用地址455

15.7 IPv6的套接字函数456

15.7.1 socket()函数456

15.7.2 没有发生改变的函数456

15.7.3 发生改变的函数457

15.8 IPv6的套接字选项457

15.8.1 IPv6的套接字选项457

15.8.2 单播跳限IPV6_UNICAST_HOPS459

15.8.3 发送和接收多播包459

15.8.4 IPv6中获得时间戳的ioctl命令460

15.9 IPv6的库函数460

15.9.1 地址转换函数的差异460

15.9.2 域名解析函数的差异461

15.9.3 测试宏463

15.10 IPv6的编程的一个简单例子463

15.10.1 服务器程序464

15.10.2 客户端程序465

15.10.3 编译调试467

15.11 小结467

第3篇 Linux内核网络编程第16章 Linux内核中网络部分结构以及分布470

16.1 概述470

16.1.1 代码目录分布470

16.1.2 内核中网络部分流程简介472

16.1.3 系统提供修改网络流程点474

16.1.4 sk_buff结构475

16.1.5 网络协议数据结构inet_protosw478

16.2 软中断CPU报文队列及其处理479

16.2.1 Linux内核网络协议层的层间传递手段——软中断479

16.2.2 网络收发处理软中断的实现机制481

16.3 socket数据如何在内核中接收和发送482

16.3.1 socket()的初始化482

16.3.2 接收网络数据recv()482

16.3.3 发送网络数据send()483

16.4 小结484

第17章 netfilter框架内报文处理485

17.1 netfilter485

17.1.1 netfilter简介485

17.1.2 netfilter框架486

17.1.3 netfilter检查时的表格487

17.1.4 netfilter的规则487

17.2 iptables和netfilter488

17.2.1 iptables简介488

17.2.2 iptables的表和链488

17.2.3 使用iptables设置过滤规则489

17.3 内核模块编程492

17.3.1 内核“Hello,World!”程序492

17.3.2 内核模块的基本架构494

17.3.3 内核模块加载和卸载过程496

17.3.4 内核模块初始化和清理函数497

17.3.5 内核模块初始化和清理过程的容错处理497

17.3.6 内核模块编译所需的Makefile498

17.4 5个钩子点499

17.4.1 netfilter的5个钩子点499

17.4.2 NF_HOOK宏500

17.4.3 钩子的处理规则501

17.5 注册/注销钩子502

17.5.1 结构nf_hook_ops502

17.5.2 注册钩子503

17.5.3 注销钩子504

17.5.4 注册注销函数504

17.6 钩子的简单处理例子505

17.6.1 功能描述505

17.6.2 需求分析506

17.6.3 ping回显屏蔽实现506

17.6.4 禁止向目的IP地址发送数据的实现506

17.6.5 端口关闭实现506

17.6.6 动态配置实现508

17.6.7 可加载内核实现代码509

17.6.8 应用层测试代码实现516

17.6.9 编译运行516

17.7 一点多个钩子的优先级517

17.8 校验和问题518

17.9 小结518

第4篇 综合案例522

第18章 一个简单Web服务器的例子SHTTPD522

18.1 SHTTPD的需求分析522

18.1.1 SHTTPD启动参数可动态配置的需求523

18.1.2 SHTTPD的多客户端支持的需求524

18.1.3 SHTTPD支持方法的需求525

18.1.4 SHTTPD支持的HTTP协议版本的需求526

18.1.5 SHTTPD支持头部的需求527

18.1.6 SHTTPD定位URI的需求527

18.1.7 SHTTPD支持CGI的需求528

18.1.8 SHTTPD错误代码的需求529

18.2 SHTTPD的模块分析和设计530

18.2.1 SHTTPD的主函数530

18.2.2 SHTTPD命令行解析的分析设计531

18.2.3 SHTTPD配置文件解析的分析设计532

18.2.4 SHTTPD的多客户端支持的分析设计534

18.2.5 SHTTPD头部解析的分析设计536

18.2.6 SHTTPD对URI的分析设计537

18.2.7 SHTTPD支持方法的分析设计537

18.2.8 SHTTPD支持CGI的分析设计538

18.2.9 SHTTPD错误处理的分析设计540

18.3 SHTTPD各模块的实现542

18.3.1 SHTTPD命令行解析的实现543

18.3.2 SHTTPD文件配置解析的实现545

18.3.3 SHTTPD的多客户端支持的实现547

18.3.4 SHTTPD所请求URI解析的实现551

18.3.5 SHTTPD方法解析的实现552

18.3.6 SHTTPD响应方法的实现552

18.3.7 SHTTPD支持CGI的实现556

18.3.8 SHTTPD支持HTTP协议版本的实现559

18.3.9 SHTTPD内容类型的实现559

18.3.10 SHTTPD错误处理的实现561

18.3.11 SHTTPD生成目录下文件列表文件的实现563

18.3.12 SHTTPD主函数的实现565

18.4 SHTTPD的编译、调试和测试566

18.4.1 建立源文件566

18.4.2 制作Makefile566

18.4.3 制作执行文件567

18.4.4 使用不同的浏览器测试服务器程序567

18.5 小结568

第19章 一个简单网络协议栈的例子SIP569

19.1 SIP网络协议栈的功能描述569

19.1.1 SIP网络协议栈的基本功能描述570

19.1.2 SIP网络协议栈的分层功能描述570

19.1.3 SIP网络协议栈的用户接口功能描述571

19.2 SIP网络协议栈的架构571

19.3 SIP网络协议栈的存储区缓存572

19.3.1 SIP存储缓冲的结构定义573

19.3.2 SIP存储缓冲的处理函数577

19.4 SIP网络协议栈的网络接口层579

19.4.1 SIP网络接口层的架构579

19.4.2 SIP网络接口层的数据结构580

19.4.3 SIP网络接口层的初始化函数581

19.4.4 SIP网络接口层的输入函数583

19.4.5 SIP网络接口层的输出函数586

19.5 SIP网络协议栈的ARP层588

19.5.1 SIP地址解析层的架构588

19.5.2 SIP地址解析层的数据结构588

19.5.3 SIP地址解析层的映射表590

19.5.4 SIP地址解析层的ARP映射表维护函数591

19.5.5 SIP地址解析层的ARP网络报文构建函数593

19.5.6 SIP地址解析层的ARP网络报文收发处理函数595

19.6 SIP网络协议栈的IP层598

19.6.1 SIP网际协议层的架构598

19.6.2 SIP网际协议层的数据结构599

19.6.3 SIP网际协议层的输入函数601

19.6.4 SIP网际协议层的输出函数605

19.6.5 SIP网际协议层的分片函数606

19.6.6 SIP网际协议层的分片组装函数607

19.7 SIP网络协议栈的ICMP层611

19.7.1 SIP控制报文协议的数据结构611

19.7.2 SIP控制报文协议的协议支持612

19.7.3 SIP控制报文协议的输入函数613

19.7.4 SIP控制报文协议的回显应答函数614

19.8 SIP网络协议栈的UDP层615

19.8.1 SIP数据报文层的数据结构615

19.8.2 SIP数据报文层的控制单元615

19.8.3 SIP数据报文层的输入函数617

19.8.4 SIP数据报文层的输出函数618

19.8.5 SIP数据报文层的建立函数618

19.8.6 SIP数据报文层的释放函数619

19.8.7 SIP数据报文层的绑定函数620

19.8.8 SIP数据报文层的发送数据函数621

19.8.9 SIP数据报文层的校验和计算622

19.9 SIP网络协议栈的协议无关层623

19.9.1 SIP协议无关层的系统架构623

19.9.2 SIP协议无关层的函数形式624

19.9.3 SIP协议无关层的接收数据函数624

19.10 SIP网络协议栈的BSD接口层625

19.10.1 SIP用户接口层的架构625

19.10.2 SIP用户接口层的套接字建立函数626

19.10.3 SIP用户接口层的套接字关闭函数627

19.10.4 SIP用户接口层的套接字绑定函数627

19.10.5 SIP用户接口层的套接字连接函数628

19.10.6 SIP用户接口层的套接字接收数据函数628

19.10.7 SIP用户接口层的发送数据函数629

19.11 SIP网络协议栈的编译630

19.11.1 SIP的文件结构630

19.11.2 SIP的Makefile631

19.11.3 SIP的编译运行631

19.12 小结631

第20章 一个简单防火墙的例子SIPFW633

20.1 SIPFW防火墙的功能描述633

20.1.1 SIPFW防火墙对主机进行网络数据过滤的功能描述633

20.1.2 SIPFW防火墙用户设置防火墙规则的功能描述634

20.1.3 SIPFW防火墙配置文件等附加功能的功能描述634

20.2 SIPFW需求分析634

20.2.1 SIPFW防火墙条件和动作635

20.2.2 SIPFW防火墙支持过滤的类型和内容635

20.2.3 SIPFW防火墙过滤的方式和动作638

20.2.4 SIPFW防火墙的配置文件640

20.2.5 SIPFW防火墙命令行配置格式640

20.2.6 SIPFW防火墙的规则文件格式642

20.2.7 SIPFW防火墙的日志文件数据格式643

20.2.8 SIPFW防火墙构建所采用的技术方案644

20.3 使用netlink进行用户空间和内核空间数据交互645

20.3.1 netlink的用户空间程序设计645

20.3.2 netlink的内核空间API648

20.4 使用proc进行内存数据用户空间映射650

20.4.1 proc虚拟文件系统的结构650

20.4.2 创建proc虚拟文件651

20.4.3 删除proc虚拟文件652

20.4.4 proc文件的写函数652

20.4.5 proc文件的读函数653

20.5 内核空间的文件操作函数654

20.5.1 内核空间的文件结构654

20.5.2 内核空间的文件建立操作655

20.5.3 内核空间的文件读写操作656

20.5.4 内核空间的文件关闭操作657

20.6 SIPFW防火墙的模块分析和设计657

20.6.1 SIPFW防火墙的总体架构657

20.6.2 SIPFW防火墙的用户命令解析660

20.6.3 SIPFW用户空间与内核空间的交互663

20.6.4 SIPFW防火墙内核链上的规则处理666

20.6.5 SIPFW防火墙的PROC虚拟文件系统668

20.6.6 SIPFW防火墙的配置文件和日志文件处理669

20.6.7 SIPFW防火墙的过滤模块设计671

20.7 SIPFW防火墙各功能模块的实现673

20.7.1 SIPFW防火墙的命令解析代码674

20.7.2 SIPFW防火墙的过滤规则解析模块代码678

20.7.3 SIPFW防火墙的网络数据拦截模块代码680

20.7.4 SIPFW防火墙的PROC虚拟文件系统681

20.7.5 SIPFW防火墙对配置文件的解析683

20.7.6 SIPFW防火墙内核模块初始化和退出684

20.7.7 用户空间处理主函数685

20.8 编译、调试和测试686

20.8.1 用户程序和内核程序的Makefile686

20.8.2 编译及运行687

20.8.3 下发过滤规则,测试过滤结果688

20.9 小结690

热门推荐