由于 Linux 是世界各地程序员共同努力的成果,如果没有全球网络,Linux 就不可能实现。因此,毫不奇怪的是,在开发的早期阶段,一些人开始致力于为其提供网络功能。UUCP 实现几乎从一开始就在 Linux 上运行,而基于 TCP/IP 的网络工作始于 1992 年秋季左右,当时 Ross Biro 和其他人创建了现在被称为 Net-1 的东西。
在 Ross 于 1993 年 5 月停止积极开发后,Fred van Kempen 开始致力于一个新的实现,重写了代码的主要部分。这个项目被称为 Net-2。第一个公开发布版本 Net-2d 于 1993 年夏季发布(作为 0.99.10 内核的一部分),此后一直由多人维护和扩展,最著名的是 Alan Cox。[1] Alan 的最初工作被称为 Net-2Debugged。经过大量的调试和对代码的多次改进后,在 Linux 1.0 发布后,他将其名称更改为 Net-3。Net-3 代码在 Linux 1.2 和 Linux 2.0 中得到了进一步的开发。2.2 及更高版本的内核使用 Net-4 版本的网络支持,至今仍是标准的官方版本。
Net-4 Linux 网络代码提供了各种各样的设备驱动程序和高级功能。标准的 Net-4 协议包括 SLIP 和 PPP(用于通过串行线路发送网络流量)、PLIP(用于并行线路)、IPX(用于 Novell 兼容网络,我们将在第 15 章中讨论)、Appletalk(用于 Apple 网络)以及 AX.25、NetRom 和 Rose(用于业余无线电网络)。其他标准的 Net-4 功能包括 IP 防火墙、IP 计费(稍后在第 9 章和第 10 章中讨论)和 IP 伪装(稍后在第 11 章中讨论)。支持几种不同类型的 IP 隧道和高级策略路由。除了支持一些 FDDI、令牌环、帧中继和 ISDN 以及 ATM 卡之外,还支持非常多种类的以太网设备。
此外,还有许多其他功能大大增强了 Linux 的灵活性。这些功能包括 SMB 文件系统的实现(它与 lanmanager 和 Microsoft Windows 等应用程序互操作),称为 Samba,由 Andrew Tridgell 编写,以及 Novell NCP(NetWare 核心协议)的实现。[2]
在不同的时期,Linux 都有不同的网络开发工作在进行。
在 Net-2Debugged 成为官方网络实现之后,Fred 继续进行开发。这项开发促成了 Net-2e 的诞生,它采用了经过大幅修改的网络层设计。Fred 一直在致力于标准化的设备驱动程序接口 (DDI),但 Net-2e 的工作现在已经结束。
TCP/IP 网络的另一个实现来自 Matthias Urlichs,他为 Linux 和 FreeBSD 编写了一个 ISDN 驱动程序。为了这个驱动程序,他将一些 BSD 网络代码集成到 Linux 内核中。那个项目也已经停止开发。
Linux 内核网络实现经历了许多快速的变化,随着开发的继续,变化仍然是主题。有时,这意味着其他软件(例如网络配置工具)也必须进行更改。虽然这不再像以前那样是一个大问题,但您可能仍然会发现,将内核升级到更高版本意味着您也必须升级您的网络配置工具。幸运的是,由于今天有大量的 Linux 发行版可用,这已经是一项非常简单的任务。
Net-4 网络实现现在已经非常成熟,并在全球大量站点中使用。在改进 Net-4 实现的性能方面已经做了大量工作,现在它可以与相同硬件平台上可用的最佳实现相媲美。Linux 正在互联网服务提供商环境中迅速普及,并且经常被用于为这类组织构建廉价且可靠的万维网服务器、邮件服务器和新闻服务器。现在对 Linux 有足够的开发兴趣,使其能够跟上不断变化的网络技术,并且当前版本的 Linux 内核提供了下一代 IP 协议 IPv6 作为标准配置。
现在回想起来似乎很奇怪,在 Linux 网络代码开发的早期,标准内核需要一个巨大的补丁包才能添加网络支持。今天,网络开发作为主流 Linux 内核开发过程的一部分进行。最新的稳定 Linux 内核可以在 ftp.kernel.org 的/pub/linux/kernel/v2.x/中找到,其中 x 是一个偶数。最新的实验性 Linux 内核可以在 ftp.kernel.org 的/pub/linux/kernel/v2.y/中找到,其中 y 是一个奇数。世界各地都有 Linux 内核源代码镜像站点。现在很难想象 Linux 没有标准的网络支持。
[1] | 可以通过 alan@lxorguk.ukuu.org.uk 联系 Alan |
[2] | NCP 是 Novell 文件和打印服务所基于的协议。 |