Cover V02, I05


Books: A User's Report

Elizabeth Zinkann

This month I review a different type of UNIX book by Ziff-Davis Press, two new networking books -- one from Prentice Hall and one from Addison-Wesley -- and a new system administration book on SCO UNIX from Prentice Hall.

Networking Applications on UNIX System V
Release 4

by Michael Padovano
Prentice Hall
ISBN 0-13-613555-2

Michael Padovano's book explores the networking concepts currently implemented in UNIX System V Release 4 (UNIX SVR4) and UNIX SVR4-based systems, including Solaris 2.0, Solaris 2.1, and UNIX SVR4.2. The author assumes that the reader understands UNIX, can read and write shell scripts, and is familiar with C.

Padovano begins with a thorough discussion of networking, including an analysis of the advantages and disadvantages of networking. Although he does not assume prior knowledge of networking concepts, he explains the terms so that the experienced user will also learn from the definitions. He presents an example of a layered architecture, then describes the OSI Reference Model and the purpose of each layer. As an example of a networking relationship, Padovano focuses on the client/server model and describes how it functions. He also discusses transport providers, transport modes of service, plus ports and port monitors. The introductory chapter contains a section not only on UNIX networking history, but also how UNIX SVR4 networking differs from other UNIX variants.

The next topic is the STREAMS framework. Padovano defines STREAMS as "a replacement of the traditional UNIX communications system." He further analyzes the STREAMS mechanism by demonstrating the structure of a stream and explaining how it is implemented. Using C system calls and statements, supplemented by a graphic representation of what is happening, Padovano shows how to modify a stream by either adding or removing modules. He also explains the STREAMS multiplexing capability and its importance to networking.

The book progresses from STREAMS concepts to the networking protocols that use the STREAMS framework. Padovano defines TCP/IP, and provides an overview of the TCP/IP protocol suite. He includes an excellent diagram displaying the TCP/IP and the OSI Reference Model structures.

In addition to the topics already mentioned, Padovano also addresses UUCP, Remote File Sharing (RFS), the Network File System (NFS), Remote Procedure Calls (RPC), the Transport Level Interface (TLI), and sockets, as well as a chapter entitled "Network Selection and Name-to-Address Mapping." In each case he not only defines the topic, but also discusses when it should be used and its applications. For example, when discussing the UNIX SVR4 Transport Level Interface (TLI), Padovano describes the states of the transport endpoint from both the client and the server views, presenting them step-by-step along with diagrams to explain the procedures.

Networking Applications on UNIX System V Release 4 is an ideal book for learning about UNIX networking. The writing style is clear, and Padovano provides many useful diagram and examples. Each chapter includes both a "For Further Reading" and an "Exercises" section; depending on the topic covered, the chapter may also include a summary. Although the book is written for the reader without any networking knowledge, it will also appeal to the experienced user. It should be read prior to the UNIX manuals, as it clarifies many of the ideas presented in the manuals. This is a book that should rate a place on every UNIX user's bookshelf.

UNIX System V Network Programming
by Stephen A. Rago
Professional Computing Series
ISBN 0-201-56318-5

This book was written primarily for programmers interested in the UNIX System V Release 4 (UNIX SVR4) networking interfaces, and Rago expects the reader to be familiar with both UNIX and the C programming language. Also useful, but not mandatory is some knowledge of data structures and algorithms. The preface contains a list of five UNIX manuals that will help the reader understand the subject.

The book is divided into four main sections: "Background Material," "User-level Network Programming," "Kernel-level Network Programming," and a "Design Project." The first section introduces networks and UNIX programming. Network coverage includes networking terms, network characteristics, and network models, including the OSI Reference Model. Coverage of UNIX programming includes a number of useful examples.

The second section addresses topics that programmers encounter at the user level. Rago explains what the programmer needs to know to implement these concepts. This section explores STREAMS, the Transport Level Interface (TLI), "Selecting Networks and Addresses," "The Network Listener Facility," "Sockets," and "Remote Procedure Calls" (RPCs). In the chapter devoted to sockets, Rago describes the socket interface which originally resided in BSD UNIX, but is now employed by UNIX SVR4 and provides a comparison between the socket interface and the Transport Level Interface (TLI).

Through the first two sections, the only references to the kernel are either theoretical or used in a description of the UNIX architecture. The third section, however, addresses programmers who produce kernel-level code. Rago divides this segment into four chapters: "The STREAMS Subsystem," "STREAMS Drivers," "STREAMS Modules," and "STREAMS Multiplexors." The first of these chapters examines the kernel environment and provides the foundation for the next three chapters. "STREAMS Drivers" continues by discussing the purpose of a driver, introducing the Data Link Provider Interface (DLPI), and analyzing the design of a STREAMS Ethernet driver. Rago next describes "STREAMS Modules" and their differences from driver implementations. He also discusses the terminal interface before studying a network terminal emulator example. The final chapter in this section, "STREAMS Multiplexors," describes what a multiplexor is and how to use and implement a multiplexor. The example that the author uses displays a Transport Provider Interface.

The final segment is a "Design Project: Implementing SLIP." SLIP, which is defined as a serial line IP, is a protocol describing how IP packets "are framed to allow their transmission over point-to-point serial connections." Many of the concepts previously explained are implemented in this design, and both the user-level and kernel-level components are examined in this project.

UNIX System V Network Programming can be used as a standalone book or as a textbook for a class. Each chapter contains an introduction, summary, exercises, and a bibliography. Throughout, the author refers to his examples and builds upon them. His writing style is concise and clear. Anyone interested in UNIX networking will find this book a worthwhile addition to their resources.

Running UNIX So It Doesn't Run You
by Don Crabb
Ziff-Davis Press
ISBN 1-56276-061-0

This book addresses UNIX users and, UNIX system managers, and tries to take into account the different backgrounds these readers may have. In "An Overview of UNIX," Crabb examines why many businesses are converting to UNIX and what they will gain from the move. The author draws comparisons among operating systems by means of a table that lists operations and shows the corresponding UNIX System V Release 4, DOS 5.0, and Mac System 7 commands. Chapters 2 and 3 explore the file system and UNIX customization, respectively. Chapter 4 is devoted to GUIs. In it, the author explains the graphical user interface (GUI), its components, and each component's purpose(s). He describes how to evaluate different GUIs and how GUIs interact with UNIX shells. Crabb also discusses X servers, X clients, and their separate functions. While presenting his evaluation criteria, the author focuses on the following GUIs: Open Desktop, X.Desktop, Open Look, Motif, A/UX, and NeXTStep.

Crabb next examines UNIX "Communications and Shared Resources," "UNIX LANs," and "UNIX LAN Backup Technologies." Also included is a valuable chapter entitled "UNIX Software Development." This section will help anyone who needs to know the programming capabilities of UNIX. Here, Crabb begins by defining a five-step software development process consisting of discovery, recovery, invention, presentation, and systemization. The author also delves into the topic of object-oriented programming. He examines the differences among the variant UNIX programming systems, particularly UNIX System V Release 4 (UNIX SVR4) and NeXTStep. Crabb also analyzes when a UNIX manager should hire a consultant and what the manager should know before approaching a consultant.

The author also presents some strategies relating to UNIX hardware and how to efficiently manage UNIX, including security issues, emission standards, and system performance. In a chapter devoted to "Training and Supporting UNIX Users," Crabb not only stresses the importance of allowing users uninterrupted training time, but also presents the different types of training available. The final chapter addresses "The Art and Science of Troubleshooting UNIX" and provides information on hardware problems, possible reasons why UNIX won't start, and some error and warning messages. The book concludes with a command reference, a glossary, and a comprehensive index.

Each chapter is well-organized, beginning with a bullet list of the chapter contents and a brief summary, and concluding with a "Crabb's Unix Quiz" for each chapter. The author always includes information on where the reader may obtain something that he has referenced. He also provides other sources for topics that he has mentioned, but has not dealt with in depth. Don Crabb writes from a different perspective, coming more from a Mac background than most UNIX authors. As a result, he includes subjects that most authors tend to overlook, particularly in the software development process, as well as some surprising tips to the reader. His writing sytle is crisp, friendly, and very readable. The chapters on GUIs, software development, and troubleshooting are among the most informative sections. This book is an excellent choice for new users, users who need to review the most recent concepts, managers, and evaluators of UNIX systems.

System Administrator's Guide

Prentice Hall
ISBN 0-13-012568-7

This book was intended for UNIX system administrators running SCO UNIX System V. The contributors to the book define a system administrator as the individual "in charge of system maintenance and operation." The tasks that this manual addresses include the simple, intermediate, and difficult jobs associated with the position of UNIX system administrator.

The book is organized in three major sections: "System Configuration and Maintenance," "Performance and Troubleshooting," and the Appendices. The first section focuses on topics ranging from using the system administration shell (sysadmsh) through managing filesystems, including adding new filesystems and mounting and unmounting filesystems, to using different peripherals, such as printers, floppy disks, tape drives, and modems. The first section also covers using DOS operating systems, how to maintain system security, building a remote network using UUCP, installing electronic mail, and how to backup filesystems.

The "Performance and Troubleshooting" section discusses different ways to improve your system's performance. It helps you become more familiar with your system and tells you how to configure the system so your users will have optimal performance. This section also provides a Troubleshooting overview that can help system administrators figure out how to recover quickly from a system failure. One of the most informative chapters here is the "Troubleshooting Reference," which presents information about system problems that may occur. It is organized alphabetically and also, where appropriate, grouped by related subjects.

The appendices deal with the following topics: "Customizing System Startup," "Authorizing the Use of Job Scheduling Commands," "Using the System Console and Color Displays," and "UNIX Directories and Special Device Files." Following the index for the "SCO UNIX System V System Administrator's Guide" is the most recent release of the "SCO UNIX Hardware Configuration Guide." This manual will aid the system administrator in the installation and configuration of hard drives, tape drives, controllers, CD-ROM drives, printers, modems, and network cards, to name a few.

Through the concatenation of the two books, there are helpful notes and warnings, with the heading in bold plus a vertical line so that the reader will not overlook it. The authors and editors also use diagrams and screen displays to represent what system administrators would encounter at their terminals. The topics are developed in a logical order and the procedures are presented step-by-step. This documentation is well-written and would be an excellent addition to any SCO system administrator's library.

About the Author

Elizabeth Zinkann has been involved in the UNIX and C environments for the past 11 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.