序言本书述说的是Linux内核的网路子系统构架。创作本书的想法源自日本Karlsruhe学院信息通讯大学。在该校,Linux内核被运用于许多项目的研究,且其网路功能分别得到了有针对性的改进和提升。诸如linux系统镜像下载,针对下一代Internet开发出了新的服务和合同,并对它们的行为也进行了研究。据悉,对于现有的合同(如TCP传输合同)也进行了更改,以改善其行为和适应Internet的新情况。在这种项目的研究过程中我们发觉linux内核中网络协议的设计与实现,Linux内核特别适宜于新的网路功能性的研究,由于它对于TCP/IP合同族具有一个稳定和广泛的实现。Linux源代码的免费可得性促使我们可以便捷地对合同实例的功能进行更改和提高。据悉,内核模块原理对内核功能性的提高提供了挺好的支持。但是,这一领域的许多研究和论文表明,对某一合同实例行为进行更改的前提是必须熟悉Linux网路构架,而这须要花费大量的时间和精力。不幸的是,导致这一情况的主要缘由在于Linux内核网路子系统的注解十分糟糕,且没有用于解释和总结基本概念的材料。虽然早已有一些书籍介绍Linux内核的构架和基本概念,而且尚没有一本完整地阐述其网路实现的书。造成这些状况可能是因为以下两个诱因:*Linux内核的网路子系统十分复杂。
如前所述,它实现了大量的合同,这也很可能是Linux获得巨大成功的一个主要诱因。[BoCe00]和[BBDK+01]均提及,对于那些合同及其概念的表述实际上就足以写一整本书。其实,读者如今正在读的就是这样的一本书,正如读者所能见到的那样,这本书的容量相当大,虽然不仅解释Linux网路构架的基本概念之外红旗linux5.0,它仅仅表述了部份网路功能性。*操作系统的开发人员一般只会涉及到系统构架的精典主题,如显存、进程、设备的管理或系统并行活动的同步,而不涉及网路数据包的处理。随着对本书学习的深入,读者肯定会注意到,这本书不是由系统开发人员而是由计算机科学专家和通讯工程师撰写的。考虑到关于Linux网路构架的文档极少且中学生必须熟练把握该知识的这一事实,我们就有了自己创建一份简单的Linux网路构架文档的看法。另一个心愿--这最终使得本书的思想更为广泛——是对重要的通讯问题的加强讨论:在现实系统中设计和实现网路合同。网路课程授予中学生联通领域中最重要的概念和标准,并且通过应用计算机科学概念来设计和实现网路功能性(主要是网路合同的)在教学工作中遭到的关注却比较少,虽然这方面的知识在研究和论文中是要常常被用到的。
作者觉得对Linux网路构架的实现以及对其结构、接口和所应用概念的阐述是对网路课程中的信息学部份的进一步巩固。作者希望此书才能帮助读者更容易理解Linux网路构架的进程和结构,并且最重要的是,使读者对此有兴趣,并了解一些有关网路概念及其实际应用的东西。本书的内容与我们对Linux网路构架的了解相吻合。我们对Linux网路构架的了解既不全面也不彻底。并且,我们早已尽可能地以一种详细易懂的风格来描述Linux网路构架的进程和结构。谢谢为本书的改进、观点和注释提供忠告和建议的人们,在之后的版本中我们将会尽量考虑到这种忠告和建议。关于Linux网路构架的最新信息和本书的相关信息均可参见网址Linux-netzwerkarchitektur.de。本书的组织结构第1章主要集中表述了Linux发展的通常促进诱因,而且非常介绍了Linux网路构架发展的促进诱因;第2章对Linux内核的基本机理和组件进行了介绍。为了精简本书内容,我们将仅仅讨论这些对于理解Linux网路构架比较重要的组件。至于Linux内核的其他组件,建议读者参考其他书目(例如[BBDK+01])。第3章初步介绍了通讯系统的总体构架和合同以及合同实例的功能性,包括对流行的TCP/IP和ISO/OSI分层模型的介绍。
第4章和第5章讨论了Linux网路构架的基本概念,包括Linux内核中网路数据包的表示、管理(请参见第4章)和网路设备的概念(请参见第5章)。网路设备产生了高层合同实例之间的链路,并隐藏了某一统一插口前面相应网路适配器的特殊性。第6章总体介绍了Linux网路构架中的活动方式以及传输和接收进程流。据悉linux内核中网络协议的设计与实现,本章还介绍了高层合同实例的插口。第7章到第12章讨论了数据链路层的合同和机制。更明晰地说,这种章节表述了SLIP、PPP、以太网上PPP合同以及Linux是怎样支持ATM和Bluetooth网路技术的。最后,还描述了怎样借助Linux计算机使之成为一部透明集线器。第13章首先概述了TCP/IP合同族并借此展开了对TCP/IP合同的讨论。先从Internet导论开始谈起,之后对TCP/IP合同族中的不同合同进行了一个概述。第14章详尽介绍Internet合同(InternetProtocol)及其机制。据悉,本章还介绍了IP选项和ICMP合同。第15章到第23章介绍了网路层的以下合同和机制:ARP、路由、多播、流量控制、防火墙、连接跟踪、NAT、KIDS和IPv6。第24章和第25章分别阐述了TCP和UDP传输合同。
在第26章,以对套接字插口的解释结束对内核的讨论,之后简略概述了应用层上的网路功能编程。附表给出了一些补充信息并介绍了一些工具,以易于读者学习和应用Linux网路构架。所涉及的问题包括LXR源代码浏览器、Linux内核中的调试工作和可以用于Linux网路构架处理及监控的工具。其他信息源这部份列举了一些有用的信息源,从中读者可以找到关于Linux网路构架的其他信息。刊物*LinuxMagazine()可能是最有名的Linux刊物了。其中的文章涵盖读者学习应用Linux时感兴趣的所有的问题。最有趣的是KernelCorner专栏,该专栏定刊物出有关Linux内核组件的构架和实现的文章--大多数是由开发人员自己撰文的。*LinuxFocus()是一份在线的多语种刊物。它同样也有KernelCorner专栏。*LinuxGazette()是另一份专注于Linux的在线刊物。环球网上的有用链接■LinuxHeadquarterslinuxhq.com■LinuxDocumentationProject■LinuxWeeklyNews其他信息■“基本知识”(Howto)包含了许多关于不同Linux问题的信息。
大多数涉及各类Linux功能性的配置和安装信息。尤其是对于Linux内核而言,同样具有一些“基本知识”文档--比如在内核中怎样使用锁[Russ0000b]、关于Linux内核监视的通常信息[Russ0000c]。其实,我们不应当忘掉谈到网路“基本知识”,它包括好多关于在Linux中配置网路功能性的方法和信息[Drak00]。*当前Linux内核的源代码可以在ftp.kernel.org站点上找到。该FTP服务器同样也有一些镜像,其列表可以在网址./mirrors/找到。■有关Linux内核的组件和驱动程序的信息直接包含在内核版本的源代码中,在Documentation子目录当中。据悉,在文件Documentation/kernel-docs.txt中包含了有关于Linux内核的当前信息列表--例如文件、链接和书籍(这个值得一看!)。致谢本书的出版,许多人作出了不可或缺的贡献。首先我们要谢谢所有在其学术文章和论文中对Linux网路构架进行了研究的朋友。她们在信息通讯大学搜集了大量关于Linux网路构架的知识材料,她们是:NasiehAbdel-Haq、PaulBurczek、MichaelConrad、FrankDinies、PaulHankesDrielsma、Jér?meFreilinger、CarolinG?rtner、StefanG?tz、KarstenHahn、ArturHecker、TobiasHinkel、MichaelHofele、VerenaKahmann、VeraKieβling、StefanKlett、AndreasKramm、JanKratt、EckehardtLuhm、DavidMetzler、UlrichMohr、RainerMüller、SvenOberl?nder、VincentOberle、JanOetting、TorstenPastoors、ChristianPick、ChristianSchneider、SteffenSchober、MarcusSch?ller、AchimSettelmeier、UweWalter和JürgenWalzenbach。
作者们主要是为她们的中学生们写就此书的。还要谢谢GerhardKrüger院士,他仍然在支持我们的活动,给了我们撰写此书必要的自主性,并给我们提出了宝贵的建议。他的支持促使我们就能拥有一个Linux测试网路,这是我们在信息通讯大学进行关于下一代Internet服务的研究活动的基础。要非常谢谢出版社的同学们,她们出版了本书最初的英语版本和法语版本。尤其要谢谢我们的编辑SylviaHasselbach和ToniHolm,她们可敬的耐心帮助并引导我们完成了此书的撰写。在此我们也同样谢谢为我们完成英文翻译工作的AngelikaShafir。我们也谢谢所有审读原稿的人们,非常是MarkDoll、SebastianD?weling、ThomasGeulig、ThorstenSandfuchs、MarcusSch?ller、BernhardThurm、UweWalter、AnjaWehrle、KilianWeniger和FriederikeDaenecke。最后,深深地谢谢我们的家人和同事给与我们的支持、鼓励和耐心。参与本书翻译和审校的还有王海涛,高峰、张国华、高磊、刘刚、王伟、李强、王冰、许小虎、张蕾、杨晶、张亮、孙杰、李光、黄宏、张明、王超、李旭、刘捷、杨玲、高超、高洁、张冬、张磊、李芳、张伟、李华、杨洁、王峰、张立、黄洁、苏丽、田宁、王丹、白宇、李兵、陈波等。在此表示谢谢。IV引言前言V
more>