Cover V02, I01


Books: A User's Report

Elizabeth Zinkann

In this issue, I review three new books -- Volume III of Comer and Stevens' internetworking guide, Albitz and Liu's new work on DNS and BIND, and Janice Winsor's guide to Solaris 2.x system administration. I also discuss John Davidson's Introduction to TCP/IP, which, though not new, is worth bringing to the attention of system administrators in need of resources on TCP/IP.

Internetworking with TCP/IP: Volume III
Client-Server Programming and Applications

by Douglas E. Comer and David L. Stevens

This third volume in Comer's TCP/IP series demonstrates the how and why of client-server applications. It is suitable both for the individual reader and for use as a textbook.

The authors begin with a look at TCP/IP protocols and, specifically, telnet examples, what the client-server model entails, and the place of concurrency in communications. Since volume 3 is also the BSD Socket Version, the next chapter describes the Berkeley Socket Interface. This interface provides functions capable of accessing many protocols instead of using one function for each protocol. This capability allows the programmer to concentrate on the type of service needed rather than the protocol. After explaining the socket interface, the authors devote the remainder of the chapter to showing how it works. This approach not only further clarifies the concept of the socket, but also lays the groundwork for future chapters.

Two particularly informative chapters deal with client-server algorithms, providing some simple examples. The first chapter presents the algorithms for both TCP and UDP in a straightforward, step-by-step manner. Each is shown in a numbered table, followed by explanations of each step. The second chapter implements the algorithms through examples such as daytime and echo.

The next section of the book discusses the different types of servers available. The discussion includes excellent diagrams of the process structures for each type of server, along with sample code. Descriptions beneath the diagrams explain how communication is achieved.

Other topics include tunneling, the application gateway technique, and the remote procedure call (RPC) concept. In introducing the RPC concept, Comer and Stevens also stress the importance of developing a client-server application interactively. To this point, they've treated client and server applications as separate entities; now, they explain how the two components interface with one another and also provide a working example of remote procedure calls.

The book concludes with a demonstration of a complex client-server application that uses a telnet protocol as the client and a UNIX terminal as the server. The authors describe both the program structure and its implementation.

Comer and Stevens have produced a readable and useful book. When they want to stress a point, they explain the concepts, give an example, and reiterate the data by putting it in italics. Each chapter includes an introduction and a summary, and every discussion of design issues cover both the advantages and the disadvantages of specific design implementations.

The book is a viable choice for the classroom. The authors recount history where applicable, customize the chapter with examples, provide exercises at the end of each chapter, and as the text proceeds, re-emphasize the most important points that they have made.

Two final points: diagrams and tables are particularly well displayed within the text, and the authors perform a real service by describing the most efficient way that client-server internetworking can be achieved.

by Paul Albitz and Cricket Liu
O'Reilly & Associates, Inc.

Until now, little has been published on the Internet's Domain Name System (DNS) and the Berkeley Internet Name Domain (BIND) software. With this book, Albitz and Liu present both a theoretical and a practical view for the reader. And although the primary audience will probably be system and network administrators, the work includes sections particularly addressed to the general user or the programmer.

The authors begin with background material for both DNS and BIND. The first chapter explains the DNS database structure and presents an extremely clear definition of DNS. The second chapter defines the terms that will be employed throughout the rest of the book. These definitions introduce the reader to the new vocabulary and also help clarify the subtle differences among terms.

Albitz and Liu essentially have produced an answer to the question "What do I want from DNS and how do I get it?" They explain what you need and where you can get it for different cases. The authors also focus on DNS and electronic mail. In addition to telling how to begin a system, they explore maintaining BIND, expanding a system, and parenting. Many of the programs the authors use in administering DNS and BIND have been reprinted in perl.

Since the user of BIND is working with software, the book includes a chapter on debugging and how to read debugging output. A section entitled "Troubleshooting DNS and BIND" identifies some potential problems.

In one of the concluding chapters, Albitz and Liu address the differences between shell and C programming and discuss when one might be more effective than the other.

This book is clearly and precisely written. By using the guidelines presented in the preface, readers can easily find the information they want. In organization, the book proceeds from the basics to the theoretical to practical examples. Graphs and diagrams display both conceptual theory and what the output of a command will look like on your screen. The authors identify disadvantages in the software and include examples for points that may be difficult to understand. The footnotes provide leavening humor along with useful information.

DNS and BIND complements the Comer and Stevens TCP/IP book reviewed above perfectly, since DNS basically uses a client-server application, with name servers as the server and resolvers as the client. The book should be read not only by system and network administrators, but also by programmers who use DNS and BIND and by anyone who wants to know how DNS really works.

The Solaris System Administrator's Guide
by Janice Winsor
Ziff-Davis Press

Janice Winsor directs her book to the novice system administrator and to the experienced administrator who is new to Solaris 2.x. Topics range from the introductory -- "Introducing Solaris System Administration" and "Using Basic OS Commands" -- to the more complex -- "Administrating File Systems" and "Administrating Network Services." The author compares the book to a map of the more familiar features of the UNIX operating system. She describes what a system administrator does, and how administrative responsibilites may vary from one position to another.

The Solaris System Administrator's Guide is particularly well organized. In discussing commands, Winsor first displays the syntax of the command, then describes what the command does, how to use it, when to use it, optimal ways to execute it, and a step-by-step example demonstrating its application. When appropriate, Winsor includes a section on how to detect potential problems. In her discussion of Init states, for example, she not only clearly defines each state but also explains when to shut down a system. In many cases, she examines shortcuts that may be employed.

The book's intended audience includes both system administrators and interested users. To satisfy the latter, Winsor often displays the options of a command and its current settings in one table, then follows up with a second table detailing those same options, their respective defaults, and a brief description of each.

Particularly useful are two sets of cues that appear in the margins. One indicates "NEW" for UNIX System V Release 4, and the other signals a "NOTE" that reiterates information already presented. Another type of "NOTE" is displayed in the text and usually contains a shortcut or a warning. Occasionally, a "CAUTION" is included in the text. The author presents a procedural means by which system administrators may proceed from the SunOS4.x to the SunOS5.x operating system. A quick reference card summarizing the command changes is included, as well as an appendix detailing the modifications.

Although some knowledge of system administration is helpful, you don't have to be an accomplished system administrator to understand and use The Solaris System Administrator's Guide. The format of the graphs and tables helps to simplify the concepts, and Winsor eliminates a problem that some authors have with semantics by explaining when one word or command could be a synonym for another. In sum, Winsor has produced a usable and useful guide that should serve a wide range of readers well.

An Introduction to TCP/IP
by John Davidson

Although this is not a new book, it is very worthwhile and a good complement to the other titles reviewed this month. The title describes it as an introduction, but it provides more information than that label implies.

As his preface, Davidson explicitly identifies his target audience: readers familiar with computers, LANs, protocols, and networking, but with no prior knowledge of the TCP/IP Protocol Suite. The author begins by briefly recounting the history of TCP/IP. He uses two diagrams to explain TCP/IP. One refers to the seven-level Open Systems Interconnection (OSI) Reference Model; the other, to TCP/IP Protocols and Services. The second diagram also refers to similar levels in the OSI hierarchy.

Davidson closes the first chapter by describing a sample internetwork, defining internetworking in the process. The rest of the book explains the four levels presented in the TCP/IP Protocols and Services diagram.

This concise introduction to TCP/IP provides a glossary and several appendices, including assigned numbers and references. Davidson has written a concise book on TCP/IP. The diagrams that accompany the text and well designed and informative. This book would make a very useful text for anyone interested in TCP/IP, whether a beginner or an experienced user.

About the Author

Elizabeth Zinkann has been involved in the UNIX and C environments for the past 10 years. She is currently a UNIX and C consultant, and one of her specialities is UNIX education. In addition to her computer science background, she also has a degree in English.