第2章 網絡體系結構
2.1 概述
計算機網絡是一個非常複雜的巨系統。為了說明這一點,可以設想一個最簡單的網絡應用:利用連接配接在網絡上的兩台計算機進行檔案傳送。顯然,在這兩台計算機之間必須有一條傳送資料的通路,但這還遠遠不夠,至少還有以下幾項工作需要完成。
1)發起通信的計算機必須将資料通信的通路進行激活(activate)。所謂“激活“就是要發出一系列控制指令,保證要傳送的資料能在這條通路上正确發送和接收。
2)告訴網絡如何識别要接收資料的計算機。
3)發起通信的計算機必須檢測接收計算機是否已準備好接收資料。
4)發起通信的計算機必須弄清楚,接收計算機的檔案管理程式是否已做好檔案接收和檔案存儲的準備工作。
5)若通信雙方的計算機檔案格式不相容,則至少其中一方應完成格式轉換。
6)對出現的各種差錯和意外事故,如資料傳送錯誤、重複或丢失,網絡中某個節點的交換機出現故障等,應當有可靠的措施保證接收計算機最終能夠收到正确的檔案。
除此之外,還可以列舉出其他要做的工作。由此可見,互相通信的兩個計算機系統必須高度協調才能完成最終的網絡應用,而這種“協調“多數情況下是相當複雜的。為了設計這種複雜的計算機網絡,早在最初的ARPANET設計時就提出了分層的方法。“分層“可将龐大而複雜的問題轉化為若幹較小的局部問題,而這些較小的局部問題就比較易于研究和處理。
1974年,美國的IBM公司宣布了它研制的系統網絡體系結構(System Network Architecture,SNA),它就是按照分層的方法制定的。之後IBM公司對SNA又不斷改進,更新了幾個版本。緊随IBM公司之後,其他一些公司也相繼推出了自己的網絡體系結構,并都采用不同的名稱。
網絡體系結構出現後,使得同一公司所生産的各種裝置都能夠很容易地互連成網。這種情況顯然有利于一家公司壟斷自己的産品。使用者一旦購買了某個公司的網絡,當需要擴大容量或更新改造時,就隻能再購買該公司的網絡産品。如果此時使用者購買了其他公司的網絡産品,那麼由于網絡體系結構的不同,互相之間就很難連通。
然而,全球經濟的發展使得不同網絡體系結構的使用者迫切要求能夠互相交換資訊,為此,國際标準化組織于1977年成立了專門的機構研究這個問題。不久,他們就提出一個試圖使各種計算機在世界範圍内互連成網的标準架構,即著名的開放系統互連參考模型(Open Systems Interconnection Reference Model,OSI/RM)。這裡的“開放“是指:隻要遵循OSI标準,一個系統就可以與位于世界上任意地方的、同樣遵循這一标準的其他任何系統進行通信。這一點很像世界範圍的電話和郵政系統,而這兩個系統都是開放系統。
OSI/RM試圖達到一種理想境界,即全世界的計算機網絡都遵循這個統一的标準,因而全世界的計算機都能夠友善地進行互連和交換資料。在20世紀80年代,許多大公司甚至一些國家的政府機構都紛紛表示支援OSI。當時看來似乎在不久的将來全世界一定都會按照OSI制定的标準來構造自己的計算機網絡。然而,到了20世紀90年代初期,雖然整套的OSI國際标準都已經制定出來了,但由于網際網路已搶先在全世界覆寫了相當大的範圍,與此同時也幾乎找不到有什麼廠家生産出符合OSI标準的商用産品。是以人們得出這樣的結論:OSI隻獲得了一些理論研究的成果,但在市場化方面則事與願違地失敗了。現今規模最大的、覆寫全世界的網際網路并未使用OSI标準。OSI失敗的原因可歸納為如下幾個方面。
1)OSI專家們缺乏實際經驗,他們在制定OSI标準時沒有商業驅動力。
2)OSI協定實作起來過分複雜,而且運作效率很低。
3)OSI标準的制定周期太長,因而使得按OSI标準生産的裝置無法及時進入市場。
4)OSI層次劃分不太合理,有些功能在多個層次中重複出現。
按照一般的概念,網絡技術和裝置隻有符合有關的國際标準,才能在大範圍内獲得工程上的應用。但現實情況卻相反,得到最廣泛應用的不是法律上的國際标準OSI,而是非國際标準TCP/IP。這樣,TCP/IP就常被稱為事實上的國際标準。從這種意義上說,能夠占領市場的就是标準。在過去制定标準的組織中往往以專家、學者為主。但現在許多高新技術公司都紛紛擠進各種各樣的标準化組織,使得技術标準具有濃厚的商業氣息。一個新标準的出現,有時不一定反映出其技術水準是最先進的,而是往往說明它有着一定的市場背景。
2.2 網絡分層
2.2.1 分層思想
為了降低計算機網絡設計的複雜性,大多數網絡都采用分層(layer)或分級(level)的方式來組織,每一層都建立在它的下層之上。不同的網絡,盡管其層次的數量、各層的名稱、内容和功能都不盡相同,然而所有的層次網絡都有一個共同點,即每一層的目的都是向它的上一層提供一定的服務,而把如何實作這一服務的細節對上一層加以屏蔽。這就是計算機網絡的分層思想,即從垂直視圖看待計算機網絡。
為了加深讀者對分層思想的了解,下面通過一個現實生活中的例子來進行說明。
如圖2-1所示,假設有兩位哲學家(對應于第3層中的對等實體)希望對話,其中一位說德語,而另一位講漢語。由于沒有共同的語言,兩人都選擇了翻譯(對應于第2層中的對等實體)。每個翻譯又進一步和秘書聯絡(對應于第1層中的對等實體)。如果哲學家1希望向哲學家2表達某一哲學話題,那麼他首先會通過第2層與第3層之間的接口用德語将這一資訊傳給他的翻譯。兩位翻譯預先确定好一種雙方都能夠了解的中立語言,如英語,則哲學家1的哲學話題被翻譯成英文。應該說,選擇哪一種中立語言是第2層協定的内容,使用什麼樣的語言取決于第2層的對等實體。接下來,翻譯将譯好的資訊傳遞給秘書,讓秘書傳送出去,至于采用哪種傳送方式(如電話、傳真、電子郵件等)則完全是第1層内部關注的事情。當資訊到達的時候,先由秘書遞交給翻譯,通過翻譯後的資訊再通過2/3層間接口遞交給哲學家2。
分層思想對于計算機網絡的設計和實作有着極大的優勢,主要表現在如下幾個方面。
1)各層之間互相獨立。一個層次并不需要知道它的下一層是如何實作的,而隻需要知道該層通過層間的接口所提供的服務即可。由于每一層隻實作一種相對獨立的功能,是以可将一個難以處理的複雜問題分解為若幹個容易處理的較小問題。這樣,整個問題的複雜度就下降了。
2)靈活性好。當任何一層發生變化時(例如由于技術的變化),隻要層間接口關系保持不變,則位于其上的各層均不受影響。此外,對某一層提供的服務還可進行修改。當某層提供的服務不再需要時,甚至可以将這一層次取消。
3)結構上可分割。各層都可以采用最合适本層的技術方案來實作。
4)易于實作和維護。層次結構使得實作和調試一個龐大而又複雜的系統變得容易,因為整個系統已被分解為若幹個相對獨立的子系統。
5)能促進标準化工作。因為每一層的功能及其所提供的服務都已有了精确的說明。

圖2-2說明了一個劃分成3層網絡的通信過程。不同機器裡處于同一層次的實體叫作對等實體(peer entities),對等實體利用協定進行通信。
實際上,資料不是從一台機器的第n層直接傳送到另一台機器的第n層,而是每一層都把它的資料和控制資訊傳遞給它的相鄰下一層,如此重複,直到最底層。第1層之下是實體媒介(physical medium),它執行的是真正的實體通信,即信号傳輸。圖2-2中所示的對等實體之間的通信都是虛拟通信。
每一對相鄰層之間都有一個接口。接口用于定義下層向上層提供的原語操作和服務。當網絡設計者在決定一個網絡應包括多少層、每一層應當做什麼的時候,其中一個很重要的考慮就是要在相鄰層之間定義一個清晰的接口。除了盡可能地減少必須在相鄰層之間傳遞的資訊的數量外,一個清晰的接口還可以使同一層能輕易地用一種新的實作來替換現有舊的實作(如用衛星信道來代替有線電話線),隻要新的實作能向上層繼續提供舊的實作所提供的同一組服務即可。
為了完成計算機之間的通信合作,應把各個計算機互連的功能劃分成定義明确的層次,并規定對等實體進行通信的協定。這些層與協定的集合稱為網絡體系結構(network architecture)。網絡體系結構的描述必須包含足夠的資訊,讓實作者可以用來為每一層編寫程式和設計硬體,并使之符合有關協定。協定實作的細節和接口的描述都不是體系結構的内容,因為它們都隐藏在機器内部,對外部來說是不可見的。任何一個網絡系統都能夠提供多種通信功能,有些功能比較複雜,可能需要多個協定協同支援才能實作,這些為實作某一特定功能的相關協定集合被稱為協定棧(protocol stack)。網絡體系結構、協定棧和協定是本章和本書的主題,讀者隻有牢牢把握這一主題,才能夠深入、準确地了解和掌握計算機網絡的工作原理。
2.2.2 層次設計主題
盡管計算機網絡的不同層次提供各自獨立的服務,但一些關鍵主題可能在多個層次設計中都會出現。下面簡要介紹其中比較重要的幾個主題。
1.編址機制(addressing)
每一層次都需要有一種機制來識别發送方和接收方。網絡中通常有很多計算機,而且在這些計算機上又運作着多個程序。是以,需要有一種方法使得一台機器上的程序可以指定它要通信的目标對象,但因為存在多個通信對象,是以自然地就需要有某種編址機制來指定特定的通信目标對象。
2.資料傳輸(data transferring)
第二個設計主題與資料傳輸的控制規則有關。在某些系統中,資料僅在一個方向上傳輸,即單工通信(simplex communication);而在另一些系統中,資料能在任意一個方向上傳輸,但不是同時傳輸,即半雙工通信(half-duplex communication);還有一些系統,資料能同時雙向傳輸,即全雙工通信(full-duplex communication)。此外,協定還需要确定每條連接配接對應多少條邏輯通道、它們的優先級别如何。在很多網絡中,每個連接配接至少需要提供兩條邏輯通道,一條給正常資料,另一條留給緊急資料。
3.差錯控制(error controlling)
實體通信電路并非完美無缺,是以差錯控制也是一個重要的主題。已知的檢錯和糾錯代碼有多種,連接配接的雙方必須一緻同意使用哪一種。另外,接收方還應該通知發送方哪些封包已經被正确地收到了、哪些還沒有收到。
4.順序控制(sequence controlling)
計算機網絡采用的是存儲轉發交換技術,該技術并不能保證封包發送的先後順序。為了解決可能出現的傳輸順序錯誤問題,協定必須明確定證接收方能夠把各接收封包按原來的發送順序重新組合在一起。一個易于想到的直覺方法就是對這些封包進行編号,不過,該方法隻能檢測傳輸過程中的順序錯誤,并沒有提供如何解決該錯誤的具體措施。
5.流量控制(flow controlling)
如何避免出現高速發送方發送資料過快,緻使低速接收方難以應付的這一問題在多個層次都存在。為此,人們提出了各種流量控制方案,這些方案的工作機制将在本書的後續章節中詳細讨論。一些方案要求接收方向發送方直接或間接地回報接收方的目前狀态;另一些方案則是直接限制發送方以商定的速率發送資料。
6.擁塞控制(congest controlling)
網絡吞吐量與通信子網負荷有着密切的關系。當通信子網負荷比較小時,網絡吞吐量随網絡負荷的增加而線性增加。當網絡負荷增加到某一值後,若網絡吞吐量開始下降,則表明網絡中出現了擁塞現象。當擁塞比較嚴重時,通信子網中相當多的傳輸能力和節點緩沖器都用于無謂的重傳,進而使通信子網的有效吞吐量下降。嚴重情況下,通信子網的局部甚至全部處于死鎖狀态,導緻網絡吞吐量接近為零。為了避免出現擁塞或降低擁塞造成的性能影響,需要實施擁塞控制,即對進入通信子網的網絡負荷執行一定的準入政策,進而保證網絡負荷不會超過通信子網的承載能力。
7.拆分與重組(disassembling and reassembling)
由于計算機網絡層次工作的獨立性,各層次實體都設定有自己的最大接收封包長度限制,如果上層實體要求傳輸的封包長度超過下層實體的最大允許封包長度,則必須要求網絡層次能夠提供封包拆分、傳輸和重新組裝的能力。與之相關的另一個議題是:當上層實體要傳輸的封包太小時,下層實體直接發送會導緻傳輸效率過低。一種可行的解決方案是把幾個傳向同一目标的小封包合并成一個大封包,然後在接收方再分解為原始的發送封包。
8.複用與解複用(multiplexing and demultiplexing)
為每一對通信實體建立一個獨立的連接配接,有時候會很不友善,或者非常昂貴。這時,可以利用下一層的同一連接配接為多個不相幹的會話提供傳輸服務。隻要這種多路複用和解多路複用是透明的,任意層次都可以采用這種方法。比如,多路複用技術在實體層上是必需的,因為針對所有應用會話連接配接的通信量隻需在有限的幾條實體線路上傳送即可。
9.路由(routing)
當源端與目标端之間存在多條路徑時,必須進行路由選擇。路由選擇在有些時候需要由兩層或多層共同決定。例如,為了從倫敦發送資料到羅馬,上層可能需要根據有關法律或外交政策,決定經過法國還是德國;然後,在低層可能還需要根據目前的流量負載決定其中一條最優的電路,這個主題就是路由。
2.2.3 實體和協定
網絡體系結構定義的實體(entity)是指層中的活動元素,它可以是軟體(如程序),也可以是硬體(如網卡、智能輸入/輸出晶片),不同網絡層次中的實體實作的功能互不相同。為表述友善,我們将網絡層次的第n層表示為(n);相應地,處于第n層的實體表示為(n)實體。發送端與接收端處于同一層次的實體稱為對等實體。
在概念上可以認為資料在同一層次的對等實體之間進行虛拟傳輸或者邏輯傳輸,如圖2-2中的虛線所示。之是以稱為虛拟傳輸,是因為對等實體之間的資料傳輸實際上必須要經過底層的實體傳輸才能完成。盡管如此,對等實體之間的通信協定必須存在,如兩者之間必須約定什麼樣的代碼表示連接配接請求、什麼樣的代碼表示連接配接響應等,以便在通信過程中能夠對接收到的資料執行正确的操作。
計算機網絡的對等實體要想做到有條不紊地交換資料,必須遵守一些預先約定好的規則,這些規則明确定義了所交換資料的格式、含義以及有關的同步問題。這裡所描述的同步不是狹隘的(即信号同頻或同頻同相),而是廣義的,即在滿足一定條件下應當發生的特定事件(如在可靠性資料傳輸中,接收到一個資料後應該發送一個應答資訊),是以同步含有時序的意義。這些為網絡執行資料交換而建立的規則、标準或約定就是網絡協定。典型的網絡協定包含以下3個方面的要素。
- 文法:文法用來規定由協定的控制資訊和傳送的資料所組成的傳輸資訊應遵循的格式,即傳輸資訊的資料結構形式,以便通信雙方能正确地識别所傳送的各種資訊。
- 語義:語義是指對構成協定的各個協定元素的含義的解釋。不同的協定元素規定了通信雙方所要表達的不同含義,如幀的起始定界符、傳輸的源位址和目的位址、幀校驗序列等。有的協定元素還可以用來規定通信雙方應該完成的操作,如在什麼條件下資訊必須應答或重發等。
- 同步:它規定實體之間通信操作執行的順序,協調雙方的操作,使兩個實體之間有序地進行合作,共同完成資料傳輸任務。例如在雙方通信時,首先由源端發送一份資料封包,若目的端接收的封包無差錯,就向源端發送一個正向應答封包,通知源端它已經正确地接收到源端所發送的封包;若目的端發現傳輸中出現差錯,就發送一個負向應答封包,要求源端重發原封包。這裡的同步并不是指雙方同時執行同樣的操作。
根據網絡分層結構,可以把網絡上的資料傳輸看成是各層對等實體之間在協定控制下的資料交換,所交換的資料塊稱為協定資料單元(Protocol Data Unit,PDU)。PDU由兩部分組成:本層的協定控制資訊和使用者資料。而本層的使用者資料又是上層的PDU,如此便形成了層間協定資料單元的嵌套封裝關系。
2.2.4 接口和服務
在計算機網絡分層結構中,每一層次的功能都是為它的上一層提供服務的。(n)實體實作的服務為(n+1)實體所利用,在這種情況下,(n)層被稱為服務提供者(service provider),(n+1)層則被稱為服務使用者(service user);與此同時,(n)層又利用(n-1)層的服務來實作自己向(n+1)層提供的服務,該服務可以包含多種類型,如快速昂貴通信服務或慢速低廉服務等。基于上述服務使用關系,我們可以對服務提供者和服務使用者進行延伸,對于(n)層提供的服務,(n+1)層及其之上的所有層次,如(n+?2)層、(n+?3)層等都是(n)層的服務使用者,但(n+1)層是直接使用者,位于其上的各層則是間接使用者;同理,(n)層及其之下的所有層次,如(n-1)層、(n-?2)層等都是(n)層的服務提供者,但(n)層是直接提供者,位于其下的各層則是間接提供者。
圖2-3給出了層間接口與資料單元的關系。服務是在服務通路點(Service Access Point,SAP)提供給上層使用的。(n)層SAP就是(n+1)層可以通路(n)層服務的地方,每個SAP都有一個唯一标明自己身份的位址。例如,若把電話系統中的SAP看成标準電話機的實體連接配接口,則SAP位址就是這些實體連接配接口的電話号碼。使用者要想和他人通電話,必須預先知道他的SAP位址(即電話号碼)。
接口是分隔相鄰層次的界面,與協定通信相類似,如果上下相鄰網絡層次之間要交換資料,必須對其間的接口制定一緻的規則。在典型的接口上,(n+1)實體通過SAP把一個接口資料單元(Interface Data Unit,IDU)傳遞給(n)實體。IDU由服務資料單元(Service Data Unit,SDU)和一些控制資訊組成,其中的SDU是那些将要通過網絡傳輸給對等實體,然後再向上遞交給(n+1)層的資訊,而控制資訊則用于幫助下一層完成通信服務,它本身不是對等通信的資料部分。為了能夠在不同的網絡環境下傳遞SDU,(n)實體可能需要将SDU拆封成多個段,每一段加上一個標頭後作為獨立的協定資料單元送出。
2.2.5 資料單元
在計算機網絡層次體系結構中,對等實體間按照協定進行通信,相鄰層次實體間按照服務進行通信,這些通信都是按資料單元進行的。OSI體系結構對采用的資料單元類型做了規定,但對具體的長度、格式則沒有限制。
(1)資料單元定義
- (n)協定控制資訊:(n)實體為了協調其共同操作使用(n-1)連接配接而交換的資訊,用(n) PCI(Protocol Control Information)表示。
- (n)使用者資料:以(n+1)實體的名義在(n)實體之間傳送的資料。(n)實體為使用者資料的傳送提供服務,用(n) UD(User Data)表示。
- (n)協定資料單元:在一個(n)協定中規定的資料單元。它由(n)協定控制資訊和可能的(n)使用者資料組成,用(n) PDU表示。
- (n)接口控制資訊:在(n+1)實體和(n)實體之間為協調其共同操作而傳送的資訊,用(n) ICI(Interface Control Information)表示。
- (n)接口資料:在(n)連接配接上,為了傳送一個通信(n+1)實體而從(n+1)實體遞交給(n)實體的資訊。反之,在(n)連接配接上,收到通信(n+1)實體的資訊後從(n)實體遞交給(n+1)實體的資訊,用(n) ID(Interface Data)表示。
- (n)接口資料單元:在(n+1)實體和(n)實體之間,在一次互動作用中穿過服務通路點傳輸的資訊單元。每個(n)接口資料單元包含(n)接口控制資訊,也可能包含一個(n)服務資料單元的全部或部分,用(n) IDU表示。
- (n)服務資料單元:(n)接口資料的總額,當從(n)連接配接的一端傳送到另一端時,它的内容始終受到保護,用(n) SDU表示。
表2-1給出了上述定義的資料單元之間的關系。
(2)服務資料單元
在(n)連接配接上把資訊從一個(n+1)實體傳送給對等(n+1)實體,首先需要把發送端(n+1)實體的資訊遞交給(n)實體,經過(n)連接配接的網絡傳輸後,接收端的(n)實體将接收到的資訊遞交給(n+1)實體,發送和接收的資訊在連接配接的兩端應該保持一緻,這組資訊稱為(n)服務資料單元,用(n) SDU來表示,如圖2-4所示。
(3)協定資料單元
為(n+1)實體提供服務的(n)實體,必須建立(n-1)連接配接,以及在該對等實體間為(n+1)實體提供該(n)服務而進行聯合操作(即合作)。在(n-1)連接配接上須交換合作所需要的資訊。為協調對等(n)實體之間的聯合操作,在對等(n)實體之間的資訊稱為(n)協定控制資訊,記為(n) PCI。顯然,(n) PCI的文法、語義以及時序是在(n)協定中規定的。
(n)實體之間為(n+1)實體提供(n)服務而傳送的資料稱為(n)使用者資料。一個(n)使用者資料可以一次傳送給(n)實體,此時一個(n)使用者資料相當于一個(n) SDU;一個(n)使用者資料也可以多次經接口傳送給(n)實體,此時一個(n)使用者資料對應于多個(n) SDU。
由(n)協定控制資訊和可能有的(n)使用者資料組成的單元稱為(n)協定資料單元,表示成(n) PDU。
在(n)實體間交換(n) PDU是通過(n-1)連接配接使用(n-1)服務來實作的。使用(n-1)服務必須傳送(n-1) SDU,是以,要将(n) PDU變換為(n-1) SDU,這是發送端的功能;在接收端,必須把(n-1) SDU變換為(n) PDU。(n) PDU與(n-1) SDU之間的變換可以是一對一變換,或者多對一變換。(n) PDU的傳送如圖2-4所示。
(4)接口資料單元
在(n+1)實體與(n)實體之間交換(n) SDU,是通過請求(n)實體在(n)連接配接上使用(n) SDU的(n)服務實作的。從(n+1)實體向(n)實體或從(n)實體向(n+1)實體傳送,都必須通過(n)服務通路點。(n+1)實體傳送給(n)實體的資料,或在(n)連接配接的另一端,從(n)實體向(n+1)實體傳送的資料稱為(n)接口資料。為了協調(n+1)實體和連接配接的(n)實體間的聯合操作(合作),在兩者之間傳送的資訊稱為接口控制資訊,記為(n) ICI,一次穿越(n) SAP傳送的(n) ICI和(n) ID的組合稱為(n)接口資料單元,表示成(n) IDU。
一個(n)接口資料可以是一個(n) SDU,也可以是部分(n) SDU,或者一個(n) SDU可以分為一個或多個(n)接口資料單元。也可以說,(n+1)實體和(n)實體之間交換(n) SDU,是通過一次或多次互動傳送(n)接口資料單元實作的。多次互動傳送過程如圖2-5所示。
2.2.6 面向連接配接服務和無連接配接服務
從資料通信的關聯角度看,(n)層向(n+1)層提供的服務可以分為兩大類别,即面向連接配接服務(connection-oriented service)和無連接配接服務(connectionless service)。下面分别介紹各自的特點。
(1)面向連接配接服務
所謂連接配接,就是兩個對等實體為實作資料通信而進行的一種關聯協商,關聯協商包含的内容可以複雜,如資料安全;也可以簡單,如資料順序。面向連接配接服務是在資料傳輸之前必須先建立連接配接,在資料傳輸結束後再釋放這個連接配接。
面向連接配接服務模拟電話系統工作模式,具有連接配接建立、資料傳輸和連接配接釋放三個階段。在傳輸資料時是按序傳輸的,這與電路交換的許多特性很相似,是以,面向連接配接服務在網絡層中又稱為虛電路服務。這裡的“虛電路“表示:雖然在兩個服務使用者的通信過程中并沒有始終占用一條端到端的完整實體電路,但使用者在感覺上卻好像一直在使用這樣的一條電路,實質上它是通過分時共享實體電路的技術來實作的。面向連接配接服務比較适合在一定期間内要向同一目的地發送多個資料的情形。對于偶爾發送很少量的資料,面向連接配接服務則由于開銷過大而不太适應。
若兩個使用者需要進行頻繁的通信,則可建立永久連接配接。這樣可以免除在每次通信時進行連接配接建立和連接配接釋放這兩個過程,永久連接配接與電話網中的專用話音電路十分相似。
(2)無連接配接服務
在無連接配接服務的情況下,兩個實體之間的通信無須預先建立一個連接配接,是以,有關資源不需要事先進行預定保留,這些資源在資料傳輸時動态配置設定。日常通信中的短信業務提供的就是無連接配接服務。
無連接配接服務的另一個特征就是它不需要通信的兩個實體同時處于活躍狀态。當發送端的實體正在進行資料傳輸時,它必須是活躍的,但此時接收端的實體并不一定必須是活躍的。隻有當接收端的實體正在進行資料接收時,它才必須是活躍的。
無連接配接服務的優點在于靈活友善和迅速及時,但它不能防止資料的丢失、重複或亂序。無連接配接服務特别适合傳輸少量資料的情形。
無論是面向連接配接服務還是無連接配接服務,都不能保障資料傳輸的可靠性。在此,我們使用服務品質(Quality of Service,QoS)來評價服務的特性,有些服務十分可靠,從來不丢失資料。為了實作可靠的服務,通常是由接收端确認接收到每一個資料,使發送端确信它所發送的資料已經正确到達接收端這一方法來實作的。這種确認機制要增加額外的傳輸開銷和延遲,對于不同的網絡應用,有時是值得的,但有時則不盡然。
有兩種面向連接配接的可靠性服務應用比較廣泛,即消息流和位元組流。消息流保持應用消息的邊界,如發送端發送兩個1KB的消息,接收端肯定也是接收到兩個1KB的消息,絕不會變成一個2KB的消息。而位元組流則沒有消息邊界,如2KB位元組到達接收端後,接收端根本無法分辨所接收的資料究竟是一個2KB的消息還是兩個1KB的消息,或者是2048個單位元組消息。如果在網絡上傳送一本書,當把每頁作為分離的消息進行傳輸時,保留消息的邊界就變得比較重要。然而,作為一個終端在遠端分時系統上登入時,從終端到計算機的位元組流傳輸就能夠滿足需求。
對于某些網絡應用而言,面向連接配接的資料傳輸因确認引起的延遲可能難以滿足使用者的需求。比如數字化的音頻傳輸,網絡使用者甯可聽到線路上偶爾出現的雜音,或不時混淆的聲音,也不願意因等待确認而造成延遲。同樣,在傳輸視訊資料時,錯了幾個像素并無大礙,但視訊突然停頓以等待糾正傳輸錯誤卻會令人十分不滿意。
2.2.7 服務原語
服務在形式上是由一組服務原語(primitive)來描述的,這些原語專供使用者和其他實體通路服務,利用服務原語可以通知服務提供者采取某些行動或報告對等實體正在執行的活動。值得注意的是,服務原語隻是對服務進行概念性的功能描述,至于如何實作并不做明确規定,它是描述服務的一種簡潔的文法形式,而不是可執行的程式語言。
OSI定義了4種類型的服務原語,其含義如表2-2所示。
下面将以連接配接建立服務和連接配接釋放服務的執行過程作為例子,說明服務原語的用法。當某一實體發出連接配接請求(CONNECT.request)原語以後,接收方會收到一個連接配接訓示(CONNECT.
indication)原語,被告知某處的一個實體希望和它建立連接配接。收到連接配接訓示的實體再使用連接配接響應(CONNECT.response)原語表示它是否願意建立連接配接。但無論是哪一種情況,請求建立連接配接的實體都可以通過接收連接配接證明(CONNECT.confirm)原語獲知接收方的響應結果,即拒絕還是同意連接配接建立。
原語可以帶參數,并且大多數原語都帶參數。連接配接請求的參數可能需要指明要與哪台機器連接配接、需要的服務類别和拟在該連接配接上傳輸的最大資料長度。連接配接訓示原語的參數可能包含呼叫者标志、需要的服務類别和建議的最大資料長度。如果被呼叫實體不同意呼叫實體所建議的最大資料長度,它可以在響應原語中做出一個反向建議,呼叫實體可從證明原語中獲知它,當出現長度不一緻的情況時,協定可以規定選擇較小的值。
根據服務來使用服務原語的類型,可将服務劃分成有證明(confirmed)服務和無證明(unconfirmed)服務兩種。有證明服務需要使用請求、訓示、響應和證明原語;而無證明服務則隻需使用請求和訓示原語即可。例如:CONNECT服務總是有證明的服務,因為必須獲得遠端對等實體同意才能建立連接配接。而資料傳輸和連接配接釋放可以是有證明的,也可以是無證明的,這取決于發送方是否要求确認。有證明服務和無證明服務在網絡中的使用都很普遍。
為了讓讀者對服務原語的概念更清晰,下面再列舉一個簡單的面向連接配接的資料傳輸例子,它使用了如下所述的8條服務原語:
1)CONNECT.request:請求建立連接配接。
2)CONNECT.indication:訓示有連接配接建立請求。
3)CONNECT.response:被呼叫實體用來表示接收/拒絕建立連接配接的請求。
4)CONNECT.confirm:通知呼叫實體建立連接配接的請求是否被接受。
5)DATA.request:請求發送資料。
6)DATA.indication:訓示資料已到達。
7)DISCONNECT.request:請求釋放連接配接。
8)DISCONNECT.indication:訓示對等實體釋放連接配接的完成情況。
在這個例子中,CONNECT是有證明服務,它需要有明确的響應;而DATA和DISCONNECT是無證明服務,不必有明确的響應。8條服務原語的執行過程如圖2-6所示。
需要明确的是,一種服務是有證明的還是無證明的并非是絕對的,它依賴于網絡層次提供的服務品質需求。例如,對于資料傳輸服務,在上面的例子中就是無證明服務;但對于具有可靠性要求的資料傳輸而言,資料傳輸服務就必須是有證明的。另外,有證明服務隻是要求該服務的完成需要使用四條服務原語,至于最終結果并非一定是服務使用者所期待的。例如在上面的建立連接配接服務中,服務使用者肯定希望能夠與對方順利地建立起連接配接,但結果可能是連接配接建立成功,也可能是連接配接建立失敗,不管是哪一種結果,這個連接配接建立服務都是有證明的。
2.2.8 服務與協定間關系
服務和協定雖是截然不同的概念,但是二者卻經常混淆在一起,了解二者的差別非常重要,有必要在此專門強調。服務是指某一層向它的上一層提供的一組原語或操作,服務定義了該層代表其使用者執行哪些操作,但是它并沒有涉及如何實作這些操作;服務也會涉及相鄰兩層之間的接口,其中低層是服務提供者,上層就是服務使用者。
協定是一組規則,用來規定同一層上的對等實體之間交換消息或分組的格式和含義。實體利用協定來實作其服務定義,根據網絡分層原則,實體盡管可以自由地改變協定,但不能改變服務,因為服務對于使用者是可見的,而協定則是不可見的。從這個視圖出發,服務和協定又是完全分離的。換言之,服務涉及上下相鄰層間的接口,而協定則涉及不同機器上對等實體之間發送的資料分組,如圖2-7所示。讀者務必了解這兩個概念,不要混淆,這對于了解網絡體系結構是非常重要的。
為了更好地讓讀者了解,可以用程式設計語言來對這兩個概念做一個類比。服務好像是面向對象語言中的抽象資料類型或者對象,它定義了在對象上可以執行的操作,但是并沒有規定這些操作該如何實作;而協定則對應于對象方法的代碼流程。
2.3 網絡參考模型
網絡體系結構中的分層、服務以及協定等概念确實比較抽象,難于了解。為此,本節會介紹兩個重要的網絡參考模型,即OSI參考模型和TCP/IP參考模型,讓大家能夠實際感受到網絡體系結構的作用。盡管與OSI參考模型相關的協定很少在實際中使用,但該模型本身是通用的,所涉及的特性在今天依然有效。而TCP/IP參考模型則有着截然不同的特點,該模型本身的意義并不是很重大,但它的協定卻被廣泛地應用。
值得指出的是,OSI參考模型和TCP/IP參考模型盡管影響很大,但網絡體系結構并不是隻有這兩個。根據不同的視角、不同的需求,可以為計算機網絡定義不同的網絡體系結構,但這些體系結構遵循的是同一設計方法。
2.3.1 OSI參考模型
計算機網絡發展史上的一個重要裡程碑便是ISO(International Standard Organization,國際标準化組織)對OSI(Open System Interconnection,開放系統互連)7層網絡參考模型的定義,OSI參考模型是一種架構性的設計方法,它是一個邏輯上的定義、一個規範。
圖2-8給出了OSI參考模型的基本結構,它把計算機網絡從邏輯上分為7層,分層的原則如下所述。
1)當需要一個不同抽象實體的時候,應該建立一個新的層次。
2)每一層次必須執行一個明确定義的功能集合。
3)确定一個層次功能的時候,必須考慮如何定義标準化的協定。
4)選擇層次邊界時,應該使接口控制資訊盡可能少。
5)層次數量應該足夠多,以保證不同的功能不會被混雜在同一個層次中;同時,層次數量又不能太多,以避免整個體系結構變得過于龐大。
下面将從參考模型的最底層開始,依次描述各個層次。需要指明的是,OSI參考模型本身并不是一個真正的網絡體系結構,因為它并未定義每一層次上需要用到的服務和協定,它隻是給出了每一層次上應該實作的功能。盡管ISO已經為各個層次制定了相應的标準,但這些标準都是作為單獨的國際标準釋出的,并不屬于OSI參考模型本身。
(1)實體層
實體層(physical layer)的任務就是在通信信道上透明地傳輸比特流,即0、1二進制資料流。在實體層上所傳輸的資料的基本機關是比特(位)。需要明确的是:實體層是一個邏輯的層次,但它傳輸資料位所利用的傳輸媒體(如雙絞線、同軸電纜以及光纖等)則是實體的,但不在實體層之内,而是在實體層的下面,盡管有人将實體媒體稱為第0層,但它并不具備網絡體系結構中的層次含義。
“透明“是一個很重要的網絡術語。它使得一個實際上存在的事物看起來好像不存在。“透明地傳輸比特流“表示經實際通信信道傳輸後的比特流并沒有發生變化,是以,對傳輸比特流來說,由于這個通信信道并沒有對其産生什麼影響,因而比特流就“看不見“這個通信信道;或者說,這個通信信道對該比特流而言就是透明的。這樣,任意組合的比特流都可以在該通信信道上傳輸。至于這些比特流所表示的語義内容,則不是實體層所要考慮的。
實體層需要保證當一方發送比特1時,另一方應該收到的也是比特1,而不是比特0。為此,實體層需要考慮應該用多少伏的電壓來表示比特1、多少伏的電壓來表示比特0;每一比特的持續時間長短;傳輸過程是否允許在兩個方向上同時進行;初始實體連接配接如何建立;實體連接配接器有多少芯針以及每一芯針的用途等。這些問題涉及機械、電氣、功能、規程以及實體媒體等。
(2)資料鍊路層
資料鍊路層(data link layer)的主要任務是将一個原始的傳輸設施轉換成一條邏輯的傳輸線路,在這條傳輸線路上,所有未檢測出來的傳輸錯誤也會反映到網絡層上。資料鍊路層完成這項任務的做法是:讓發送方将輸入的資料拆開,分裝到資料幀(data frame,一般為幾百或者幾千位元組)中,然後順序地傳送這些資料幀。如果是可靠的服務,則接收方必須确認每一幀都已經正确地接收到了,即給發送方送回一個确認幀(acknowledgement frame)。
資料鍊路層上的另一個問題是(大多數高層都有這樣的問題),如何避免一個快速的發送方“淹沒“一個慢速的接收方。是以,往往需要一種流量調節機制,以便讓發送方知道接收方目前時刻有多大的接收能力。通常情況下,這種流量調節機制和錯誤處理機制內建在一起。
對于廣播式網絡,在資料鍊路層上還有另外一個問題:如何控制共享信道的通路。資料鍊路層為此設定了一個特殊子層,即媒體通路控制子層,就是專門針對這個問題的。
(3)網絡層
網絡層(network layer)控制通信子網的運作過程。網絡層面臨的一個關鍵問題是需要确定如何将分組從源節點路由到目标節點。從源節點到目标節點的路徑可以建立在靜态路由表的基礎之上,這些表相當于是網絡的“布線“圖,而且很少會變化。源節點到目标節點的路徑可以在每一次會話開始時就确定下來,會話期間保持不變,如一次終端會話(比如,登入到一台遠端機器上)。事實上,源節點到目标節點的路徑往往是動态變化的,針對會話的每一個分組都要重新确定其傳輸路徑,以便更好地應對網絡目前的負載狀況。
如果有太多的分組同時出現在一個通信子網中,那麼這些分組彼此之間有時會互相妨礙,進而形成傳輸瓶頸,解決這個瓶頸依賴于網絡層的擁塞控制機制。更進一步講,如何提供更好的服務品質(比如延遲、傳輸時間、抖動,等等)也是網絡層需要考慮的問題。
當一個分組必須從一個網絡傳輸到另一個網絡才能夠到達目标節點時,這種跨網傳輸可能會産生很多問題,如第二個網絡所使用的編址方案可能與第一個網絡所使用的不同;第二個網絡可能根本不能接受這個分組,因為它太大了;兩個網絡所使用的協定也可能不一樣,等等。網絡層應負責解決這些協定異構問題,進而允許不同種類的網絡可以互相連接配接起來。
在廣播式網絡中,路由問題比較簡單,是以網絡層往往比較薄弱,甚至根本不需要存在。
(4)傳輸層
傳輸層(transport layer)的基本功能是接收來自上一層的資料,并且在必要的時候把這些資料分割成較小的單元,然後把這些資料單元傳遞給網絡層,并且保證這些資料單元都能夠正确地到達目标端。所有這些功能都必須高效率地完成,并且必須使上面各層不受低層技術變化的影響。
傳輸層還決定了将向會話層(實際上最終是向網絡的使用者)提供哪種類型的服務。其中最為常見的類型是,傳輸連接配接充當一個完全無差錯(error-free)的點到點信道,此信道按照原始發送的順序來傳輸封包或者位元組資料。然而,其他類型的傳輸服務也是可能的,如傳輸獨立的封包(不保證傳送的順序)、将封包廣播給多個目标等。服務類型是在建立連接配接時就确定下來的(順便說一下,真正完全無錯的信道是不可能實作的,人們使用這個術語的真正含義是指錯誤的發生率足夠小,以至于在工程實踐中可以忽略這樣的錯誤)。
傳輸層是一個真正的端到端的層次,所有的處理都是按照從源端到目标端來進行的。換句話說,源機器上的一個程式利用封包頭與控制資訊,與目标機器上的一個類似的程式進行對話。在其下面的各層上,協定存在于每台機器與它的直接鄰居之間,而不存在于最終的源機器和目标機器之間,源機器和目标機器可能被許多中間路由器隔離開了。第l層到第3層是被串聯起來的,是點到點的(point-to-point);而第4層到第7層是端到端的(end-to-end)。
(5)會話層
會話層(session layer)的功能是在傳輸層服務的基礎上增加控制會話的機制,建立、組織和協調應用程序之間的互動過程。
會話類似于兩個人之間的交談。交談也是靠某些約定來使得雙方有序并完整地交換資訊。交談中需要協調控制因素的一個例子是半雙工方式,即對話雙方交替地談話,發言權的交替往往靠約定俗成的表情、手勢、語氣等協調。另一個例子是同步,即一方因外界幹擾或注意力不集中等未聽清對方的話時,可請對方重複,使聽方和說方同步起來。
會話層提供的基本服務是為使用者建立、引導和釋放會話連接配接。會話層提供的會話服務種類包括雙向同時(雙工)、雙向交替(半雙工)和單向(單工)。會話管理的一種方式是令牌管理,隻有令牌持有者才能執行某種操作。
另一種會話層服務是同步。一個會話連接配接可能持續較長的時間,若在會話連接配接即将結束時出現故障,則整個會話活動都要重複一遍,這顯然不合理。會話層設定了同步控制功能,在一個會話連接配接中設定了一些同步點,這樣當出現故障時,會話活動可以在故障點之前的同步點開始執行,而不必從頭開始,使得重發資料降至最少。
(6)表示層
表示層(presentation layer)定義使用者或應用程式之間交換資料的格式,提供資料表示之間的轉換服務,保證傳輸的資料到達目标端後意義不變。由于各種計算機都可能有自己描述資料的方法(也被稱為“局部文法“),是以不同類型計算機之間的資料傳輸一般要經過一定的資料轉換才能保持資料的意義不變。如同一個中國人用漢語打電話向一個美國人說“新年好“以表示新年的問候時,應該翻譯為“Happy New Year“,才保持了原始轉達的語義。
表示層的功能是對源端計算機内部的資料結構編碼,形成适合于網絡傳輸的資料流(符合“傳輸文法“),到了目标端計算機再進行解碼,轉換成目标端使用者所要求的格式(符合目标端“局部文法“),保持傳輸資料的語義不變。
資料轉換工作包括不同類型計算機中内部格式的轉換、密碼轉換和媒體檔案壓縮的轉換。計算機的内部格式指的是字元集的編碼方法、整數和浮點數的表示方法等。密碼轉換是為了實作資料的保密,為此在發送時将資料轉換成密文而在接收時将密文恢複成原來的形式。媒體檔案壓縮包括靜止和運動圖像的編碼方法和格式标準,如PEG和MPEG等。
抽象文法标記(Abstract Syntax Notation One,ASN.l)是表示層定義的用來表示各種應用協定資料單元的資料類型的工具,是一種資料類型的通用描述語言。
(7)應用層
應用層(application layer)直接面向使用者應用,為使用者提供對各種網絡資源的通路服務。OSI應用層标準已經規定的一些應用協定包括:虛拟終端協定(Virtual Terminal Protocol,VTP),檔案傳送、存取和管理(File Transfer Access and Management,FTAM),作業傳送與操縱(Job Transfer and Management,JTM),遠端資料庫通路(Remote Database Access,RDA),封包處理系統(Message Handling System,MHS),等等。
2.3.2 TCP/IP參考模型
網際網路是基于TCP/IP技術的,使用的是TCP/IP參考模型,該模型分為4個層次,自下而上分别是網絡接口層、網際層、傳輸層和應用層,不過,TCP/IP參考模型并沒有定義網絡接口層的具體内容。圖2-9給出了TCP/IP參考模型的層次結構以及與OSI/RM參考模型的對應關系。
(1)網絡接口層
網絡接口層負責将網際層的IP資料報通過實體網絡發送出去,或從實體網絡接收資料幀,抽取出IP資料報上交給網際層。TCP/IP标準并沒有定義具體的網絡接口層協定,其目的旨在提供靈活性,以适用于不同的實體網絡,如各種LAN、MAN、WAN甚至點對點鍊路,等等。實體網絡不同,其對應的接口也不同,但網絡接口層的定義使得上層的TCP/IP協定簇與底層的實體網絡無關。
嚴格來說,TCP/IP的網絡接口層并不是一個獨立的層次,而隻是一個接口,TCP/IP并沒有對它定義具體的内容。網絡接口層對應OSI的1~2層,即實體層和資料鍊路層。
在Internet世界中,實體網絡是一個經常使用的概念,它位于網際層之下。各種實體網絡的差異可能很大,比如LAN、MAN和WAN的網絡跨距就相差很大,在實體網絡内部,網上的計算機在通信時隻需要使用網絡的實體位址。一般LAN、MAN僅劃分為實體層和資料鍊路層,在層次上和OSI的底下兩層有很好的對應關系,而WAN的層次劃分則沒有這種嚴格的對應關系。但在TCP/IP參考模型中,各種實體網絡都是Internet的構件,在IP資料報的傳輸過程中,它們隻是作為兩個相鄰路由節點之間的一條傳輸通道而已。
TCP/IP的基本目标就是使各種各樣的實體網絡互連,它給實體網絡技術的發展更新留下了廣闊的自由空間,Internet經過短暫的時間就發展到如今覆寫全球的巨大規模正是對這一設計目标的最好回報。
(2)網際層
網際層(Internet 1ayer)也稱網際網路層。網際層提供的是一種無連接配接、不可靠但盡力而為的資料報傳輸服務,将資料報從源主機傳送到目标主機。從一台主機傳送到另一台主機的資料報可能會通過不同的路由,且資料報可能出現丢失、亂序等情況。為了達到高效的資料報傳輸速率,網際層放棄了一些并非必需的可靠性操作。
網際層傳送的資料機關是IP資料報(IP datagram),也就是IP分組。
網際層最主要的協定是網際協定IP。與IP協定配套的其他協定還有:位址解析協定(Address Resolution Protocol,ARP)、逆向位址解析協定(Reverse Address Resolution Protocol,RARP)、網際網路控制封包協定(Internet Control Message Protocol,ICMP)等。
(3)傳輸層
傳輸層(transport layer)也稱運輸層。傳輸層為應用程序提供端到端的傳輸服務,為應用程序提供一條端到端的邏輯信道,端到端的邏輯信道存在于源節點和目标節點的兩個傳輸層實體之間,不涉及網絡中的路由器等中間節點。
傳輸層主要提供了兩個協定,即傳輸控制協定(TCP)和使用者資料報協定(UDP)。
TCP提供面向連接配接的可靠的端到端的傳輸服務,它可在低層不可靠的情況下(如出現分組傳輸的丢失、亂序等)提供可靠的傳輸服務。為此TCP需要額外增加許多開銷,提供一些必要的傳輸控制機制,以保證資料傳輸按序、無丢失、無重複、無差錯。
UDP則提供無連接配接、不可靠的端到端的傳輸服務。在資料傳輸之前,不需要先建立連接配接,而且接收方在收到UDP資料封包之後也不需要給出任何應答資訊。顯然這減少了很多為保證可靠傳輸而附加的額外開銷,因而它傳輸的效率高。在某些應用場合下,這是一種非常有效的傳輸方式。
(4)應用層
應用層(application layer)提供面向使用者的網絡服務,它對應OSI的高三層,即取消了OSI的表示層和會話層,将這兩個層次的有效功能集中到應用層上。
TCP/IP參考模型的應用層已經存在有許多面向特定應用的著名協定。如檔案傳輸協定(FTP)、遠端通信協定(Telnet)、簡單郵件傳送協定(SMTP)、域名系統(DNS)、超文本傳輸協定(HTTP)和簡單網絡管理協定(SNMP)等。FTP是TCP/IP使用非常廣泛的一個應用,它用來控制網上兩個主機之間的檔案傳送。Telnet遠端通信協定亦稱遠端終端通路協定,用于本地使用者登入到遠端主機以通路遠端主機的資源。SMTP是一個簡單的面向文本的傳輸協定,用于有效地傳輸郵件。DNS是一個名字服務協定,它提供以主機域名到IP位址之間的轉換。HTTP用于網際網路的資訊傳輸,SNMP用于網絡管理。
2.3.3 OSI與TCP/IP參考模型的比較
OSI和TCP/IP參考模型有很多共同點。兩者都以協定棧的概念為基礎,并且協定棧中的協定彼此互相獨立。同時,兩個模型中各個層次的功能也大體相似。例如,在兩個模型中,傳輸層以及傳輸層以上的各層都是希望為進行通信的程序提供一種端到端的、與網絡無關的傳輸服務,這些層形成了傳輸提供方。另外,在這兩個模型中,傳輸層之上的各層都是傳輸服務的使用者,并且都是面向應用的使用者。
除了上述相似點外,兩個模型也有許多不同的地方。本節将注意力集中在兩個模型之間的關鍵差别上。需要指明的是:這裡比較的是參考模型,而不是對應的協定。
對于OSI參考模型,它的核心在于明晰了下面3個概念。
- 服務
- 接口
- 協定
OSI模型最大的貢獻是使這三個概念的定義和差別變得清晰、明了。每一層都為它的上一層提供一定的服務。服務的定義指明了該層做些什麼,而不是上一層的實體如何通路這一層,或這一層是如何工作的。
每一層的接口告訴它上層實體應該如何通路本層的服務。它規定了有哪些參數,以及結果是什麼。但是它并沒有說明本層内部是如何工作的。
最後,每一層上用到的對等協定是本層自己内部的事情。它可以使用任何協定,隻要能夠完成任務就行(也就是說提供所承諾的服務)。它也可以随意地改變協定,而不會影響上面的各層。
這些思想與現代的面向對象程式設計的思想非常吻合。一個對象就如同一個層次一樣,它有一組方法(或者叫操作),對象之外的過程可以調用這些方法。這些方法的語義規定了該對象所提供的服務集合。方法的入口參數和傳回結果構成了對象的接口,對外是可見的。對象的内部代碼是它的協定,對于外部而言是不可見的,也不需要被外界關心。
TCP/IP參考模型在最初并沒有明确地區分服務、接口和協定三者之間的差異,但是在它成型之後,人們努力對它做了改進,以便更加接近于OSI參考模型。例如,網際層提供的真正服務隻有發送IP分組和接收IP分組。
是以,OSI參考模型中的協定比TCP/IP參考模型中的協定有更好的隐蔽性,當技術發生變化的時候,OSI參考模型中的協定相對更加容易被替換為新的協定。最初采用分層協定的主要目的之一就是能夠做這樣的替換。
OSI參考模型是在協定制定之前就已經産生的。這種順序關系意味着OSI參考模型不會偏向于任何某一組特定的協定,因而該模型更加具有通用性。這種做法的缺點是,設計者在這方面沒有太多的經驗可以參考,是以不知道哪些功能應該放在哪一層上。例如,資料鍊路層最初隻處理點到點網絡。當廣播式網絡出現以後,必須在模型中嵌入一個新的子層。當人們使用OSI參考模型和已有的協定來建立實際的網絡時,才發現這些網絡并不能很好地比對所要求的服務規範,這使得當初的設計者感到萬分的驚訝!是以不得不在模型中加入一些子層,以便提供足夠的空間來彌補這些差異。還有,标準委員會最初期望每一個國家都将有一個由政府來運作的網絡并使用OSI協定,是以根本不考慮網絡互連的問題。總之,事情并不像預期的那樣。
而TCP/IP參考模型卻正好相反:協定先出現。TCP/IP參考模型隻是這些已有協定的一個描述而已。是以,協定一定會符合模型,而且兩者确實吻合得很好。唯一的問題在于,TCP/IP參考模型并不适合任何其他協定棧,是以,要想描述其他非TCP/IP網絡,該模型并不是很有用。
接下來我們從模型的基本思想轉到更為具體的層,它們之間一個很顯然的差別即所劃分層次的數目:OSI參考模型有7層,而TCP/IP參考模型隻有4層。它們都有網絡層(或者是網際層)、傳輸層和應用層,但是其他層并不相同。
另一個差別在于無連接配接的和面向連接配接的通信範圍有所不同。OSI參考模型的網絡層同時支援無連接配接和面向連接配接的通信,但是傳輸層上隻支援面向連接配接的通信,這是由該層的特點所決定的(因為傳輸服務對于使用者是不可見的)。TCP/IP參考模型的網際層上隻有一種模式(即無連接配接通信),但是在傳輸層上同時支援兩種通信模式,這樣可以給使用者一個選擇的機會。這種選擇機會對于簡單的請求-應答方式的應用顯得特别重要。
2.4 五層網絡參考模型
2.4.1 OSI與TCP/IP參考模型的評價
OSI參考模型與TCP/IP參考模型的共同之處在于它們都采用了層次結構的概念,在傳輸層中二者定義了相似的功能。但是,二者在層次劃分與使用的協定上有很大差別。無論是OSI參考模型與協定,還是TCP/IP參考模型與協定都不是完美的,對二者的評論與批評都很多。OSI參考模型與協定的設計者從工作的開始,就試圖建立一個全世界範圍的計算機網絡都要遵循的統一标準。從技術角度,他們希望追求一種完美的理想狀态。在20世紀80年代,幾乎所有專家都認為OSI參考模型與協定将風靡世界,但事實卻與人們預想的相反。
造成OSI協定不能流行的原因之一是模型與協定自身的缺陷。大多數人都認為OSI參考模型的層次數量與内容可能是最佳的選擇,其實并不是這樣的—會話層在大多數應用中很少用到,表示層幾乎是空的。在資料鍊路層與網絡層有很多子層插入,每個子層都有不同的功能。OSI參考模型将“服務“與“協定“的定義結合起來,使參考模型變得格外複雜,實作起來也很困難。同時,尋址、流量控制與差錯控制在每一層都重複出現,是以必然會降低系統效率。虛拟終端協定最初安排在表示層,現在安排在應用層。關于資料安全性、加密與網絡管理等方面的問題也在參考模型的設計初期被忽略了。
有人批評參考模型的設計更多的是被通信的思想所支配,很多選擇不适合于計算機與軟體的工作方式。很多“原語“雖在軟體的進階語言中實作起來容易,但嚴格按照層次模型程式設計的軟體效率很低。盡管OSI參考模型與協定存在着一些問題,但至今仍然有不少組織對它感興趣,尤其是歐洲的通信管理部門。
總之,OSI參考模型與協定缺乏市場與商業動力,結構複雜,實作周期長,運作效率低,這是它沒有達到預想目标的重要原因。
TCP/IP參考模型與協定也有自身的缺陷,它主要表現在以下這些方面。
- TCP/IP參考模型在服務、接口與協定的概念差別上不是很清楚。一個好的軟體工程師在實踐中都要求區分哪些是規範,哪些是實作,這一點OSI參考模型非常謹慎地做到了,而TCP/IP參考模型恰恰沒有很好地做到這點。是以,在使用新技術設計新的網絡的時候,TCP/IP參考模型不是一個很好的參照。
- TCP/IP參考模型不通用,它不适合用來描述TCP/IP之外的任何其他協定棧。
- 在網絡分層結構中,TCP/IP參考模型的網絡接口層并不是正常意義上的層次概念。它實際上隻是一個位于網絡層和資料鍊路層之間的接口。而接口和層的差別在分層網絡結構中十分重要,絕不能對此掉以輕心。
- TCP/IP參考模型沒有區分(甚至沒有提及)實體層和資料鍊路層。而這兩個層次是完全不同的,實體層必須考慮不同傳輸媒體的實體傳輸特征,資料鍊路層的任務則是确定幀的邊界,并按照預期的可靠程度将這些幀從一端發送到另一端。一個好的參考模型應該将它們區分開來,而TCP/IP參考模型卻沒有做到這點。
但是,TCP/IP協定自20世紀70年代誕生以來就已經曆了40多年的實踐檢驗,其成功已經赢得了大量的使用者和投資。TCP/IP協定的成功促進了Internet的發展,Internet的發展又進一步擴大了TCP/IP協定的影響。TCP/IP首先在學術界争取了一大批使用者,同時也越來越受到計算機産業界的青睐。IBM、DEC等大公司紛紛宣布支援TCP/IP協定,區域網路作業系統NetWare、LAN Manager争相将TCP/IP納入自己的體系結構,資料庫Oracle支援TCP/IP協定,UNIX、POSIX作業系統也一如既往地支援TCP/IP協定。
相比之下,OSI參考模型與協定顯得有些勢單力薄。人們普遍希望網絡标準化,但OSI參考模型遲遲沒有推出成熟的産品,妨礙了第三方廠家開發相應的硬體和軟體,進而降低了OSI成果的影響力,并阻礙了它的發展。
2.4.2 五層網絡參考模型概述
無論是OSI或TCP/IP參考模型與協定,都有其成功和不足的一面。國際标準化組織(ISO)原本計劃通過推動OSI參考模型與協定的研究來促進網絡的标準化,但事實上,它的目标沒有達到。而TCP/IP參考模型利用正确的政策,伴随着Internet的發展而成為目前公認的工業标準。在網絡标準化的程序中,我們始終面對這樣一個艱難的抉擇。OSI參考模型由于要照顧各方面的因素,使得它變得大而全,效率很低。盡管它是一種理想化的網絡模型,至今沒有流行起來,但它的很多研究思想、方法和成果,以及提出的概念對于今後的網絡發展還是有很高的指導意義的。TCP/IP協定應用廣泛,赢得了市場,但它的參考模型研究卻很薄弱。
為了保證計算機網絡課程教學的科學性和系統性,我們遵循網絡界的主流觀點(由Andrew S. Tanenbaum首先提出),使用一種新的網絡參考模型來描述網絡體系結構。這是一種折中的方案,它吸收了OSI參考模型和TCP/IP參考模型的優點。該參考模型将網絡劃分為5個功能明确的層次,如圖2-10所示。與OSI參考模型相比,它缺少了表示層和會話層;與TCP/IP參考模型相比,用實體層和資料鍊路層替代空洞的網絡接口層。在此需要提醒大家的是:網絡功能與網絡層次并沒有絕對的綁定關系,一個特定的網絡功能可以在不同的層次上出現,也可以同時在多個層次上出現。換言之,不同參考模型間的同一層次并非完全相同,隻是它們的主要功能相同而已。是以,我們應該清楚,盡管五層網絡參考模型沒有會話層和表示層,但并不意味着OSI參考模型定義在這兩個層次上的網絡功能全部被取消。事實上,取消的僅是那些定義不是很明确的功能;而定義明确的功能(如資料壓縮表示)則被放置到應用層上。
2.5 習題
一、填空題
1.計算機網絡層次結構模型和各層協定的集合稱為計算機網絡 。
2.ISO/OSI中OSI的含義是 。
3.TCP/IP協定從下向上分為網絡接口層、 、 和 四個層次。
4.OSI環境下,下層能向上層提供兩種不同形式的服務,即 和 。
5.在OSI參考模型中,對等實體在一次互動作用中傳輸的資訊機關稱為 ,它包括控制資訊和使用者資料兩部分。
二、選擇題
1.完成路徑選擇功能是在OSI模型的( )。
A.實體層 B.資料鍊路層 C.網絡層 D.傳輸層
2.網絡協定組成部分為( )。
A.資料格式、編碼、信号電平 B.資料格式、控制資訊、速度比對
C.文法、語義、定時關系 D.編碼、控制資訊、定時關系
3.網絡通信協定的層次結構有哪些特征?( )
A.每一層都規定有明确的任務和接口标準
B.除最底層外,每一層都向上一層提供服務,又是下一層的使用者
C.應用程式是最高層
D.實體通信線路工作在最底層,是提供傳輸服務的基礎
4.在TCP/IP體系結構中,與OSI參考模型的網絡層對應的是( )。
A.網絡接口層 B.網際層 C.傳輸層 D.應用層
5.下列選項中,不屬于網絡體系結構所描述的内容的是( )。
A.網絡的層次 B.每一層使用的協定
C.協定的内部實作細節 D.每一層必須完成的功能
6.在OSI參考模型中,自下而上第一個提供端到端服務的層次是( )。
A.資料鍊路層 B.傳輸層 C.會話層 D.應用層
7.( )是各層向其上層提供的一組操作。
A.網絡 B.服務 C.協定 D.實體
8.OSI參考模型将整個網絡的功能分成7個層次來實作,( )。
A.層與層之間的聯系通過接口進行
B.層與層之間的聯系通過協定進行
C.各對等層之間通過協定進行通信
D.除實體層外,各對等層之間均存在直接的通信關系
9.在OSI參考模型中,第N層與它之上的第N+1層的關系是( )。
A.第N層為第N+1層提供服務
B.第N+1層将從第N層接收的封包添加一個報頭
C.第N層使用第N+1層提供的服務
D.第N層與第N+1層互相沒有影響
10.下列( )不是組成計算機網絡必需的裝置。
A.計算機系統 B.網絡擴充卡 C.傳輸媒體 D.網絡列印機
三、簡答題
1.什麼是網絡體系結構?請說出使用分層協定的兩個理由。
2.什麼是實體?什麼是對等實體?
3.面向連接配接服務和無連接配接服務的主要差別是什麼?
4.OSI參考模型定義了哪些資料單元?
5.有兩個網絡都可以提供可靠的面向連接配接服務。其中一個提供可靠的位元組流,另一個提供可靠的封包流。這兩者是否相同?請給出一個例子予以說明。
6.一個系統有n層協定的層次結構。應用程式産生消息的長度為M位元組,在每一層上需要加上一個h位元組的頭部。請問:這些頭部需要占用多少比例的網絡帶寬。
7.有證明服務和無證明服務之間的差別是什麼?對于連接配接建立、資料傳輸和連接配接釋放這三種情況,請說出哪些可能是有證明服務或無證明服務?哪些兩者皆可?哪些兩者皆不可?
8.面向連接配接服務與無連接配接服務各自的特點是什麼?
9.協定與服務有何差別?有何關系?
10.試述五層協定的網絡體系結構的要點,包括各層的主要功能。
11.列出OSI參考模型和TCP/IP參考模型的主要相同點和不同點。