第1章 网络安全 1
1.1 网络安全问题 1
1.1.1 网络安全重要性 1
1.1.2 网络安全目标 2
1.1.3 网络安全策略 3
1.2 网络安全技术 3
1.2.1 网络数据包捕获技术 4
1.2.2 网络协议分析技术 5
1.2.3 网络数据包生成技术 6
1.2.4 网络安全扫描技术 7
1.2.5 网络防火墙技术 8
1.2.6 网络入侵检测技术 9
1.3 网络安全开发 9
1.3.1 网络安全开发的主要内容 9
1.3.2 网络安全开发所需的知识 11
第2章 网络安全开发包 13
2.1 网络安全开发包技术 13
2.1.1 网络安全开发包的作用 13
2.1.3 如何使用开发包 14
2.1.2 网络安全开发包的种类 14
2.2 常用的网络安全开发包简介 15
2.2.1 Libpcap 15
2.2.2 WinPcap 16
2.2.3 数据包构造和发送开发包Libnet 17
2.2.4 通用网络安全开发包Libdnet 18
2.2.5 网络入侵检测开发包Libnids 19
3.1.1 Libpcap简介 21
3.1.2 Libpcap的作用 21
3.1 Libpcap概述 21
第3章 网络数据包捕获开发包Libpcap 21
3.1.3 Libpcap的安装 22
3.2 Libpcap的组成 24
3.2.1 BPF捕获机制 24
3.2.2 过滤规则 25
3.2.3 网卡设置 27
3.2.4 文件 27
3.3 Libpcap数据结构 31
3.3.1 pcap 31
3.3.2 pcap_file_header 32
3.3.4 pcap_stat 33
3.3.3 pcap_pkthdr 33
3.3.5 pcap_if 34
3.3.6 pcap_addr 34
3.4 Libpcap函数 35
3.4.1 网络接口函数 35
3.4.2 规则函数 35
3.4.3 数据包捕获函数 36
3.4.4 文件相关函数 37
3.4.6 辅助函数 38
3.4.5 错误处理函数 38
3.5 Libpcap的使用 40
3.5.1 最简单的应用程序 41
3.5.2 以太网数据包的捕获 46
3.5.3 ARP数据包的捕获 53
3.5.4 IP数据包的捕获 59
3.5.5 TCP数据包的捕获 65
3.5.6 UDP数据包的捕获 74
3.5.7 ICMP数据包的捕获 80
3.5.8 综合程序 88
3.6 小结 107
第4章 Windows网络数据包捕获开发包WinPcap 108
4.1 WinPcap介绍 108
4.2 WinPcap的组成 110
4.3 WinPcap数据结构 112
4.4 WinPcap函数 113
4.5 WinPcap开发包的使用 117
4.5.1 使用WinPcap的一般流程 117
4.5.2 捕获数据包 122
4.5.3 发送数据包 136
4.6 小结 139
第5章 数据包构造和发送开发包Libnet 141
5.1 Libnet介绍 141
5.1.1 Libnet的由来 142
5.1.2 Libnet的作用 143
5.2 Libnet的组成 144
5.2.1 文件 144
5.2.2 函数构成 146
5.2.3 协议部分 149
5.2.4 Libnet的安装 150
5.3.1 常量 160
5.3 Libnet数据结构 160
5.3.2 协议头的数据结构 164
5.3.3 核心数据结构 192
5.4 Libnet函数 199
5.4.1 核心函数 199
5.4.2 地址函数 200
5.4.3 数据包构造函数 201
5.4.4 数据包发送函数 218
5.4.5 高级处理函数 218
5.4.6 Libnet句柄队列操作函数 219
5.4.7 辅助函数 220
5.5 使用Libnet的开发流程 223
5.5.1 初始化 223
5.5.2 构造数据包 225
5.5.3 数据包检测和发送 226
5.6 使用Libnet开发包 226
5.6.1 构造ARP数据包 227
5.6.2 构造IP数据包 236
5.6.3 构造TCP数据包 245
5.6.4 构造UDP数据包 252
5.6.5 构造ICMP数据包 258
5.6.6 构造BGP数据包 287
5.6.7 构造DHCP数据包 293
5.6.8 构造多个数据包 300
5.7 小结 304
第6章 通用网络安全开发包Libdnet 305
6.1 Libdnet概述 305
6.1.1 Libdnet简介 305
6.1.3 Libdnet的安装 306
6.1.2 Libdnet的主要功能 306
6.2 Libdnet的组成 309
6.3 Libdnet数据结构 310
6.3.1 网络地址结构 310
6.3.2 协议结构 311
6.3.3 ARP缓存的数据结构 331
6.3.4 网络路由表数据结构 331
6.3.5 网络接口的数据结构 332
6.3.6 防火墙结构 332
6.4 Libdnet函数 333
6.4.1 网络地址操作函数 333
6.4.2 以太网协议函数 335
6.4.3 IPv4协议函数 336
6.4.4 IPv6协议函数 337
6.4.5 数据块操作函数 338
6.4.6 ARP缓存操作函数 340
6.4.7 网络接口函数 340
6.4.8 网络路由函数 341
6.4.9 随机数函数 342
6.4.10 防火墙函数 343
6.4.11 IP隧道函数 344
6.5.1 简单应用 345
6.5 Libdnet开发包的使用 345
6.5.2 构造和发送网络数据包 349
6.5.3 ARP缓存操作 364
6.5.4 网络接口操作 367
6.5.5 网络路由表操作 375
6.5.6 防火墙操作 378
6.6 小结 383
第7章 网络入侵检测开发包Libnids 384
7.1 Libnids概述 384
7.1.1 Libnids的使用范围 384
7.1.2 Libnids的安装 385
7.2 Libnids数据结构 387
7.2.1 基本常量 387
7.2.2 tuple4 390
7.2.3 half_stream 390
7.2.4 tcp_stream 391
7.2.5 nids_prm 392
7.2.6 nids_chksum_ctl 395
7.3 Libnids函数 395
7.4.1 显示TCP连接 397
7.4 Libnids的使用 397
7.4.2 显示UDP数据报 408
7.4.3 HTTP协议分析 413
7.4.4 FTP协议分析 426
7.4.5 Telnet协议分析 439
7.4.6 POP3协议分析 450
7.4.7 SMTP和ESMTP协议分析 458
7.4.8 IP数据包的捕获和分析 468
7.4.9 检测攻击的一个例子 475
7.5 小结 481
参考文献 483