Linux 分支

Windows 分支

BSD 主线

4.1aBSD (1981) 实验性 BBN TCP/IP

4.2BSD (1983) 首个广泛使用

4.3BSD (1986) 改进 TCP 性能

4.3BSD Tahoe (1988) 快速重传与拥塞控制

4.3BSD Reno (1990) 快速恢复、头部预测、SLIP 压缩、路由表

4.4BSD (Encumbered) (1993) 组播支持、长胖管道

4.4BSD-Lite (1994) Net/3 修正更多 TCP 错误

Winsock (1992) 来自第三方的 TCP/IP

Windows for Workgroups 3.11 (1994) 最初 TCP/IP

Windows 95 (1995) 微软集成 TCP/IP

Linux 0.98 (1992) 首个 TCP/IP

Linux 0.99 (1992-9) 修正 TCP/IP 错误

Linux 1.0.0 (1994) 修正更多 TCP/IP 错误

上图是一张跨度极大的 TCP/IP 演化图谱。


引言:种下全球互联网的第一颗“种子”

如果说 RFC 定义的是互联网的“宪法”和“蓝图”,那么真正让互联网在全世界生根发芽的,是一系列免费、开源、高质量的网络协议栈实现代码

如果你穿越回上世纪 80 年代,你想让两台不同厂家的计算机通信,你除了要有 RFC 标准文档,还需要自己从头一行行敲出 TCP/IP 的代码。这是极其艰难的任务。

而真正“拯救世界”的,是加州大学伯克利分校(UC Berkeley)的 CSRG 研究组。他们开发了一套名为 BSD(伯克利软件发行版) 的操作系统,并且在系统内核中首次附带了完整、免费可用的 TCP/IP 网络代码

从那一刻起,互联网的“种子”就被播撒到了全世界的大学和研究机构里。这张“演化树”图谱,就是 TCP/IP 从单一源头走向全球化的故事。


第一部分:TCP/IP 演化图谱的“逐帧渲染”

为了让你看明白这条极其庞大的演进路线,我们按时间序列,像放胶片一样,把【图 1-7】分解成以下几个关键里程碑:

1.1 披荆斩棘的开荒期(1981 - 1986)

  • 4.1aBSD (1981年):这是 TCP/IP 在 BSD 中的初次登场。当时它引入的是一个被称为“BNN TCP/IP”的实验性协议栈。这个版本还不成熟,更多是用于科研测试,还没投入商业化生产。
  • 4.2BSD (1983年):这是一个划时代的版本。它成为了“首个广泛使用的 TCP/IP 发布版”。很多早期的互联网骨干网,底层跑的就是 4.2BSD 的代码。这个版本的成熟,标志着 TCP/IP 不再只是实验室里的玩具,而是真正能联网的“标准道路”。
  • 4.3BSD (1986年):随着全球互联网规模的扩大,网络拥堵开始出现。这个版本主要改进了 TCP 的性能,让它在面对复杂的网络环境时更加稳健。

1.2 伟大的算法奠基期(1988 - 1990)

这是推动互联网走向全球的最核心的两年!

  • 4.3BSD Tahoe (1988年):这里诞生了网络上最重要的两个概念之一:TCP 拥塞控制。著名的 “慢启动”“快速重传” 算法就是在这个版本中首次内嵌的。正是这项创新,让互联网在突发大流量下不会因为集体“撞车”而直接瘫痪。
  • 4.3BSD Reno (1990年):紧接着 Tahoe 版本,Reno 版本再次推陈出新,增加了 “快速恢复” 机制,并首次引入了 “头部预测”。这些极度精妙的算法,极大提升了 TCP 在高延迟长距离链路下的传输效率。我们今天能享受顺畅的跨国跨国网络,绝对要归功于这几十年前打下的算法基础。

1.3 商业与开源的星辰大海(1992 - 1994)

时间来到了 90 年代初,TCP/IP 框架已经完善,此时“地盘争夺战”开始从 BSD 向两个新兴的方向分化。

我们先看原书的【图 1-7】在 1992-1994 年的三大主线分裂图景。我画一个极简的分流图来让你直观感受:

4.3BSD Reno (1990) 核心

微软:Winsock (1992)

Windows for Workgroups (1993)

Windows 95 (1995)

Linux 0.98 (1992)

Linux 0.99 (1992-1993)

Linux 1.0.0 (1994)

4.4BSD-Lite (1994)

现代 BSD 与 Mac OS X 的 TCP/IP 地基

三大主线的细致史话:

  1. 微软 Windows 的“借鸡生蛋”:微软在 1992 年开发了 Winsock 接口,并在 1993 年将其整合到 Windows for Workgroups 中,最后在 Windows 95 系统里彻底内置了 TCP/IP 栈。正是这个举措,让全球数以亿计的普通家庭电脑(无需安装额外软件)就能直接连接到因特网,这是互联网大众化的关键一战。
  2. Linux 异军突起:1992 年,Linux 内核 0.98 版本首次加入了 TCP/IP 支持。这非常了不起,因为当时因为 BSD 代码存在许可证和专利限制(早期 BSD 需要向 AT&T 支付授权费),而 Linux 作为一个完全自由的操作系统,瞬间吸引了大量开发者为其适配 TCP/IP。Linux 1.0.0 在 1994 年发布时,其 TCP/IP 代码已经非常完善。
  3. BSD 的“绝唱”与“分崩离析”:因为专利诉讼的问题,4.4BSD 不得不剥离受专利保护的代码,推出了 4.4BSD-Lite。虽然它剥离了一些旧代码,但它首次加入了“组播”支持和“长胖管道(RTTM)”(用于高带宽、高延迟的卫星网络)。

第二部分:照片里的当代博弈(Linux 的先行与 Windows 的追赶)

结合你今天拍下的照片里的文字(第 17 页的“20 世纪 90 年代中期……”这段话),书里极其精辟地点出了现代操作系统 TCP/IP 实现的特点:

【穿插原文 1】

“通过研究 TCP/IP 的新特点发现,之前首先出现在 BSD 版本中的功能,现在通常首先出现在 Linux 版本中。最近,Windows 已实现了一个新的 TCP/IP 协议栈(从 Windows Vista 开始),它具备很多新特点和本地 IPv6 功能。Linux、FreeBSD、Mac OS X 也支持 IPv6,并且不需要设置任何特殊配置选项。”

【通俗解析】
这说明了网络技术发展的重心已经发生了转移。在上世纪,BSD 是 TCP/IP 创新的“绝对中心”。但进入 21 世纪,Linux 已经成为了互联网实验和创新的主要阵地。很多新协议、新算法、新安全特性,往往是先在 Linux 内核里跑通了、测好了,才会被提出来进入 RFC 标准,然后 Windows 再根据标准把功能移植过去。

同时,书中特别提到了 Windows Vista。从技术角度看,Vista 对整个 Windows 的网络架构进行了一次彻底的“翻新”。它升级了全新的 TCP/IP 协议栈,并默认原生支持 IPv6(IPv6 地址长度为 128 位,用于解决 IPv4 地址枯竭问题)。而 Linux、FreeBSD 和苹果的 Mac OS X 也早已原生支持 IPv6。这也是为什么如今我们在配置网络时,经常能看到 IPv4 和 IPv6 双栈运行的原因。


第三部分:1.8 与 1.9 的预告——警惕网络底层的“暗流”

在书页的底部,1.8 节与 1.9 节被轻轻带过,但它们引出了一个极其重要的安全主题:网络攻击

【穿插原文 2】

“1.8 与 Internet 体系结构相关的攻击”
“很少有攻击将 Internet 体系结构整体作为目标。但是,值得注意的是,Internet 体系结构交付 IP 数据报是基于目的 IP 地址。因此,恶意用户能在自己发送的每个 IP 数据报的源地址字段中插入任何 IP 地址,这种行为称为欺骗。”

【通俗解析】
这段话点出了网络底层的终极“脆弱点”——信任缺失
整个互联网的 IP 协议栈,在设计之初是极度“天真”的。当一个路由器收到一个数据包,看到来源写着“我是来自北京”,路由器毫不怀疑,它直接信任这个来源
这就是“IP 欺骗”的源头。一个黑客可以轻易伪造出“虚假的发送方 IP”,把恶意数据包伪装成正常数据包发送过去,导致被攻击目标无法准确追溯攻击源头。

1.8 节和 1.9 节,将是本书对网络“黑暗森林”法则的第一次系统梳理。我们在后续章节深入具体协议时,也会时刻带着“这些协议可能被如何攻击?”的审视眼光去拆解它们。


结语:从一粒种子到一片森林

今天,我们走过了 TCP/IP 协议栈从“实验室”到“全球操作系统标配”的完整生命周期。

  • 我们看到了 4.2BSD 如何率先种下这颗 “种子”。
  • 我们见证了 4.3BSD Tahoe/Reno 如何长出 “枝叶”(拥塞控制与快速恢复)。
  • 我们观察了 Linux、Windows、BSD 如何在 90 年代形成 “三足鼎立” 之势,共同推动互联网普世化。
  • 最后,我们停留在 Windows Vista 和 Linux 内核 的当代创新之中,意识到技术演进是一场永无止境的接力赛。

理解了这些历史,你再看你电脑里的 ping 命令,就不会觉得它只是一个简单的黑框工具。你会知道,你手里握着的,是跨越了 40 多年、由无数顶级工程师、开源社区、商业巨头共同打磨出来的“数字神兵”。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐