目录 1
第1章 网络基础 1
1.1 TCP/IP简介 1
1.1.1 OSI模型与TCP/IP结构 1
1.1.2 TCP/IP基本概念 3
1.1.3 常用协议 7
1.1.4 进程/应用层协议 19
1.2 网络编程应考虑的问题 20
1.2.1 并发环境下的网络编程 20
1.2.2 异构环境下的网络编程 20
1.2.3 阻塞与非阻塞通信 21
1.2.4 服务类型的选择 22
1.2.5 差错处理 23
习题与思考题 24
第2章 基于NetBIOS的网络编程 25
2.1 NetBIOS概述 25
2.2 NetBIOS应用服务 27
2.2.1 NetBIOS名字 27
2.2.2 NetBIOS数据报 29
2.2.3 NetBIOS会话 29
2.2.4 NetBIOS一般命令 30
2.3 Ncb/Mcb 31
2.3.1 Ncb/Mcb域 31
2.3.2 NetBIOS命令调用 36
2.3.3 NetBIOS命令的完成 37
2.4 NetBIOS编程基础 38
2.5.2 广播式数据报程序 45
2.5.1 数据报通信模型 45
2.5 数据报通信程序设计 45
2.5.3 定向型数据报程序 51
2.6 会话通信程序设计 53
2.6.1 会话通信模型 53
2.6.2 服务器端程序 54
2.6.3 客户端程序 60
习题与思考题 64
第3章 WinSock基础 65
3.1 基本概念 65
3.1.1 套接字及类型 65
3.1.2 网间进程通信 66
3.1.3 服务方式 67
3.1.4 客户机/服务器模式 68
3.1.5 WinSock对Socket的扩充 69
3.2 WinSock编程原理 70
3.2.1 WinSock的启动和终止 70
3.2.2 错误检查和控制 70
3.2.3 WinSock编程模型 71
3.3 WinSock I/O模型 73
3.3.1 Select模型 73
3.3.2 WSAAsyncSelect模型 74
3.3.3 WSAEventSelect模型 75
3.4 WinSock 2的扩展特性 77
3.4.1 原始套接字 77
3.4.2 重叠I/O模型 78
3.4.3 服务质量(QoS) 78
3.5 套接字选项和I/O控制命令 80
3.5.1 套接字选项 80
3.5.2 I/O控制命令 82
习题与思考题 83
第4章 基本网络应用 84
4.1 获取计算机IP地址和主机名 84
4.1.1 实现原理 84
4.1.2 程序实现 85
4.2 获取网卡信息和子网掩码 87
4.2.1 实现原理 87
4.2.2 程序实现 89
4.3 获取计算机安装的协议 91
4.3.1 实现原理 91
4.3.2 程序实现 93
4.4 流套接字编程设计 95
4.4.1 实例一:模拟FTP功能 96
4.4.2 实例二:TCP实现客户机/服务器聊天 103
4.5 数据报套接字编程 111
习题与思考题 116
第5章 直接网络编程 117
5.1 原始套接字编程 117
5.1.1 概念 117
5.1.2 ICMP实现 118
5.1.3 Tracert 145
5.1.4 IP_HDRINCL的使用 145
5.2 基于Winpcap的网络数据包捕获技术 146
5.2.1 Winpcap简介 146
5.2.2 数据包捕获驱动器结构 148
5.2.3 数据包捕获驱动程序API的使用 150
5.2.4 数据包捕获函数库的使用 169
5.3 基于Libnet的网络数据包构造技术 201
5.3.1 Libnet简介 202
5.3.2 Libnet的使用方法 203
5.3.3 Libnet函数 205
5.3.4 应用程序示例 217
习题与思考题 231
第6章 高级网络编程 232
6.1 MFC概述 232
6.1.1 封装 232
6.1.2 继承 233
6.1.3 虚拟函数和动态约束 233
6.1.4 MFC的宏观框架体系 234
6.2 基于MFC Socket类的网络编程 234
6.2.1 CAsyncSocket类 234
6.2.2 CSocket类 243
6.2.3 基于MFC的Socket类的网络编程方法 253
6.3 多线程WinSock网络编程 256
6.3.1 多线程概论 256
6.3.2 基本线程操作函数 258
6.3.3 线程同步 260
6.3.4 多线程网络程序设计 268
习题与思考题 280
附录1 NetBIOS命令 281
附录2 NetBIOS命令返回值 294
附录3 WinSock1.1函数 297
附录4 WinSock 2函数 312
附录5 WinSock错误代码表 323
附录6 Tracert程序示例 327
参考文献 355