OSI模型和TCP/IP长达十几年的竞争,现在已经很少提及了。在今天的中国,各种“标准”、“理论”陆续出台,我们能否在实践检验之前就宣布它的成功、宣称它代表未来的发展趋势?不了解历史的人,很容易重复历史。本文不止是为了答复某些网友的质疑,更希望能够引发对未来互联网体系结构研究及相关社会问题的思考。(本文只是作者本人的“偏见”,希望某些读者不要被“误导”了。)
一、OSI的概要和现状
OSI(Open System Interconnection)参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模型,不仅包括一系列抽象的术语或概念,也包括具体的协议。在国内、国外所有关于计算机网络的教科书中,如果不提OSI参考模型,就仿佛没有了“理论”指导,相信绝大多数学过计算机网络的人,都学过或多少听说过。
在八十年代末、九十年代初,OSI的确有一统天下的架势,主流的学术期刊无数的文章都给人们描绘了一个伟大的未来:“OSI模型及其协议将会统领整个世界,从而把所有其他技术和标准都排除出局 [Tanenbaum《计算机网络》第四版,清华大学出版社,pp39]”。人们将从IBM的SNA技术、APARNET的TCP/IP技术、Digital的DECnet技术的奴役中解放出来,投入到OSI协议统一的天国。
然而,在90年代中后期,在我开始学习网络的时候,TCP/IP和OSI模型的竞争以互联网的成功和OSI的失败而结束了。我们今天广泛使用的互联网是基于TCP/IP模型,它却是一个四层(有人也说是五层)模型。今天,无论在工程界还是学术界,我们只用OSI参考模型所定义的某些术语或概念进行交流,却很少厂商或个人实现或使用OSI的协议,几乎根本看不到了。
直到今天,有没有人怀疑过,我们是不是被“忽悠”了?这个人人都敬若神明、却又看不到的OSI究竟是何方神圣设计的?
二、OSI七层模型的诞生和消亡
很多人质疑过OSI参考模型。在国内广泛使用的《计算机网络》教材中,Tanenbaum先生就总结了一些教训“糟糕的时机、糟糕的技术、糟糕的实现、糟糕的政策”[pp39],想必很多学生都读过。然而有关OSI参考模型制定的故事,未必有很多人知道。
以下来自William Stalling先生教材的参考资源网站[http://williamstallings.com/Extras/OSI.html。],William Stalling是美国至少两本优秀教材的作者。这个故事在[http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_5-2/book_review.html][ http://www.groklaw.net/articlebasic.php?story=20050219170121955]中得到了验证。
OSI的大部分设计工作实际上只是Honeywell Information System公司的一个小组完成的,小组的技术负责人是Charlie Bachman。在70年代中期,这个小组主要是为了开发一些原型系统而成立的,主要关注数据库系统的设计。70年代中,为了支持数据库系统的访问,需要一个结构化的分布式通信系统体系结构。于是这个小组研究了现有的一些解决方案,其中包括IBM公司的SNA(System Network Architecture)、ARPANET(Internet的前身)的协议、以及为标准化的数据库正在研究中的一些表示服务(presentation services)的相关概念,在1977年提出了一个七层的体系结构模型,他们内部称之为分布式系统体系结构(DSA)。
与此同时,1977年英国标准化协会向国际标准化组织(ISO)提议,为了定义分布处理之间的通信基础设施,需要一个标准的体系结构。结果,ISO就开放系统互联(OSI)问题成立了一个专委会(TC 97, Subcomittee 16),指定由美国国家标准协会(ANSI)开发一个标准草案,在专委会第一次正式会议之前提交。Bachman 参加了ANSI早期的会议,并提交了他的七层模型,这个模型就成了提交ISO专委会的唯一的一份草案。1978年3月,在ISO的OSI专委会在华盛顿召开的会议上,与会专家很快达成了共识,认为这个分层的体系结构能够满足开放式系统的大多数需求,而且具有可扩展的能力,能够满足新的需求。于是,1978年发布了这个临时版本,1979年稍作细化之后,成了最终的版本。所以,OSI模型和1977年DSA模型基本相同。
以下故事来源于普度大学著名教授Douglas E. Comer先生的个人主页上的一篇文章“How the 7-layer reference model was invented”(http://www.cs.purdue.edu/homes/dec/essay.network.layers.html)。 Douglas E. Comer先生在网络界的盛名不需我多说,可能很多人都读过他写的《Internetworking With TCP/IP Volume 1: Principles Protocols, and Architecture》。
“研究人员开始回顾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(http://www.itl.nist.gov/fipspubs/fip146-2.htm),在第3条中声明“This change modifies FIPS 146-1 by removing the requirement that Federal agencies specify GOSIP protocols when they acquire networking products and services and communications systems and services.”从此,除了少数军方应用使用X.500的邮件系统以外,OSI已经名存实亡了。
三、OSI对 Internet产生了“严重”影响吗?
那么,我们不管是谁设计的OSI模型,就像有人说《黄帝内经》不是黄帝写的并不能否认《黄帝内经》的伟大一样。那么OSI七层模型对Internet的发展是否真的产生了“严重影响”呢?
至少我们知道,OSI的七层模型诞生之前,ARPANET已经存在了。但是有人说,至少TCP/IP使用了OSI的许多术语,比如协议层的名字。我们再来看看以下文字(来自http://www2.rad.com/networks/introductory/layers/main.htm):
许多教科书中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年发表的这篇文章【4】,我们可以看到,在互联网的设计之初,很多设计目标、动机都是很模糊的,许多所谓的设计原则或设计思想,在互联网发展过程中逐渐总结出来的。
例如,无连接的思想在一开始并没有充分强调,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” 【5】 。我选取其中的几点介绍一下:
- 端到端的原则也没有象当初想象的那么关键,目前一半以上的计算机通过网络地址转换(NAT)上网(即使用192.168.x.x这类的私有地址),而且防火墙也已经被广泛的接受,而这些,都打破了互联网的端到端原则。
- 由多个网络构成的通信系统与一个庞大的单一网络构成的通信系统相比,更为灵活,并且更容易适应技术的变化
- 一个由智能终端系统和简单的网络构成的网络,富于创新的潜力,但是有时较为脆弱
- 制定一个有限的目标,构建一个具体的系统,或者解决一个具体的工程问题,比起一个宏伟的目标、复杂的系统更为现实
- OSI七层参考模型表明,由一个专家委员会设计的东西,不会有什么好结果。
那么,互联网的研究与开发有没有“世界观”、“方法论”一类的指导思想呢?1992年David Clark教授在IETF会议上总结了这样一句话“We reject: kings, presidents, and voting. We believe in: rough consensus and running code(我们拒绝国王、总统和投票,我们相信大多数人的意见和运行的代码)。”这就是广为流传的“互联网哲学(Internet Philosophy)”。也许让许多搞哲学的先生们大跌眼镜,这算哪门子哲学?
五、简单答复新语丝上几位网友关于的留言
Shinjikun网友在我新语丝博客《当科研也开始装神弄鬼》一文的留言说:“段先生似乎想问题有点偏激”。
面对无数指责我偏激的人,我只好用太簇给我的留言答复他/她:在当今社会,“偏激是一种美德。
”。是的,我所有的观点都是我个人的偏见,我在以前的文章中也已经声明过。Shijikun先生比我更“全”么?
“说来Internet,其实基本就是在OSI的模型框架中的,至少受到其严重的影响,只不过有大量优化。”
想起了有人说周正龙说那幅年画是照着他的照片画的,先搞清楚Internet和OSI的先后吧?
“实际上现在几乎所有的主流教科书都是讲的 OSI体系”。
这个一点也不假,国内外都是如此。在现代天文学传入中国前,大多数人都相信“天圆地方”,中国主流的医院也都有中医科室。看看国外的主流的教科书,在讲OSI体系的同时,有多少持批评的观点?
“而完整的OSI体系也并非没有实现,OSI的一个著名实现叫做GOSIP,现在全世界都在弄”。
GOSIP 是OSI一个著名的“实现”吗?“全世界都在弄”,我实在吓了一大跳。这要怪我孤陋寡闻了。我进入网络研究的圈子已经有十多年了,因为CERNET网络中心工作的关系,我跟全国许多大学做网络研究的教授每年都有一些学术或技术交流,我每年也都曾出国开会与国际的学者交流,其间从没有人跟我提过GOSIP。若不是2007年 Douglas Comer教授来清华演讲,我还真的都没有听说过GOSIP。
不知道Shinjikun网友来自哪个世界?
“我确定您听说过,为啥就是不说呢?” 什么证据让您“确定”我听说过?
我这里并没有要和Shinjikun网友“开干”的意思,对Shinjikun网友也没有敌意。只是希望不“偏激”的Shinjikun网友,不要把井口一样的天空当作“全世界”,也建议你考上研究生之后到国外去看看,不要把中国当“天下”。
六、几点结论和思考
本文不是学术论文,只是我个人目前对OSI模型以及类似政府强制推行的“官方标准”的一点看法,因此我收集的关于OSI和TCP/IP历史的资料并不全面。
OSI模型对于理解网络协议也许有一些作用,但是我不认为它曾经对网络研究有过什么指导,以后的研究更不应该局限于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(不研究历史的人,注定要重复历史)。
请问我们中国的年轻人,我们了解中国的近代历史吗?我们是否会重复历史?