- 机械工业出版社
- 9787111740513
- 2-3
- 49260367-5
- 16开
- 2024-11-29
- 工学
- 计算机类
- 网络空间安全
- 本科
内容简介
目录
目 录
前言
教学和阅读建议
第1章 网络应用程序设计基础 1
1.1 计算机网络基础 1
1.1.1 协议层次和服务模型 1
1.1.2 网络程序的寻址方式 4
1.2 分布式网络应用程序 6
1.3 网络编程方法概览 7
1.3.1 面向应用的网络编程方法 7
1.3.2 基于TCP/IP协议栈的网络
编程方法 8
1.3.3 面向原始帧的网络编程方法 9
习题 10
第2章 网络程序通信模型 11
2.1 网络应用程序与网络通信之间的
关系 11
2.2 会聚点问题 12
2.3 客户/服务器模型 13
2.3.1 基本概念 13
2.3.2 客户与服务器的关系 14
2.3.3 服务器软件的特点与分类 16
2.3.4 客户/服务器模型的优缺点 18
2.4 浏览器/服务器模型 19
2.4.1 基本概念 19
2.4.2 浏览器/服务器模型的工作
过程 19
2.4.3 浏览器/服务器模型的
优缺点 20
2.5 P2P模型 20
2.5.1 基本概念 20
2.5.2 P2P网络的拓扑结构 21
习题 23
实验 23
第3章 网络数据的内容与形态 24
3.1 整数的长度与符号 24
3.1.1 整数的长度 24
3.1.2 整数的符号 25
3.2 字节顺序 25
3.3 结构的对齐与填充 27
3.4 网络数据传输的形态 30
3.5 字符编码 30
3.5.1 字符集传输编码标准 31
3.5.2 文本化传输编码标准 32
3.6 数据校验 34
习题 35
第4章 协议软件接口 37
4.1 TCP/IP协议软件接口 37
4.1.1 协议软件接口的位置 37
4.1.2 协议软件接口的功能 37
4.2 网络通信的基本方法 38
4.2.1 如何访问TCP/IP 38
4.2.2 UNIX中的基本I/O功能 39
4.2.3 实现网间进程通信必须解决的问题 39
4.3 套接字 40
4.3.1 套接字编程接口的起源与
发展 40
4.3.2 套接字的抽象概念 40
4.3.3 套接字接口层的位置与内容 41
4.3.4 套接字通信 43
4.4 Windows套接字 43
4.4.1 Windows Sockets规范 43
4.4.2 Windows Sockets的版本 44
4.4.3 Windows Sockets的组成 46
4.5 WinSock编程接口 46
4.5.1 WinSock API 46
4.5.2 Windows Sockets DLL的
初始化和释放 49
4.5.3 WinSock的地址描述 51
4.5.4 套接字选项和I/O控制命令 54
4.5.5 处理WinSock的错误 58
习题 58
实验 58
第5章 流式套接字编程 59
5.1 TCP:传输控制协议的要点 59
5.1.1 TCP的传输特点 59
5.1.2 TCP的首部 60
5.1.3 TCP连接的建立与终止 61
5.2 流式套接字编程模型 64
5.2.1 流式套接字编程的适用
场合 64
5.2.2 流式套接字的通信过程 64
5.2.3 流式套接字编程的交互
模型 65
5.2.4 流式套接字服务器的工作
原理 66
5.3 基本函数与操作 67
5.3.1 创建和关闭套接字 67
5.3.2 指定地址 69
5.3.3 连接套接字 71
5.3.4 数据传输 73
5.4 编程示例 74
5.4.1 基于流式套接字的回射客户端
编程操作 74
5.4.2 基于流式套接字的回射服务器
端编程操作 80
5.5 TCP的流传输控制 86
5.5.1 TCP的流传输特点 86
5.5.2 使用TCP发送和接收数据时的缓存 87
5.5.3 正确处理流数据的接收 90
5.5.4 接收定长和变长数据 91
5.6 面向连接程序的可靠性保护 96
5.6.1 发送成功不等于发送有效 96
5.6.2 正确处理TCP的失败模式 99
5.6.3 检测无即时通知的死连接 104
5.6.4 顺序释放连接 106
5.7 提高面向连接程序的传输效率 110
5.7.1 避免TCP传输控制对性能的
影响 110
5.7.2 设置合适的缓冲区大小 114
习题 116
实验 116
第6章 数据报套接字编程 117
6.1 UDP:用户数据报协议的要点 117
6.1.1 使用TCP传输数据的缺点 117
6.1.2 UDP的传输特点 118
6.1.3 UDP的首部 118
6.2 数据报套接字编程模型 119
6.2.1 数据报套接字编程的适用
场合 119
6.2.2 数据报套接字的通信过程 120
6.2.3 数据报套接字编程的交互
模型 120
6.2.4 数据报套接字服务器的工作
原理 121
6.2.5 数据报套接字的使用模式 122
6.3 基本函数与操作 124
6.3.1 创建和关闭套接字 124
6.3.2 指定地址 124
6.3.3 数据传输 124
6.4 编程示例 125
6.4.1 基于数据报套接字的回射
客户端编程操作 126
6.4.2 基于数据报套接字的回射
服务器端编程操作 128
6.5 提高无连接程序的可靠性 132
6.5.1 UDP的不可靠性问题 132
6.5.2 排除噪声数据 133
6.5.3 增加错误检测功能 134
6.5.4 判断未开放的服务 138
6.5.5 避免流量溢出 138
6.6 无连接服务器的并发性处理 139
6.6.1 循环无连接服务器 139
6.6.2 并发无连接服务器 139
习题 141
实验 141
第7章 原始套接字编程 142
7.1 原始套接字的功能 142
7.2 原始套接字编程模型 143
7.2.1 原始套接字编程的适用
场合 143
7.2.2 原始套接字的通信过程 144
7.3 原始套接字的创建、输入与输出 145
7.3.1 创建原始套接字 145
7.3.2 使用原始套接字接收数据 146
7.3.3 使用原始套接字发送数据 149
7.4 编程示例 150
7.4.1 使用原始套接字实现ping 150
7.4.2 使用原始套接字实现数据包
捕获 156
7.5 Windows对原始套接字的限制 160
习题 161
实验 161
第8章 网络通信中的I/O操作 162
8.1 I/O设备与I/O操作 162
8.1.1 I/O设备 162
8.1.2 网络通信中的I/O等待 163
8.1.3 套接字的I/O模式 164
8.2 阻塞I/O模型 165
8.2.1 阻塞I/O模型的编程框架 165
8.2.2 阻塞I/O模型的评价 168
8.3 非阻塞I/O模型 168
8.3.1 非阻塞I/O模型的相关
函数 168
8.3.2 非阻塞I/O模型的编程
框架 169
8.3.3 非阻塞I/O模型的评价 173
8.4 I/O复用模型 173
8.4.1 I/O复用模型的相关函数 173
8.4.2 I/O复用模型的编程框架 174
8.4.3 I/O复用模型的评价 178
8.5 基于消息的WSAAsyncSelect
模型 179
8.5.1 Windows的消息机制与
使用 179
8.5.2 WSAAsyncSelect模型的
相关函数 186
8.5.3 WSAAsyncSelect模型的
编程框架 188
8.5.4 WSAAsyncSelect模型的
评价 198
8.6 基于事件的WSAEventSelect模型 198
8.6.1 Windows的事件机制与
使用 198
8.6.2 WSAEventSelect模型的
相关函数 199
8.6.3 WSAEventSelect模型的
编程框架 202
8.6.4 WSAEventSelect模型的
评价 206
8.7 重叠I/O模型 206
8.7.1 重叠I/O的概念 206
8.7.2 重叠I/O模型的相关函数 207
8.7.3 重叠I/O模型的编程框架 211
8.7.4 重叠I/O模型的评价 220
8.8 完成端口模型 220
8.8.1 完成端口的相关概念 220
8.8.2 完成端口模型的相关函数 222
8.8.3 完成端口模型的编程框架 224
8.8.4 完成端口模型的评价 229
习题 230
实验 230
第9章 Npcap编程 231
9.1 Npcap概述 231
9.2 Npcap的结构 233
9.2.1 Npcap的体系结构 233
9.2.2 网络驱动程序接口规范 234
9.2.3 网络组包过滤模块 236
9.2.4 Packet.dll 239
9.2.5 wpcap.dll 239
9.3 Npcap编程环境的配置 240
9.3.1 下载Npcap 240
9.3.2 安装Npcap 240
9.3.3 在Visual Studio环境下引入Npcap 241
9.4 wpcap.dll的常用数据结构和函数 243
9.4.1 wpcap.dll的常用数据结构 243
9.4.2 wpcap.dll的常用函数 245
9.4.3 wpcap.dll的工作流程 245
9.5 wpcap.dll编程示例—捕获分析
UDP数据 246
9.6 Packet.dll的常用数据结构和函数 258
9.6.1 Packet.dll的常用数据结构 258
9.6.2 Packet.dll的常用函数 260
9.6.3 Packet.dll的工作流程 261
9.7 Packet.dll编程示例—生成网络
流量 262
习题 269
实验 269
第10章 加密通信 270
10.1 常用的安全协议 270
10.1.1 网络层安全协议IPSec 270
10.1.2 传输层安全协议
SSL/TLS 280
10.2 加密通信的基本过程 288
10.2.1 参数协商 289
10.2.2 加密通信 290
10.3 编程示例 291
10.3.1 参数协商过程 291
10.3.2 加密通信过程 311
习题 316
实验 316
附录 Windows Sockets 错误码 317
参考文献 323
前言
教学和阅读建议
第1章 网络应用程序设计基础 1
1.1 计算机网络基础 1
1.1.1 协议层次和服务模型 1
1.1.2 网络程序的寻址方式 4
1.2 分布式网络应用程序 6
1.3 网络编程方法概览 7
1.3.1 面向应用的网络编程方法 7
1.3.2 基于TCP/IP协议栈的网络
编程方法 8
1.3.3 面向原始帧的网络编程方法 9
习题 10
第2章 网络程序通信模型 11
2.1 网络应用程序与网络通信之间的
关系 11
2.2 会聚点问题 12
2.3 客户/服务器模型 13
2.3.1 基本概念 13
2.3.2 客户与服务器的关系 14
2.3.3 服务器软件的特点与分类 16
2.3.4 客户/服务器模型的优缺点 18
2.4 浏览器/服务器模型 19
2.4.1 基本概念 19
2.4.2 浏览器/服务器模型的工作
过程 19
2.4.3 浏览器/服务器模型的
优缺点 20
2.5 P2P模型 20
2.5.1 基本概念 20
2.5.2 P2P网络的拓扑结构 21
习题 23
实验 23
第3章 网络数据的内容与形态 24
3.1 整数的长度与符号 24
3.1.1 整数的长度 24
3.1.2 整数的符号 25
3.2 字节顺序 25
3.3 结构的对齐与填充 27
3.4 网络数据传输的形态 30
3.5 字符编码 30
3.5.1 字符集传输编码标准 31
3.5.2 文本化传输编码标准 32
3.6 数据校验 34
习题 35
第4章 协议软件接口 37
4.1 TCP/IP协议软件接口 37
4.1.1 协议软件接口的位置 37
4.1.2 协议软件接口的功能 37
4.2 网络通信的基本方法 38
4.2.1 如何访问TCP/IP 38
4.2.2 UNIX中的基本I/O功能 39
4.2.3 实现网间进程通信必须解决的问题 39
4.3 套接字 40
4.3.1 套接字编程接口的起源与
发展 40
4.3.2 套接字的抽象概念 40
4.3.3 套接字接口层的位置与内容 41
4.3.4 套接字通信 43
4.4 Windows套接字 43
4.4.1 Windows Sockets规范 43
4.4.2 Windows Sockets的版本 44
4.4.3 Windows Sockets的组成 46
4.5 WinSock编程接口 46
4.5.1 WinSock API 46
4.5.2 Windows Sockets DLL的
初始化和释放 49
4.5.3 WinSock的地址描述 51
4.5.4 套接字选项和I/O控制命令 54
4.5.5 处理WinSock的错误 58
习题 58
实验 58
第5章 流式套接字编程 59
5.1 TCP:传输控制协议的要点 59
5.1.1 TCP的传输特点 59
5.1.2 TCP的首部 60
5.1.3 TCP连接的建立与终止 61
5.2 流式套接字编程模型 64
5.2.1 流式套接字编程的适用
场合 64
5.2.2 流式套接字的通信过程 64
5.2.3 流式套接字编程的交互
模型 65
5.2.4 流式套接字服务器的工作
原理 66
5.3 基本函数与操作 67
5.3.1 创建和关闭套接字 67
5.3.2 指定地址 69
5.3.3 连接套接字 71
5.3.4 数据传输 73
5.4 编程示例 74
5.4.1 基于流式套接字的回射客户端
编程操作 74
5.4.2 基于流式套接字的回射服务器
端编程操作 80
5.5 TCP的流传输控制 86
5.5.1 TCP的流传输特点 86
5.5.2 使用TCP发送和接收数据时的缓存 87
5.5.3 正确处理流数据的接收 90
5.5.4 接收定长和变长数据 91
5.6 面向连接程序的可靠性保护 96
5.6.1 发送成功不等于发送有效 96
5.6.2 正确处理TCP的失败模式 99
5.6.3 检测无即时通知的死连接 104
5.6.4 顺序释放连接 106
5.7 提高面向连接程序的传输效率 110
5.7.1 避免TCP传输控制对性能的
影响 110
5.7.2 设置合适的缓冲区大小 114
习题 116
实验 116
第6章 数据报套接字编程 117
6.1 UDP:用户数据报协议的要点 117
6.1.1 使用TCP传输数据的缺点 117
6.1.2 UDP的传输特点 118
6.1.3 UDP的首部 118
6.2 数据报套接字编程模型 119
6.2.1 数据报套接字编程的适用
场合 119
6.2.2 数据报套接字的通信过程 120
6.2.3 数据报套接字编程的交互
模型 120
6.2.4 数据报套接字服务器的工作
原理 121
6.2.5 数据报套接字的使用模式 122
6.3 基本函数与操作 124
6.3.1 创建和关闭套接字 124
6.3.2 指定地址 124
6.3.3 数据传输 124
6.4 编程示例 125
6.4.1 基于数据报套接字的回射
客户端编程操作 126
6.4.2 基于数据报套接字的回射
服务器端编程操作 128
6.5 提高无连接程序的可靠性 132
6.5.1 UDP的不可靠性问题 132
6.5.2 排除噪声数据 133
6.5.3 增加错误检测功能 134
6.5.4 判断未开放的服务 138
6.5.5 避免流量溢出 138
6.6 无连接服务器的并发性处理 139
6.6.1 循环无连接服务器 139
6.6.2 并发无连接服务器 139
习题 141
实验 141
第7章 原始套接字编程 142
7.1 原始套接字的功能 142
7.2 原始套接字编程模型 143
7.2.1 原始套接字编程的适用
场合 143
7.2.2 原始套接字的通信过程 144
7.3 原始套接字的创建、输入与输出 145
7.3.1 创建原始套接字 145
7.3.2 使用原始套接字接收数据 146
7.3.3 使用原始套接字发送数据 149
7.4 编程示例 150
7.4.1 使用原始套接字实现ping 150
7.4.2 使用原始套接字实现数据包
捕获 156
7.5 Windows对原始套接字的限制 160
习题 161
实验 161
第8章 网络通信中的I/O操作 162
8.1 I/O设备与I/O操作 162
8.1.1 I/O设备 162
8.1.2 网络通信中的I/O等待 163
8.1.3 套接字的I/O模式 164
8.2 阻塞I/O模型 165
8.2.1 阻塞I/O模型的编程框架 165
8.2.2 阻塞I/O模型的评价 168
8.3 非阻塞I/O模型 168
8.3.1 非阻塞I/O模型的相关
函数 168
8.3.2 非阻塞I/O模型的编程
框架 169
8.3.3 非阻塞I/O模型的评价 173
8.4 I/O复用模型 173
8.4.1 I/O复用模型的相关函数 173
8.4.2 I/O复用模型的编程框架 174
8.4.3 I/O复用模型的评价 178
8.5 基于消息的WSAAsyncSelect
模型 179
8.5.1 Windows的消息机制与
使用 179
8.5.2 WSAAsyncSelect模型的
相关函数 186
8.5.3 WSAAsyncSelect模型的
编程框架 188
8.5.4 WSAAsyncSelect模型的
评价 198
8.6 基于事件的WSAEventSelect模型 198
8.6.1 Windows的事件机制与
使用 198
8.6.2 WSAEventSelect模型的
相关函数 199
8.6.3 WSAEventSelect模型的
编程框架 202
8.6.4 WSAEventSelect模型的
评价 206
8.7 重叠I/O模型 206
8.7.1 重叠I/O的概念 206
8.7.2 重叠I/O模型的相关函数 207
8.7.3 重叠I/O模型的编程框架 211
8.7.4 重叠I/O模型的评价 220
8.8 完成端口模型 220
8.8.1 完成端口的相关概念 220
8.8.2 完成端口模型的相关函数 222
8.8.3 完成端口模型的编程框架 224
8.8.4 完成端口模型的评价 229
习题 230
实验 230
第9章 Npcap编程 231
9.1 Npcap概述 231
9.2 Npcap的结构 233
9.2.1 Npcap的体系结构 233
9.2.2 网络驱动程序接口规范 234
9.2.3 网络组包过滤模块 236
9.2.4 Packet.dll 239
9.2.5 wpcap.dll 239
9.3 Npcap编程环境的配置 240
9.3.1 下载Npcap 240
9.3.2 安装Npcap 240
9.3.3 在Visual Studio环境下引入Npcap 241
9.4 wpcap.dll的常用数据结构和函数 243
9.4.1 wpcap.dll的常用数据结构 243
9.4.2 wpcap.dll的常用函数 245
9.4.3 wpcap.dll的工作流程 245
9.5 wpcap.dll编程示例—捕获分析
UDP数据 246
9.6 Packet.dll的常用数据结构和函数 258
9.6.1 Packet.dll的常用数据结构 258
9.6.2 Packet.dll的常用函数 260
9.6.3 Packet.dll的工作流程 261
9.7 Packet.dll编程示例—生成网络
流量 262
习题 269
实验 269
第10章 加密通信 270
10.1 常用的安全协议 270
10.1.1 网络层安全协议IPSec 270
10.1.2 传输层安全协议
SSL/TLS 280
10.2 加密通信的基本过程 288
10.2.1 参数协商 289
10.2.2 加密通信 290
10.3 编程示例 291
10.3.1 参数协商过程 291
10.3.2 加密通信过程 311
习题 316
实验 316
附录 Windows Sockets 错误码 317
参考文献 323








