當前位置:
首頁 > 最新 > 計算機網路模型

計算機網路模型


計算機網路模型

從前慢

——木心

記得早先少年時

大家誠誠懇懇

說一句是一句

清早上火車站

長街黑暗無行人

賣豆漿的小店冒著熱氣

從前的日色變得慢

車,馬,郵件都慢

一生只夠愛一個人

從前的鎖也好看

鑰匙精美有樣子

你鎖了人家就懂了

讀完這首詩,有的人感動一生只能夠愛一個人,有的人感慨再也回不到從前的車馬郵件都慢,有的人感懷你鎖了人家就懂了。而浪漫主義哲學家則會大手一揮:郵件很慢?給你太平洋一樣寬的網路!

網路,在不同的行業有不同的定義。對於通信行業來說,網路指的是計算機網路。計算機網路中的「計算機」一詞,其實有著互聯網時代的深深烙印。在當今的移動互聯網時代,以及(不久的)將來的物聯網時代,不應該將網路的終端再都歸結為計算機。不過從網路連接的角度來講,我們也不必糾結網路的終端類型,而是專註於連接本身。所以,我們仍然採用計算機網路這個名詞(確實好像顯得有點過於老派,^_^),一方面是因為現在還沒有一個新的公認的名詞來取代「計算機網路」,另一方面也是為了繼承歷史,對於很多網路概念的理解,不至於困惑。

即使是計算機網路,從20實際60~70年代到現在,也經歷了翻天地覆的變化,本文並不是致力於講述網路的發展歷史(那將是非常巨大的篇幅),而是想直奔主題,講述計算機網路的模型。

1.1 OSI 七層模型

OSI 模型的全稱是 Open System Interconnection Reference Model(開放系統互連參考模型,簡稱 OSI RM),不過一般大家都簡稱之為 OSI 模型。又由於 OSI 模型有七層,所以有時人們也稱之為 OSI 七層模型。當然,有時候人們也會直接稱之為 OSI。這些表達的都是同一個意思。

OSI 的誕生,有兩條線。

第一條線是官方渠道:1977年英國標準化協會(BSI)向國際標準化組織(ISO)提議,為了定義分布處理之間的通信基礎設施,需要一個標準的體系結構。結果,ISO就開放系統互聯(OSI)問題成立了一個專委會(TC 97, SC16),指定由美國國家標準協會(ANSI)開發一個標準草案,在專委會第一次正式會議之前提交。

第二條線是民間渠道或者說是企業渠道:1970年代中期,Honeywell Information System 公司為了開發一些原型系統而成立了一個小組,該小組主要關注資料庫系統的設計,其技術負責人是Charlie Bachman。當時為了支持資料庫系統的訪問,需要一個結構化的分散式通信系統體系結構。於是這個小組研究了現有的一些解決方案,其中包括IBM公司的SNA(System Network Architecture)、ARPANET(Internet的前身)的協議、以及為標準化的資料庫正在研究中的一些表示服務(presentation services)的相關概念。1977年該小組提出了一個七層的體系結構模型,他們內部稱之為分散式系統體系結構(DSA)。

兩條線的碰撞是在ASNI 的會議上,Bachman 參加了會議,並提交了並提交了他的七層模型,這個模型就成了提交ISO專委會的唯一的一份草案。

1978年3月,在ISO的OSI專委會在華盛頓召開的會議上,與會專家很快達成了共識,認為這個分層的體系結構能夠滿足開放式系統的大多數需求,而且具有可擴展的能力,能夠滿足新的需求。

於是,1978年發布了這個臨時版本,1979年稍作細化之後,成了最終的版本。所以,OSI模型和1977年DSA模型基本相同。

了卻君王天下事,贏得生前身後名。可惜,Bachman 並沒有贏得「OSI 之父」之類的名聲。相反,現在很多人提及 OSI 七層模型,卻很少有人會想起 Bachman 當年所做的貢獻。不知道 Bachman 會不會覺得當年提出七層模型也不過是他的工作中一個插曲而已。如果單從表面上的榮譽來衡量,Bachman 的更偉大的工作也許是1960 年代所創造全球首個網狀資料庫管理系統 IDS,並因此在1973年贏得一座圖靈獎。

圖1-1Charles W. Bachman

OSI 所包含的七層模型,如表1-1所示:

表1-1OSI 七層模型

表1-1中,OSI 七層模型所對應的典型協議,其實是一種不太好的暗示,似乎是說 OSI 包含了這些協議。其實不是!OSI 僅僅是一個抽象的模型,定義一種抽象結構,定義了控制互連繫統交互規則的標準骨架,它並不包含任何具體的實現。那些具體的實現(相應的協議),只是按照 OSI 的定義,對應到相應的 OSI 層而已。

表1-1關於各層的簡述,還是有點讓人暈。當然最好的方法,是將每一層展開,看看它到底指的是什麼,這個我們放在後面的章節中逐步講述。這裡呢,我們先看看關於每一層的更簡單的描述,也許更能有所幫助吧,如表1-2所示:

表1-2OSI 模型一句話簡述

按照OSI 模型,兩個主機(Host)之間的通信,可以抽象為如下交互過程,如圖1-2所示:

圖1-2OSI 通信模型

圖1-2中,位於 HostA 的應用程序A 發送信息給位於 HostB 的應用程序B,從設備的角度看,消息從 HostA 經過交換機1->路由器1->路由器2->交換機2,最後到達 HostB。從 OSI 模型角度來說,信息從應用程序A 到達了應用層,然後再經過表示層、會話層、傳輸層、網路層、數據鏈路層,最後從物理層離開了 HostA。中間經過交換機時只需要處理2層,經過路由器時只需要處理3層,到達 HostB 時,再反向從物理層一直傳遞到應用層,最後達到應用程序B。

應用程序A和B之間的信息傳輸,歸根結底是比特流的傳輸,這也是信息在物理層的表現形式,物理層不在意其所傳輸的內容是什麼,它只是關注物理信號相關的方方面面。但是,OSI 的其他層,對於信息的處理,卻不是那麼透明。具體的處理過程,我們會在後面的章節中,逐步展開,這裡我們只須簡單理解:在發送方,是一個逐層加封協議頭的過程,在接收方,是一個逐層解封協議頭的過程。如圖1-3所示:

圖1-3OSI 封裝-解封裝過程

說明:前文說過,OSI模型並不包含具體的協議,這裡卻又提到了協議頭,是因為兩點:(1)在具體的實現中,總是需要各種協議;(2)完全拋開協議,完全抽象地講述OSI,有點難以表述。所以講述時,我們稍微引進一些協議的概念,但是理解時,我們心裡一定要明白:OSI模型不包括具體的協議。

圖1-3中,H 是 Header 的縮寫,表示協議所對應的協議頭。由於 OSI 模型與 TCP/IP 模型不同(下文會描述),而現在主流的實現其實是 TCP/IP 協議,所以圖1-3中,應用層、表示層、會話層,這3層,我們僅僅是一個籠統的協議頭來指代。對於傳輸層、網路層、數據鏈路層來說,發送方需要分別加封1個 T-H(Transport Header)、N-H(Network Header)、L-H(Link Data Header),而接收方需要相應地將協議頭解封(去除)。最後我們看到,應用程序A所要發送的數據(Data),到達應用程序B時,仍然是相同的數據。在數據鏈路層,還有一個 FCS(Frame Check Sequence,幀校驗序列,俗稱幀尾),這個我們也放到後面的章節再講述,此時我們可以忽略它。

有人的地方,就有江湖。OSI 模型中的各層,不僅對信息進行處理,還對信息命名了一個專(jiang)業(hu)術(hei)語(hua)。表1-3對這些術語作一個小結:

表1-3OSI 各層對信息的專業術語命名

說明:從第2層到第7層,還有一個通用名詞,那就是PDU(Protocol Data Unit,協議數據單元),也就是說,無論是bit、Frame、Segment、Datagram還是Data,統統都可以稱為PDU。

以上是關於OSI 模型的浮光掠影地介紹,更詳細的信息,我們會在後面的章節中逐步展開描述。最後,讓我們把目光在轉移到 OSI 的實際設計人 Bachman 及其小組的身上。當時他所領導的小組研究了IBM 公司的 SNA(System Network Architecture)、ARPANET(Internet的前身)的協議,那麼這些協議與 OSI 模型的關係如何呢?如圖1-4所示:

圖1-4OSI 與其他相關協議之間的關係

1.2 TCP/IP 模型

鄙人以為,無論對OSI 怎麼讚美都不過分,雖然有很多人指出它有很多不盡如人意的地方——這是正常的,一個新生事物,總會有很多不完善的地方——但是不應該對 OSI 過於苛責。也許大家的著眼點不一樣吧,鄙人的著眼點是對 Bachman 的感恩和崇拜,而有的人的著眼點是對 ISO 的一些失望吧:為什麼不對 OSI 模型進行持續優化呢?

TCP/IP 是一個協議族,而不是僅僅指這兩個協議:TCP(Transmission Control Protocol,傳輸控制協議)、IP(Internet Protocol,網際協議),還包括其他很多協議(ARP、ICMP、UDP,等等,這裡就不一一例舉了)。TCP/IP 的英語是 TCP/IP Protocol Suite 或者 CP/IP Protocos,之所以被簡稱為 TCP/IP,是因為這兩個協議是協議族中最早通過的兩個協議,當然這兩個協議相對來說,也是比較重要、比較有名。TCP/IP 協議族由 IETF(Internet Engineering Task Force,互聯網工程任務組)負責維護。

TCP/IP 的另一個名稱是 Internet Protocol Suite(互聯網協議族,縮寫是 IPS)。看看這個名稱,再想想現在是什麼年代(互聯網年代),也能夠知道,指望 ISO 競爭過 TCP/IP,那無疑痴人說夢,TCP/IP 可是在「戰鬥中」成長起來的協議族。

TCP/IP 協議最早發源於美國國防部(United States Department of Defense,縮寫為DOD 或 DoD)的ARPAnet項目(ARPA,Advanced Research Projects Agency,美國國防部高級研究計劃署),因此也被稱作DoD模型(DoD Model)。雖然這些都是事實,但是看到 IPv4 的 RFC 791 的前言,作為一個中國人,筆者心中仍然是五味雜陳:

PREFACE

This document specifies the DoD Standard Internet Protocol. Thisdocument is based on six earlier editions of the ARPA Internet ProtocolSpecification, and the present text draws heavily from them. There havebeen many contributors to this work both in terms of concepts and interms of text. This edition revises aspects of addressing, errorhandling, option codes, and the security, precedence, compartments, andhandling restriction features of the internet protocol.

Jon Postel

Editor

好吧,不再感慨,願你我懷著感激、感恩的心情,同時也要懷著發憤圖強、為中華之崛起而讀書的決心,繼續回到TCP/IP 吧。

最早的TCP/IP由文頓·瑟夫和羅伯特·卡恩兩位開發,慢慢地通過競爭戰勝其他一些網路協議的方案(比如 OSI模型)。1983年1月1日,在網際網路的前身(ARPAnet)中,TCP/IP取代舊的網路控制協議(NCP,Network Control Protocol),從而成為今天的互聯網的基石。

TCP/IP 是一個網路通信模型,以及一整個網路傳輸協議家族,為互聯網的基礎通信架構。本節只討論 TCP/IP 的網路通信模型。

這個世界令人沮喪,TCP/IP 的模型,並不是像 OSI 模型那樣有一個準確的定義,有說4層模型的,有說5層模型的,而且層的名字,也不盡相同,大家莫衷一是。維基百科對這種「亂象」做了一個小結,如圖1-5所示:

圖1-5TCP/IP 模型各種流派

按照維基百科的說法,之所以有這些流派,是因為:Some of the networking models are from textbooks, which are secondary sources that may conflict with the intent of RFC 1122 and other IETF primary sources。筆者以小人之心度君子之腹,對這句話的翻譯是:一些傢伙亂寫書,跟官方的標準(RFC 1122、IETF 的定義)不一樣,把大家帶溝里去了。這些書的名稱,維基百科也給明確點出來了,如表1-4所示:

表1-4TCP/IP 模型的一些流派的出處

亂花漸欲迷人眼,TCP/IP 模型,我們到底該採信哪一種呢?綜合各種資料(包括百度百科、維基百科),筆者以為:

(1)從「學究」的角度來講,分為4層,畢竟這是 RFC 1122 所定義的;

(2)從實用的角度來講,分為5層,畢竟這更易於理解。

基於以上觀點,TCP/IP 模型及其與 OSI 模型的對應關係,如表1-5所示:

表1-5TCP/IP 模型及其與 OSI 模型的對應關係

表1-5中,TCP/IP 4層模型的第1層模型,筆者採用 Cisco Academy(思科研究院)的命名,稱之為網路介面層(Network Interface),這是因為很多文檔都是這麼稱呼,而且 RFC 1122 的命名「Link」與 OSI 的 「Data Link」非常容易讓人混淆和迷惑(雖然對於非常專業的人士來說,這兩個區別還是比較明顯的)。4層模型的其餘3層,筆者採用 RFC 1122 的命名,畢竟這才是正統!

而對於TCP/IP 5層模型,筆者採用的是 OSI 對應層級的模型名稱,這也是大多數文檔的命名方法。這更多是想表達 TCP/IP 模型與 OSI 模型的區別與聯繫:區別很簡單(OSI 的最上面3層,被 TCP/IP 合併為1層),聯繫很緊密(其餘各層是一樣的)。

TCP/IP,無論是4層還是5層模型,我想我們都不必過於在意,不同的語境有不同的說法,兩者都是對的。另外,我們常常說,(數據)鏈路層是2層,IP 層是3層,這裡面的潛台詞是採用了5層模型的概念。

前文我們說過,TCP/IP 是一個協議族,那麼它包括哪些協議呢?如表1-6所示:

表1-6TCP/IP 主要協議

從表1-6可以看出,TCP/IP參考模型的網路介面層(數據鏈路層/物理層),並沒有具體的協議。這很難說是 TCP/IP 的優點或者缺點。筆者以為,強者恆強:TCP/IP 並沒有定義網路介面層(數據鏈路層/物理層)協議,但是其他協議族相應的協議,很多都能為 TCP/IP 所用,比如:乙太網(Ethernet)、令牌環(Token Ring)、光纖數據分布介面(FDDI)、點對點協議(PPP)、X.25、幀中繼(Frame Relay)、ATM、Sonet、SDH。不戰而屈人之兵,TCP/IP 並沒有在這個層面與這些協議競爭,而這些協議卻默默地支撐起了 TCP/IP 的大廈!

TCP/IP 模型在與 OSI 模型的競爭中,贏得了「戰爭」,但是不能否認,兩者有很多很多的相似性。筆者以為,如果 OSI 模型的發明者不是圖靈獎獲得者,而是圖靈本人,也許,TCP/IP 模型的名字,也會叫作 OSI 模型吧。

這個世界,並不都是美好,只願我們仍然能溫柔以待。現在車馬不遠,郵件不慢,但是你鎖了,我懂了!

----------------------------------

京東有售

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 標哥說天下 的精彩文章:

你覺得時間是永恆的

TAG:標哥說天下 |