用TCP/IP进行网际互连第二卷
2008-10
电子工业
Douglas E. Comer,David L. Stevens
520
无
很荣幸Doug Comer给我这个机会,让我能在他的这本书第三版付印时与诸位探讨一些个人的想法。在过去的十年期间,Internet以惊人的速度发展着。:Internet上主机的数目从1989年的100000台发展到1998年的30 000 000台。在本书第二版出版的时候,连接到Internet的网络大。约有26000个。到1998年,这个数字大约在200 000到350 000之间,这还不包括那些利用互联网技术但未连接到公共网络上的专用内联网。
《用TCP/IP进行网际互连:设计、实现与内核(ANSI C版)(第3版)(第2卷)》是关于计算机网络的经典教材。全书共三卷。第二卷在第一卷介绍了TCP/IP基本概念的基础上,进一步详细讨论了TCWIP的实现细节。这一卷的突出特点是非常注重实际。作者利用程序代码实现了TCP/IP的每个技术细节,并且所有代码在书中均可找到,有助于读者深入了解并掌握TCP/IP的细节内容。书中附录分别给出了过程调用交叉参考表、程序代码中用到的C数据结构交叉参考表以及Xinu函数和常量。
第1章 引言与概述1.1 TCP/IP协议1.2 了解细节的必要性1.3 协议间交互作用的复杂性1.4 本书采用的方法1.5 研究代码的重要性1.6 Xinu操作系统1.7 本书其余部分的组织1.8 小结深入研究第2章 操作系统中的TCP/IP软件结构2.1 引言2.2 进程的概念2.3 进程的优先级2.4 进程的同步通信2.5 进程间通信2.6 设备驱动程序和输入. 输出程序2.7 网络的输入和中断2.8 向高层协议传递分组2.9 IP协议与传输协议之间的数据报传递2.10 向应用程序的传递操作2.11 输出时的信息流2.12 从TCP经过IP到网络输出2.13 UDP输出处理2.14 小结深入研究习题第3章 网络接口层3.1 引言3.2 网络接口抽象模型3.3 以太网的基本定义3.4 接口的逻辑状态3.5 本地主机接口3.6 缓冲区管理3.7 传入分组的多路分解3.8 小结深入研究习题第4章 地址的发现及绑定(ARP)4.1 引言4.2 ARP软件在理论上的结构4.3 ARP设计方案举例4.4 ARP高速缓存的数据结构4.5 ARP输出处理4.6 ARP输入处理4.7 ARP高速缓存的管理4.8 ARP初始化4.9 ARP参数配置4.10 小结深入研究习题第5章 IP:软件的总体结构5.1 引言5.2 中心环节5.3 IP软件设计思想5.4 IP软件结构和数据报流程5.5 IP首部中的字节顺序5.6 向IP发送数据报5.7 表格的维护5.8 小结深入研究习题第6章 IP:选路表和选路算法6.1 引言6.2 路由维护和查找6.3 选路表结构6.4 选路表数据结构6.5 路由的生成源及保持时间6.6 为数据报选择路由6.7 选路表的定期维护6.8 IP选项处理6.9 小结深入研究习题第7章 IP:分片与重组7.1 引言7.2 数据报的分片7.3 分片的实现7.4 数据报的重组7.5 数据报片链表的维护管理7.6 初始化7.7 小结深入研究习题第8章 IP:差错处理(ICMP)8.1 引言8.2 ICMP报文格式8.3 ICMP报文的实现8.4 传入ICMP报文的处理8.5 ICMP重定向报文的处理8.6 设置子网掩码8.7 为一个ICMP分组选择源地址8.8 生成ICMP差错报文8.9 避免出现关于差错报文的差错报文8.10 为ICMP报文分配缓冲区8.11 ICMP报文中的数据部分8.12 ICMP重定向报文的生成8.13 小结深入研究习题第9章 IP:组播处理(IGMP)9.1 引言9.2 维护组播主机群的成员信息9.3 主机群表9.4 查找一个主机群9.5 向主机群表中增加一个表项9.6 为一个组播地址设置网络接口9.7 IP组播地址和硬件组播地址之间的转换9.8 从主机群表中删除一个组播地址9.9 加入一个主机群9.10 维持与一个组播路由器的联系9.11 IGMP成员关系报告的实现9.12 计算随机时延9.13 发送IGMP报告的进程9.14 处理输入的IGMP报文9.15 脱离主机群9.16 IGMP数据结构的初始化9.17 小结深入研究习题第10章 UDP:用户数据报10.1 引言10.2 UDP端口和多路分解处理10.3 UDP的输入处理10.4 UDP输出的处理10.5 小结深入研究习题第11章 TCP:数据结构和输入处理11.1 引言11.2 TCP软件概览11.3 传输控制块11.4 TCP报文段格式11.5 序列空间中的比较11.6 TCP有限状态机11.7 状态变迁举例11.8 有限状态机的说明11.9 TCB的分配及初始化11.10 有限状态机的实现11.11 处理一个输入报文段11.12 小结深入研究习题第12章 TCP:有限状态机的实现12.1 引言12.2 CLOSED状态处理12.3 从容关闭12.4 关闭后的延迟计时12.5 TIME-WAIT状态处理12.6 CLOSING状态处理12.7 FIN-WAIT-2状态处理12.8 FIN-WAIT-1状态处理12.9 CLOSE-WAIT状态处理12.10 LAST-ACK状态处理12.11 ESTABLISHED状态处理12.12 处理报文段中的紧急数据12.13 处理报文段中的其他数据12.14 经常注意已接收的八位组12.15 终止一个TCP连接12.16 建立TCP连接12.17 初始化TCB12.18 SYN-SENT状态处理12.19 SYN-RECEIVED状态处理12.20 LISTEN状态处理12.21 为一个新TCB初始化窗口变量12.22 小结深入研究习题第13章 TCP:输出处理13.1 引言13.2 TCP输出控制的复杂性13.3 TCP输出的四种状态13.4 作为一个进程的TCP输出13.5 TCP输出报文13.6 对输出状态和TCB编号的编码13.7 TCP输出进程的实现13.8 互斥操作13.9 1DLE状态的实现13.10 PERSIST状态的实现13.11 TRANSMIT状态的实现13.12 RETRANSMIT(重发)状态的实现13.13 发送一个报文段13.14 计算TCP数据长度13.15 序号计算13.16 其他TCP过程13.17 小结深入研究习题第14章 定时器管理14.1 引言14.2 定时事件的通用数据结构14.3 TCP事件使用的数据结构14.4 定时器. 事件和报文14.5 TCP定时器进程14.6 删除TCP定时器事件14.7 删除一个TCB的所有事件14.8 确定出现一个事件的尚需时间14.9 插入TCP定时器事件14.10 启动无时延的TCP输出14.11 小结深入研究习题第15章 流量控制和自适应重发15.1 引言15.2 自适应重发中的难题15.3 自适应重发的调整15.4 重发定时器和退避15.5 基于窗口的流量控制15.6 最大报文段长度的计算15.7 网络拥塞预防与控制15.8 慢启动和拥塞预防15.9 平均往返时间估值及超时15.10 技巧和注意事项15.11 小结深入研究习题第16章 紧急数据处理和推功能16.1 引言16.2 带外信令16.3 紧急数据16.4 标准的解释16.5 为Berkeley紧急指针解释法而进行的配置16.6 通知应用程序16.7 从TCP中读取数据16.8 发送紧急数据16.9 TCP的推功能16.10 在失序交付时对推数据的解释16.11 输入时推功能的实现16.12 小结深入研究习题第17章 套接层的接口17.1 引言17.2 通过设备形成的接口17.3 作为设备的TCP连接17.4 TCP客户程序举例17.5 TCP服务器程序举例17.6 TCP主设备的实现17.7 TCP从设备的实现17.8 从设备的初始化17.9 小结深入研究习题第18章 RIP:主动路由传播和被动获取18.1 引言18.2 主动和被动模式的参与者18.3 基本的RIP算法和费用度量18.4 不稳定性及解决方案18.5 报文类型18.6 协议特性18.7 RIP的具体实现18.8 基本RIP进程18.9 对输入请求的响应18.10 生成更新报文18.11 初始化一个更新报文的副本18.12 生成定期的RIP输出18.13 RIP的局限性18.14 小结深入研究习题第19章 OSPF:使用SPF算法的路由传播19.1 引言19.2 OSPF配置和选项19.3 OSPF的图论模型19.4 OSPF的说明19.5 邻接关系和链路状态信息的传播19.6 用Hello发现相邻网关19.7 Hello分组的发送19.8 指定路由器19.9 选出一个指定路由器19.10 变动之后重建邻接关系19.11 处理到达的Hello分组19.12 在相邻网关表中增加一个网关19.13 相邻网关状态的变迁19.14 OSPF定时器事件和重发19.15 判断是否允许邻接关系19.16 OSPF输入的处理19.17 链路状态处理中的说明和过程19.18 数据库描述分组的生成19.19 创建一个模板19.20 传送数据库描述分组19.21 处理到达的数据库描述分组19.22 处理链路状态请求分组19.23 建立链路状态概要信息19.24 OSPF实用过程19.25 小结深入研究习题第20章 SNMP:MIB变量. 表示形式和绑定20.1 引言20.2 服务器的组织和名字的映射20.3 MIB变量20.4 MIB变量名20.5 名字之间的字典顺序20.6 除去前缀20.7 在MIB变量上执行的操作20.8 表格名20.9 名字体系概念上的线索20.10 MIB变量的数据结构20.11 用于快速查找的数据结构20.12 散列表的实现20.13 MIB绑定的描述20.14 绑定中使用的内部变量20.15 散列表的查找20.16 SNMP的结构和常量20.17 ASN.1表示形式的处理20.18 小结深入研究习题第21章 SNMP:客户与服务器21.1 引言21.2 服务器中数据的表示形式21.3 服务器的实现21.4 对SNMP报文的分析21.5 绑定链表中ASN.1名字的转换21.6 解析一个请求21.7 对get-next操作的解释21.8 操作的间接执行21.9 表格的间接寻址21.10 应答报文的反向生成21.11 将内部格式转换为ASN.1表示形式21.12 服务器使用的实用函数21.13 一个SNMP客户的实现21.14 变量初始化21.15 小结深入研究习题第22章 SNMP:表格访问函数22.1 引言22.2 表格访问22.3 表格的对象标识符22.4 地址人口表函数22.5 地址转换表函数22.6 网络接口表的函数22.7 选路表函数22.8 TCP连接表函数22.9 UDP Listener表22.10 IP地址转换的实用例程22.11 小结深入研究习题第23章 实现的回顾23.1 引言23.2 程序代码统计分析23.3 各个协议的程序代码行数23.4 每个协议所需的函数和过程23.5 小结习题附录1 过程调用交叉参考表附录2 程序代码中使用到的C数据结构交叉参考表附录3 程序代码中使用到的Xinu函数和常量参考文献
一代又一代的专业技术人员}RDouglas Comer的《用TCP/IP进行网际互连》视为了解那些使因特网得以运转的协议和技术的敲门砖,它思路清晰,简单易懂。本书是其中的第二卷,作者深入探讨了TCP/IP的设计方案,考察了每个协议的具体细节及实现技术,并惹重介绍了协议软件的内部机制。贯穿全书的是一个利用ANSI C构建的可运行系统,用来讲解协议之间的交互操作、完整的实现过程及内部结构。 本书主要特点: 对一些协议的修改和更新,其中的代码已升级为ANSl标准C语言 包含大多数协议的运行资源代码,包括TCP、IP、ICMP、IGMP、UDP、ARP、RIP、SNMP和OSPF的重要部分 利用ANSI C定义了数据结构、常量及过程和进程的代码 全面介绍了IETF设计的开放最短路径优先(OSPF)链路状态路由协议 支持用于IP户组播的IGMP协议,以及用于音频和视频组播的OSPF路由协议 讲解了紧急数据处理
无