如何假装成很懂互联网的样子,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模型已经名存实亡了,它对人类的影响只停留在还没来得及更新的教科书上。

全部评论

相关推荐

评论
点赞
5
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
3751次浏览 45人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16896次浏览 137人参与
# 米连集团26产品管培生项目 #
7279次浏览 226人参与
# 春招至今,你的战绩如何? #
15630次浏览 144人参与
# 你的实习产出是真实的还是包装的? #
2964次浏览 52人参与
# 沪漂/北漂你觉得哪个更苦? #
1513次浏览 40人参与
# MiniMax求职进展汇总 #
25116次浏览 321人参与
# HR最不可信的一句话是__ #
1078次浏览 32人参与
# AI面会问哪些问题? #
935次浏览 23人参与
# 你做过最难的笔试是哪家公司 #
1228次浏览 22人参与
# AI时代,哪个岗位还有“活路” #
2814次浏览 51人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152901次浏览 889人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8007次浏览 43人参与
# XX请雇我工作 #
51155次浏览 171人参与
# 简历第一个项目做什么 #
32131次浏览 360人参与
# 简历中的项目经历要怎么写? #
311028次浏览 4264人参与
# 投格力的你,拿到offer了吗? #
178337次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
76978次浏览 375人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187585次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64704次浏览 883人参与
# 如果重来一次你还会读研吗 #
230010次浏览 2011人参与
# 正在春招的你,也参与了去年秋招吗? #
364336次浏览 2642人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务