第一篇 网络编程基础 2
第1章 网络编程基础 2
1.1 网络操作系统 2
1.1.1 UNIX 2
1.1.2 Linux 3
1.1.3 Windows NT 4
1.1.4 NetWare 6
1.2 文件系统 7
1.2.1 Linux文件操作 7
1.2.2 文件属性 9
1.2.3 目录文件操作 10
1.2.4 文件加锁 10
1.3 I/O模型 11
1.4 套接字与管道 11
1.4.1 Socket 11
1.4.2 管道 12
1.4.3 Windows管道 17
1.5 进程与线程 20
1.5.1 进程的基本概念 20
1.5.2 UNIX/Linux多进程编程的系统调用 24
1.5.3 守护进程 34
1.5.4 线程的基本概念 38
1.5.5 Windows线程操作 39
1.6 信号 41
1.6.1 信号的基本概念 41
1.6.2 信号机制 44
1.6.3 信号的系统调用 46
1.7 应用程序与设备驱动程序之间的接口 53
1.7.1 VxD的概念 53
1.7.2 应用程序与硬件之间的接口 53
1.7.3 串口通信程序实例 60
1.8 字节顺序 64
思考练习题 65
第二篇 网络编程方法与技术 68
第2章 直接网卡编程技术 68
2.1 网卡的基本工作原理 68
2.1.1 Ethernet网络适配器的工作原理 68
2.1.2 可编程链路控制器 70
2.2 网卡寄存器 73
2.2.1 NIC内部寄存器 73
2.2.2 寄存器的定义 75
2.2.3 寄存器描述 77
2.3 NE2000(9008)编程要点 85
2.3.1 初始化 85
2.3.2 发送 85
2.3.3 中断接收处理 86
2.3.4 接收缓冲环溢出处理 87
2.3.5 中断处理 88
2.4 网卡编程实例 90
思考练习题 90
第3章 基于Packet Driver的网络编程方法 91
3.1 概述 91
3.2 网络接口标识 92
3.3 功能调用描述 94
3.3.1 网络接口初始化 94
3.3.2 获取驱动程序信息 97
3.3.3 关闭网络接口 98
3.3.4 发送数据 98
3.3.5 网络性能参数统计 99
3.3.6 其他功能调用 99
3.4 Packet Driver编程实例 104
思考练习题 108
第4章 基于NDIS的网络编程 110
4.1 Windows NT网络体系结构 110
4.2.1 NDIS概述 111
4.2 NDIS的基本概念 111
4.2.2 NDIS驱动程序的分类 113
4.3 小端口网卡驱动程序 115
4.3.1 小端口驱动程序结构 115
4.3.2 小端口驱动程序函数 116
4.3.3 NDIS小端口驱动程序设计 117
4.4 NDIS中间驱动程序 119
4.4.1 IMDriver概述 119
4.4.2 NDIS中间驱动程序的功能 119
4.4.3 NDIS中间驱动程序的工作原理 120
4.4.4 NDIS中间驱动程序的实现 123
4.5 VPacket 125
4.5.1 虚拟设备驱动程序简介 125
4.5.2 装入VxD 125
4.5.4 VxD与网卡相绑定 126
4.5.3 卸载VxD 126
4.5.5 接收数据包 127
4.5.6 发送数据包 128
4.5.7 驱动程序API 128
4.5.8 异步操作 129
4.5.9 VPacket编程实例 129
4.6.3 Packet32包的使用 132
4.6.2 Packet32包的主要内容 132
4.6.1 Packet32原理 132
4.6 Packet32 132
4.6.4 Packet32应用实例 134
4.7 WinDis32技术 134
4.7.1 WinDis32概述 134
4.7.2 WinDis32函数 135
思考练习题 135
第5章 基于Libpcap的网络编程技术 137
5.1 常见的包捕获机制简介 137
5.2 Libpcap与BPF 138
5.3 Libpcap库函数与数据结构 140
5.4 Libpcap应用实例 145
思考练习题 150
第6章 Libnet和Libnids编程技术 152
6.1 Libnet 152
6.1.1 Libnet概述 152
6.1.2 Libnet函数 153
6.1.3 Libnet使用方法 161
6.1.4 Libnet应用实例 163
6.2 Libnids 170
6.2.1 Libnids简介 170
6.2.2 IP分片数据包 171
6.2.3 TCP数据流重组 172
6.2.4 基本的Libnids数据结构及接口函数 172
6.2.5 Libnids应用实例 175
思考练习题 181
7.2 Winpcap结构 183
第7章 Winpcap编程技术 183
7.1 Winpcap简介 183
7.3 packet.dll的相关数据结构及函数 185
7.4 packet.dll应用实例 190
7.5 wpcap.dll的相关数据结构及函数 199
7.6 wpcap.dll应用实例 203
思考练习题 204
第8章 Socket编程 205
8.1 Socket的定义 205
8.2 Socket地址 206
8.3 Socket工作步骤 207
8.4 基本Socket系统调用 209
8.5 其他Socket系统调用 221
8.6 Socket应用实例 227
思考练习题 234
9.2.1 基本套接口函数 235
9.2 WinSock提供的函数调用 235
9.2.2 数据库函数 235
9.1 WinSock概述 235
第9章 WinSock 235
9.2.3 针对Microsoft Windows的扩展函数 237
9.3 WinSock对Berkeley Socket的扩充 238
9.4 WinSock 2.0的扩充功能 242
9.5 WinSock 1.1扩展的主要函数介绍 248
9.6 WinSock编程实例 254
思考练习题 257
第10章 WinSock I/O方法 258
10.1 概述 258
10.2 Select模型 260
10.2.1 Select工作原理 260
10.2.2 Select应用实例 261
10.3 WSAAsyncSelect模型 262
10.3.1 WSAAsyncSelect概述 262
10.3.2 WSAAsyncSelect应用实例 264
10.4 WSAEventSelect模型 271
10.4.1 WSAEventSelect工作原理 271
10.4.2 WSAEventSelect应用实例 272
10.5 Overlapped I/O模型 273
10.5.1 Overlapped I/O模型概述 273
10.5.2 Overlapped I/O事件通知模型 274
10.5.3 Overlapped I/O完成例程模型 275
10.6 完成端口模型 276
10.6.1 完成端口模型概述 276
10.6.2 完成端口模型应用实例 277
思考练习题 278
第11章 Java网络编程 279
11.1 Java的网络通信功能 279
11.1.1 Java的网络支持 279
11.1.2 InetAddress类的使用 280
11.3 Java URL网络编程 282
11.3.1 URL的概念 282
11.2 Java中的网络编程方法 282
11.3.2 URL类 283
11.3.3 通过URL访问WWW 284
11.4 Socket通信 288
11.4.1 Socket类 288
11.4.2 Socket通信的实现步骤 289
11.4.3 Java Socket编程实例 291
11.5 Java数据报通信 294
11.5.1 数据报通信和流式通信 294
11.5.2 Java网络类库中有关数据报通信的方法 294
11.5.3 Java数据报的发送与接收 296
11.5.4 Java数据报编程实例 298
11.6 SUN Java网络协议 301
11.6.1 SUN网络类库(应用层编程) 301
11.6.2 FTP 301
11.6.4 WWW 302
11.7 JavaMail 302
11.6.3 NNTP 302
思考练习题 312
第三篇 TCP/IP协议 314
第12章 TCP/IP协议 314
12.1 网络体系结构 314
12.1.1 网络层次结构 314
12.1.2 OSI/RM基本参考模型 314
12.1.3 TCP/IP协议概述 317
12.2.1 局域网接口——Ethernet帧和IEEE 802.3帧 319
12.2 网络接口层协议 319
12.2.2 Internet数据链路层 321
12.2.3 PPPoE 330
12.3 网间网层协议 334
12.3.1 ARP/RARP协议 334
12.3.2 IP 337
12.3.3 ICMP 340
12.4 Internet路由协议 344
12.4.1 RIP协议 344
12.4.2 OSPF报文格式 345
12.5.1 UDP 346
12.5 传输层协议 346
12.5.2 TCP 347
12.6 TCP/IP协议的数据结构 348
12.7 TCP/IP报文分析 350
12.7.1 TCP/IP报文分析流程 350
12.7.2 典型报文分析 351
思考练习题 354
13.1 网络计费概述 356
第四篇 基于网络编程的网络应用 356
第13章 网络计费系统 356
13.2 常用网络计费方法 357
13.3 基于流量的网络计费方法 358
13.3.1 基于流量的网络计费系统的功能模块 358
13.3.2 网络流量的获取方法 359
13.3.3 协议分析与流量统计 362
13.3.5 其他功能模块简介 363
13.3.4 网络计费模块 363
13.4 拨号服务计费方法 364
13.5 基于代理服务器的计费方法 366
13.5.1 代理服务器概述 366
13.5.2 基于代理的校园网计费系统 367
13.5.3 基于代理服务器的网络计费实例 367
13.6 基于邮件日志的邮件计费 372
思考练习题 373
第14章 网络监控系统 374
14.1 网络监控系统概述 374
14.2 网络监视 375
14.2.1 网络监视概述 375
14.2.2 内容过滤 376
14.3 电子邮件监视 385
14.3.1 概述 385
14.3.2 系统工作原理 385
14.3.3 邮件监听与阻断实现过程 388
14.3.4 系统体系结构 390
14.4 网络监控 391
14.4.1 系统功能 392
14.4.2 监控软件组成 392
14.4.3 技术基础 392
14.5 常用的网络监听工具 395
思考练习题 398
第15章 防火墙系统 399
15.1 防火墙概述 399
15.1.1 防火墙的定义 399
15.1.2 防火墙的作用 400
15.1.3 防火墙的分类 400
15.2 包过滤防火墙 402
15.2.1 包过滤防火墙的工作原理 402
15.2.2 包过滤防火墙的结构 402
15.2.3 包过滤防火墙的功能模块 403
15.2.4 包过滤防火墙关键技术介绍 404
思考练习题 411
第16章 网络入侵检测系统 412
16.1 入侵检测的概念 412
16.2 入侵检测系统分类 413
16.3 入侵检测数学模型 414
16.4 入侵检测方法 415
16.4.1 基于异常的入侵检测系统 415
16.4.2 基于误用的入侵检测系统 415
16.5.1 系统的组成结构 416
16.5 入侵检测系统的组成及功能 416
16.5.2 系统的功能描述 417
16.6 Snort剖析 421
16.6.1 Snort简介 421
16.6.2 Snort规则分析 421
16.6.3 Snort程序结构分析 422
思考练习题 427
参考文献 428