第1章 客户机/服务器开发 1
1.1 Winsock编程入门——简单的TCP服务器 1
1.1.1 Winsock编程简介 1
1.1.2 简单的TCP服务器 1
1.1.3 测试程序 4
1.2 Winsock编程入门——简单的TCP客户端 4
1.2.1 TCP客户程序的编写流程 5
1.2.2 初始化Winsock库 5
1.2.3 创建套接字 5
1.2.4 获取主机信息 5
1.2.5 连接到服务器 6
1.2.6 TCP通信 6
1.2.7 关闭连接、释放Winsock库 7
1.3 多线程TCP服务器和客户端实例 7
1.3.1 实例介绍 7
1.3.2 多线程服务器 7
1.3.3 自定义传输协议 8
1.3.4 客户端程序 12
1.4 网络对时程序实例 17
1.4.1 时间协议(Time Protocol) 17
1.4.2 TCP/IP实现代码 17
1.5 网络文件传输实例 19
1.5.1 服务器端程序代码分析 20
1.5.2 客户端程序代码分析 23
1.5.3 演示软件 26
第2章 计算机嗅探和远程控制 27
2.1 Ping程序实例 27
2.1.1 原始套接字 27
2.1.2 Ping程序运行原理 28
2.1.3 Ping程序代码分析 30
2.1.4 WinPing程序实例分析 32
2.2 路由跟踪实例 33
2.3 网络嗅探器实例 35
2.3.1 嗅探器设计原理 36
2.3.2 网络嗅探器的具体实现 37
2.4 远程进程和机器控制实例 40
2.4.1 远程控制机器的方法 41
2.4.2 基本实施方案 41
2.4.3 客户程序的实施细节 45
2.4.4 服务器程序的实施细节 46
2.5 网络唤醒(Wake On LAN)实例 46
2.5.1 WOL工作方式 46
2.5.2 魔术包格式 46
2.5.3 获取MAC地址 47
2.5.4 实例代码分析 49
第3章 网络计算机扫描 53
3.1 原始UDP封包发送实例 53
3.1.1 IP数据报格式 53
3.1.2 UDP数据报格式 54
3.1.3 原始UDP封包发送实例 57
3.2 原始以太封包发送实例 59
3.2.1 NDIS协议驱动 59
3.2.2 协议驱动用户接口 60
3.2.3 发送以太封包的测试程序 66
3.3 TCP/IP端口扫描实例 68
3.3.1 扫描器的工作方式 68
3.3.2 扫描器的实现 70
3.4 高级TCP半开端口扫描实例 71
3.4.1 端口扫描原理 71
3.4.2 以太网数据帧 72
3.4.3 半开端口扫描实现 73
第4章 网络封包过滤技术 81
4.1 Windows网络数据和封包过滤概述 81
4.1.1 Windows网络系统体系结构图 81
4.1.2 用户模式下的网络数据过滤 82
4.1.3 内核模式下的网络数据过滤 83
4.2 Hook API过滤原理 83
4.2.1 通过覆盖代码挂钩API 83
4.2.2 DLL工程框架 87
4.2.3 数据交换机制 88
4.2.4 数据的过滤 90
4.3 Hook API过滤实例 91
4.3.1 主窗口界面 91
4.3.2 注入DLL 94
4.3.3 处理封包 99
4.4 基于SPI的数据报过滤实例 102
4.4.1 SPI概述 102
4.4.2 Winsock协议目录 104
4.4.3 分层服务提供者(LSP) 109
4.4.4 数据报过滤实例 121
4.5 IP过滤钩子驱动 127
4.5.1 创建过滤钩子(Filter-hook)驱动 127
4.5.2 IP过滤钩子驱动工程框架 130
4.5.3 过滤列表 133
4.5.4 编写过滤函数 134
4.5.5 注册钩子回调函数 137
4.5.6 处理IOCTL设备控制代码 138
4.6 Windows防火墙开发实例 139
4.6.1 文档视图 140
4.6.2 文档对象 143
4.6.3 视图对象 144
4.6.4 主窗口对象 147
第5章 NDIS中间层驱动开发 151
5.1 中间层网络驱动PassThru 151
5.1.1 PassThru NDIS中间层驱动简介 151
5.1.2 编译和安装PassThru驱动 151
5.2 扩展PassThru NDIS IM驱动——添加IOCTL接口 152
5.2.1 扩展之后的PassThru驱动(PassThruEx)概况 152
5.2.2 添加基本的DeviceIoControl接口 153
5.2.3 添加绑定枚举功能 157
5.2.4 添加ADAPT结构的引用计数 162
5.2.5 适配器句柄的打开/关闭函数 163
5.2.6 句柄事件通知 170
5.2.7 查询和设置适配器的OID信息 170
5.3 扩展PassThru NDIS IM驱动——添加过滤规则 179
5.3.1 需要考虑的事项 179
5.3.2 过滤相关的数据结构 180
5.3.3 过滤列表 181
5.3.4 网络活动状态 183
5.3.5 IOCTL控制代码 184
5.3.6 过滤数据 187
5.4 核心层过滤实例 196
第6章 网络安全 199
6.1 ARP概述 199
6.1.1 ARP 199
6.1.2 ARP协议格式 202
6.1.3 SendARP函数 202
6.2 局域网计算机诊测实例 203
6.2.1 管理原始ARP封包 203
6.2.2 ARP扫描示例 206
6.3 ARP欺骗与ARP表中毒实例 211
6.3.1 IP欺骗的用途和实现原理 211
6.3.2 IP地址冲突 212
6.3.3 ARP欺骗示例程序 212
6.4 SuperPasswordSpy++密码诊测实例 215
6.4.1 体系结构 216
6.4.2 实现细节 217
6.5 侦听局域网内密码实例 220
第7章 IP帮助函数 224
7.1 IP配置信息管理实例 224
7.1.1 获取网络配置信息 224
7.1.2 管理网络接口 226
7.1.3 管理IP地址 230
7.2 获取网络状态信息实例 233
7.2.1 获取TCP连接表 234
7.2.2 获取UDP监听表 237
7.2.3 获取IP统计数据 239
7.3 路由管理实例 247
7.3.1 获取路由表 247
7.3.2 管理特定路由 250
7.3.3 修改默认网关的例子 251
7.4 ARP表管理实例 252
7.4.1 获取ARP表 253
7.4.2 添加ARP入口 253
7.4.3 删除ARP入口 254
7.4.4 打印ARP表 254
7.5 进程网络活动监视实例 258
7.5.1 获取通信的进程终端 258
7.5.2 Netstate源程序代码 260
第8章 串口通信编程技术 265
8.1 串口通信基本接线方法 265
8.1.1 DB9和DB25的常用信号脚说明 265
8.1.2 RS232C串口通信接线方法(三线制) 265
8.1.3 串口调试中要注意的几点 266
8.2 串口通信基本API函数 266
8.3 异步通信实例 270
8.3.1 异步通信基础 271
8.3.2 异步通信实例分析 273
8.4 CSerial类的封装与串口调试实例 277
8.4.1 串口类CSerial的封装 277
8.4.2 串口测试程序ComTest 288
8.5 串口文件传输实例 290
8.5.1 通信协议 290
8.5.2 文件传输过程 290
8.5.3 通信协议实施细节 291
8.5.4 命令号和状态代码的定义 291
8.5.5 数据校验 292
8.5.6 通讯协议控制类CSCSerial 293
8.5.7 文件传输程序具体实现 297
第9章 综合实例 310
9.1 IP多播(Multicasting)实例 310
9.1.1 套接字选项 310
9.1.2 多播地址 312
9.1.3 组管理协议(IGMP) 312
9.1.4 使用IP多播 313
9.2 基于IP多播的组讨论会实例 317
9.2.1 定义组讨论会协议 317
9.2.2 线程通信机制 318
9.2.3 封装CGroupTalk类 318
9.2.4 程序界面 325
9.3 完成端口I/O模型编程实例 328
9.3.1 完成端口(completion port)对象简介 328
9.3.2 使用IOCP的方法 329
9.3.3 示例程序 330
9.3.4 恰当地关闭IOCP 333
9.4 基于I/O完成端口的IP多播编程实例(使用UDP) 334
9.5 从NT服务启动Windows程序实例 340