第二章:互联网的进化成型
上一章讲了“计算机的发明”。但是与其说计算机是发明的,不如说他是逐步进化出来。没有前人的功劳,没有图灵等科学建立起来的数理基础,或者没有电子管的发明,亦或没有后来晶体管的发明,计算机可能永远都是只一个妄想。思想文化和技术,都像生命一样,一旦开始,就会永不停息的进化下去。互联网也是一样,从一开始两台计算机想彼此亲近的冲动开始,一直到现在无所不在的网络世界,每一次变化与增长都是一次进化。
一、ARPANET
ARPA,是Advanced Research Projects Agency的缩写。作为对前苏联1957年发射的Sputnik(第一颗人造地球卫星)的直接反应,以及由此导致的恐惧(潜在的军事用途),美国国防部组建了高级研究项目局(ARPA) 。到了60年代末,每一个主要的联邦基金研究中心,包括纯商业性组织、大学,都有了由美国新兴电脑工业提供的最新技术装备的电脑设备。电脑中心互联以共享数据的思想得到了迅速发展。
美国国防部认为,如果仅有一个集中的军事指挥中心,万一这个中心被原苏联的核武器摧毁,全国的军事指挥将处于瘫痪状态,其后果将不堪设想,因此有必要设计这样一个分散的指挥系统——它由一个个分散的指挥点组成,当部分指挥点被摧毁后其它点仍能正常工作,而这些分散的点又能通过某种形式的通讯网取得联系。
1969年,美国国防部高级研究计划管理局( ARPA - - Advanced Research Projects Agency )开始建立一个命名为ARPAnet的网络,其在洛杉矶的加利福尼亚州大学洛杉矶分校、加州大学圣巴巴拉分校、斯坦福大学、犹他州大学四所大学的4台大型计算机采用分组交换技术,通过专门的接口信号处理机(IMP)和专门的通信线路,相互连接把美国的几个军事及研究用电脑主机联接起来。起初是为了便于这些学校之间互相共享资源而开发的。ARPANET采用了包交换机制。当初,ARPAnet只联结4台主机,从军事要求上是置于美国国防部高级机密的保护之下,从技术上它还不具备向外推广的条件。 最初,ARPAnet主要是用于军事研究目的,它主要是基于这样的指导思想:网络必须经受得住故障的考验而维持正常的工作,一旦发生战争,当网络的某一部分因遭受攻击而失去工作能力时,网络的其他部分应能维持正常的通信工作。ARPAnet在技术上的另一个重大贡献是TCP/IP协议簇的开发和利用。作为Internet的早期骨干网,ARPAnet的试验并奠定了Internet存在和发展的基础,较好地解决了异种机网络互联的一系列理论和技术问题。
70年代协议成功的扩大了数据包的体积,进而组成了互联网。
1983年,ARPA和美国国防部通信局研制成功了用于异构网络的TCP/IP协议,美国加利福尼亚伯克莱分校把该协议作为其BSD UNIX的一部分,使得该协议得以在社会上流行起来,从而诞生了真正的Internet。 该年,ARPAnet分裂为两部分, ARPAnet和纯军事用的MILNET。同时,局域网和广域网的产生和逢勃发展对Internet的进一步发展起了重要的作用。其中最引人注目的是美国国家科学基金会ASF(National Science Foundation)建立的NSFnet。NSF在全美国建立了按地区划分的计算机广域网并将这些地区网络和超级计算机中心互联起来。NFSnet于1990年6月彻底取代了ARPAnet而成为Internet的主干网。
1986年,美国国家科学基金会(NationalScienceFoundation,NSF)利用ARPAnet发展出来的IP的通讯,在5个科研教育服务超级电脑中心的基础上建立了NSFnet广域网。由于美国国家科学基金会的鼓励和资助,很多大学、政府资助的研究机构甚至私营的研究机构纷纷把自己的局域网并入NSFnet中。那时,ARPAnet的军用部分已脱离母网,建立自己的网络--Milnet。ARPAnet--网络之父,逐步被NSFnet所替代。到1990年,ARPAnet已退出了历史舞台。如今,NSFnet已成为Internet的重要骨干网之一 。
ARPA1971年更名为DARPA,因此有时用DARPANET来表示ARPANET,这两个词表示同一个意思。
二、电路交换、报文交换以及分组交换
1.电路交换(Circuit Switching)
电路交换在通信之前要在通信双方之间建立一条被双方独占的物理通路。由于通信线路为通信双方用户专用,数据直达,所以传输数据的时延非常小;通信双方之间的物理通路一旦建立,双方可以随时通信,实时性强;双方通信时按发送顺序传送数据,不存在失序问题。
这种通信方式非常适合语音(如打电话)这种对实时性要求高的业务。但不适合数据通信业务,对于两台计算机进行数据通信来说,大多数时间线路是空闲的,由于物理通路被通信是独占的,不能供其他用户使用,因而信道利用低。
2.报文交换(Message Switching)
报文交换是以报文为数据交换的单位,报文携带有目标地址、源地址等信息,在交换结点采用存储转发的传输方式。报文交换不需要为通信双方预先建立一条专用的通信线路,而是在不同的时间一段一段地部分占有这条物理通路(按照存储转发的机制一步步的传递报文到下一节点),在通信线路的空闲部分可以供其他用户使用,因而大大提高了通信线路的利用率。
由于采用存储转发的传输方式,使之具有下列优点:
a.在报文交换中便于设置代码检验和数据重发设施,加之交换结点还具有路径选择,就可以做到某条传输路径发生故障时,重新选择另一条路径传输数据,提高了传输的可靠性。
b.在存储转发中容易实现代码转换和速率匹配,甚至收发双方可以不同时处于可用状态。这样就便于类型、规格和速度不同的计算机之间进行通信。
c.提供多目标服务,即一个报文可以同时发送到多个目的地址,这在电路交换中是很难实现的。
d.允许建立数据传输的优先级,使优先级高的报文优先转换。
但是,由于数据进入交换结点后要经历存储、转发这一过程,从而引起转发时延(包括接收报文、检验正确性、排队、发送时间等),而且网络的通信量愈大,造成的时延就愈大,因此报文交换的实时性差,不适合传送实时或交互式业务的数据。由于报文长度是随机的,而又没有长度限制,仅是原始数据的封装,而每个中间结点都要完整地接收传来的整个报文,当输出线路不空闲时,还可能要存储几个完整报文等待转发,要求网络中每个结点有较大的缓冲区。为了降低成本,减少结点的缓冲存储器的容量,有时要把等待转发的报文存在磁盘上,进一步增加了传送时延。
3.分组交换(Packet Switching)
分组交换又称为报文分组交换(基于报文交换,将报文划分为更小的数据单位:报文分组(也称为段、包、分组),分组交换仍采用存储转发传输方式,但将一个长报文先分割为若干个较短的分组,称为“段”(Segment),然后把这些分组(携带源、目的地址和编号信息)逐个地发送出去,因此分组交换除了具有报文的优点外,与报文交换相比有以下优点:
1 简化了存储管理。因为分组的长度固定,一般是几千比特,相应的缓冲区的大小也固定,在交换结点中存储器的管理通常被简化为对缓冲区的管理,相对比较容易。
2 减少了出错机率和重发数据量。因为分组较短,其出错机率必然减少,每次重发的数据量也就大大减少,这样不仅提高了可靠性,也减少了传输时延。
3 由于分组短小,更适用于采用优先级策略,便于及时传送一些紧急数据,因此对于计算机之间的突发式的数据通信,分组交换显然更为合适些。
报文分组中为了控制和管理网络的报文分组流,目前有两种主要方法:数据报和虚电路。
分组交换是在报文交换和线路交换基础上发展起来的技术,它兼有电路交换和报文交换的优点。分组交换采用两种不同的方法来管理被传输的分组流:数据报和虚电路。
3.1数据报(Datagram)
无连接的数据传输,工作过程类似于报文交换。采用数据报方式传输时,被传输的分组称为数据报。当一对站点之间需要传输多个数据报时,由于每个数据报均被独立地传输和路由,因此在网络中可能会走不同的路径,具有不同的时间延迟,按序发送的多个数据报可能以不同的顺序达到终点,但多数都是同顺序的,所以UDP并不对其数据报进行排序,以提高传输速度。
3.2虚电路(Virtual Circuit)
虚电路是面向连接的数据传输,工作过程类似于线路交换,不同之处在于此时的电路是虚拟的。它的传输路径是确定的(但不一直占有,按照确定的传输路径,从一个节点到下一个节点不断的储存转发,直到目的地为止),不存在路由选择和数据包排序的问题。但是需要建立呼叫请求建立线路,由于虚电路的建立和释放需要占用一定的时间,因此虚电路方式不适合站点之间具有频繁连接和交换短小数据的应用
在两个节点或应用进程之间建立起一个逻辑上的连接或虚电路后,就可以在两个节点之间依次发送每一个分组,接受端收到分组的顺序必然与发送端的发送顺序一致,因此接受端无须负责在收集分组后重新进行排序。虚电路协议向高层协议隐藏了将数据分割成段,包或帧的过程。
三、ISO/OSI参考模型 和 TCP/IP
历史上OSI模型和TCP/IP长达十几年的竞争,现在已经很少提及了。在今天的中国,各种标准陆续出台,下一代互联网、IPv6等成为业界关注的热点,甚至也有宣称IPv9互联网在中国取得了成功。不了解历史的人,很容易重复历史。我们能否在实践检验之前就宣布它的成功、宣称它代表未来的发展趋势?本文回顾OSI诞生到消亡的这段历史,希望能够引发对未来互联网体系结构研究及相关问题的思考。
1.OSI的概要和现状
OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模型,不仅包括一系列抽象的术语或概念,也包括具体的协议。在国内、国外所有关于计算机网络的教科书中,如果不提OSI参考模型,就仿佛没有了“理论”指导,相信绝大多数学过计算机网络的人,都学过或多少听说过。
在八十年代末、九十年代初,OSI的确有一统天下的架势,主流的学术期刊无数的文章都给人们描绘了一个伟大的未来:“OSI模型及其协议将会统领整个世界,从而把所有其他技术和标准都排除出局”[1]。人们将从IBM的SNA技术、APARNET的TCP/IP技术、Digital的DECnet 技术的奴役中解放出来,投入到OSI协议统一的天国。
然而,在90年代中后期,TCP/IP和OSI模型的竞争以互联网的成功和OSI的失败而结束了。我们今天广泛使用的互联网是基于TCP/IP模型,它却是一个四层模型。今天,无论在工程界还是学术界,我们只用OSI参考模型所定义的某些术语或概念进行交流,却很少厂商或个人实现或使用 OSI的协议,几乎根本看不到了。但是直到今天,有没有人怀疑过,我们是不是被“忽悠”了?这个人人都敬若神明、却又看不到的OSI模型,究竟是何方神圣设计的?
2.OSI七层模型的诞生和消亡
很多人质疑过OSI参考模型。在国内广泛使用的《计算机网络》教材中,Tanenbaum先生就总结了一些教训“糟糕的时机、糟糕的技术、糟糕的实现、糟糕的政策”[1],想必很多学生都读过。然而有关OSI参考模型制定的故事,未必有很多人知道。以下来自William Stalling先生教材的参考资源网站[2],William Stalling是美国至少两本优秀教材的作者。这个故事在[3][4]中得到了验证。
据William Stalling先生介绍,OSI的大部分设计工作实际上只是Honeywell Information System公司的一个小组完成的,小组的技术负责人是Charlie Bachman。70年代中期,这个小组主要是为了开发一些原型系统而成立的,主要关注数据库系统的设计。当时,为了支持数据库系统的访问,需要一个结构化的分布式通信系统体系结构。于是这个小组研究了当时已存在的一些解决方案,其中包括IBM公司的SNA(System Network Architecture)、ARPANET(Internet的前身)的协议、以及为数据库标准化而正在研究中的一些表示服务(presentation services)的相关概念,在1977年他们提出了一个七层的体系结构模型,内部称之为分布式系统体系结构(DSA)。
与此同时,1977年英国标准化协会(BSI)向国际标准化组织(ISO)提议,为了定义分布处理之间的通信基础设施,需要一个标准的体系结构。结果, ISO就开放系统互联(OSI)问题成立了一个专委会(TC 97, SC 16),指定由美国国家标准协会(ANSI)开发一个标准草案,在专委会第一次正式会议之前提交。
Charlie Bachman 参加了ANSI早期的会议,并提交了他的七层模型,这个模型就成了提交ISO专委会的唯一的一份草案。1978年3月,在ISO的OSI专委会在华盛顿召开的会议上,与会专家很快达成了共识,认为这个分层的体系结构能够满足开放式系统的大多数需求,而且具有可扩展的能力,能够满足新的需求。于是,1978 年发布了这个临时版本,1979年稍作细化之后,成了最终的版本。因此,OSI模型和1977年DSA模型基本相同。
以下故事来源于普度大学著名教授Douglas E. Comer先生的个人主页上的一篇文章“网络分层和OSI模型起源的真实故事”。Douglas E. Comer先生质疑:互联网如今已经取得了如此的成功,为什么仍然用OSI的七层模型而不是互联网的五层来描述互联网?
“研究人员开始回顾OSI七层参考模型的起源,琢磨这个笨重的、模糊不清的模型为什么如此的持久力,总是挥之不去。他们发现了一个令人吃惊的事实。虽然我们早就知道,这个模型是一个小组的工作;但是我们不知道,那群人在一天深夜聚在酒吧里取笑美国的流行文化。他们在餐巾纸上胡乱写下迪斯尼电影 “白雪公主和七个小矮人”中的七个小矮人的名字,有人开玩笑说,‘7’对网络分层来讲是一个很好的数字。第二天上午在标准化委员会的会议上,工作组传看着餐巾纸,一致同意了他们前天夜里喝醉以后的重大发现。那天结束时,他们对七个层次重新命名(使之听起来更象科学),于是基本模型诞生了。以下罗列了七层协议的名字和一些解释:
层次 | 小矮人的名字 | OSI分层的名字 | 解释 |
---|---|---|---|
1 | Sleepy | Physical | 物理层 |
2 | Sneezy | Link | 链路层 |
3 | Happy | Network | 网络层 |
4 | Doc | Transport | 传输层 |
5 | Dopey | Session | 会话层 |
6 | Bashful | Presentation | 表示层 |
7 | Grumpy | Application | 应用层 |
这个故事的教训:如果你是一个标准委员会的工程师,就不要和你的同事去喝酒——深夜里一个拙劣的笑话,有可能成为工业界几十年都挥之不去的梦魇。” Douglas E. Comer来清华演讲时,我还没有看到这篇文章,没有向他求证故事的真假,自认为其中有很多调侃的成份。但是美国许多知名学者对OSI的态度却不需要过多求证了,OSI是一批没有网络设计和开发经验的人设计的,也基本可以得到证实。
“伟大”的OSI参考模型的思想在酒吧里诞生以后,确实“忽悠”了很多组织和研究者,其中包括美国联邦政府。1990年美国通过国家标准和技术协会发布了联邦信息处理标准(FIPS) 标准 FIPS 146-1,也就是GOSIP(Government Open Systems Interconnection Profile )。GOSIP定义了OSI协议的子集,要求联邦政府机构的信息系统都要遵循GOSIP协议进行通讯,并要求向政府部门供货的设备厂商的必须能够证明他们的设备能够与GOSIP兼容。然而,就像Douglas E. Comer先生在清华的演讲中提到的,联邦政府后来又允许已有的设备、紧急的项目采用TCP/IP协议或其他的协议,于是几乎所有的项目都声称自己是紧急的。到1995年,联邦政府又发布了POSIT(Profiles for Open Systems Internetworking Technologies) FIPS PUB 146-2[6],在第3条中声明“修改FIPS 146-1,删除联邦机构购买网络产品和服务是必须遵守GOSIP协议的要求。”
从此,除了少数军方应用使用X.500的邮件系统以外,OSI已经名存实亡了。
3.OSI对Internet产生了“严重”影响吗?
有人或许会说,设计者是谁并不能妨碍OSI模型的伟大,不能否定它对互联网发展的指导意义。那么OSI七层模型对Internet的发展是否真的产生了“严重影响”呢?
至少我们知道,OSI的七层模型诞生之前,ARPANET已经存在了。但是有人说,至少TCP/IP使用了OSI的许多术语,比如协议层的名字。我们再来看看Debby Koren博士在“OSI七层模型和Internet协议模型”一文中的说明:
“许多教科书中Internet协议的描述中使用了OSI的许多术语,比如物理层和数据链路层。然而,在1981年之前并非如此。1981年 Jon Postel 等在计算机网络(1981年第5期,pp261-271)上发表的文章中有一个图表,我们今天所说的IP层(对应OSI的第3层,即Network Layer),实际上是Internetwork Layer,它运行在Network Layer(对应OSI的第2层,即Data Link Layer)之上。”
当然不能否认,在互联网领域,无论学术界还是工程界,我们已经习惯了OSI的术语,用它交流一般也不会产生误解。比如我们说一个工作在“第7层”的系统,我们都知道是应用层,也不必非要说它是TCP/IP的第四层。
4.互联网设计的“指导原则”究竟是什么?
也许很多学生在学习互联网的过程中,都听说过互联网设计的一些“设计原则”或是“指导思想”,比如:
**无连接(Connectionless),区别于传统电信网络面向连接的概念,使用分组交换而不是电路交换。
**端到端(End to End),在网络层(IP层)以上,通信的端系统(计算机)应该直接通信不需要中间设备,类似防火墙、地址转换设备等中间盒子(Middle-Box)是不被看好的。
**简单性原则
**分层思想等等
这些设计原则的确为后来网络技术的研究提供了很大帮助,也许是适应当时互联网发展的。然而这些原则从哪里来的?是来自美国政府(如国防部)的“最高指示”吗?还是来自上帝的启示? 我们看一下MIT 的David Clark教授1988年发表的这篇文章[8],我们可以看到,在互联网的设计之初,很多设计目标、动机都是很模糊的,许多所谓的设计原则或设计思想,在互联网发展过程中逐渐总结出来的。例如,无连接的思想在一开始并没有充分强调,IP层和TCP层分层的思想,在一开始也不是当初计划书的一部分。比如ICMP、OSPF是哪一层的协议? ICMP是封装在IP分组中的,但是却与IP是同一层次;OSPF有与TCP同等层次的协议号码(protocol number),然而TCP/IP协议栈中“传输层”或者“第4层”的协议只有TCP和UDP,却不包括OSPF。
cisco 公司的资深专家Fred Baker介绍cisco 公司解决局域网安全问题的“IP Source Guard”技术时,不止一次提到,他们的解决方案的确违反了网络分层的原则,是指他们在二层交换机上检查了数据包的三层信息。他们没有让“分层原则”束缚了自己的手脚。由多个网络构成的通信系统与一个庞大的单一网络构成的通信系统相比,更为灵活,并且更容易适应技术的变化; 一个由智能终端系统和简单的网络构成的网络,富于创新的潜力,但是有时较为脆弱 ;制定一个有限的目标,构建一个具体的系统,或者解决一个具体的工程问题,比起一个宏伟的目标、复杂的系统更为现实 ;OSI七层参考模型表明,由一个专家委员会设计的东西,不会有什么好结果。
那么,互联网的研究与开发有没有“世界观”、“方法论”一类的指导思想呢?1992年David Clark教授在IETF会议上总结了这样一句话“We reject: kings, presidents, and voting. We believe in: rough consensus and running code(我们拒绝国王、总统和投票,我们相信大多数人的意见和运行的代码)。”这就是广为流传的“互联网哲学(Internet Philosophy)”。