第一章 简介 1
一些约定 1
本书结构 2
客户端-服务器体系结构 4
基本的套接字API回顾 5
第二章 基本知识 15
技巧1 理解基于连接和无连接协议之间的差异 15
技巧2 理解子网和CIDR 20
技巧3 理解私有地址和NAT 30
技巧4 开发和使用应用程序“框架” 33
技巧5 选择套接字接口而不是XTI/TLI 48
技巧6 记住TCP是一个流协议 50
技巧7 不要低估TCP的性能 59
技巧8 不要彻底改造TCP 70
技巧9 注意TCP是可靠的协议但并非是不会出错的协议 73
技巧10 记住TCP/IP不是轮询 81
技巧11 为来自对等方的不合要求的行为做准备 98
技巧12 不要认为成功的LAN策略一定可以移植到WAN上 106
技巧13 学习协议是如何工作的 113
技巧14 不要把OSI七层参考模型看得太重要了 114
第三章 创建高效和健壮的网络程序 119
技巧15 理解TCP写操作 119
技巧16 理解TCP顺序释放操作 124
技巧17 考虑让inetd启动应用程序 132
技巧18 考虑让tcpmux“指定”服务器的已知端口 142
技巧19 考虑使用两个TCP连接 153
技巧20 考虑使应用程序事件驱动(1) 161
技巧21 考虑使应用程序事件驱动(2) 170
技巧22 不要使用TIME-WAIT ASSASSINATION关闭连接 179
技巧23 服务器应当设置SO_REUSEADDR选项 183
技巧24 尽量使用大型写操作代替多个小规模写操作 188
技巧25 理解如何使connect调用具有超时机制 195
技巧26 避免数据拷贝 202
技巧27 在使用之前置sockaddr_in为零 217
技巧28 不要忘记字节的性别 218
技巧29 不要在应用程序中对IP地址和端口号硬编码 221
技巧30 理解已连接UDP套接字 226
技巧31 记住这个世界并不全是C语言 230
技巧32 理解缓冲区大小的影响 235
第四章 工具和资源 239
技巧33 熟悉ping实用程序 239
技巧34 学会使用tcpdump或一个类似的工具 241
技巧35 学会如何使用traceroute 250
技巧36 学会使用ttcp 256
技巧37 学会使用lsof 260
技巧38 学会使用netstat 262
技巧39 学会使用系统调用跟踪工具 270
技巧40 创建和使用捕获ICMP消息的工具 277
技巧41 读Stevnes的书 286
技巧42 阅读代码 288
技巧43 访问RFC Editor主页 290
技巧44 经常访问新闻组 291
附录A 各种UNIX代码 293
etcp.h头文件 293
daemon函数 295
signal函数 296
附录B 各种W indows代码 298
Window兼容性函数 299