I've been several months eager to have a book describing the TCP/IP stack details and especially the interactions between the protocol stack and the socket system calls, especially having no response from the Linux networking kernel development communities (I don't criticize them but it is the fact that the kernel coders are busy with making new patches rather than helping others to understand the existing things). Therefore i ordered this book even without having seen any preliminary user comments on the Amazon web site.
The most attractive feature of the book is that the authors, attempting to share their understandings to the users, carefully organized topics with a natural logic that a kernel newbie is easy to follow. For example, there are several data structures regarding the TCP bind sockets but the source codes themselves are written in a quite confusing and inconsistent way, making it very hard to extract the role and usage of each of the structures. The authors list them all first and then dive into each with conceptual diagrams for the big picture of the data structure organizations. A typical fashion of discussion is applied throughout most of the topics, starting from the involved data structures as well as their organizations, and then walking through how the system calls interact with the protocol stack functions in manipulating these structures. It is clear that the authors are really experienced in modifying/customizing the Linux networking kernel.
The most unacceptable drawback of the book is, as another reviewer ever stated, the book contains a lot of typo and format errors. Because of them, the book looks like a rush result. Hope the revision will make out an elegant work.
It is a little pity that the book doesn't involve the UDP and raw sockets yet. However, I'd prefer to have such a TCP-only version first instead of waiting another half a year to have a more comprehensive one. The authors have promised UDP for the next edition but i'd like to suggest having the raw sockets as well, because the communication without port is not the same with the cases having the transport-layer identifiers.
The book covers an older version of Linux kernel, version 2.4, rather than the most updated 2.6, but this is understandable because such a work is very time-consuming. Personally i do think a book should be helpful in understanding problems rather than uncovering every algorithms. This book has achieved that.
Anyway, to my personal point of view, though there is very big and obvious room to improve the book, it contains currently the most comprehensive explanation over the TCP/IP stack in the Linux kernel. therefore I give 5 stars to the book and highly encourage the authors continuing the work, making the successive edition fully qualified.
The book is highly recommended to those who are trying to understand the linux networking kernel and making some modifications in it. it is suggested not only to read the book but also to read the original source code simultaneously, especially with a certain purpose of doing some research or development works.
For those who are using this book with new 2.6 Linux kernel, a careful comparison between the code of version 2.4 and that of 2.6 is necessary. The networking part in the version 2.6 is significantly changed from version 2.4 with introducing inet_ hash tables to replace the previous tcp hash data structures. However, following the clue that the book ever provided, one can get his/her own extraction on the current version 2.6 without much difficulty.