Book Reviews

Computer Networks: A System Approach

Larry L. Peterson and Bruce S. Davie, Morgan Kaufmann, ISBN 1-55860-368-9

Reviewed by Chung-Sheng Li

It is really exciting to witness the recent appearance of several excellent introductory textbooks on computer networks. Soon after a review of A. S. Tanenbaum's third edition of Computer Networks appeared in IEEE Communications Magazine, I received an invitation from the publisher of Computer Networks: A System Approach to compare the two. After spending a few days and nights reading through the book, my initial impression is very favorable. This book is indeed a comprehensive and thorough textbook on computer networks for the X generation!
In retrospect, textbooks on computer networks from the '70s, such as Computer Communication Network Design and Analysis by M. Schwartz, usually centered on network capacity design and queuing analysis. Textbooks from the '80s, such as the first edition of Tanenbaum's book, use the seven-layer OSI structure to explain layering concepts in isolating network design issues. With the tremendous success of the Internet and extreme popularity of TCP/IP protocols in the '90s, we would expect a different set of networking issues for the newer generation of professionals who grew up with Windows and Windows 95 and browse the Web while dining. Computer Networks: A System Approach by Peterson and Davie satisfies and exceeds this expectation in many aspects.
There are two unique aspects of this book. First, the protocols discussed are drawn directly from the Internet. Examples include the chapter on internetworking (IP, Address Resolution Protocol, next-generation IP, multicast, Domain Name Service) and that on end-to-end protocols (TCP and UDP). This book also includes a code segment from a working network subsystem, the x-kernel. Being able to read a real-life implementation of the protocol permits readers to have some sense of the complexity involved. (Some of us still remember the days when we traced the source code of UNIX to learn the principles of designing an operating system.) Furthermore, this code can also be extended to implement new functions and serve as an interesting research tool.
This book is divided into nine chapters and an appendix on network management. The objective of each chapter is clearly stated at the start with a problem statement, and each has a comprehensive list of further reading and exercises at the end.
Chapter 1 gives a brief introduction to the foundations of network protocol, such as network applications, requirements, and architecture.
Protocol implementation basics are described in Chapter 2. The x-kernel, which provides an object-oriented framework for implementing protocols, is used to illustrate many of the principles discussed. Two basic "classes" (in the object-oriented sense) in any protocol are "protocol" and "message." As an example, an x-kernel protocol object consists of an implementation of xPush and xPop adhering to the protocol specification's definition of send and receive messages.
Chapter 3 discusses a directly connected network. Issues such as bandwidth, line and error detection coding, and reliable transmission techniques such as stop-and-wait and sliding window protocols are investigated.
General concepts of packet switching for networks in which hosts are not necessarily directly connected are investigated in Chapter 4. Several interesting routing techniques (e.g., source routing, virtual circuit switching, and datagram routing) are discussed. Switching hardwares pertinent to self-routing switching fabric used primarily in the ATM environment are introduced. There is definitely a lot of literature from the past two decades discussing these topics. This chapter, nevertheless, gives a very good summary on these important technologies.
Chapter 5 focuses on internetworking, starting with a discussion on bridgingis a simple albeit limited way to interconnect networks. IP is then discussed and used to illustrate how to build a scalable, heterogeneous internetwork. IPv6 is also described. The chapter concludes with a discussion of multicast and naming schemes for resolving the identity of Internet objects such as Internet hosts.
End-to-end protocols are described in Chapter 6. These transport-level protocols require, for example, guaranteed message delivery, messages delivered in the same order sent, delivering at most one copy of the message, support of arbitrarily large messages, support of synchronization between sender and receiver, and allowing the receiver to apply flow control to the sender. The underlying network on which the transport protocol operates has certain limitations in the level of service it can provide. The challenge, therefore, is to develop algorithms that turn the less than desirable properties of the underlying networks into the high-level service required by the application. This chapter looks at these algorithms from three representative applications: a simple asynchronous demultiplexing service (UDP), a reliable byte-stream service (TCP), and a request/reply service (RPC).
The last three chapters cover several advanced topics in computer networks. Chapter 7 discusses data transformation aspects (e.g., compression and encryption for end-to-end data transfer). Several lossless (run-length coding and dictionary-based methods) and lossy compression (JPEG and MPEG) algorithms are discussed. Both private key (DES) and public key (RSA) encription algorithms are investigated.
Congestion control issues are discussed in detail in Chapter 8. It starts with a taxonomy of the existing congestion control algorithms (router- vs. host-centric, reservation- vs. feedback-based, window- vs. rate-based). Several simple queuing disciplines such as FIFO and fair queuing are then described. The congestion control techniques used in TCP are briefly discussed. This chapter concludes by discussiing the virtual clock technique and ABR mechanism deployed in ATM networks.
The last chapter of this book briefly discusses the issues associated with high-speed networking, including latency and throughput considerations, and the emerging bandwidth reservation protocol RSVP.
In summary, this book is indeed an excellent textbook on computer networks. Unfortunately, it is really hard to decide which book (this vs. Tanenbaum) is a clear winner. Nevertheless, it is safe to say that readers cannot go wrong with either. This book is also strongly recommended for professionals working in this field, or whoever would like to get an update of this field.