搜索
您的当前位置:首页正文

Linux_Network_Internals_Review

来源:意榕旅游网
Title: Understanding Linux Network Internals Author: Christian Benvenuti Publisher: O’Reilly Pages: 1035 ISBN: 0-596-00255-6

As someone who has been using Linux for a good number of years now, mainly in the capacity of installing and administering systems, college has offered me the opportunity to delve deeper into how computers and operating systems work by way of programming classes. While I am certainly nothing like Linus Torvalds, nor will I ever be a kernel “hacker” of any kind, it never hurts to have some knowledge of the kernel, and the various interfaces and mechanisms internal to it. That said, this book goes above and beyond a brief overview of the kernel’s networking code, and into incredibly detailed analysis of various kernel networking components, from how network interface cards are handled upon startup, to how Linux manages routing tables once loaded (along with how user-space applications/daemons, such as the Zebra BGP routing software, interact with it).

But first, the book starts off with an introduction to kernel programming practices.

Initially, I was a little surprised by this, but it makes sense: the book assumes little to no knowledge of kernel programming practices (though it of course assumes the reader is a programmer). The book does make subtle advertisements for other O’Reilly kernel books (the author mentions Understanding the Linux Kernel and Linux Device Drivers in his introduction), but having those on hand would certainly be handy for someone who is trying to wrap their mind around a piece of software as large and as complicated as the Linux kernel.

The author continues throughout each section (the book, being over 1,000 pages long, has many of these sections), introducing each topic, and giving a well-written, clear and concise explanation of what he is talking about. System initialization is just one of the many examples the author uses, but they are broad, and relatively in-depth. I learned a whole lot more than I had bargained for simply in how the Linux kernel boots than I could have ever imagined from a Linux networking book.

In addition to the in-depth introductions to each subject, the author also includes a list of function and variable names used throughout the chapter, at the end of each chapter, complete with a description. These functions and variables are further broken down by “Functions and macros”, “Global variables”, and “Data structures”. Also handy is the list of files and directories referred to, which follows a standard Linux 2.6 kernel tree. While this will be subject to change as the kernel evolves, it’s nice to know right now where the files are that the author refers to, in case one is inclined to make any changes as discussed in the book.

In addition, since the book covers so much about the kernel and hardware (networking hardware in particular, obviously), it covers a lot of things that one wouldn’t necessarily think would be covered. Examples of this involve basics of how to register a PCI device

with the kernel, and how the usage of macros in the 2.6 kernel makes certain definitions for modular or non-modular device drivers much easier to write, compared to older kernel versions (the specific comparison was to kernel 2.2.14, for those interested). It’s rather interesting, from the perspective of a user and not a programmer, as to how devices are actually initialized on startup, and what is required of someone who is writing a device driver.

To be very honest, a great deal of programming knowledge is required to get even a small fraction of what this book is truly worth. The good news there is there is so much

information within the book; there is something for everyone, so to speak. Whether it’s just to get an understanding of various kernel network parameters, or how to tune the IP stack for maximum performance via the proc file system, this book has it all. I could not possibly think of a more thorough reference for the networking portion of the kernel, and giving Safari* a quick search for books about Linux and its networking capabilities (as far as the kernel is concerned), NOTHING came up, which speaks volumes in my mind. A programmer with a great understanding of C/C++, a fair bit of knowledge about operating systems, and this book (combined with Understanding the Linux Kernel and Linux Device Drivers) still might not be any kind of Linus Torvalds, but will certainly be able to do anything remotely possible with the great foundation that the Linux kernel is.

*Safari – I’m sure most of you know about Safari Online by now, but if you have not heard of it, it’s simply a huge collection of technical books made available online by a variety of publishers, O’Reilly included. It is normally a service that is charged for, but Virginia Tech subscribes to it. The address to access it is

http://proquest.safaribooksonline.com/?uicode=vatech (users who are not on campus will either have to VPN in, or use the library’s proxy server). Again, I am sure that most of you have heard of this, but just in case you have not, it is indispensable.

Reviewed by: Sean Elble

Undergraduate, Computer Engineering, Class of 2008 Vice President, VTLUUG Virginia Tech

因篇幅问题不能全部显示,请点此查看更多更全内容

Top