Unix Network Programming, Vol. 1: The Sockets Networking API, Third Edition
W. Richard Stevens | Bill Fenner | Andrew M. Rudoff | Richard W. Stevens


Compras Nikon
Bluetooth
1 The classic and best Unix network programming book!
With the updated third edition, this book keeps getting better and better with age. I've been using this book since 1991 when I was just a green programmer who got assigned to his first real Unix project (Stevens was then the sole author). I'm not one who dishes out praises lightly, so when I state that this is _the_ best network programming book around there must be a good reason. Stevens had a way of taking a complex subject and in a few pages, if you follow the text and examples, making it crystal clear. The new authors, I believe, are continuing this fine tradition.

Practically everything about network programming is here. Many examples on how to use socket, bind, listen, select, accept, connect, read, write, you name it. A lot of sample code on how to write robust TCP/UDP clients and servers. The programming style is clear and easy to understand. The new edition has plenty of updates to follow POSIX standards.

This book will not make you an expert overnight, but it will make you an expert. There are other network programming books out there, to be sure, but this one is at the top.
2 Classic work - but in series need of updates as time goes on
I cannot fathom a guess as to how many times the books in this series have saved my in project work over the years. The only drawback with this series is that some publisher should endeavor to keep them up to date. Serious Unix system programmers must have copies of the complete series.
3 Great book about sockets
It deserve place on your shelf. I just wanted to know more about sockets. The choice was right. There is no more mystery. I didn't go into details about code. That was not my goal. The goal was socket. I got what I was expecting to get.
4 current classic
This book, as with all other Stevens books, can be used as either a tutorial or reference. The depth of information here is unparalleled. I continue to be impressed with the detail in this book. Fenner and Rudoff have done an outstanding job of maintaining quality and tradition this invaluable reference. Avid Stevens fans will not be disappointed.

3rd edition updates include:
*IPv6 added
*POSIX 1003.1-2001 added
*XTI dropped
*T/TCP dropped
*SCTP added
*Key Management Sockets for use with IPSec Added
*Machines used for examples updated
*Other material updated where appropriate (including new functions)

I bought this book a year ago along with Stevens "Advanced Programming in the UNIX Environment" I read most of this book as a tutorial on network programming. I continue to use it as reference. I also read all of APUE. Since then I've added TCP/IP Illustrated, Volume 1 and UNIX Network Programming, Volume 2 to my collection. I've come to apprecaite the painstaking detail, pure clarity, and conciseness that are the hallmarks of all Stevens books.

I'm thankful that Rudoff and Fenner updated this classic. This book is all most will need for the sockets API. I don't have the second edition, but I'm quite happy with the third. It's good to have something that speaks to IPv6. This is the best of the old and new. I wouldn't mind seeing an updated version of TCP/IP Illustrated volumes 1 and 2 either if Fenner and Rudoff are up to it.

All of the Stevens books compliment each other really well. Truth be told, the more Stevens books you read the better off you are.
5 Great book, while code exmp could be more straight forward
I bought this book about a month ago and used it very extensively for my UNIX programming project. While this book is great and very comprehensive, I did find code examples very confusing. As coping a variable from the socket struct into variable and then from this variable into custom structure, then manipulating this custom structure and finally printing. It would be better to use as less transformation as possible. Because it makes very hard to find what this variable has and where it came from. At the end all I'm looking for is simple but good example of how to use sockets...etc, it's not a C programming book.
6 A great teacher; an essential reference
I learned both network programming and threaded programming (pthreads) from this book (the 1998 2nd edition), and it was a great teacher. I used it to design and implement a client server protocol for a research project involving 10 machines and about 15 communicating processes. One of the things I really appreciate about the book is the detailed examples.

After the concepts (a server 'listens' for a connection; a client initiates a connection) and basics of packets and sockets, the book presents a simple tcp server and client -- the server simply echos back whatever the client sends. Next, it discusses what can go wrong with the simple version, and presents an improved echo server that behave better when the client crashes (and likewise an improved client).

The book continues to improve on the basic client/server, including address resolution, and servers that handle multiple clients using forks, threads, non-blocking I/O. This is all I needed to learn from the book, and it's all in the first half of the book.

Particularly useful is Chapter 27, Client-Server Design Alternatives. To me it alone was worth the price of the book. Here the book discusses concurrent servers with three basic architectures:

(1) non-blocking I/O, no threads or forks (advantage: full control of resource allocation; disadvantag: complexity);

(2) spawn a thread or fork for each client (simplest implementation; potential problem of too many children);

(3) servers that pre-allocate a pool of threads or forks (a happy medium; faster).

Other chapters discuss broadcasting, multicasting, out of band data, routing sockets, and raw sockets; all topics I hope to learn some day. Again, this is a great book. The 3rd edition brings it up to date for IPV6 and numerous small improvements.


7 Continuing the work of a legend in the field of CS
It would be difficult to put value on a book that has been a classic text and a reference in academia and in the real world in the context of Network Programming for over a decade. Richard Stevens published the ever-popular Unix Network Programming [UNP] back in 1990, followed the second edition in 1998. With a dedication to the memory of R. Stevens, the UNP book found itself two new authors, Bill Fenner and Andrew M. Rudoff, who would write the third edition of this book. The third edition has many updates, a new look and feel and many of new chapters that cover the topics more applicable these days. In my opinion, it is still the most valuable and profound text in the context of Network Programming.

For those of us who have the first two editions of this book, the third edition has the following changes in effect:
á IPv6 updates. In the second version of the book, IPv6 was merely a draft and the sections covering IPv6 has been updated to take these changes into effect.

á POSIX updates. The functions/APIs and examples have been updated to reflect the changes to the latest version of the POSIX specification (1003.1-2001)
á SCTP coverage. 3 new chapters that cover this new reliable, message-based transport protocol have been added.
á Key Management Sockets coverage. Network security and its applicability and use with IPsec.
á Updated Operating Systems and machines that are used to run the examples in the book.
á Some topics such as Transaction TCP and X/Open Transport Interface have been dropped.

Many topics and sections have been updated with the authors' comments. These comments even though simple for someone new to the profession, are extremely useful as they are like hints and tips from one developer to the next to help you out in your next programming assignment.

If this is the only edition of the book that you are reading, you are in for a treat. Topics in Network Programming are covered in detail and using concrete programming examples that all of us can relate to - all Unix, but what else is there?! All kidding aside, the topics are covered well enough that they are useful information under any Operating System. The concepts don't change; sockets are sockets under any Operating System. The function call is different, but one needs to go thru the same steps under any environment.

Being the most popular networking protocol, TCP/IP is covered in Part I of the book. One needs to have prior understanding of the TCP/IP protocol and the OSI model, however. If this is the first time you are looking at the programming aspects of networking protocols, Part I of this book will cover the basics. It starts you off with a couple of simple examples such as daytime client and a daytime server and it builds on that as the reader reads along. TCP, UDP and SCTP (Stream Control Transmission Protocol) are covered in brief in Part I, and basic concepts such as the three-way handshake of TCP and the four-way handshake of SCTP are depicted.

Part II of the book covers sockets and socket programming. Topics such as the socket Address Structure in IPv4 and IPv6 for TCP, UDP and SCTP are covered and examples (the same daytime client/server) are given to convey the point to the reader. It is important to mention here that all the topics and concepts are depicted for the three transport protocols: TCP, UDP and SCTP. Every single socket API under the Unix programming environment is covered and examples are given for each function call to show the reader how the function can be utilized. An entire chapter has been dedicated to Socket Options and how they are used/can be used for best results. Hints are given throughout the chapter to tell the user about the pitfalls and best practices of each option.

After the basics have been covered, various I/O models are depicted in detail and examples are shown to convey the pro's and con's of each I/O model. The five I/O models used thru the book and available under the Unix environment are:
á Blocking I/O
á Non-blocking I/O
á I/O Multiplexing (using select and poll)
á Signal driven I/O
á Asynchronous I/O

SCTP - Stream Control Transmission Protocol, a new IEFT standard are covered in later chapters of 9 and 10 and again in chapter 23. The two interface models of SCTP (one-to-one and one-to-many) are covered in detail, and their differences with TCP are also explained in full. The client/server example that has been used throughout the book is ported to use the new SCTP protocol. The authors then go into great detail explaining the problems that SCTP solves over TCP and where and how it would be useful to use SCTP.

Advanced topics such as IPv4 and IPv6 portability, Unix Domain Protocols, Multicasting and advanced Socket programming for UDP, TCP and SCTP cover the rest of the chapters in this book.
Various options for interoperability between IPv4 and IPv6 start off the last section of the book. A chapter on Advanced I/O functions brings the reader a new perspective of how complicated Network Programming can become. Non-blocking I/O, befits and examples are covered in chapter 16. The topics on Multicasting, and adding reliability to UDP are probably my favorite chapters in this book. The Time Server that has been used throughout the book is re-coded to become a multicast application. Some issues that arise when designing multicast applications such as multicast on a WAN are also discussed.
The third edition of the UNP book is as good as ever. The updates truly reflect solutions to today's challenges in Network Programming. Bill Fenner and Andrew Rudoff did an amazing job continuing the work a true legend in the field of Computer Science.


8 Invaluable UNIX Programming Resource
While not a C programmer by any means, I decided to take some time and tackle the UNIX Network Programming book. I found that lots of early college classes came back to me as I forged a few pages in. It was clear from the very beginning that this book was going to be a very detailed study on all aspects of IP networking as it relates to UNIX programmers. Even for someone who isn't initiated in the topic or really even interested, it was quite an experience to read through the hundreds of flow charts and detailed examples of C code showing how to perform all kinds of interesting network tasks.

From a simple HTTP GET to detailed network file and connectivity operations, including TCP and UDP packets, ports, sockets and so on, there is a place in the book for each kind of network programming service. There is also a fair amount of text dealing with debugging techniques, allowing even those programmers who are experienced in their craft to find new ways to ferret out the problems in their code. The book also promotes good stylistics in programming, engendering the idea that readable and understandable code is better code than that which simply works.

There are also examples and explanations for IPv6?, for any programmer who is going to be making the leap into next generation networks. There are also instructions on how to deal with wireless networks, security models and other topics for anyone who plans on designing network applications or specialized network configurations.

It's probably not accurate to rate a book on a topic that holds little interest to the reader, but even a modest script programmer can tell when a book hits a subject just right and brings out all the details in a concise, easy-to-understand way. If you're a hard-core network programmer, this book is definitely for you. If not, you may find you learn something anyway.


9 LUG:ng Book review
The book was great. It covers both the basics for the TCP/IP API in Unix and some advanced techniques of Network Programming. The book was a very easy read and flowed great. There were plenty of code examples so you could read and see how the functionality would work. Besides this being a great reference tool for any Unix Programmer, it is a great tool for anyone looking to develop Unix apps with the new IPV6 standard. The book thouroughly covers both IPV4 and IPV6. When using it as a reference tool, the index is amazingly detailed. It makes finding the information your looking for quick and easy. This is one book that a Unix Programmer can't do without.
10 A must have
This book is a must have for anyone who writes networking code in C or C++ for UNIX/POSIX systems. It is complete, easy to understand, and stands up well both to skimming and to use as a reference.

Surprisingly, it includes both multithreaded I/O concepts, raw sockets, routing sockets, and even IPv6 (in amazing detail) and SCTP.

This book is worth its weight in gold to anyone from a student to a professional.


11 A New Classic
This will become the new classic of Unix Network Programming. When I first heard that there was a new edition, I was afraid that the classic would be destroyed. Although it is quite different and much of it has been done by "et al", it turns out to be quite good.

Initially I did a quick scan and immediately saw some things missing (like FTP). However, after reading the book and realizing how infrequently I had referenced the missing parts in the first book, I was much happier. With the additional IPv6 information and newer technologies, this more than made up for the deletions (from volume one).

The text is easy to read and flows logically. What really impressed me was the depth of the expertise. For me, there had been some stumbling blocks in TCP and UDP development early on (especially nuances of UDP) that took a fair amount of time to figure out. I was pleasantly surprised to see many of those difficulties laid out cleanly for anyone to figure out in a matter of minutes. That alone is worth the price of the book.

The index is extensive and helpful. The questions at the end of each chapter are limited, but enough to be useful in a college course.

The printing is high quality. The paper is high quality (thin, but strong so that the 1000 page book is not huge or heavy). The printing takes up much of the page (i.e., not two-inch borders like some books). The binding lies flat without separating the pages. Definitely a quality printing.

Yes, a new classic.


12 Excellent
There is no word to express how GOOD this book.I really suggest for novice to buy this book and i GUARANTEE that you WILL BECOME A NETWORK MASTER.I've just finished reading this book and i use this book for my project and AMAZINGLY I'M ON MY WAY TO MASTER IT.
13 Essential
I have UNP EEE, Green Cover, paperback, '93(I think). R. Stevens would be proud of this book. After 14 years, they **finally** got it right!(Zb)-peace-
14 An essential book for your UNIX library
The book is really great. Most if not all serious UNIX programmers out there have a copy of Stevens books that they hold close to their hearts as well as to their UNIX/Linux machine. This new edition continues the tradition of presenting excellent content and adds on the original Stevens edition with new topics.

There is a number of changes in this new edition that are very important. First the ccoverage of the new SCTP protocol in chapters 9 and 10. Then the coverage of the new IP protocol, IPv6 and its interoperability with IPv4 in chapter 12 and Appendix A.
In addition, the coverage of an important feature: POSIX standards which is a single UNIX specification. Plus the extensive coverage of whatever API that exist!

All owners of the previous edition realize the value of this book and the excellent quality of the material it presents. This new edition continues in the same direction with new additional contents. For people who are new to this book, this is a great book on Unix programming, a very well known and respected classic that is a must to have.

A definite recommendation.


15 a great book, especially for Unix/networking developers
The book is incredible. I am still a proud owner of
the original version (the one with a plain white
cover with blue lettering), but this new version
beats everything.

Chapter 12 (IPv4 and IPv6 interoperability) is extremely
valuable to slightly older developers like me that have
a fair bit of IPv4 socket programming experience but that
have not had time to plunge seriously into IPv6 socket
programming. Appendix A manages to give a fairly thorough
introduction to both IPv4 and IPv6 in less than 20 pages.
This will be very popular in universities.

The book also continues to be a living history of UNIX,
where many given API calls are not only defined and explained,
but documented as to how the API call came into being, how
many different versions of the function existed, why it got
changed and when, along with recommended do's and dont's...

All around, a must buy for developers and even
non-developers who want to understand a bit of the
the true nature of the 'plumbing' that underlies
the Internet.



Thursday, 24-Jul-2008 04:43:51 CDT
Quote of the Day:


A scientific truth does not triumph by convincing its opponents and

making them see the light, but rather because its opponents eventually
die and a new generation grows up that is familiar with it.
-- Max Planck

Statistics are no substitute for judgement.
-- Henry Clay