跳转到内容
文韬博宇的个人主页
返回

第六章 协议

· 约 9 分钟

1969年10月29日晚上十点半,加州大学洛杉矶分校。

查理·克莱恩坐在一台SDS Sigma 7计算机前面。旁边是一台接口消息处理器——一个跟冰箱差不多大的灰色铁柜子,里面装着第一代路由器。一条专用电话线从这台柜子拉出去,向北穿过了四百英里的沙漠和山脉,接到斯坦福研究所的另一台柜子。

克莱恩开始打字。

他要把”LOGIN”五个字母,一个一个发送过去。每敲一个字母,UCLA的机器会通过电话线把它传给斯坦福的机器。斯坦福的机器收到后,理论上应该回传一个确认。

他敲了L。

电话那头,斯坦福的操作员比尔·杜瓦尔盯着屏幕。确认回来了。

他敲了O。

又确认了。

他敲了G。

斯坦福的SDS 940计算机——那台负责接收的机器——在处理第三个字母的时候,内存缓冲区溢出了。系统崩溃。

第一条互联网消息的内容是”LO”。

不是”LOGIN”,是”LO”——希伯来语和古英语里”看哪”的词根。

一小时后,他们修好了缓冲区的问题,重新发送了一次。这一次,“LOGIN”完整到达了。

但克莱恩和杜瓦尔没有庆祝。他们只是在本子上各自记了一笔:第一条消息成功发送,用时一小时。然后克莱恩关掉终端,骑上自行车,穿过洛杉矶的夜色回家。

那条四百英里的电话线,是ARPANET的第一个节点。ARPANET的全称是”高级研究计划局网络”——美国国防部高级研究计划局资助的项目。

DARPA资助ARPANET的初衷,跟”全人类连在一起”没什么关系。原因是更具体的事:美国军方有很多不同型号的计算机,每一台都用自己的协议,它们之间无法通信。如果苏联的核弹炸掉了东部的一台大型机,西部的备份无法自动接管——因为两台机器不能用同一种语言。

DARPA需要一个东西:让异构的计算机网络在局部被摧毁后仍能继续运转。

它不知道这件事会变成什么。

1973年夏天,加州帕罗奥图,一间汽车旅馆的大堂里。

文特·瑟夫和鲍勃·卡恩坐在大堂的塑料沙发上。外面很热,大堂里有冷气。两个人膝盖上各自摊着一叠纸。

瑟夫那时候三十岁,斯坦福助理教授,瘦高,戴眼镜。卡恩三十五岁,在DARPA管ARPANET项目。他们1943年开始合作——五年前,瑟夫还是卡恩的研究生。现在他们在设计一道题:

如何让ARPANET跟卫星网络、无线网络——三种完全不同类型的网络——用一种共同的语言对话。

瑟夫在一张纸上画了一个堆栈的示意图。最底层是物理层:电话线、卫星信号、无线电波。往上一层是”互联网协议”——IP,负责给每台机器一个唯一的地址。再往上一层是”传输控制协议”——TCP,负责把一条消息切成很多个小包,确保每个包都送到,到了再拼起来。

卡恩盯着那张图,问了一个问题:“如果中间丢了一个包呢?”

“重发那个包。让接收端反馈确认。”

“那顺序乱了怎么办?”

“每个包带一个序号。收到后按序号拼。”

“网络塞车的时候呢?”

“TCP自己会放慢发送速度。不需要人工干预。”

卡恩沉默了很长时间,然后说:

“这太理想了。但如果我们让它免费开放——”

“对,“瑟夫打断他。“它就是免费的。不收专利费,不限制使用,不区分网络类型。任何人在任何地方都可以实现。”

这两个人刚刚做了互联网历史上最重要的商业决策——或者说反商业决策。

TCP/IP没有专利。瑟夫和卡恩选择了把它发布为一组”征求意见稿”——RFC 675。RFC不是标准,是一份邀请。大意是:这是我们设计的协议,任何人可以读、可以提意见、可以自己实现。

开放。免费。没有中央控制器。

这个决定,让TCP/IP没有被任何一家公司垄断。它变成了所有网络的共同语言。后来思科的路由器、微软的Windows、苹果的Mac、Linux的内核——全都在跑同一套TCP/IP协议栈,而没有任何人需要给瑟夫和卡恩交专利费。

2004年,有人问瑟夫,后不后悔没有为TCP/IP申请专利。

瑟夫笑了一下,说:“如果你想让一个东西成为全球标准,你不能把它锁起来。”

1983年,DNS被发明。

在这之前,互联网上的每台机器有一个IP地址——一串数字,比如128.10.2.1。你要访问一台机器,得记住这串数字。保罗·莫卡派乔斯在南加州大学写的DNS协议,解决了这个问题:给每台机器一个名字,然后让DNS服务器把名字翻译成那串数字。

从”128.10.2.1”到”www.google.com”——DNS是互联网的通讯簿。

同一年,1983年1月1日,ARPANET正式从NCP协议切换到TCP/IP协议。切换过程没有仪式,没有发布会,没有新闻报道。五角大楼只是在元旦这天关掉了旧协议,启用了新协议。ARPANET上的所有节点,在那天下午过渡完毕。

全世界的报纸都没有报这件事。

1989年3月,瑞士日内瓦,欧洲核子研究中心。

蒂姆·伯纳斯-李坐在一间没有窗户的办公室里。周围的走廊里到处堆着物理学家留下的笔记和一箱箱粒子对撞机的实验数据。

CERN是世界上最大的粒子物理实验室,有几千名来自不同国家的研究人员。每个人用不同的计算机,不同的操作系统,不同的文件格式。伯纳斯-李的工作是帮他们找到彼此的数据。这件事本质上是不可能完成的任务:你很难在一个意大利物理学家用苹果Macintosh写的文件和一个法国工程师用IBM PC写的报告之间建立链接。

伯纳斯-李的方案是:搞一种超文本。

“超文本”不是他发明的——这个概念早在1960年代就被一个叫泰德·尼尔森的美国人提出来了,大意是文档里的某些词可以”关联”到别的文档,点击就能跳过去。但尼尔森没有把概念做成产品。

伯纳斯-李做成了。

他写了三样东西:HTML(超文本标记语言)——一种用尖括号标签标记文本格式的简单语言;URI(统一资源标识符)——给每个网页一个唯一的地址;HTTP(超文本传输协议)——浏览器和服务器之间请求和发送网页的一套规则。

三样东西加在一起,叫做”万维网”。

1990年圣诞节,伯纳斯-李在CERN的一台NeXT计算机上,写完了世界上第一个网页浏览器和第一个网页服务器。浏览器叫WorldWideWeb,服务器叫CERN httpd。

第一个网页的内容很简单:解释万维网是什么,如何创建你自己的网页,如何搜索信息。

然后他做了一件事。

他把HTML、URI、HTTP的规范全部公开发布了。不收专利费。不限制使用。CERN在1993年4月30日正式宣布:万维网的协议属于公共领域,任何人可以自由使用。

这个决定的连锁反应,比任何一块芯片都要大。因为这意味着:没有”万维网公司”。没有人拥有它。没有人能收许可费。没有人能把它关掉。

后来有人问伯纳斯-李,为什么不为万维网申请专利。他的回答只有一句:

“如果我申请了专利,它就不会成功。”

1993年,伊利诺伊大学,国家超级计算应用中心。

马克·安德森和他的几个同学,把伯纳斯-李的万维网概念做成了一款真正大众能用的浏览器——Mosaic。

Mosaic跟之前的浏览器不一样:它能在一个页面上同时显示文字和图片。以前的浏览器只能显示文字,图片要单独打开另一个窗口。Mosaic把图片嵌在文字旁边,就像杂志排版一样。这个现在看来理所当然的设计,在1993年是一次概念上的革命——它把”网页”从”学术文档”变成了”杂志”。

Mosaic发布的那年,全球的网站数量从五十个涨到了两千多个。第二年,两万多个。

一根网线的价值正在被重新定义。

1991年之前,那根网线是用来传邮件和传文件的。Mosaic之后,那根网线开始承载图片、新闻、商店、音乐、电影。它从一根电线变成了一张网,又从一张网变成了一个能装下所有东西的容器。

只是没有人知道,当一个东西可以装下所有东西的时候,它也会成为所有战争的战场。

1987年,北京。钱天白发出了中国第一封电子邮件——“Across the Great Wall we can reach every corner in the world”——“越过长城,走向世界。”

七年后,1994年4月20日,中国正式全功能接入国际互联网。从北京中关村教育科研示范网出发,一条六十四千比特每秒的专线连接到美国加州的SPRINT公司。

全功能接入。这意味着中国的网络不再是”远程连到别人”,而是”成为了互联网的一部分”。TCP/IP包可以在北京和硅谷之间完整地、双向地流动。

那年全中国的上网用户:大约两千人。

1994年深秋,MIT人工智能实验室。伯纳斯-李在那儿做了一场演讲,讲万维网的现状和未来。

演讲结束后,有人从后排站起来,提了一个问题。那个人穿着深灰色的套头毛衣,头发有些乱。是比尔·盖茨。

“伯纳斯-李博士,“盖茨说,“你说的这套东西,听起来很像我们明年要做的产品。”

伯纳斯-李看着他,说了一句:

“那不是产品。那是协议。”

盖茨没有回答。

两个月后,微软宣布了”微软网络”计划——一套基于Windows的、有中央控制的、由微软运营的网络服务。这个计划后来失败了,因为微软发现——万维网是开放的,任何人都可以免费搭服务器,任何浏览器都可以访问任何网页。而微软网络是封闭的,只有一个入口,只有一个运营商。

协议赢了帝国。

TCP/IP没有管理中心。万维网没有CEO。没有任何人能把这些东西关掉,没有任何人能对全世界的网页收费。协议免费。标准公开。任何人都可以在上面搭任何东西。

有人在上面搭了谷歌。有人在上面搭了亚马逊。有人在上面搭了阿里巴巴、Facebook、微信、抖音。

所有这些帝国都站在两个不收专利费的老男人——瑟夫和卡恩——画的张草图上。站在一个不申请专利的英国人——伯纳斯-李——写的三份规范上。

1994年跨年,伯纳斯-李在CERN给万维网规范加了一行注释,后来被维基百科收录:

“这个工作很可能没有实际商业价值,但它帮我理解了链接的力量。”

他错了后半句。