Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
UNIX network programming
Stevens W., Prentice-Hall, Inc., Upper Saddle River, NJ, 1990. Type: Book (9780139498763)
Date Reviewed: Dec 1 1991

An increasing number of systems speak some flavor of UNIX and use some common communications protocol, such as TCP/IP. Manufacturers who trumpeted the advantages of their proprietary systems a few short years ago now find themselves peddling UNIX, once loved only by academics and hackers. It is not that the proprietary protocols, such as DECNET or SNA, represent inferior work: rather, they became increasingly irrelevant. The combined energies of many companies working on the same protocol will eventually lead to a better stack than any single company could produce.

A thorough introduction to the protocols used on UNIX systems is needed today because it is increasingly likely that the host you will need to communicate with will be speaking UNIX. This is not to say that two machines can communicate simply because both speak a flavor of UNIX: we live in a world separated by a common operating system.

The first printing of this readable, comprehensive guide to UNIX network programming sold out in short order; the second should go as quickly. It will become the bible of programmers who need to learn how to deal with the ever-increasing number of networked UNIX computers.

While the contents accurately reflect the title, there is far more to this book than the title suggests. Stevens gives a thorough introduction to the basics, such as the UNIX process model (fork, the exec library calls, and signaling.) A chapter on “Interprocess Communication” not only covers pipes and FIFOs, but also includes a long section on System V IPC mechanisms (messages, semaphores, and shared memory). Chapters cover the BSD socket abstraction and System V’s Transport Layer Interface (TLI). He ends his discussion of the interfaces with chapters on security and Remote Procedure Call (RPC) and several extended programming examples. While some of the examples (such as the date and time server) can be found elsewhere, he includes an implementation of the Trivial File Transfer Protocol (RFC’s 906 and 951), a line printer spooler, and a remote login server with a simple terminal driver module. The book includes numerous figures and charts, which are uniformly helpful.

This volume is at once focused (it is not about UNIX internals: only one reference to i-node appears in the index) and catholic. While a number of books cover parts of this story, such as BSD [1], TCP [2], ONC [3], or NCS [4], Stevens talks about System V and BSD; IP and IPC. Facing a world of multiple standards, he shows how to design portable applications.

Not only does he cover the territory, he attempts to improve it. He notes, with quiet understatement, that “the semaphore facility provided by System V is not simple to understand or use.” He goes on to provide an alternative interface that deals with the race conditions inherent in the separation of creation and initialization in the System V semaphore calls. His interface reduces the bewildering array of choices without diminishing what can be accomplished.

To appear objective, I must note some shortcomings. The book does not discuss internetworking with DOS LANs at the same level of detail. Stevens makes frequent digs at academic courses that do not cover “real world” examples. (I know of few college or university courses that could do justice to the 444 densely packed pages before the author’s introduction of the Ping routine. Academic exercises are academic for a reason: the students have a fixed amount of time and a variable background.)

More seriously, the author does not cover high-level services other than those he develops. For example, he does not discuss any naming services outside of brief mentions of low-level services such as the portmapper and the location broker. I am thankful that he did not wait until he had everything in the book: at over 700 pages, with numerous examples, there is plenty there for me. Further, this area is changing rapidly. Many of the interfaces he describes will be extended, aging the book.

Stevens has provided an invaluable service to the computer science community by writing an excellent introduction to a great many arcane but crucial topics, and Prentice-Hall has done a splendid job of producing it. A blessing on both houses: may they prosper and produce many more editions. Anyone interested enough in the topic to read this far will want a copy close at hand.

Reviewer:  J. Parker Review #: CR115152
1) Leffler, S. J.; McKusick, M. K.; Karels, M. J.; and Quarterman, J. S. The design and implementation of the 4.3BSD UNIX operating system. Addison-Wesley, Reading, MA, 1989.
2) Comer, D. E. Internetworking with TCP/IP. Prentice-Hall, Englewood Cliffs, NJ, 1987.
3) Corbin, J. R. The art of distributed applications. Springer-Verlag, New York, 1991.
4) Zahn, L. Network computing architecture. Prentice-Hall, Englewood Cliffs, NJ, 1990.
Bookmark and Share
 
Unix (D.4.0 ... )
 
 
Network Operating Systems (C.2.4 ... )
 
 
Network Architecture And Design (C.2.1 )
 
Would you recommend this review?
yes
no
Other reviews under "Unix": Date
UNIX systems: advanced administration and management handbook
Hunter B., Bradford-Hunter K., Macmillan Publishing Co., Inc., Indianapolis, IN, 1991. Type: Book (9780023589508)
Feb 1 1992
UNIX system security
Farrow R., Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1991. Type: Book (9780201570304)
Oct 1 1992
UNIX communications (2nd ed.)
Anderson B., Costales B., Henderson H., Sams, Indianapolis, IN, 1991. Type: Book (9780672227738)
May 1 1992
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy