You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!

Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.

If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.

Having a problem logging in? Please visit this page to clear all LQ-related cookies.

Introduction to Linux - A Hands on Guide

This guide was created as an overview of the Linux Operating System, geared toward new users as an exploration tour and getting started guide, with exercises at the end of each chapter.
For more advanced trainees it can be a desktop reference, and a collection of the base knowledge needed to proceed with system and network administration. This book contains many real life examples derived from the author's experience as a Linux system and network administrator, trainer and consultant. They hope these examples will help you to get a better understanding of the Linux system and that you feel encouraged to try out things on your own.

It's a description of lower levels of the network stack. Covers layers up to 3 (IP etc + ICMP). Not much about layer 4+ and socket interface. Detailed. Requires (basic) knowledge of kernel internals and at least general idea how the networking protocols work.

I wish I had that book long time ago when I was starting digging in Linux networking code...

What's hard when staring reading networking code is the amount of it. There are really many (often complicated) structures and the code uses many functions from different places. That makes the process of learning how the things work exactly quite a time-consuming one.

"Understanding Linux Networking Internals" makes the first days (weeks?) much easier. It gives a solid background and prepares the reader to his or her own studies of the Linux networking code. The book shows many concepts which would take long time to understand. It also shows the reasons.

The book starts with general networking and kernel introduction (not enough if that's the reader's first contact with one or both). Then it goes through layers, staring from the bottom (ie. close to hardware): network devices. Then it covers bridging. Next part covers IP protocol in version 4 (with one chapter about ICMP), with advanced topics like fragmentation. Then there comes neighboring subsystem (with ARP protocol) and the book finishes with routing.

The choice of topics is good (but lacks certain things, see below). Popular (and, at the same time, important) protocols are shown. Descriptions are very detailed and that is visible in the size of the book: 1000 pages long.

The text is clearly written, with enough examples. There are also many diagrams (for nearly all more complicated algorithms presented in the book) making it easier to follow the descriptions.

One warning here: when it comes the IP code, knowledge of the protocol is important That part may be hard to understand without it. I highly recommend a book about protocols first. The discussion is detailed and also not so well-known features are discussed.

It'd be nice, however, to know from which version of the kernel comes the code and which version is described in the book, it's not clearly stated.

It's a very valuable resource, but you always want more. So... To be a complete guide to Linux networking stack the book lacks certain important pieces, however. Level 4 protocols are not shown. This is not a very serious issue, as IP description is detailed and TCP would take no less than 300 pages (UDP, on the other hand, would fit just fine). What's more important for me is the lack of chapters about sockets. It's an important interface, its' internals are not that simple and show some important concepts and tricks. Understanding sockets is also important when adding a new protocol. I'd like more about topics like locking and performance.

The lack of IPv6, IPSec, QoS (Quality of Service) is understandable, as they're all quite complicated. The content of the book makes it easier to understand their code.

It's a book I recommend (with a more general kernel and protocol books and/or specifications) to everyone beginning with networking code. In fact, the book is also valuable for those who're approaching *BSD network stacks - there are differences, but the general ideas and design are more or less the same. Good for developers or students who want to get familiar with a state-of-art network stack.