作者:段海新, 写于2009

Those who do not study history, are doomed to repeat it. –J. Onions, RFC 1606

历史上OSI模型和TCP/IP长达十几年的竞争,现在已经很少提及了。在今天的中国,各种标准陆续出台,下一代互联网、IPv6等成为业界关注的热点,甚至也有宣称IPv9互联网在中国取得了成功。

不了解历史的人,很容易重复历史。我们能否在实践检验之前就宣布它的成功、宣称它代表未来的发展趋势?本文回顾OSI诞生到消亡的这段历史,希望能够引发对未来互联网体系结构研究及相关问题的思考。

一、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模型,究竟是何方神圣设计的?

二、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已经名存实亡了。

三、OSI对 Internet产生了“严重”影响吗?

有人或许会说,设计者是谁并不能妨碍OSI模型的伟大,不能否定它对互联网发展的指导意义。那么OSI七层模型对Internet的发展是否真的产生了“严重影响”呢?

至少我们知道,OSI的七层模型诞生之前,ARPANET已经存在了。但是有人说,至少TCP/IP使用了OSI的许多术语,比如协议层的名字。我们再来看看Debby Koren博士在“OSI七层模型和Internet协议模型”一文中的说明[7]:

“许多教科书中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的第5层。

四、互联网设计的“指导原则”究竟是什么?

也许很多学生在学习互联网的过程中,都听说过互联网设计的一些“设计原则”或是“指导思想”,比如:

  • 无连接(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。

我最近参加的IETF会议上,cisco 公司的资深专家Fred Baker介绍cisco 公司解决局域网安全问题的“IP Source Guard”技术时,不止一次提到,他们的解决方案的确违反了网络分层的原则,是指他们在二层交换机上检查了数据包的三层信息。他们没有让“分层原则”束缚了自己的手脚。

上学期,美国普渡大学的教授、互联网先驱之一Douglas Comer 先生在这个会议室做了一次报告,题目是“Lessons Learned From The Internet Project” [9]。我选取其中的几点介绍一下:

  • 端到端的原则也没有象当初想象的那么关键,目前一半以上的计算机通过网络地址转换(NAT)上网(即使用192.168.x.x这类的私有地址),而且防火墙也已经被广泛的接受,而这些,都打破了互联网的端到端原则。
  • 由多个网络构成的通信系统与一个庞大的单一网络构成的通信系统相比,更为灵活,并且更容易适应技术的变化;
  • 一个由智能终端系统和简单的网络构成的网络,富于创新的潜力,但是有时较为脆弱 ;
  • 制定一个有限的目标,构建一个具体的系统,或者解决一个具体的工程问题,比起一个宏伟的目标、复杂的系统更为现实 ;
  • OSI七层参考模型表明,由一个专家委员会设计的东西,不会有什么好结果。
  • 那么,互联网的研究与开发有没有“世界观”、“方法论”一类的指导思想呢?1992年David Clark教授在IETF会议上总结了这样一句话“We reject: kings, presidents, and voting. We believe in: rough consensus and running code(我们拒绝国王、总统和投票,我们相信大多数人的意见和运行的代码)。”[10]这就是广为流传的“互联网哲学(Internet Philosophy)”。

也许让许多搞哲学的先生们大跌眼镜,这算哪门子哲学?

五、总结与思考

本文只是我个人目前对OSI模型以及类似政府强制推行的“官方标准”的一点看法,因此我收集的关于OSI和TCP/IP历史的资料并不全面。OSI模型对于理解网络协议也许有一些作用,但是我不认为它曾经对网络研究有过什么指导,以后的研究更不应该局限于OSI的框架之内。

在技术研究领域中,我认为研究应当以解决问题为目标,也就是“具体问题具体分析”,“实事求是”。一个“理论模型”,应该来自于实践,同时还应该接受实践的检验,“实践是检验真理的唯一标准”。一个由所谓的“精英”或“专家”委员会设计出来的东西,在未经检验之前就宣布它是成功的,宣称它代表了未来的发展方向,是不能让人信服的,它的结果往往和OSI和GOSIP一样。

在我看来,在互联网领域中美国的大忽悠也不比中国少。OSI是他们忽悠出来的,不仅忽悠了美国政府,而且忽悠了全世界。不过我也不认为,像有些学者所说,美国人关起门来偷偷地研究TCP/IP,却骗其他国家都走OSI的弯路,使得美国再互联网领域占尽了先机。也许不少民族主义的“爱国者”会相信这样的说法,以证实美国的确有狼子野心。

然而,在一个言论自由、允许学术争鸣的国度里,不怕有人忽悠,就像华南虎照片最终会被揭穿一样。从OSI参考模型诞生之日起,就有一批人“We reject: kings, presidents, and voting. We believe in: rough consensus and running code”。最终大多数人还是会选择他们能够看到、用到、感受到的实际的东西,而不是想象中的乌托邦(OSI)。

然而在中国,一些学术权威引进了美国忽悠出来的东西之后,就不允许其他人提出反对的声音了。更加可怕的是,这些忽悠出来的理论不经检验就宣布它是真理,代表着未来的发展方向,于是我们就只有被忽悠的自由了。

最后用本文开头的那句话结尾吧,这本是1994年愚人节发布的一个RFC(可是中国的学者居然把它实现了),这个文档只有最后的这句话是严肃的:Those who do not study history, are doomed to repeat it(不研究历史的人,注定要重复历史)。

希望中国互联网的研究,不要重复过去失败的历史。

参考文献

[1] Tanenbaum《计算机网络》第四版,清华大学出版社,pp39

[2] THE ORIGINS OF OSI http://williamstallings.com/Extras/OSI.html

[3] http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_5-2/book_review.html]

[4] http://www.groklaw.net/articlebasic.php?story=20050219170121955

[5] The True Story Of Network Layering And The Origin Of The OSI Model ,http://www.cs.purdue.edu/homes/dec/essay.network.layers.html

[6] POSIT(Profiles for Open Systems Internetworking Technologies) FIPS PUB 146-2(http://www.itl.nist.gov/fipspubs/fip146-2.htm),

[7] Debby Koren, The OSI Model – A Surviving Remnant of the OSI Protocol Stack, http://www2.rad.com/networks/introductory/layers/main.htm,

[8] David D. Clark, The Design Philosophy of the DARPA Internet Protocols, http://xys.ccert.edu.cn/reference/ccr-9501-clark-design-philosophy.pdf

[9] Douglas Comer, Lessons Learned From The Internet Project, http://xys.ccert.edu.cn/reference/Comer_Internet_Lessons_Talk.pdf

[10] David D. Clark, A Cloudy Crystal Ball–Visions of the Future, IETF, July 1992, http://xys.ccert.edu.cn/reference/future_ietf_92.pdf