如何假装成很懂互联网的样子,TCP/IP的故事


我们生活在这样一个时代:只要连上网络,就可以和他人交流,无论距离有多远;也可以网购商品,发誓剁手都无济于事;还可以点评正在发生的热点事件,像皇上批阅奏章一样日理万机。用我们这一行的表达方式,可以说现代人的生活是基于网络的。

网络的流行很大一部分要归功于Vinton Cerf和Robert Kahn这对老搭档。他们在70年代设计的TCP/IP协议奠定了网络的基石,也因此获得计算机界的最高荣誉——图灵奖。其实TCP/IP项目还不是这两位互联网之父的第一次合作。在此之前他们一起参与了阿帕网的开发。阿帕网是现代网络的前身。当时谁也没有想到,不久之后他们就会设计一套全新的协议来取代自己设计的阿帕网。

Robert为人低调,每次接受采访都一本正经。而Vinton热情外露,关于他的趣事很多。他的妻子是一位画家,他们第一次约会时去了艺术博物馆。技术男Vinton在一幅大型作品前伫立良久,最后冒出一句:“这画真像一只巨大的新鲜汉堡包”。在他们的婚礼上,录音机突然卡壳。Vinton终于发挥了特长,和伴郎一起到小房间修录音机了。互联网造福了世界,当然也包括Vinton自己的生活。因为夫妻俩都有听力缺陷,电子邮件就为他们带来不少便利。

现在人们说到TCP/IP时,指的已经不只是TCP和IP两个协议,而是包括了Application Layer、Transport Layer、Internet Layer和Network Access Layer的四层模型。TCP处于Transport Layer,而IP处于Internet Layer。鲜为人知的是,刚开始这两个协议并没有分层,而是结合在一起。计算机科学家Jon Postel对此批评说:

We are screwing up in our design of internet protocols by violating the principle of layering. Specifically we are trying to use TCP to do two things: serve as a host level end to end protocol, and to serve as an internet packaging and routing protocol. These two things should be provided in a layered and modular way. I suggest that a new distinct internetwork protocol is needed, and that TCP be used strictly as a host level end to end protocol.

(由于违背层级原理,我们设计的互联网协议已经一团糟。特别是我们试图使用TCP协议做下面二件事情:1、用作主机层级的端到端协议。2、用作网络包和路由协议。这二项服务应该通过层级和模块化的方式完成。我建议建立一个新的互联网网络协议,在这个协议中TCP层只用作主机层级的端到端服务。)

– Jon Postel, IEN 2, 1977

这个建议一年后被采纳了,第三版的协议决定把TCP和IP分离开来,并且延续至今。Jon的另一个身份是Vinton的高中同学。他在1998年去世时,Vinton为他写了一篇感人至深的讣告,并且作为RFC 2468发布。这对一位科学家来说也许是最有意义的纪念方式。我们今天还可以通过http://tools.ietf.org/html/rfc2468访问到它。

TCP/IP的设计堪称完美。三十年来底层的带宽、延时、还有介质都发生了翻天覆地的变化,顶层也多了很多应用,但TCP/IP却安如泰山。它不但战胜了国际标准化组织的OSI 七层模型,而且目前还看不到被其他方案取代的可能。第一代从事TCP/IP工作的工程师,到了退休年龄也在做着朝阳产业。

令人费解的是,现在的大学课程还在介绍早已淘汰的OSI七层模型。它和TCP/IP模型的对应关系如左图所示。因为层数太多,很多学生根本理解不了,甚至连排序都不会。老师就用“All People Seem To Need Data Processing”来帮助记忆,因为这七个单词的首字母和OSI模型每一层的首字母是一样的。大学的应试教育由此可见一斑。更奇怪的是学生们走出校园后,会发现这个笨重的七层模型早已不复存在。虽然它得到过官方的大力支持,但是市场明显更青睐轻盈的TCP/IP四层模型。


按理说OSI是权威组织,七层模型应该是科学的。为什么反而会不受欢迎呢?普度大学的特聘教授Douglas Comer在他的文章里这样说过:

OSI七层模型工作小组的合影

“(研究人员)最近有了一些惊人的发现:我们都知道这个七层模型是一个小组完成的,但我们不知道的是,这个小组深夜在酒吧里谈论美国的娱乐八卦。后来他们把迪斯尼电影里7个小矮人的名字写在餐巾纸上,有个人开玩笑说7对于网络分层是个好数字。第二天上午在标准化***会的会议上,他们传阅了那张餐巾纸,然后一致同意他们昨晚喝醉时的重大发现。那天结束时,他们又给七个层次重新起了听上去更科学的名字,于是模型就诞生了。

(下表是Douglas对这个小组的极尽嘲讽,我翻译不出其中的神韵,所以干脆贴出原文。)

Layer

Dwarf

Name

Explanations

1

Sleepy

Physical

The group new that physical connections are boring, and figured it might as well assign the physical layer to dwarf “Sleepy”. As it happens, a Layer 1 protocol specification does indeed put everyone to sleep (just try reading one late at night).

2

Sneezy

Link

If you monitor a network and watch the pattern of packets emitted by a computer, you’ll immediately understand the relationship between link-layer protocols and “Sneezy”.

3

Happy

Network

Everyone’s happy with the network layer. Well… to be honest, the only network layer protocol that makes everyone’s happy is the Internet Protocol. Unfortunately, the Internet protocol isn’t part of OSI, and wasn’t really built to follow the OSI model (the model didn’t include internetworking). But, the designers had good intentions.

4

Doc

Transport

This one’s obvious — it definitely takes a Ph.D. to understand the subtleties of a transport layer protocol.

5

Dopey

Session

Yep, even the designers realized that having a separate session layer is a dopey idea. They decided to follow Disney’s approach of adding comic relief, so they stuck in a completely unnecessary layer and laughed about it.

6

Bashful

Presentation

Another little joke. The designers realized that sooner or later someone would create a presentation layer protocol. However, the group decided to classify such protocols as too “bashful” to appear in public. So, even if a presentation protocol is produced, no one gets to see it.

7

Grumpy

Application

Programmers who design network applications are incredibly grumpy — they complain about the efficiency of other layers, the fundamental abstractions of the network, the long hours, the difficulty of debugging, and the API they are forced to use. And users add to the grumpiness because users never complain about protocols at other layers; they only complain about applications.

这个故事告诉我们:如果你是标准***会中的工程师,不要和同事喝酒——深夜在酒吧里开的一个拙劣玩笑,却可能成为业界几十年挥之不去的噩梦。”

Douglas是网络界德高望重的前辈。他回到普度大学之前曾是Cisco的Vice President of Research,同时更是久负盛名的技术作家,所以我愿意相信他的说法。而业界普遍对待OSI模型的抵触态度,更是一个有力的佐证。幸好到了今天,OSI模型已经名存实亡了,它对人类的影响只停留在还没来得及更新的教科书上。

全部评论

相关推荐

11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
评论
点赞
5
分享
牛客网
牛客企业服务