第1章 概述
1.1 几个约定
1.2 本书其余部分的内容介绍
1.3 客户端—服务器结构
1.4 对基本套接字API的回顾
1.5 小结
第2章 基本概念
2.1 技巧1:理解面向连接和无连接协议之间的区别
2.2 技巧2:理解子网和CIDR的概念
2.2.1 分类编址
2.2.2 子网划分
2.2.3 CIDR
2.2.4 子网划分和CIDR的状态
2.2.5 小结
2.3 技巧3:理解私有地址和NAT
2.4 技巧4:开发并使用应用程序“框架”
2.4.1 TCP服务器框架
2.4.2 TCP客户端框架
2.4.3 UDP服务器框架
2.4.4 UDP客户端框架
2.4.5 小结
2.5 技巧5:套接字接口比XTI/TLI更好用
2.6 技巧6:记住,TCP是一种流协议
2.7 技巧7:不要低估TCP的性能
2.7.1 UDP源程序与接收程序
2.7.2 TCP源程序及接收程序
2.7.3 小结
2.8 技巧8:避免重新编写TCP
2.9 技巧9:要认识到TCP是一个可靠的,但并不绝对可靠的协议
2.9.1 可靠性——是什么,不是什么
2.9.2 故障模式
2.9.3 网络中断
2.9.4 对等实体崩溃
2.9.5 对等实体的主机崩溃
2.9.6 小结
2.10 技巧10:记住,TCP/IP不是轮询的
2.10.1 保持活跃
2.10.2 心跳信号
2.10.3 另一个例子
2.10.4 小结
2.11 技巧11:提防对等实体的不友好动作
2.11.1 检测客户端的终止
2.11.2 检测无效输入
2.11.3 小结
2.12 技巧12:成功的LAN策略不一定能推广到WAN中去
2.12.1 性能问题举例
2.12.2 隐含错误举例
2.12.3 小结
2.13 技巧13:了解协议是怎样工作的
2.14 技巧14:不要把OSI七层参考模型太当回事
2.14.1 OSI模型
2.14.2 TCP/IP模型
2.14.3 小结
第3章 构建高效且健壮的网络程序
3.1 技巧15:理解TCP的写操作
3.1.1 从应用程序的角度看写操作
3.1.2 从TCP角度看写操作
3.1.3 小结
3.2 技巧16:理解TCP的有序释放操作
3.2.1 shutdown调用
3.2.2 有序释放
3.2.3 小结
3.3 技巧17:考虑用inetd来装载应用程序
3.3.1 TCP服务器
3.3.2 UDP服务器
3.3.3 小结
3.4 技巧18:考虑用tcpmux为服务器“分配”知名端口
3.5 技巧19:考虑使用两条TCP连接
3.5.1 单连接结构
3.5.2 双连接架构
3.5.3 小结
3.6 技巧20:使应用程序成为事件驱动的(1)
3.7 技巧21:使应用程序成为事件驱动的(2)
3.8 技巧22:不要用TIME-WAIT暗杀来关闭一条连接
3.8.1 它是什么
3.8.2 为什么要使用它
3.8.3 TIME-WAIT暗杀
3.8.4 小结
3.9 技巧23:服务器应该设置SO_REUSEADDR选项
3.10 技巧24:可能的话,使用一个大规模的写操作,而不是多个小规模的写操作
3.10.1 禁用Nagle算法
3.10.2 将写操作合并起来
3.10.3 小结
3.11 技巧25:理解如何使connect调用超时
3.11.1 使用告警
3.11.2 使用select
3.11.3 小结
3.12 技巧26:避免数据复制
3.12.1 共享内存缓冲区
3.12.2 一个共享内存缓冲区系统
3.12.3 一个UNIX实现
3.12.4 一个Windows实现
3.12.5 小结
3.13 技巧27:使用前将结构sockadddr_in清零
3.14 技巧28:不要忘记字节的性别
3.15 技巧29:不要将IP地址或端口号硬编入应用程序中
3.16 技巧30:理解已连接的UDP套接字
3.17 技巧31:记住,并不是所有程序都是用C编写的
3.18 技巧32:理解缓冲区长度带来的影响
第4章 工具和资源
4.1 技巧33:熟悉ping实用工具
4.2 技巧34:学习使用tcpdump或类似的工具
4.2.1 tcpdump是如何工作的
4.2.2 使用tcpdump
4.2.3 tcpdump的输出
4.2.4 小结
4.3 技巧35:学习使用traceroute
4.3.1 traceroute是如何工作的
4.3.2 Windows TRACERT
4.3.3 小结
4.4 技巧36:学习使用ttcp
4.5 技巧37:学习使用lsof
4.6 技巧38:学习使用netstat
4.6.1 活动套接字
4.6.2 接口
4.6.3 路由表
4.6.4 协议统计
4.6.5 Windows版的netstat
4.6.6 小结
4.7 技巧39:学习使用系统中的调用追踪工具
4.7.1 过早终止
4.7.2 ttcp性能问题
4.7.3 小结
4.8 技巧40:构建并使用捕获ICMP报文的工具
4.8.1 读取ICMP报文
4.8.2 打印ICMP报文
4.8.3 小结
4.9 技巧41:读Stevens的书
4.9.1 《TCP/IP详解》丛书
4.9.2 《UNIX网络编程》丛书
4.10 技巧42:阅读代码
4.11 技巧43:访问RFC编辑者的页面
4.12 技巧44:经常访问新闻组
附录A 各种UNIX代码
附录B 各种Windows代码
参考书目
索引
^ 收 起