Today more than ever before, networking is a hot topic. Any electronic gadget in its latest generation embeds some kind of networking capability. The Internet continues to broaden in its population and opportunities. It should not come as a surprise that a robust, freely available, and feature-rich operating system like Linux is well accepted by many producers of embedded devices. Its networking capabilities make it an optimal operating system for networking devices of any kind. The features it already has are well implemented, and new ones can be added easily. If you are a developer for embedded devices or a student who would like to experiment with Linux, this book will provide you with good fodder.
今天相对以往更多的,网络不是一个热门的话题。任何最终版本的电子小器件嵌入某一种类的网络功能。因特网继续在它的容量和机会中机会扩展。它不应该作为一个令人惊奇的事物-一个鲁棒的、免费提供的、功能丰富的操作系统像linux被很多嵌入式设备生产商很好的接受 出现。它的网络能力使它对于任何一种网络设备成为一个营运的操作系统。这个功能已经被很好的完成,新功能的能够被很容易的添加。如果你是个嵌入式系统开发人员,或者你是个喜欢linux实践的学生,这本书会提供给你很好的素材。
The performance of a pure software-based product that uses Linux cannot compete with commercial products that can count on the help of specialized hardware. This of course is not a criticism of software; it is a simple recognition of the consequence of the speed difference between dedicated hardware and general-purpose CPUs. However, Linux can definitely compete with low-end commercial products that are entirely software-based. Of course, simple extensions to the Linux kernel allow vendors to use Linux on hybrid systems as well (software and hardware); it is only a matter of writing the necessary device drivers.
一个基于使用Linux产品的纯净软件的性能比不上能够在专业硬件帮助下计算的商业软件的效率。这当然不是一个软件的评论;它是一个在专用硬件和通用中央处理器之间的速度不同的结果的简单认识。无论如何,Linux能够与低档的完全基于软件的商业软件进行明确竞争。当然,linux扩展到Linux核心,允许用户扩展到允许用户在混合系统(硬件和软件)上使用Linux的Linux核心;它仅有一个写必须的设备驱动的问题。
Linux is also often used as the operating system of choice for the implementation of university projects and theses. Not all of them make it to the official kernel (not right away, at least). A few do, and others are simply made available online as patches to the official kernel. Isn't it a great satisfaction and reward to see your contribution to the Linux kernel being used by potentially millions of users? There is only one drawback: if your contribution is really appreciated, you may not be able to cope with the numerous emails of thanks or requests for help.
The momentum for Linux has been growing continually over the past years, and apparently it can only keep growing.
I first encountered Linux at the University of Bologna, where I was a grad student in computer science around 10 years ago. What a wonderful piece of software! I could work on my image processing projects at home on an i286/486 computer without having to compete with other students for access to the few Sun stations available at the university labs.
Linux也被经常使用作为选择为大学项目和论文完成的操作系统。不是所有的核心成为正式的核心(至少不是马上)。做了一些后,其他的部分可以作为在线升级包用来作为正式的核心。看到你对linux的贡献可以预期存在数百万用户难道这不是一个非常伟大的满足和回报?仅仅有一个缺点:如果你的贡献被真正的感激, 你可能不会收到很多的感谢信或者帮助需求。这是linux在过去几年一直不断成长的动力,显然它仅仅能保持成长。我在博洛尼亚大学第一次遭遇Linux,在哪大概10年前我是个计算机专业的研究生。一个多么精彩的软件啊!我能在家里工作在我的图像处理项目,不用和其他学生争抢访问很少的只能在大学实验室使用的Sun工作站。
Since then, my marriage to Linux has never seen a gray day. It has even started to displace my fond memories of the glorious C64 generation, when I was first introduced to programming with Assembly language and the various dialects of BASIC. Yes, I belong to the C64 generation, and to some extent I can compare the joy of my first programming experiences with the C64 to my first journeys into the Linux kernel.
从那以后,我与Linux的婚姻从来没有看起来灰色的日子。它甚至已经开始替代了我喜欢的关于光辉的C64时代的回忆,那是当我第一次使用汇编语言和各种不同的BASIC语言介绍程序的时候。是的,我属于C64时代,在一些领域我能够区分我的第一个使用C64的程序经验和我的第一个进入Linux核心的旅程的不同。
When I was first introduced to the beautiful world of networking, I started playing with the tools available on Linux. I also had the fortune to work for a UNESCO center in Italy where I helped develop their networking courses, based entirely on Linux boxes. That gave me access to a good lab equipped with all sorts of network devices and documentation, plus plenty of Linux enthusiasts to learn from and to collaborate with.
当我第一次介绍网络这个漂亮单词的时候,我开始在Linux上使用这个工具。我也有机会在意大利的一个联合国教科文组织工作,在那我帮助开发他们的完全基于Linux的网络课程。那给我了访问一个使用各种各样网络设备装的好的实验室和文档,另外有大量的linux爱好者可以互相学习和合作。
Unfortunately for my own peace of mind (but fortunately, I hope, for the reader of this book who benefits from the results), I am the kind of person that likes to understand everything and takes very little for granted. So at UNESCO, I started looking into the kernel code. This not only proved to be a good way to burn in my knowledge, but it also gave me more confidence in making use of user-space configuration tools: whenever a configuration tool did not provide a specific option, I usually knew whether it would be possible to add it or whether it would have required significant changes to the kernel. This kind of study turns into a path without an end: you always want more.
After developing a few tools as extensions to the Linux kernel (some revision of versions 2.0 and 2.2), my love for operating systems and networking led me to the Silicon Valley (Cisco Systems). When you learn a language, be it a human language or a computer programming language, a rule emerges: the more languages you know, the easier it becomes to learn new ones. You can identify each one's strengths and weaknesses, see the reasons behind design compromises, etc. The same applies to operating systems.
遗憾的对我自己的平和心情(但是幸运的,我希望,这本书的读者从结果中得到好处),我是喜欢理解每样东西和很少想当然的类型的人。因此在联合国教科文组织,我开始研究核心代码。这不是仅有的提供一个好办法来在我的知识中燃烧,而且它也提供了更多的把握在制造用户空间配置工具的用法方面:无论什么时候一个配置工具不提供一个特定的选项,我通常知道添加它是否得可能的或者是否它对核心有重要的改变。这种学习变成了没有结束的一条路:你一直想要学的更多。在开发一些工具作为Linux核心的扩展后(版本2.0和2.2的一些版本),我对操作系统和网络的热爱引导我走向硅谷(思科公司)。当你学习一门语言的时候,人类语言或者计算机语言,规则形成:你知道更多的语言,你学习新语言会变的更容易。你能够辨别每个人的长处和弱点,看清楚隐藏在妥协之后的原因,等等。同样的会应用到操作系统。
When I noticed the lack of good documentation about the networking code of the Linux kernel and the availability of good books for other parts of the kernel, I decided to try filling in the gapor at least part of it. I hope this book will give you the starting documentation that I would have loved to have had years ago.
当我注意到缺少好的关于linux核心的网络代码的文档和关于核心的其他部分的有益的好书的时候,我决定试着填充这部分空白。我希望这本书会带给你在我在很多年前会已经爱上这些方面的启动文档。
I believe that this book, together with O'Reilly's other two kernel books (Understanding the Linux Kernel and Linux Device Drivers), represents a good starting point for anyone willing to learn more about the Linux kernel internals. They complement each other and, when they do not address a given feature, point the reader to external documentation sources (when available).
我相信这本书会和奥雷利其他的两个核心的书籍(理解Linux和性能和Linux设备驱动)一起,为任何人带来一个好的起点,会学习更多的关于Linux核心内部的东西。他们互相补充,当他们没有解释被给定的功能的时候,知道读者到扩展的文档资源(当这些资源可用的时候)。
However, I still suggest you make some coffee, turn on the music, and spend some time on the source code trying to understand how a given feature is implemented. I believe the knowledge you build in this way lasts longer than that built in any other way. Shortcuts are good, but sometimes the long way has its advantages, too.
无论如何,我仍然建议你做一些咖啡,打开音乐,在源代码上花费一些时间试着理解一个给定的功能如何被执行。我相信你用这个办法获得的知识比其他办法更牢固。快捷方式是好的,但是有时遥远的道路也有它的优势。