ARPANET:五角大楼的一根网线,连出了整个互联网
1969 年 10 月 29 日,晚上十点半,加州大学洛杉矶分校(UCLA)的一间实验室里,灯光昏黄。一个叫查理·克莱恩(Charley Kline)的研究生坐在一台冰箱大小的计算机前,准备做一件他自己都不知道有多重要的事——通过一根电话线,向 600 公里外斯坦福研究所(SRI)的另一台计算机发送一个单词:LOGIN。
电话那头,SRI 的工程师比尔·杜瓦尔(Bill Duvall)守在接收端。克莱恩敲下了 L,问杜瓦尔:"收到 L 了吗?"杜瓦尔说收到了。克莱恩又敲下 O,"收到 O 了吗?"收到了。然后他敲下 G——系统崩溃了。
互联网的第一条消息,就这样变成了"LO"。
后来伦纳德·克莱因罗克(Leonard Kleinrock)教授——克莱恩的导师,也是这间实验室的主人——回忆起这件事时总爱说:你看,"Lo","Lo and behold"(你瞧),多完美的开场白。当然这是事后的浪漫化。当时他们只是觉得,又得重启了。大约一个小时后,系统恢复,完整的"LOGIN"终于发送成功。没有香槟,没有掌声,实验室的 IMP 日志上只留下一行手写记录:"Talked to SRI Host to Host",旁边标注着时间:22:30。签名的缩写是 CSK——Charles S. Kline。
这就是互联网的诞生时刻。但故事要从更早的地方讲起。
上世纪五十年代末,冷战正酣。美国军方最怕的事情之一,是苏联的一颗核弹就能瘫痪整个通信系统。当时的通信网络是中心化的——所有信息都要经过几个关键节点,炸掉一个,整片区域就聋了。
1959 年,一个叫保罗·巴兰(Paul Baran)的年轻工程师加入了兰德公司(RAND Corporation),接到了一个听起来像科幻小说的任务:设计一套能在核打击下存活的通信系统。
巴兰是波兰移民的儿子,在费城长大,性格执拗,喜欢从根本上重新想问题。他盯着当时的通信网络拓扑图看了很久,然后画出了三种网络结构:中心化的、去中心化的、和分布式的。中心化的像星星,一个中心连着所有节点,打掉中心全完蛋。去中心化的好一点,有几个小中心,但还是脆弱。只有分布式的——每个节点都和周围的节点相连,像渔网一样——才能真正扛住打击。任何一个节点被摧毁,信息都能绕道走。
更妙的是他提出的传输方式。传统通信是"电路交换"——打电话时,你和对方之间有一条专用线路,占着不放。巴兰说不行,太浪费了,也太脆弱了。他的方案是把信息切成一个个小块,每个小块自己找路走,到了目的地再重新拼起来。他管这叫"热土豆路由"(hot-potato routing)——信息像烫手的土豆一样,每个节点接到就赶紧往下传,不在手里停留。
1964 年,巴兰把这些想法写成了一份长达十一卷的报告《论分布式通信》(On Distributed Communications)。这份报告今天看来是天才之作,但当时的命运却很惨。他拿着方案去找 AT&T——当时垄断美国通信的巨头——AT&T 的工程师们听完后的反应基本是:年轻人,你不懂通信。电话网络运行得好好的,你这套东西太异想天开了。
巴兰后来回忆说,AT&T 的人觉得他是个外行在胡说八道。他们无法接受一个没有中央控制的网络居然能正常工作。这个想法太反直觉了。
与此同时,大西洋对岸,英国国家物理实验室的唐纳德·戴维斯(Donald Davies)独立地提出了几乎一模一样的概念,并给它起了一个后来被全世界采用的名字:分组交换(packet switching)。两个人,两个大洲,互不知情,却想到了同一件事。有时候,一个想法的时机到了,它就会在不同的地方同时冒出来。
巴兰的方案被 AT&T 束之高阁了,但种子已经种下。真正让这颗种子发芽的,是五角大楼里一个叫 ARPA 的机构——高级研究计划局(Advanced Research Projects Agency)。
ARPA 成立于 1958 年,是美国被苏联的 Sputnik 卫星吓出来的产物。它的使命是确保美国在尖端技术上不再被人抢先。ARPA 下面有个信息处理技术办公室(IPTO),第一任主任是一个绰号叫"利克"的心理学家——J.C.R.利克莱德(J.C.R. Licklider)。
利克莱德是个奇人。他本行是心理声学,研究人怎么听声音的,但他对计算机着了迷。1960 年,他发表了一篇影响深远的论文《人机共生》(Man-Computer Symbiosis),提出计算机不应该只是算数的工具,而应该成为人类思维的延伸。1963 年,他在 ARPA 任上给同事们写了一份备忘录,收件人一栏写的是:"星际计算机网络的成员和附属机构"(Members and Affiliates of the Intergalactic Computer Network)。
星际计算机网络。1963 年。那时候大多数人连计算机长什么样都没见过。
利克莱德在这份备忘录里描绘了一个愿景:把分散在各地的计算机连成一个网络,让任何人都能从任何地方访问任何一台计算机上的数据和程序。这个想法在当时听起来跟科幻小说没什么区别。但利克莱德的厉害之处不只是有想法,他还特别会挑人。他在 ARPA 期间资助了一批后来改变世界的研究者和项目,把"网络"这个概念像病毒一样植入了整个计算机科学界。
利克莱德离开 ARPA 后,接力棒传到了鲍勃·泰勒(Bob Taylor)手里。泰勒 1965 年从 NASA 来到 ARPA,担任 IPTO 的第三任主任。
泰勒的办公室里有三台终端机,每一台连着一台不同的大型计算机——一台连 MIT,一台连伯克利,一台连圣莫尼卡的系统开发公司。三台终端,三套操作方式,三个完全不兼容的世界。想跟 MIT 的人共享数据?对不起,你得先在 MIT 的终端上操作。想切换到伯克利?换一台机器,重新登录,重新学一套命令。
泰勒每天对着这三台终端,越看越烦。他后来说:
"我们应该找到一种方法,把所有这些(计算机)连接起来。"
——Bob Taylor
1966 年 2 月的一天,泰勒走进 ARPA 局长查尔斯·赫兹菲尔德(Charles Herzfeld)的办公室,花了大约二十分钟解释了自己的想法:建一个网络,把 ARPA 资助的所有计算机连起来,让研究者们共享资源。赫兹菲尔德当场拍板,拨了一百万美元启动资金。整个审批过程,二十分钟。
但泰勒需要一个技术高手来真正把这件事做出来。他找到了 MIT 林肯实验室的拉里·罗伯茨(Larry Roberts)。罗伯茨一开始不太想来——他在林肯实验室做得好好的,为什么要去华盛顿坐办公室?泰勒软磨硬泡,最后据说是 ARPA 动用了对林肯实验室的资助关系,罗伯茨才"自愿"加入。
罗伯茨是个技术天才,做事极其严谨。他接手后,迅速完成了网络的总体设计。一个关键决策是:不让各大学的主机直接处理网络通信——那些教授们可不愿意自己宝贝的计算机被网络事务占用资源。罗伯茨的方案是在每台主机和网络之间加一台专门的小型计算机,负责所有的收发和路由工作。这台小计算机后来有了一个名字:IMP(Interface Message Processor,接口信息处理机)。
1968 年夏天,ARPA 发出了建造 IMP 的招标书。大多数大公司——IBM、CDC——都没当回事,觉得这个项目太小、太古怪。最终中标的是波士顿一家不算大的咨询公司:BBN(Bolt Beranek and Newman,博尔特·贝拉尼克和纽曼公司)。有意思的是,BBN 正是利克莱德离开 ARPA 后回去的地方。历史的线头总是这样缠绕在一起。
BBN 的团队拿到合同后,用一台加固版的 Honeywell DDP-516 小型计算机作为硬件基础,只有 12K 的内存,在上面写了大约 6000 个字的软件代码。他们要在九个月内交付第一台 IMP——工期紧得像在跑百米冲刺。
1969 年劳动节前夕,第一台 IMP 被运到了 UCLA 的克莱因罗克实验室。克莱因罗克是分组交换理论的奠基人之一,早在 1961 年的博士论文里就用数学方法证明了分组交换的可行性。UCLA 成为 ARPANET 的第一个节点,某种程度上是对他学术贡献的认可。
一个月后,第二台 IMP 到了斯坦福研究所(SRI)。然后是加州大学圣巴巴拉分校(UCSB),最后是犹他大学。到 1969 年 12 月,四个节点全部上线,ARPANET 正式成形。四台计算机,四根线,连成了一个小小的网。
就是在这个过程中,10 月 29 日那个夜晚,克莱恩坐在 UCLA 的终端前,敲下了那个崩溃的"LO"。
我有时候会想,如果当时有人告诉克莱恩,"你刚才敲的那两个字母,五十年后会被几十亿人记住",他大概会觉得你疯了。他只是一个研究生,在做一个实验,系统还崩了。那天晚上他大概回宿舍就睡了,第二天还得继续调试。
ARPANET 后来的故事,大家多少都知道一些。四个节点变成十几个,十几个变成几十个。1971 年,雷·汤姆林森发明了电子邮件,用 @ 符号分隔用户名和主机名。1973 年,文顿·瑟夫(Vint Cerf)和鲍勃·卡恩(Bob Kahn)开始设计 TCP/IP 协议,让不同的网络能够互相通信——"互联网"(Internet)这个词就是从"互联的网络"(interconnected networks)来的。1983 年,ARPANET 全面切换到 TCP/IP。1990 年,ARPANET 正式退役,但它播下的种子早已长成了参天大树。
回头看这段历史,最让我感慨的不是技术本身,而是那些人。巴兰被 AT&T 嘲笑,但他没有放弃,把报告写了十一卷。利克莱德在大多数人还把计算机当计算器用的年代,就看到了"星际网络"的可能。泰勒用二十分钟说服了老板拨款一百万。罗伯茨被半强迫地拉来做项目经理,却把事情做到了极致。BBN 的工程师们用 12K 内存写出了改变世界的路由软件。克莱恩在系统崩溃后,等了一个小时,重新发送。
没有一个人知道自己在做的事情会通向哪里。他们只是觉得,把计算机连起来,是一件值得做的事。
后来我才慢慢了解到,这根线的源头,可以一直追溯到 1969 年 UCLA 那间灯光昏黄的实验室。从四台计算机到几十亿台设备,从"LO"到每天数以万亿计的数据包在全球穿梭。五十多年过去了,巴兰画的那张分布式网络图,依然是整个互联网的底层逻辑。
现在我们又站在一个新的路口。AI 正在重塑一切,就像当年的网络重塑了一切。我有时候想,五十年后的人回头看今天,会不会也像我们回头看 1969 年一样,觉得一切都始于某个不起眼的夜晚,某个人敲下的几个字母?
历史从来不会提前告诉你,哪一刻是开始。
· Leonard Kleinrock's IMP Log, UCLA, October 29, 1969
· Paul Baran, "On Distributed Communications," RAND Corporation, 1964
· J.C.R. Licklider, "Memorandum For Members and Affiliates of the Intergalactic Computer Network," April 23, 1963
· J.C.R. Licklider, "Man-Computer Symbiosis," IRE Transactions on Human Factors in Electronics, 1960
· Computer History Museum, "Interface Message Processor (IMP)"
· Scientific American, "Early sketch of ARPANET's first four nodes," 2009