This book is marred by pretty bad translation from the original German edition. It takes a while to figure out that the translator is more an English major struggling with intricate computer science terminologies than a fellow programmer. For example, device "base address" is translated to device "basic address" in chapter 5, multiple times; "re-compile the entire kernel" miraculously becomes "retranslate the entire kernel" in chapter 2.
There are also quite a bit of misleading typos. Like "ip_input()" appears multiple times in the discussion of chapter 14, although no such function exists in the code. Actually, the correct term should have been "ip_input.c" - referring to a file, not a function.
It is a major triumph for a German book on Linux network stack to be translated to English by a major publisher; my guess is the German version is well written and well received. This probably means that the English translation/editing is the main culprit.
Other than the cryptic translation and typos, the book does quite detailed code walkthroughs in the Linux network stack. It traces the function calls as an incoming packet enters the Linux kernel from the device driver, and as an outgoing packet propagates down from the higher protocols. The stack uses a lot of function pointers and this makes reading the code quite difficult unless a book like this tells you what function the pointer is pointing to. This, I feel, is the redeeming feature of the book, especially when you are diving deep into the code. There are a bit of code insights described here and there throughout the book, but generally such passages are few and far between, amidst the voluminous mechanical description of who calls who in the code; nothing compares to the kind of insights in Robert Love's "Linux Kernel Development" book.
I would suggest that you look at the "Linux TCP/IP Stack" book by Herbert first, then try this one if you really need help tracing the code.