Changes from the Second Edition
Sockets have been around, more or less in their current form, since the 1980s, and it is a tribute to their initial design that they have continued to be the network API of choice. Therefore, it may come as a surprise to learn that quite a bit has changed since the second edition of this book was published in 1998. The changes we've made to the text are summarized as follows:
This new edition contains updated information on IPv6, which was only in draft form at the time of publication of the second edition and has evolved somewhat.
The descriptions of functions and the examples have all been updated to reflect the most recent POSIX specification (POSIX 1003.1-2001), also known as the Single Unix Specification Version 3.
The coverage of the X/Open Transport Interface (XTI) has been dropped. That API has fallen out of common use and even the most recent POSIX specification does not bother to cover it.
The coverage of TCP for transactions (T/TCP) has been dropped.
Three chapters have been added to describe a relatively new transport protocol, SCTP. This reliable, message-oriented protocol provides multiple streams between endpoints and transport-level support for multihoming. It was originally designed for transport of telephony signaling across the Internet, but provides some features that many applications could take advantage of.
A chapter has been added on key management sockets, which may be used with Internet Protocol Security (IPsec) and other network security services.
The machines used, as well as the versions of their variants of Unix, have all been updated, and the examples have been updated to reflect how these machines behave. In many cases, examples were updated because OS vendors fixed bugs or added features, but as one might expect, we've discovered the occasional new bug here and there. The machines used for testing the examples in this book were:
Apple Power PC running MacOS/X 10.2.6
HP PA-RISC running HP-UX 11i
IBM Power PC running AIX 5.1
Intel x86 running FreeBSD 4.8
Intel x86 running Linux 2.4.7
Sun SPARC running FreeBSD 5.1
Sun SPARC running Solaris 9
See Figure 1.16 for details on how these machines were used.
Volume 2 of this UNIX Network Programming series, subtitled Interprocess Communications, builds on the material presented here to cover message passing, synchronization, shared memory, and remote procedure calls.