TCP/IP 网络互连技术 卷2:设计与实现(第2版)(英文影印版)
基本信息
内容简介回到顶部↑
本书是TCP/IP 网络互连技术系列的第II卷,作者对第I卷“TCP/IP 的原理、协议和体系结构”中许多专题展开了深入讨论,分析了TCP/IP 软件,扩展了TCP/IP 的基本概念并讨论了如何实现TCP/IP 协议。本书引用了大量的工作系统中的源代码,阐述如何完整地实现TCP/IP 和如何利用操作系统提供的服务来实现TCP/IP 协议族。
作译者回到顶部↑
目录回到顶部↑
foreword
preface
chapter1 introduction and overview
1.1 tcp/ip protocols
1.2 the need to understand details
1.3 complexity of interactions smong protocols
1.4 the approach in this text
1.5 the importahnce of studying code
1.6 the xinu operating system
1.7 organization of the rmainder of the book
1.8 summary
chapter2 the structure of tcp/ip sotfware in an operatin system
2.1 introduction
2.2 the process concept
2.3 process priority
2.4 communication processes
2.5 interprocess communication
2.6 device drive,input,and output
2.7 network input and interrupts
preface
chapter1 introduction and overview
1.1 tcp/ip protocols
1.2 the need to understand details
1.3 complexity of interactions smong protocols
1.4 the approach in this text
1.5 the importahnce of studying code
1.6 the xinu operating system
1.7 organization of the rmainder of the book
1.8 summary
chapter2 the structure of tcp/ip sotfware in an operatin system
2.1 introduction
2.2 the process concept
2.3 process priority
2.4 communication processes
2.5 interprocess communication
2.6 device drive,input,and output
2.7 network input and interrupts
前言回到顶部↑
We published the first edition of Internetworking With TCP/IP Volume 2 in response to readers who asked for more details about TCP/IP protocols than Volume 1 contains. Volume 2 p1aces TCP/IP under a magnifying glass, and examines the details of individual protocols. It discusses their implementation, and focuses on the internals of protocol software. The second edition updates several protocols and adds two new chapters that discuss the IGMP protocol used for IP multicasting and the OSPF routing protocol. Our implementation of TCP urgent data has been changed to illustrate the data-mark interpretation, and the text discusses the consequences.
The official specifications for individual protocols, as well as discussions of their implementation and use, appear in Request For Comments documents (RFCs). Although some RFCs can be difficult for beginners to understand, they remain the authoritative source of detailed information; no author can hope to reproduce all that information in a textbook. While the RFCs cover individual protocols, however, they sometimes leave unanswered questions about the interactions among protocols. For example, a routing protocol such as RIP specifies how a gateway installs routes in an IP routing table, and how the gateway advertises routes in its table to other gateways. RIP also specifies that routes must be timed out and removed. But the interaction between RIP and other protocols may not be apparent from the RFC. The question arises, "how does route timeout affect routes in the table that were not installed by RIP?" One must also consider the question, "should RIP updates override routes that the manager installs manually?"
To help explain the interaction among protocols and to insure that our solutions fit together, we designed and built a working system that serves as a central example throughout the text. The system provides most of the protocols in the TCP/IP suite, including: TCP, IP, ICMP, IGMP, UDP. ARP, RIP, SNMP, and a significant part of OSPF. In addition, it has an example client and server for the finger service. Because the text contains the code for each protocol, the reader can study the implementation and understand its internal structure. Most important, because the example system integrates the Protocol software into a working whole, the reader can clearly understand the interaction among protocols.
The example code attempts to conform to the protocol standards and to include current ideas. For example, our TCP code includes silly window avoidance and the Jacobson-Karels slow-start and congestion avoidance optimizations, features sometimes missing from commercial implementations. However, we are realistic enough to realize that the commercial world does not always follow the published standards, and have tried to adapt the system for use in a practical environment. For example, the code includes a configuration parameter that allows it to use either the Internet standard or BSD UNIX implementation of TCP's urgent data Pointer.
We do not claim that the code presented here is bug-free, or even that it is better than other implementations. Indeed, after many years of using it, we continue to find ways to improve the software, and hope that readers will look for them as well. To help, the publisher has agreed to make machine-readable copies of all the code available, so readers can use computer tools to examine, modify, and test it. The archive is available via anonymous FTP from file pub/comer/v2.dist.tar.Z on computer ftp.cs.purdue.edu.
The text can be used in an upper-division course on networking or in a graduate course. Undergraduate courses should focus on the earlier chapters, omitting the chapters on OSPF, SNMP and RIP. Graduate students will find the most interesting and challenging concepts in the chapters on TCP. Adaptive retransmission and the related heuristics for high performance are especially important and deserve careful attention. Throughout the text, exercises suggest alternative implementations and generalizations; they rarely call for rote repetition of the information presented. Thus, students may need to venture beyond the text to solve many of the exercises.
As in any effort this size, many people share the credit; we thank them. David Stevens, one of the authors, implemented most of the software, including a complete version of TCP. Victor Norman built the SNMP software. and revised it several times. Shawn Ostermann integrated the TCP/IP code into Xinu version 8, and ported it from the original Sun 3 platform to a DECstation 3100.Andy Muckelbauer and Steve Chapin built a UNIX compatibility library, and, along with Shawn Ostermann and Scott Mark, used the TCP code to run an X window server. Their testing exercised TCP extensively, and Pointed out several performance problems. Scott M. Ballew participated in some of the software development, and provided an extensive review of all the text and code. Various other members of the Internetworking Research Group at Purdue contributed to earlier versions of the code. Christine Comer reviewed the manuscript and made many suggestions. Finally, we thank the Department of Computer Sciences and the Computing Center at Purdue University for their support.
Douglas E. Comer
David L. Stevens
The official specifications for individual protocols, as well as discussions of their implementation and use, appear in Request For Comments documents (RFCs). Although some RFCs can be difficult for beginners to understand, they remain the authoritative source of detailed information; no author can hope to reproduce all that information in a textbook. While the RFCs cover individual protocols, however, they sometimes leave unanswered questions about the interactions among protocols. For example, a routing protocol such as RIP specifies how a gateway installs routes in an IP routing table, and how the gateway advertises routes in its table to other gateways. RIP also specifies that routes must be timed out and removed. But the interaction between RIP and other protocols may not be apparent from the RFC. The question arises, "how does route timeout affect routes in the table that were not installed by RIP?" One must also consider the question, "should RIP updates override routes that the manager installs manually?"
To help explain the interaction among protocols and to insure that our solutions fit together, we designed and built a working system that serves as a central example throughout the text. The system provides most of the protocols in the TCP/IP suite, including: TCP, IP, ICMP, IGMP, UDP. ARP, RIP, SNMP, and a significant part of OSPF. In addition, it has an example client and server for the finger service. Because the text contains the code for each protocol, the reader can study the implementation and understand its internal structure. Most important, because the example system integrates the Protocol software into a working whole, the reader can clearly understand the interaction among protocols.
The example code attempts to conform to the protocol standards and to include current ideas. For example, our TCP code includes silly window avoidance and the Jacobson-Karels slow-start and congestion avoidance optimizations, features sometimes missing from commercial implementations. However, we are realistic enough to realize that the commercial world does not always follow the published standards, and have tried to adapt the system for use in a practical environment. For example, the code includes a configuration parameter that allows it to use either the Internet standard or BSD UNIX implementation of TCP's urgent data Pointer.
We do not claim that the code presented here is bug-free, or even that it is better than other implementations. Indeed, after many years of using it, we continue to find ways to improve the software, and hope that readers will look for them as well. To help, the publisher has agreed to make machine-readable copies of all the code available, so readers can use computer tools to examine, modify, and test it. The archive is available via anonymous FTP from file pub/comer/v2.dist.tar.Z on computer ftp.cs.purdue.edu.
The text can be used in an upper-division course on networking or in a graduate course. Undergraduate courses should focus on the earlier chapters, omitting the chapters on OSPF, SNMP and RIP. Graduate students will find the most interesting and challenging concepts in the chapters on TCP. Adaptive retransmission and the related heuristics for high performance are especially important and deserve careful attention. Throughout the text, exercises suggest alternative implementations and generalizations; they rarely call for rote repetition of the information presented. Thus, students may need to venture beyond the text to solve many of the exercises.
As in any effort this size, many people share the credit; we thank them. David Stevens, one of the authors, implemented most of the software, including a complete version of TCP. Victor Norman built the SNMP software. and revised it several times. Shawn Ostermann integrated the TCP/IP code into Xinu version 8, and ported it from the original Sun 3 platform to a DECstation 3100.Andy Muckelbauer and Steve Chapin built a UNIX compatibility library, and, along with Shawn Ostermann and Scott Mark, used the TCP code to run an X window server. Their testing exercised TCP extensively, and Pointed out several performance problems. Scott M. Ballew participated in some of the software development, and provided an extensive review of all the text and code. Various other members of the Internetworking Research Group at Purdue contributed to earlier versions of the code. Christine Comer reviewed the manuscript and made many suggestions. Finally, we thank the Department of Computer Sciences and the Computing Center at Purdue University for their support.
Douglas E. Comer
David L. Stevens







点击看大图


加载中...

