开发一个全新的 tcp/ip 协议栈内核实现,使其性能与现有实现一样好,并非易事。 决定不移植现有实现是在当时存在一些不确定性的时候做出的,即现有实现是否会因美国 U.S.L. 提起的诉讼案而受到限制性版权的约束,并且当时人们对以不同的方式甚至比已经完成的方式做得更好抱有极大的热情。
最初自愿领导内核网络代码开发的人是 Ross Biro <biro@yggdrasil.com>
。 Ross 制作了一个简单且不完整但大部分可用的例程实现集,并辅以 WD-8003 网络接口卡的以太网驱动程序。 这足以让许多人测试和实验该软件,甚至有人设法在这种配置中将机器连接到实时的互联网连接。 Linux 社区内推动网络支持开发的压力越来越大,最终,施加给 Ross 的一些不公平压力和他自己的个人承诺的结合成本超过了他所获得的利益,他辞去了首席开发人员的职务。 Ross 在启动项目并在如此有争议的情况下承担实际产生一些有用成果的责任方面的努力,催化了所有未来的工作,因此是当前产品成功的必要组成部分。
Orest Zborowski <obz@Kodak.COM>
为 Linux 内核制作了原始的 BSD 套接字编程接口。 这是一个巨大的进步,因为它允许将许多现有的网络应用程序移植到 Linux,而无需进行重大修改。
大约在这个时候,Laurence Culhane <loz@holmes.demon.co.uk>
开发了第一个用于 Linux 以支持 SLIP 协议的驱动程序。 这使许多无法访问以太网网络的人能够试验新的网络软件。 同样,有些人使用此驱动程序并将其投入使用,将他们连接到互联网。 这使更多人体验到如果 Linux 具有完整的网络支持可以实现的可能性,并增加了积极使用和试验现有网络软件的用户数量。
积极致力于构建网络支持任务的人员之一是 Fred van Kempen <waltje@uwalt.nl.mugnet.org>
。 在 Ross 辞去首席开发人员职位后的一段不确定时期之后,Fred 付出了时间和精力,并基本上在没有反对的情况下接受了该角色。 Fred 对他希望 Linux 网络软件发展的方向有一些雄心勃勃的计划,他开始朝着这些方向前进。 Fred 制作了一系列名为“NET-2”内核代码(“NET”代码是 Ross 的)的网络代码,许多人能够非常有效地使用它。 Fred 正式将许多创新列入开发议程,例如动态设备接口、业余无线电 AX.25 协议支持以及更模块化设计的网络实现。 Fred 的 NET-2 代码被相当多的爱好者使用,随着软件正在工作的消息传播,人数一直在增加。 此时的网络软件仍然是对内核代码标准发布的大量补丁,并且未包含在正常发布中。 NET-FAQ 和随后的 NET-2-HOWTO 描述了当时相当复杂的工作程序。 Fred 的重点是开发标准网络实现的创新,这需要时间。 用户社区越来越不耐烦地想要一些可以可靠工作并满足 80% 用户需求的东西,并且与 Ross 一样,Fred 作为首席开发人员的压力也越来越大。
Alan Cox <iialan@www.uk.linux.org>
提出了一个旨在解决这种情况的解决方案。 他提议他将采用 Fred 的 NET-2 代码并对其进行调试,使其可靠和稳定,以便它能够满足不耐烦的用户群,同时减轻 Fred 的压力,使他能够继续他的工作。 Alan 着手这样做,并取得了一些成功,他的第一个 Linux 网络代码版本被称为“Net-2D(调试版)”。 该代码在许多典型配置中可靠地工作,用户群对此感到满意。 Alan 显然有自己的想法和技能可以为该项目做出贡献,并且随后进行了许多关于 NET-2 代码发展方向的讨论。 Linux 网络社区内发展出两个不同的派别,一个派别的理念是“先使其工作,然后再使其更好”,另一个派别的理念是“先使其更好”。 Linus 最终进行了仲裁,并表示支持 Alan 的开发工作,并将 Alan 的代码包含在标准内核源代码发行版中。 这使 Fred 陷入了困境。 任何持续的开发都将缺乏积极使用和测试代码的大型用户群,这意味着进展将缓慢而困难。 Fred 继续工作了一段时间,最终辞职,Alan 成为 Linux 网络内核开发工作的新领导者。
Donald Becker <becker@cesdis.gsfc.nasa.gov>
很快展现了他在网络底层的才能,并制作了大量的以太网驱动程序,当前内核中包含的几乎所有驱动程序都是由 Donald 开发的。 还有其他人做出了重大贡献,但 Donald 的工作成果丰硕,因此值得特别提及。
Alan 在一段时间内继续改进 NET-2-Debugged 代码,同时致力于推进“TODO”列表中仍未解决的一些问题。 当 Linux 1.3.*
内核源代码成熟时,内核网络代码已迁移到 NET-3 版本,当前版本基于该版本。 Alan 研究了网络代码的许多不同方面,并在 Linux 网络社区中许多其他有才华的人的帮助下,在各个方向上扩展了代码。 Alan 制作了动态网络设备以及第一个标准 AX.25 和 IPX 实现。 Alan 一直在不断地修改代码,缓慢地重组和增强它,使其达到今天的状态。
Michael Callahan <callahan@maths.ox.ac.uk>
和 Al Longyear <longyear@netcom.com>
添加了 PPP 支持,这对于增加积极使用 Linux 进行网络连接的人数也至关重要。
Jonathon Naylor <jsn@cs.nott.ac.uk>
通过显着增强 Alan 的 AX.25 代码,添加 NetRom 和 Rose 协议支持做出了贡献。 AX.25/NetRom/Rose 支持本身非常重要,因为除了 Linux 之外,没有其他操作系统可以拥有对这些协议的标准原生支持。
当然,还有数百人为了 Linux 网络软件的开发做出了重大贡献。 其中一些人您将在后面的技术特定章节中遇到,其他人则贡献了模块、驱动程序、错误修复、建议、测试报告和精神支持。 在所有情况下,每个人都可以声称自己发挥了作用并贡献了自己所能提供的。 Linux 内核网络代码是 Linux 式无政府主义开发可以取得成果的绝佳例证,如果它还没有让您感到惊讶,那么它很快就会让您感到惊讶,开发还没有停止。
有许多地方可以找到关于 Linux 网络的良好信息。
有大量的顾问可供选择。 列表可以在 LinuxPorts 顾问数据库 中找到
Alan Cox,Linux 内核网络代码的当前维护者,维护着一个万维网页面,其中包含 Linux 网络中当前和新开发的亮点,网址为:www.uk.linux.org。
另一个好地方是 Olaf Kirch 撰写的一本书,名为 网络管理员指南
。 它是 Linux 文档项目 的作品,您可以在 网络管理员指南 HTML 版本 上交互阅读,或者您可以从 metalab.unc.edu LDP ftp 存档 通过 ftp 获取各种格式的版本。 Olaf 的书非常全面,并提供了 Linux 下网络配置的良好高级概述。
在 Linux 新闻层次结构中,有一个专门讨论网络和相关事项的新闻组,它是:comp.os.linux.networking
有一个邮件列表供您订阅,您可以在其中询问有关 Linux 网络的问题。 要订阅,您应该发送邮件消息
To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:
subscribe linux-net
在各种 IRC 网络上,通常有 #linux
频道,人们可以在其中回答有关 Linux 网络的问题。
请记住,在报告任何问题时,请尽可能包含有关该问题的相关详细信息。 具体来说,您应该指定您正在使用的软件版本,尤其是内核版本,pppd 或 dip 等工具的版本以及您正在遇到的问题的确切性质。 这意味着记下您收到的任何错误消息的确切语法以及您正在发出的任何命令。
如果您正在寻找关于 tcp/ip 网络的一般基本教程信息,那么我建议您查看以下文档
本文档提供 文本版本 和 postscript 版本。
本文档提供 文本版本 和 postscript 版本。
如果您正在寻找关于 tcp/ip 网络的更详细信息,那么我强烈推荐
TCP/IP 互联网络技术(卷 1):原理、协议和体系结构,作者 Douglas E. Comer,ISBN 0-13-227836-7,Prentice Hall 出版社,第三版,1995 年。如果您想学习如何在 Unix 兼容的环境中编写网络应用程序,那么我也强烈推荐
Unix 网络编程,作者 W. Richard Stevens,ISBN 0-13-949876-1,Prentice Hall 出版社,1990 年。本书的第二版即将出现在书架上; 新书由三卷组成:请查看 Prenice-Hall 的网站 以进一步探究。
您也可以尝试 comp.protocols.tcp-ip 新闻组。
与互联网和 tcp/ip 协议套件相关的特定技术信息的重要来源是 RFC。 RFC 是“Request For Comment”(请求评论)的首字母缩写词,是提交和记录互联网协议标准的标准方法。 有许多 RFC 存储库。 其中许多站点是 ftp 站点,其他站点提供万维网访问,并带有相关的搜索引擎,允许您在 RFC 数据库中搜索特定关键字。
RFC 的一个可能的来源是 Nexor RFC 数据库。