1.4 互联网的诞生
OSPF和IS-IS详解
当别人都在研发IMP时,Bob Kahn却无时无刻不在考虑网络中经常会发生的拥塞现象。他提出了流控算法,根据这套算法(的预测),流量会充斥IMP中的队列,这势必将导致上游IMP中的队列“爆满”。这种“级联”式的拥塞最终会使得网络越来越“卡”。但Kahn在BBN的同僚都把精力集中在了工程学方面,不管Kahn如何唠叨,都不肯在他提出的这一“抽象”问题上浪费时间。那些人只是想让网络上线并运行,根本无心对网络性能进行优化。
为此,Kahn于1970年1月进驻NMC,对自己提出的理论展开实验验证。在NMC,他结识了非常肯帮忙的Vint Cerf、Crocker、Postel,以及其他人等。Cerf是这么说的:“Kahn莅临UCLA,对持久有效网络环境(long-haul environment)中的系统运行做出了尝试,我们建立起了富有成效的合作关系。他提出软件所要具备的某些功能性需求,而我则通宵达旦地编程,以满足他的需求,然后我们会一起来验证1。”
Kahn可以很轻松地让“新鲜出炉”的ARPANET遭遇各种各样的网络拥塞场景,而那些“场面”与他所预测的结果丝毫不差。此后,他带着那些已获论证的理论回到了剑桥,问题很快得到了解决。尤为重要的是,Kahn与Vint Cerf自此建立起了深厚的友谊和良好的合作关系;不出几年,那些友谊与合作就对计算机网络的发展产生了深远的影响。
Larry Roberts在某段时间内对分组无线网络(packet radio network)很感兴趣,很明显,这与该网络在军事方面的应用密不可分。1972年,Kahn离开BBN公司,到DRAPA任职,Roberts给他分配的工作任务正是“钻研”分组无线网络。于是,Kahn开始研究一种叫做“ALOHANET”的网络。
1969年,ARPA资助了夏威夷大学的一个试验性质的分组无线网络项目,该项目由Norman Abramson教授负责。ALOHANET把夏威夷群岛周围的几个站点,与夏威夷大学校区的中央分时计算机连接在了一起。Abramson天马行空般地将他研发出的IMP机型命名为Menehune(一种淘气的夏威夷精灵)。ALOHANET内的用户可籍TIP与ARPANET相连,而TIP则接入Menehune。站在ARPANET的角度来看,这一通过TIP的连接模式只不过是一种终端连接。Kahn则醉心于去研究如何使得ARPANET、ALOHANET或任何一种形式的网络建起起完全对等的关系,让不同网络的主机之间能以“透明”的方式互访。从那时起,DARPA的Internet项目才算正式启动,探究开放式网络架构的序幕也随之拉开2。
在上述研究开展的同时,Kahn于1972年10月组织了ICCC会议,第一次公开展示了ARPANET。在那次会议上,成立了一个新的工作组——国际网络工作组(International Network Working Group,INWG)。当时,在欧洲,已经启动了好几个分组交换网络项目,INWG的任务就是找到一种方法,把ARPANET与那几种不同类型的网络“连成一气”,从而形成一个国际性的网络。INWG的主席由Vint Cerf担任。
Cerf 和Kahn进行了翻来覆去的沟通,以缓解两人在联网方案上的争执。两位前辈提出的方案是,把ARPANET与分组广播网络及卫星网络(SATNET)互连,因上面提到的每一个网络使用的协议和接口都各不相同,故需根据特定的网络需求进行优化。
1973年初,Cerf提议,应在以上三个网络之间部署路由机(routing computer),来实施互连,他同时把路由机命名为“网关”(gateway)。网关能“理解”其所连接的每个网络的运作机制,以及每个网络内所运行的协议;只要在网关上针对每个直连网络配备了正确的接口,开启了相关运作机制,且能行使数据包的封装和解封装操作,那么数据包就能够在不同的网络间自由流动了。
可是,在联网方案上仍然存在争议。ARPANET是按高可靠性级别来设计的,NCP的运作便依赖于此。就可靠性而言,分组广播链路及卫星链路根本就达不到ARPANET的级别。协议的寻址(addressing)能力,则是另外一个问题。运行NCP的主机只能向下一跳节点寻址,其编址方式类似于现代的MAC地址,不具备大范围内的寻址功能,更别提在全球范围内寻址了。此外,每种网络所能传输的数据包的长度都有上限值,若要在不同类型的网络间传输数据包,就有必要调整数据包的长度。因此,Kahn着手开发了一种新的主机到主机协议,该协议除能具备全球范围内的寻址能力之外,还兼具丢包恢复、数据包的分片和重组、端到端的校验和计算,以及主机间的流量控制等功能。他请Cerf(此时,Cerf已晋升为斯坦福大学的教授了)来帮他完成协议的设计,理由再简单不过——Cerf拥有NCP的设计经验。于是,Cerf在斯坦福大学组织了一系列的研讨会(与会者包括学生和访问学者),来参与讨论他本人以及Kahn的构思,或对他们的构思“挑刺”。
1973年9月,在英国苏赛克斯大学INWG的一次会议上,Cerf和Kahn向人们展示了新协议的第一个版本3。二位前辈将该协议称为传输控制协议(TCP)。
在接下来的5年里,该协议又经过了4次修改,修改内容包括:新增了三次握手特性;将地址长度从最初提出的24位扩充到了32位。术语“数据报”(datagram)就是在协议修改期间流传开来的。
经过修改的新协议于1977年7月首次公开展示。一辆行使在旧金山Bayshore高速公路上的面包车接入了一个分组无线系统,该系统则通过一台网关连接到了ARPANET。ARPANET又借助于另一台网关,并分别通过人造卫星链路和陆上线路,连接到了大洋彼岸的挪威和伦敦大学学院(the University College London)。就这样,数据包又从另一条SATNET链路,穿越大西洋,折回了接入ARPANET的南加州大学信息研究院。Cerf是这样描述的:“由于我们所做的一切都是由国防部来买单,因此大家都希望在这次展示中体现出其军事用途来。于是,我们让数据包的往返距离达到了94000英里,这远不止ARPANET所能企及的那区区800英里。这次展示大获成功!”
1977年8月,Jon Postel在一篇文章中写道:“我们在internet协议的设计上违背了网络分层原理,以至于铸成大错。说具体点,就是我们试图让TCP来行使两项功能:既要让其作为端到端的主机层协议,也要使之成为Internet封包及路由协议(Internet packaging and routing protocol)。然而,以上两项功能应该是以层次化、模块化的方式来实现4。”Postel建议把TCP的逐跳(hop-by-hop)功能“转移”进另外一种名叫IP(Internet Protocol)的协议。在同一篇文章中,他提出了如今为人们所熟知的IP包头的概念。随后,Cerf 和Postel撰写了一份“拆分”TCP功能的规范,这预示着TCP/IP的诞生5。紧接着,为满足启用尽力服务(best-effort service)时,对IP层直接访问的需求,Postel又定义了用户数据报协议(UDP)协议的规范。
1980年,美国军方将TCP/IP采纳为(军用计算机网络)联网的标准协议,并计划于1983年1月1日在ARPANET内启动从NCP到TCP/IP的“割接”。本次割接完成的非常顺利,这标志着互联网(Internet)的诞生和ARPANET的终结。
互联网是Gore(戈尔)发明的
最近,流传着一个与互联网有关的笑话:有人认为,互联网是美国副总统Gore发明的。故事起源于CNN晚间节目主持人Wolf Blitzer的一次采访。当时,Gore正在角逐民主党的总统候选人提名。Blitzer问Gore,选民为什么应该把票投给他,而不是Bill Bradley。以下文字摘录自Gore的回应:“互连网是我在美国国会任职期间牵头创建的。业已证明,由我牵头制定的一整套措施,不但对我国的经济增长和环境保护起到了重要作用,而且还大大改善了我国的教育体制6。”
Gore虽然措辞不当、口齿不清(他在说上面那段话时,使用的句式是“taking the initiative on initiatives”),但其想表达的意思却不难解读,那就是他作为国会议员和参议员,在处理一系列重要事务时,起到了带头人的作用。
记者们很快就抓住了Gore话中的把柄。他们纷纷指出,互联网在1969年就已经发明了(当然,这些人的话也不属实)。那时,Gore根本未在国会任职。Gore的一时失言,到了新闻媒体的嘴里,竟然演变成了:互联网是他发明的。一时间,各种丑角、各路政敌便开始不停地造谣生事,直到人们真的相信是Gore“发明”了互联网。到最后,连Gore都不得不拿这事儿来自我解嘲。
实话实说,Gore自20世纪70年代在相关立法方面的所付出努力,确实对创建人们所喜爱(或憎恨)的互联网的诞生帮助很大。共和党领袖Newt Gingrich是这样说的:“Gore在国会中所付出的卓有成效的努力,确保了人们能够享用到互联网7。”
Vint Cerf 和Bob Kahn也针对此事专门撰文:“在我们看来,Gore并不像某些人传言的那样,有意声称是他本人亲自‘发明’了互联网。此外,在我们的印象中,Gore担任参议员时,所提出的某些提案无疑对仍在不断发展中的互联网起到了极其重要的推动作用。实际上,在绝大多数人听说有互联网这回事儿之前,Gore就已经在探讨及推动互联网的发展了8。”例举了Gore对互联网的贡献之后,二位前辈总结道:“还没有什么公众人物在宏观上对互联网的发展壮大起到很明显的推动作用……单凭副总统先生早期对高速计算和高速通信技术的价值观,加之他一直以来在互联网对美国人民、对业界以及对其他国家人民具有潜在价值方面的言辞,他就值得人们的尊敬。”
1摘自The Online User’s Encyclopedia(Addison-Wesley公司 1993年出版)中的“How the Internet Came to Be”一文(由Vint Certf 口述,Bernard Aboba记录)。
2Steve Crocker把Abramson教授的研究成果透露给了Bob Metcalfe。ALOHANET 中与广播介质上的随机访问有关的规程,特别是当碰撞发生时,重传数据包的机制,引起了Metcalfe的高度关注。随后,Metcalfe和David Boggs便借此机制发明出了以太网。
3Vinton G. Cerf和Robert E. Kahn,“A Protocol for Packet Network Intercommunication”,IEEE Transactions on Commnnications,Volume COM-22,Number 5,627~641页,1974年5月。
4Jon Postel,“Comments on Internet Protocol and TCP”,IEN #2,1977年8月。
5某些早期文档把TCP/IP称为IP/TCP。
6副总统戈尔参加CNN“Late edition”节目的受访文字稿。www.cnn.com/ALLPOLITICS/Stories/1999/03/09/President.2000/transcript/gore,1999年3月9日。
7转引自洛杉矶时报上的文章,“Gore Can Mispeak and That’s No Exaggeration”,作者是James Gerstenzang,。
8 Robert Kahn 和Vinton Cerf致Declan McCullaugh和Dave Farber的电子邮件“Al Gore and the Internet”。