《Windows网络与通信程序设计 第3版》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:陈香凝,王烨阳,陈婷婷,张铮编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2017
  • ISBN:9787115441713
  • 页数:463 页
图书介绍:本书详细阐明Windows下网络编程的各个方面,介绍了Windows平台上进行网络编程的基础知识,通过具体实例详细讲述了时下流行的高性能可伸缩服务器设计、IP多播和Internet广播、P2P程序设计、原始套节字、SPI、协议驱动的开发和原始以太数据的发送、ARP欺骗技术;接下来讲述了新一代网际协议IPv6和Winsock提供的帮助函数。

第1章 计算机网络基础 1

1.1 网络的概念和网络的组成 1

1.2 计算机网络参考模型 2

1.2.1 协议层次 2

1.2.2 TCP/IP参考模型 2

1.2.3 应用层(Application Layer) 3

1.2.4 传输层(Transport Layer) 3

1.2.5 网络层(Network Layer) 3

1.2.6 链路层(Link Layer) 4

1.2.7 物理层(Physical Layer) 4

1.3 网络程序寻址方式 4

1.3.1 MAC地址 4

1.3.2 IP地址 5

1.3.3 子网寻址 6

1.3.4 端口号 8

1.3.5 网络地址转换(NAT) 8

1.4 网络应用程序设计基础 10

1.4.1 网络程序体系结构 10

1.4.2 网络程序通信实体 11

1.4.3 网络程序开发环境 11

第2章 Winsock编程接口 13

2.1 Winsock库 13

2.1.1 Winsock库的装入和释放 13

2.1.2 封装CInitSock类 14

2.2 Winsock的寻址方式和字节顺序 14

2.2.1 Winsock寻址 14

2.2.2 字节顺序 15

2.2.3 获取地址信息 16

2.3 Winsock编程详解 19

2.3.1 Winsock编程流程 19

2.3.2 典型过程图 22

2.3.3 TCP服务器和客户端程序举例 23

2.3.4 UDP编程 25

2.4 网络对时程序实例 27

2.4.1 时间协议(Time Protocol) 27

2.4.2 TCP/IP实现代码 27

第3章 Windows套接字I/O模型 29

3.1 套接字模式 29

3.1.1 阻塞模式 29

3.1.2 非阻塞模式 29

3.2 选择(select)模型 30

3.2.1 select函数 30

3.2.2 应用举例 31

3.3 WSAAsyncSelect模型 33

3.3.1 消息通知和WSAAsync Select函数 34

3.3.2 应用举例 34

3.4 WSAEventSelect模型 37

3.4.1 WSAEventSelect函数 37

3.4.2 应用举例 38

3.4.3 基于WSAEventSelect模型的服务器设计 40

3.5 重叠(Overlapped)I/O模型 48

3.5.1 重叠I/O函数 48

3.5.2 事件通知方式 50

3.5.3 基于重叠I/O模型的服务器设计 51

第4章 IOCP与可伸缩网络程序 60

4.1 完成端口I/O模型 60

4.1.1 什么是完成端口(completion port)对象 60

4.1.2 使用IOCP的方法 60

4.1.3 示例程序 62

4.1.4 恰当地关闭IOCP 64

4.2 扩展函数 65

4.2.1 GetAcceptExSockaddrs函数 65

4.2.2 TransmitFile函数 66

4.2.3 TransmitPackets函数 67

4.2.4 ConnectEx函数 67

4.2.5 DisconnectEx函数 68

4.3 可伸缩服务器设计注意事项 68

4.3.1 内存资源管理 68

4.3.2 接受连接的方法 69

4.3.3 恶意客户连接问题 69

4.3.4 包重新排序问题 69

4.4 可伸缩服务器系统设计实例 70

4.4.1 CIOCPServer类的总体结构 70

4.4.2 数据结构定义和内存池方案 73

4.4.3 自定义帮助函数 76

4.4.4 开启服务和停止服务 78

4.4.5 I/O处理线程 82

4.4.6 用户接口和测试程序 87

第5章 互联网广播和IP多播 88

5.1 套接字选项和I/O控制命令 88

5.1.1 套接字选项 88

5.1.2 I/O控制命令 90

5.2 广播通信 91

5.3 IP多播(Multicasting) 92

5.3.1 多播地址 92

5.3.2 组管理协议(IGMP) 93

5.3.3 使用IP多播 93

5.4 基于IP多播的组讨论会实例 97

5.4.1 定义组讨论会协议 98

5.4.2 线程通信机制 98

5.4.3 封装CGroupTalk类 98

5.4.4 程序界面 103

第6章 原始套接字 106

6.1 使用原始套接字 106

6.2 ICMP编程 106

6.2.1 ICMP与校验和的计算 107

6.2.2 Ping程序实例 109

6.2.3 路由跟踪 111

6.3 使用IP头包含选项 113

6.3.1 IP数据报格式 113

6.3.2 UDP数据报格式 115

6.3.3 原始UDP封包发送实例 117

6.4 网络嗅探器开发实例 118

6.4.1 嗅探器设计原理 118

6.4.2 网络嗅探器的具体实现 119

6.4.3 侦听局域网内的密码 121

6.5 TCP通信开发实例 122

6.5.1 创建一个原始套接字并设置IP头选项 122

6.5.2 构造IP头和TCP头 123

6.5.3 发送原始套接字数据报 124

6.5.4 接收数据 127

第7章 Winsock服务提供者接口(SPI) 128

7.1 SPI概述 128

7.2 Winsock协议目录 129

7.2.1 协议特性 130

7.2.2 使用Winsock API函数枚举协议 130

7.2.3 使用Winsock SPI函数枚举协议 132

7.3 分层服务提供者(LSP) 133

7.3.1 运行原理 133

7.3.2 安装LSP 134

7.3.3 移除LSP 138

7.3.4 编写LSP 139

7.3.5 LSP实例 140

7.4 基于SPI的数据报过滤实例 144

7.5 基于Winsock的网络聊天室开发 149

7.5.1 服务端 149

7.5.2 客户端 149

7.5.3 聊天室程序的设计说明 149

7.5.4 核心代码分析 150

第8章 Windows网络驱动接口标准(NDIS)和协议驱动的开发 153

8.1 核心层网络驱动 153

8.1.1 Windows 2000及其后产品的网络体系结构 153

8.1.2 NDIS网络驱动程序 154

8.1.3 网络驱动开发环境 155

8.2 WDM驱动开发基础 158

8.2.1 UNICODE字符串 158

8.2.2 设备对象 158

8.2.3 驱动程序的基本结构 160

8.2.4 I/O请求包(I/O request packet,IRP)和I/O堆栈 160

8.2.5 完整驱动程序示例 163

8.2.6 扩展派遣接口 165

8.2.7 应用举例(进程诊测实例) 167

8.3 开发NDIS网络驱动预备知识 173

8.3.1 中断请求级别(Interrupt Request Level,IRQL) 173

8.3.2 旋转锁(Spin Lock) 173

8.3.3 双链表 173

8.3.4 封包结构 174

8.4 NDIS协议驱动 175

8.4.1 注册协议驱动 175

8.4.2 打开下层协议驱动的适配器 176

8.4.3 协议驱动的封包管理 177

8.4.4 在协议驱动中接收数据 178

8.4.5 从协议驱动发送封包 178

8.5 NDIS协议驱动开发实例 179

8.5.1 总体设计 179

8.5.2 NDIS协议驱动的初始化、注册和卸载 180

8.5.3 下层NIC的绑定和解除绑定 183

8.5.4 发送数据 190

8.5.5 接收数据 191

8.5.6 用户IOCTL处理 196

第9章 网络扫描与检测技术 203

9.1 网络扫描基础知识 203

9.1.1 以太网数据帧 203

9.1.2 ARP 204

9.1.3 ARP格式 206

9.1.4 SendARP函数 207

9.2 原始以太封包的发送 207

9.2.1 安装协议驱动 208

9.2.2 协议驱动用户接口 208

9.2.3 发送以太封包的测试程序 213

9.3 局域网计算机扫描 214

9.3.1 管理原始ARP封包 214

9.3.2 ARP扫描示例 217

9.4 互联网计算机扫描 220

9.4.1 端口扫描原理 220

9.4.2 半开端口扫描实现 221

9.5 ARP欺骗原理与实现 225

9.5.1 IP欺骗的用途和实现原理 225

9.5.2 IP地址冲突 226

9.5.3 ARP欺骗示例 227

第10章 点对点(P2P)网络通信技术 230

10.1 NAT穿越概述 230

10.2 一般概念 231

10.2.1 NAT术语 231

10.2.2 中转 231

10.2.3 反向连接 232

10.3 UDP打洞 232

10.3.1 中心服务器 232

10.3.2 建立点对点会话 233

10.3.3 公共NAT后面的节点 233

10.3.4 不同NAT后面的节点 234

10.3.5 多级NAT后面的节点 235

10.3.6 UDP空闲超时 236

10.4 TCP打洞 236

10.4.1 套接字和TCP端口重用 236

10.4.2 打开点对点的TCP流 237

10.4.3 应用程序看到的行为 238

10.4.4 同步TCP打开 238

10.5 Internet点对点通信实例 239

10.5.1 总体设计 239

10.5.2 定义P2P通信协议 239

10.5.3 客户方程序 240

10.5.4 服务器方程序 250

10.5.5 测试程序 253

第11章 核心层网络封包截获技术 256

11.1 Windows网络数据和封包过滤概述 256

11.1.1 Windows网络系统体系结构图 256

11.1.2 用户模式下的网络数据过滤 257

11.1.3 内核模式下的网络数据过滤 258

11.2 中间层网络驱动PassThru 258

11.2.1 PassThruNDIS中间层驱动简介 258

11.2.2 编译和安装PassThru驱动 259

11.3 扩展PassThru NDIS IM驱动——添加IOCTL接口 259

11.3.1 扩展之后的PassThru驱动(PassThruEx)概况 259

11.3.2 添加基本的DeviceIoControl接口 260

11.3.3 添加绑定枚举功能 264

11.3.4 添加ADAPT结构的引用计数 268

11.3.5 适配器句柄的打开/关闭函数 269

11.3.6 句柄事件通知 274

11.3.7 查询和设置适配器的OID信息 275

11.4 扩展PassThru NDIS IM驱动——添加过滤规则 281

11.4.1 需要考虑的事项 282

11.4.2 过滤相关的数据结构 282

11.4.3 过滤列表 284

11.4.4 网络活动状态 285

11.4.5 IOCTL控制代码 285

11.4.6 过滤数据 288

11.5 核心层过滤实例 295

第12章 Windows网络防火墙开发技术 297

12.1 防火墙技术概述 297

12.2 金羽(Phoenix)个人防火墙浅析 298

12.2.1 金羽(Phoenix)个人防火墙简介 298

12.2.2 金羽(Phoenix)个人防火墙总体设计 299

12.2.3 金羽(Phoenix)个人防火墙总体结构 300

12.3 开发前的准备 300

12.3.1 常量的定义 300

12.3.2 访问规则 302

12.3.3 会话结构 303

12.3.4 文件结构 303

12.3.5 UNICODE支持 308

12.4 应用层DLL模块 309

12.4.1 DLL工程框架 309

12.4.2 共享数据和IO控制 313

12.4.3 访问控制列表ACL(Access List) 315

12.4.4 查找应用程序访问权限的过程 318

12.4.5 类的接口——检查函数 320

12.5 核心层SYS模块 322

12.6 主模块工程 324

12.6.1 I/O控制类 324

12.6.2 主应用程序类 326

12.6.3 主对话框中的属性页 328

12.6.4 主窗口类 329

12.7 防火墙页面 331

12.7.1 网络访问监视页面 331

12.7.2 应用层过滤规则页面 334

12.7.3 核心层过滤规则页面 342

12.7.4 系统设置页面 347

第13章 IP帮助函数 350

13.1 IP配置信息 350

13.1.1 获取网络配置信息 350

13.1.2 管理网络接口 351

13.1.3 管理IP地址 355

13.2 获取网络状态信息 357

13.2.1 获取TCP连接表 358

13.2.2 获取UDP监听表 360

13.2.3 获取IP统计数据 362

13.3 路由管理 368

13.3.1 获取路由表 368

13.3.2 管理特定路由 371

13.3.3 修改默认网关的例子 371

13.4 ARP表管理 372

13.4.1 获取ARP表 372

13.4.2 添加ARP入口 373

13.4.3 删除ARP入口 373

13.4.4 打印ARP表的例子 373

13.5 进程网络活动监视实例 376

13.5.1 获取通信的进程终端 377

13.5.2 Netstate源程序代码 378

第14章 E-mail协议及其编程 382

14.1 概述 382

14.2 电子邮件介绍 383

14.2.1 电子邮件Internet的地址 383

14.2.2 Internet邮件系统 383

14.2.3 电子邮件的信头结构及分析 384

14.3 SMTP协议原理介绍 386

14.3.1 SMTP的原理分析 386

14.3.2 SMTP工作机制 386

14.3.3 SMTP协议命令码和工作原理 387

14.3.4 SMTP协议通信模型 388

14.3.5 SMTP协议的命令和应答 389

14.4 POP3协议原理介绍 390

14.4.1 POP3协议简介 390

14.4.2 POP3工作原理 391

14.4.3 POP3命令原始码 392

14.4.4 POP3会话实例 397

14.5 实例分析与程序设计 398

14.5.1 总界面设计 398

14.5.2 SMTP客户端设计 399

14.5.3 POP3客户端设计 410

第15章 Telnet协议及其编程 417

15.1 概述 417

15.2 Telnet协议使用 417

15.3 Telnet协议原理 419

15.4 实例分析与程序设计 421

第16章 FTP协议及其编程 429

16.1 概述 429

16.1.1 背景 429

16.1.2 下载和上传 429

16.1.3 登录和匿名 430

16.1.4 目标 430

16.1.5 缺点 430

16.2 FTP工作原理 430

16.3 FTP使用模式 432

16.4 FTP的常用命令与响应 433

16.5 实例分析与程序设计 435

第17章 多平台同步随身阅读——Send To Kindle的一种实现方式 448

17.1 Amazon Kindle简介 448

17.2 多平台同步阅读概述 449

17.3 Send To Kindle PC版简介 450

17.4 推送到Kindle的工作原理 451

17.5 Kindle对邮箱附件的要求 452

17.6 使用附件方式发送待阅读文章到Kindle 452

17.7 系统右键菜单集成 462