如何假裝成很懂互聯網的樣子,TCP/IP的故事

jopen 11年前發布 | 11K 次閱讀 互聯網

        我們生活在這樣一個時代:只要連上網絡,就可以和他人交流,無論距離有多遠;也可以網購商品,發誓剁手都無濟于事;還可以點評正在發生的熱點事件,像皇上批閱奏章一樣日理萬機。用我們這一行的表達方式,可以說現代人的生活是基于網絡的。

        網絡的流行很大一部分要歸功于 Vinton Cerf 和 Robert Kahn 這對老搭檔。他們在 70 年代設計的 TCP/IP 協議奠定了網絡的基石,也因此獲得計算機界的最高榮譽——圖靈獎。其實 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.

</blockquote>

        (由于違背層級原理,我們設計的互聯網協議已經一團糟。特別是我們試圖使用 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 工作的工程師,到了退休年齡也在做著朝陽產業。

如何假裝成很懂互聯網的樣子,TCP/IP的故事

        令人費解的是,現在的大學課程還在介紹早已淘汰的 OSI 七層模型。它和 TCP/IP 模型的對應關系如左圖所示。因為層數太多,很多學生根本理解不了,甚至連排序都不會。老師就用“All People Seem To Need Data Processing”來幫助記憶,因為這七個單詞的首字母和 OSI 模型每一層的首字母是一樣的。大學的應試教育由此可見一斑。更奇怪的是學生們走出校園后,會發現這個笨重的七層模型早已不復存在。雖然它得到過官方的大力 支持,但是市場明顯更青睞輕盈的 TCP/IP 四層模型。

        按理說 OSI 是權威組織,七層模型應該是科學的。為什么反而會不受歡迎呢?普度大學的特聘教授 Douglas Comer 在他的文章里這樣說過:

如何假裝成很懂互聯網的樣子,TCP/IP的故事

        “(研究人員)最近有了一些驚人的發現:我們都知道這個七層模型是一個小組完成的,但我們不知道的是,這個小組深夜在酒吧里談論美國的娛樂八 卦。后來他們把迪斯尼電影里 7 個小矮人的名字寫在餐巾紙上,有個人開玩笑說 7 對于網絡分層是個好數字。第二天上午在標準化委員會的會議上,他們傳閱了那張餐巾紙,然后一致同意他們昨晚喝醉時的重大發現。那天結束時,他們又給七個層 次重新起了聽上去更科學的名字,于是模型就誕生了。

        (下表是 Douglas 對這個小組的極盡嘲諷,我翻譯不出其中的神韻,所以干脆貼出原文。)

Layer

</td>

Dwarf

</td>

Name

</td>

Explanations

</td> </tr>

1

</td>

Sleepy

</td>

Physical

</td>

        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).

</td> </tr>

2

</td>

Sneezy

</td>

Link

</td>

        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''.

</td> </tr>

3

</td>

Happy

</td>

Network

</td>

        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.

</td> </tr>

4

</td>

Doc

</td>

Transport

</td>

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

</td> </tr>

5

</td>

Dopey

</td>

Session

</td>

        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.

</td> </tr>

6

</td>

Bashful

</td>

Presentation

</td>

        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.

</td> </tr>

7

</td>

Grumpy

</td>

Application

</td>

        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.

</td> </tr> </tbody> </table>

        這個故事告訴我們:如果你是標準委員會中的工程師,不要和同事喝酒——深夜在酒吧里開的一個拙劣玩笑,卻可能成為業界幾十年揮之不去的噩夢。”

        Douglas 是網絡界德高望重的前輩。他回到普度大學之前曾是 Cisco 的 Vice President of Research,同時更是久負盛名的技術作家,所以我愿意相信他的說法。而業界普遍對待 OSI 模型的抵觸態度,更是一個有力的佐證。幸好到了今天,OSI 模型已經名存實亡了,它對人類的影響只停留在還沒來得及更新的教科書上。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!