第1章 网络模型 1
1.1 功能分层 1
1.2 OSI模型 2
1.2.1 OSI层次结构 2
1.2.2 OSI各层功能 3
1.2.3 OSI层间通信 5
1.2.4 OSI数据封装及解封装 6
1.3 TCP/IP协议簇 8
1.3.1 TCP/IP层次结构 8
1.3.2 TCP/IP各层功能 9
1.3.3 TCP/IP与OSI模型比较 10
1.3.4 Internet层——IP协议 11
1.3.5 传输层——TCP协议 12
1.3.6 TCP连接的建立与终止 13
1.3.7 传输层——UDP协议 17
1.3.8 Windows 2003 TCP/IP结构模型 18
1.4 LAN模型 20
1.4.1 IEEE 802概述 20
1.4.2 以太网标准 21
1.5 寻址方法 23
1.6 数据包在网络中的传递 24
1.7 本章小结 26
第2章 Windows套接字基础 27
2.1 套接字简介 27
2.1.1 Berkeley套接字 27
2.1.2 Windows套接字规范 28
2.2 Windows Sockets 28
2.2.1 Windows Sockets 1.0 28
2.2.2 Windows Sockets 1.1 28
2.3 Windows Sockets 2 29
2.3.1 Windows Sockets 2简介 29
2.3.2 同时访问多个传输协议 30
2.3.3 与WinSock 1.1的兼容性 31
2.3.4 功能扩展机制 32
2.3.5 多线程中的应用 32
2.3.6 分散/聚集I/O支持 33
2.4 WinSock编程基础 33
2.4.1 WinSock API 33
2.4.2 网络程序结构 36
2.4.3 端口的概念 37
2.4.4 字节顺序 37
2.4.5 出错的处理 39
2.4.6 WinSock库的初始化及释放 40
2.5 面向连接的通信 42
2.5.1 socket与WSASocket 42
2.5.2 绑定套接字bind 44
2.5.3 监听listen 46
2.5.4 accept与WSAAccept 47
2.5.5 send与WSASend 48
2.5.6 recv与WSARecv 50
2.5.7 connect与WSAConnect 52
2.5.8 closesocket 53
2.6 无连接通信 54
2.6.1 sendto与WSASendto 55
2.6.2 recvfrom与WSARecvfrom 56
2.7 套接字选项与I/O控制 58
2.7.1 套接字选项 58
2.7.2 套接字I/O控制 61
2.8 套接字工作模式 63
2.9 流式套接字编程实例 64
2.9.1 TCP服务端设计 64
2.9.2 TCP客户端设计 66
2.10 数据报套接字编程实例 68
2.10.1 UDP服务端设计 68
2.10.2 UDP客户端设计 70
2.11 本章小结 72
第3章 Windows Socket I/O模型 73
3.1 select模型 73
3.1.1 select函数 73
3.1.2 select模型应用 76
3.2 WSAAsyncSelect模型 82
3.2.1 WSAAsyncSelect函数 83
3.2.2 异步选择模型应用 85
3.3 WSAEventSelect模型 90
3.3.1 WSAEventSelect函数 91
3.3.2 事件选择模型辅助API 91
3.3.3 事件选择模型应用 94
3.4 重叠I/O模型 98
3.4.1 重叠套接字I/O概述 98
3.4.2 完成例程 100
3.4.3 完成例程应用 102
3.4.4 基于事件的通知 106
3.4.5 事件对象应用 107
3.5 完成端口模型 110
3.5.1 完成端口简介 111
3.5.2 完成端口模型API 111
3.5.3 完成端口应用 113
3.6 模型比较 116
3.7 本章小结 116
第4章 网络服务 117
4.1 服务程序 117
4.1.1 程序入口 117
4.1.2 服务主函数 118
4.1.3 服务控制处理器函数 119
4.1.4 更新服务状态及相关结构 119
4.2 服务配置 120
4.2.1 服务的安装 121
4.2.2 服务的卸载 122
4.3 服务控制 122
4.3.1 服务的启动 122
4.3.2 服务控制请求 123
4.4 网络服务实例 124
4.4.1 主函数main 124
4.4.2 服务主函数ServiceMain 126
4.4.3 控制处理器函数ServiceCtrlHandler 127
4.4.4 服务配置实现 127
4.4.5 服务控制实现 130
4.5 本章小结 133
第5章 MFC套接字网络编程 134
5.1 MFC基础与网络类库 134
5.1.1 MFC基础 134
5.1.2 MFC中的网络开发相关类 134
5.2 CAsyncSocket类及其开发 137
5.2.1 CAsyncSocket类 137
5.2.2 CAsyncSocket类的编程模式 138
5.2.3 CAsyncSocket类的异步机制 141
5.2.4 使用CAsyncSocket类实现信息转发器(服务端) 142
5.2.5 使用CAsyncSocket类实现信息转发器(客户端) 145
5.3 CSocket类及其开发 147
5.3.1 CSocket类 147
5.3.2 CSocket类的编程模式 148
5.3.3 CSocket类的同步(阻塞)机制 149
5.3.4 使用CSocket类的阻塞模式进行通信 151
5.4 网络聊天室开发实例 154
5.4.1 服务器端程序的开发 154
5.4.2 客户端程序的开发 157
5.5 本章小结 159
第6章 WinInet、ISAPI与Internet编程 160
6.1 WinInet基础 160
6.1.1 WinInetAPI函数 160
6.1.2 WinInetAPI函数的使用 162
6.1.3 MFC WinInet类库概述 165
6.1.4 MFC WinInet类库的使用 166
6.2 使用MFC WinInet开发网络应用 168
6.2.1 WinInet开发客户端程序的流程 168
6.2.2 WinInet开发查询Web网站程序 170
6.3 利用ISAPI扩展开发CGI程序 171
6.3.1 CGI基础 171
6.3.2 CGI应用实例 172
6.3.3 ISAPI基础 174
6.3.4 使用MFC开发ISA程序的基本方法 174
6.3.5 使用MFC开发ISA程序实例 177
6.4 本章小结 180
第7章 HTTP协议 181
7.1 资源标识 181
7.1.1 统一资源标识符 181
7.1.2 HTTP统一资源定位符 183
7.2 HTTP协议 184
7.2.1 协议版本 185
7.2.2 协议参数 186
7.2.3 HTTP消息 187
7.2.4 HTTP实体 190
7.2.5 HTTP连接 190
7.3 HTTP服务器实例 191
7.3.1 主函数 191
7.3.2 初始化及等待连接 192
7.3.3 服务线程 196
7.3.4 解析请求 200
7.4 本章小结 204
第8章 邮件传输 205
8.1 电子邮件简介 205
8.2 电子邮件的格式 206
8.2.1 RFC 822电子邮件格式 207
8.2.2 MIME电子邮件格式 211
8.3 SMTP协议 215
8.3.1 SMTP通信模型 215
8.3.2 SMTP命令 216
8.3.3 SMTP响应 219
8.3.4 使用SMTP发送邮件的步骤 220
8.4 SMTP服务扩展 221
8.4.1 EHLO命令 221
8.4.2 AUTH命令 222
8.5 电子邮件的认证 222
8.5.1 AUTH LOGIN机制 223
8.5.2 AUTH PLAIN机制 223
8.5.3 CRAM-MD5机制 224
8.6 发送邮件实例 225
8.6.1 主函数实现 225
8.6.2 获取服务端响应 228
8.6.3 认证实现 228
8.6.4 Base64编解码 229
8.6.5 邮件发送 232
8.7 POP3协议 236
8.7.1 POP3命令 236
8.7.2 POP3状态 240
8.7.3 使用POP3操作邮箱的步骤 240
8.8 接收邮件实例 240
8.8.1 主函数实现 241
8.8.2 获取服务端响应 243
8.8.3 获取邮件/邮箱属性信息 243
8.8.4 读取邮件 245
8.8.5 删除邮件 246
8.9 本章小结 247
第9章 代理服务器 248
9.1 代理服务器简介 248
9.1.1 代理服务器功能 248
9.1.2 代理服务器分类 251
9.2 HTTP代理 252
9.3 HTTP代理服务器实例 253
9.3.1 主函数main 253
9.3.2 代理线程 254
9.3.3 转发请求与响应 255
9.3.4 TCP数据交换 259
9.4 SOCKS5协议 263
9.4.1 SOCKS5 TCP代理 263
9.4.2 SOCKS5 UDP代理 265
9.4.3 SOCKS5对认证的支持 266
9.5 SOCKS5代理实例 266
9.5.1 主函数main 267
9.5.2 认证实现 268
9.5.3 代理线程 270
9.5.4 代理模式检测 273
9.5.5 获取地址、端口及UDP数据 274
9.5.6 创建UDP套接字 275
9.5.7 UDP代理线程 276
9.6 本章小结 279
第10章 原始套接字 280
10.1 原始套接字简介 280
10.1.1 原始套接字简史 280
10.1.2 原始套接字与网络安全 281
10.2 Windows与原始套接字 282
10.2.1 原始套接字支持 283
10.2.2 数据发送 284
10.2.3 数据接收 284
10.3 如何使用原始套接字 285
10.3.1 创建原始套接字 285
10.3.2 原始套接字的协议参数 286
10.3.3 头包含选项 287
10.3.4 发送原始数据包示例 287
10.4 ICMP协议 290
10.4.1 ICMP协议简介 291
10.4.2 校验和计算 293
10.4.3 Ping程序实现 294
10.4.4 Tracert实现 297
10.5 数据包捕获 297
10.5.1 数据包捕获流程 298
10.5.2 数据包捕获实现 298
10.6 本章小结 300
第11章 WinPcap应用 301
11.1 WinPcap基础 301
11.1.1 WinPcap结构 301
11.1.2 NPF的主要功能及其结构 303
11.1.3 WinPcap工作框架 305
11.2 WinPcap编程接口 306
11.2.1 UNIX兼容API 306
11.2.2 WinPcap扩展API 311
11.3 WinPcap嗅探实例 313
11.3.1 主函数 314
11.3.2 回调函数 317
11.3.3 协议头部 317
11.3.4 数据包处理 319
11.4 本章小结 320
第12章 远程控制技术 321
12.1 远程控制的概念 321
12.2 连接方式 322
12.2.1 直接指定 322
12.2.2 通过第三方获取 322
12.3 线程插入 324
12.3.1 远程插入DLL 324
12.3.2 插入DLL实例 326
12.3.3 远程插入功能代码 329
12.3.4 插入代码实例 329
12.4 启动方式 333
12.4.1 注册表键 333
12.4.2 自动运行文件 334
12.4.3 Windows服务 335
12.4.4 注册为服务 337
12.4.5 文件关联 337
12.4.6 其他方式 339
12.5 被控端配置 340
12.5.1 附加信息 340
12.5.2 预留配置 343
12.6 信息隐藏 348
12.6.1 文件隐藏 348
12.6.2 进程隐藏 349
12.7 捆绑文件 350
12.7.1 捆绑原理 350
12.7.2 Win32图标 352
12.7.3 图标选择 355
12.7.4 图标操作 356
12.7.5 更新资源 359
12.7.6 捆绑实例 361
12.8 键盘记录 367
12.8.1 Win32挂钩简介 367
12.8.2 挂钩相关的API 368
12.8.3 全局挂钩 369
12.8.4 实例介绍 370
12.9 远程控制开发 373
12.9.1 管道技术 374
12.9.2 被控端开发 376
12.9.3 主控端开发 379
12.10 本章小结 381
附录A IP协议号 382
附录B 以太网类型字段 386
附录C 常见端口 388
附录D ASCII表 390
参考文献 392