第一章 绪论 1
1.1 UNIX操作系统 1
1.2 计算机网络 2
1.3 网络编程和套接字 3
1.4 本书的组织 3
第二章 UNIX系统下常用的C语言开发工具 4
2.1 版本管理工具——sccs 4
2.2 源程序静态检查工具--lint 9
2.3 编译器——cc 11
2.4 程序组维护工具——make 15
2.5 调试工具——dbx 19
2.6 库管理工具——ar 24
2.7 小结 25
第一部分 Socket程序设计 26
第三章 网络体系结构概述 26
3.1 分层结构与协议 26
3.2 开放系统互联参考模型OSI/ISO 27
3.3 TCP/IP参考模型 28
3.4 UNIX网络编程概述 30
3.5 小结 31
第四章 面向传输层的Socket编程 32
4.1 TCP协议的实现机制 32
4.2 面向连接的Socket编程 34
4.2.1 Echo客户端例程 34
4.2.2 Echo服务端例程 39
4.2.3 进程阻塞 42
4.2.4 并发服务端程序 43
4.3 TCP状态 48
4.4 Socket选项 51
4.4.1 应用层选项 51
4.4.2 传输层选项 54
4.4.3 网际层选项 56
4.4.4 其他选项 57
4.5 无连接的Socket编程 57
4.5.1 UDP编程概述 58
4.5.2 UDP编程的第一步:Talk(谈话)程序 59
4.5.3 改进Talk程序:过滤数据报 62
4.5.4 进一步改进Talk程序:超时机制 63
4.5.5 使UDP更加可靠 67
4.6 小结 68
第五章 面向网际层和数据链路层的Socket编程 70
5.1 网际层综述 70
5.2 面向IP层的Socket编程 72
5.2.1 IP数据报报头格式 73
5.2.2 ICMP数据报格式 80
5.3 数据链路层简述 88
5.4 面向数据链路层的Socket编程 89
5.5 小结 95
第六章 Socket高级编程专题 96
6.1 多路复用 96
6.1.1 多路复用的基本原理 96
6.1.2 使用多路复用的UDP Talk程序 98
6.1.3 多路复用应用举例:Chat 100
6.1.4 多路复用的另一种方式:poll() 107
6.2.1 非阻塞Socket的基本原理 108
6.2 非阻塞Socket 108
6.2.2 非阻塞UDP Socket例程——Talk 109
6.2.3 非阻塞TCP Socket例程——echo客户端程序 112
6.3 信号驱动输入输出 116
6.3.1 信号驱动I/O的基本原理 116
6.3.2 信号驱动I/O的UDP Talk 117
6.3.3 信号驱动I/O在TCP中的应用 122
6.4 名字服务 127
6.4.1 名字服务的原理 127
6.4.2 名字服务例程 131
6.5 广播与群播 133
6.5.1 广播的基本原理 133
6.5.2 广播例程 135
6.5.3 群播的基本原理 138
6.5.4 群播例程 139
6.6 OOB数据 141
6.6.1 OOB数据的基本原理 142
6.6.2 OOB数据应用例程 146
6.7 小结 155
第七章 Socket实用编程 157
7.1 进程间通讯 157
7.1.1 用Internet协议族的Socket实现IPC 158
7.1.2 用UNIX协议族的Socket实现IPC 162
7.2 客户/服务器程序设计 171
7.2.1 用多进程机制实现服务程序 171
7.2.2 用多线程机制实现服务程序 177
7.3 守护进程 181
7.3.1 守护进程的设计原理 182
7.3.2 inetd守护进程简介 184
7.4 平凡文件传输协议 187
7.4.1 TFTP数据报格式 188
7.4.2 “发送”和“接收”请求的处理 190
7.4.3 服务方和客户端的通讯 190
7.4.4 文件传输格式 191
7.4.5 TFTP协议的实现 191
7.5 小结 213
8.1 传输界面 214
第二部分 传输界面编程 214
第八章 传输界面编程综述 214
8.2 函数 216
8.2.1 初始化及绑定传输端点 216
8.2.2 建立连接 218
8.2.3 传输数据 221
8.2.4 释放连接 226
8.2.5 关闭传输端点 228
8.2.6 其他函数 229
8.3 状态转换 234
8.4 小结 238
第九章 传输界面编程 240
9.1 连接方式 240
9.2 非连接方式 254
9.3 传输界面编程与Socket编程对比 258
9.4 小结 260
第十章 流编程 261
10.1 流编程原理 261
10.2 流编程例程 263
10.3 小结 270
第三部分 RPC程序设计 271
第十一章 远程过程调用 271
11.1 RPC概述 271
11.2 RPC的原理和实现机制 273
11.2.1 RPC的实现机制 273
11.2.2 RPC的有关问题 274
11.3 XDR数据表示 275
11.3.1 XDR的工作原理 276
11.3.2 XDR流 277
11.3.3 XDR过滤器 279
11.4 RPC协议 283
11.4.1 RPC信息 283
11.4.2 鉴别协议 284
11.4.3 端口映射器程序协议 284
11.5 小结 285
12.1 RPC的远程过程定义 286
第十二章 RPC程序设计 286
12.2 高层RPC程序设计 287
12.3 低层RPC程序设计 300
12.3.1 传送句柄和客户句柄 306
12.3.2 server端库函数 307
12.3.3 client端库函数 308
12.3.4 server端的分派函数 310
12.4 鉴别机制的编程 312
12.5 RPC的其他特性 314
12.5.2 回叫RPC 315
12.5.1 无阻塞RPC 315
12.5.3 广播RPC 316
12.6 RPC语言编译器 317
12.6.1 低层RPC程序的自动生成 317
12.6.2 RPC语言 319
12.7 小结 320
附录A socket编程常见问题解答 321
附录B Internet上有关UNIX网络编程的资源 332
附录C 参考文献 334