天天看點

帶你讀《計算機網絡問題與解決方案:一種建構彈性現代網絡的創新方法》之三:網絡傳輸模組化網絡傳輸模組化

點選檢視第一章 點選檢視第二章

第3章

Computer Networking Problems and Solutions: An Innovative Approach to Building Resilient, Modern Networks

網絡傳輸模組化

學習目标

閱讀完本章,讀者應該能夠:

  • 了解協定棧模型對網絡工程的價值
  • 了解美國國防部(Department of Defense,DoD)網絡協定棧模型,包括每一層的目标
  • 了解開放系統互連(Open Systems Interconnect,OSI)網絡協定棧模型,包括每一層的目标
  • 了解遞歸網際網路架構(Recursive Internet Architecture,RINA)模型,以及它與DoD及OSI模型的差別
  • 了解面向連接配接模型和無連接配接模型之間的差別

前一章所讨論的一系列問題和解決方案對網絡傳輸系統的複雜性提出了一些觀點。工程師如何才能處理這些系統中所涉及的顯著複雜性呢?

第一種方法是研究傳輸系統所解決的基本問題,其中的每個問題都有一系列解決方案。第二種方法是建立模型來幫助了解傳輸協定:

  • 幫助工程師按傳輸協定的作用、每個協定包含的資訊以及協定之間的接口對協定進行分類。
  • 幫助工程師了解需要提出哪些問題才能夠了解某個特定的協定,或者了解一個特定的協定是如何與運作該協定的網絡進行互動的,以及為哪些應用程式傳輸資訊。
  • 幫助工程師了解如何将一個個單獨的協定組合起來構成一個傳輸系統。

第1章提供了關于傳輸問題及其解決方案空間的高層次概述。本章将讨論使工程師可以更全面地了解協定的第二種方式:模型。模型本質上是上一章所讨論的問題和解決方案的抽象表示。它們提供了一個更加可視化和子產品聚焦的表示形式,并且展示了事物是如何組合在一起的。本章将詳細讨論以下問題:

如何使傳輸系統模型化,使得工程師能夠快速而充分地了解這些系統所需要解決的問題,以及如何将多種協定組合起來解決這些問題?

本章将讨論三種具體的模型:

  • 美國國防部模型
  • 開放系統互連模型
  • 遞歸網際網路架構模型

這三個模型都有着不同的作用和曆史。本章還将讨論協定分類的第二種形式—面向連接配接和無連接配接。

3.1 美國國防部模型

20世紀60年代,美國國防部進階研究計劃局(Defense Advanced Research Projects Agency,DARPA)贊助開發了一個分組交換網絡,以取代電話網絡作為計算機通信的主要方式。與傳說不同的是,最初的想法不是源于在核爆炸中生存下來,而是為幾所大學、研究機構和政府機關的各種計算機創造一種互相通信的方式。當時,每種計算機系統都使用自己的實體連線、協定和附屬的其他系統,是以無法将這些裝置互相連接配接起來,甚至不能傳輸資料檔案,更不用說建立“網際網路”或跨平台執行軟體之類了。這些原始模型一般是為了提供終端到主機的通信,是以可以安裝一個遠端終端并連接配接到一個辦公室或共享空間,然後通路系統的共享資源或主機。圍繞這些模型的許多論文反映了這一現實。

該領域最早的發展之一就是DoD模型,如圖3-1所示。

帶你讀《計算機網絡問題與解決方案:一種建構彈性現代網絡的創新方法》之三:網絡傳輸模組化網絡傳輸模組化

圖3-1四層DoD模型

DoD模型将跨越網絡傳輸資訊的工作分為四個不同的功能,每個功能都可以通過衆多協定中的一個來執行操作。直到20世紀80年代末甚至90年代初,在每一層都有多個協定的想法一直被認為是有争議的。事實上,DoD模型和OSI模型的初始版本之間的一個關鍵概念差別就是:在每一層能否有多個協定。

在DoD模型中:

  • 實體鍊路層負責将這些0和1的資料調制或序列化到實體鍊路上。每個鍊路類型都有一個不同的信号格式來表示一個0或者1;實體層負責将這些0和1轉換為實體信号。
  • 網絡層負責在非同一實體鍊路連接配接的系統之間傳輸資料。是以,網絡層提供了網絡層的位址,而不是實體鍊路的本地位址,同時也提供了一些方法以發現到達目的位址的中間裝置和鍊路集合。
  • 傳輸層負責在通信裝置之間建構和維護會話,并為資料流或資料塊提供通用的透明資料傳輸機制。流量控制和可靠傳輸也可以在這一層實作,如TCP協定。
  • 應用層是使用者和網絡資源之間的接口,或者是使用者和特定應用程式之間的接口,這些應用程式使用并向連接配接到網絡的其他裝置提供資料。

特别是應用層,把它放在網絡傳輸模型中似乎不太合适。為什麼把使用這些資料的應用程式視為傳輸系統的一部分呢?因為在早期系統中,人是資料的最終使用者,而應用程式主要是一種将資料呈現給最終使用者的方式。許多機器到機器的處理,如在資料送出給使用者之前對其進行大量處理,或者以數字格式對資訊進行簡單存儲等,甚至被認為是不可行的使用場景。既然資訊是從一個人傳遞到另一個人,那麼應用程式就應該被認為是傳輸系統的一部分。

以下兩個觀點可能更有助于說明為什麼将應用程式包含在傳輸系統之内。首先,在這些原始系統的設計中有兩個元件:一個終端和一個主機。終端實際上是一台顯示裝置;應用程式安裝在主機上。其次,網絡軟體并不被認為是系統中的一個獨立存在;當時,路由器還沒有被發明出來,也沒有任何其他獨立的裝置來處理和轉發資料包。相反,主機隻是連接配接到終端或另一台主機;網絡軟體隻是在這些裝置上運作的另一種應用程式而已。

随着時間的推移,OSI模型的使用越來越普遍,DoD模型被修改為包含更多層。例如,如圖3-2所示是從1983年關于DoD模型的論文中複制的一個圖,它有七層(由于某些原因,7是一個神奇的數字)。

帶你讀《計算機網絡問題與解決方案:一種建構彈性現代網絡的創新方法》之三:網絡傳輸模組化網絡傳輸模組化

這裡增加了三層:

  • 公共業務層是一組介于傳輸層和應用層之間的協定。具體來說,簡單郵件傳輸協定(SMTP)、檔案傳輸協定(FTP)以及其他協定被視為該層的一部分。
  • 四層版本的網絡層被分為網間業務層和網絡層。網絡層表示在每個鍊路類型上使用不同的分組格式,如無線網絡和以太網(在20世紀80年代初仍然非常新)。對于運作在網絡上的應用程式和實用工具協定,網間業務層将它們統一為單個網際網路資料報服務。
  • 鍊路層是為了區分不同鍊路類型上的資訊編碼和裝置到實體鍊路的連接配接,并非所有的硬體接口都提供了鍊路層。

随着時間的推移,這些擴充的DoD模型已經不再受歡迎;四層模型是當今最常被引用的模型。主要有如下幾個原因:

  • 在大多數情況下,公共業務層和應用層基本上是互相重疊的。例如,FTP在TCP之上多路傳輸内容,而不是在協定棧中作為一個單獨的協定或者層。TCP和UDP最終被固化為傳輸層中的兩個協定,其他協定(通常)在這二者之一上運作。
  • 随着資料包轉發裝置(路由器和交換機)的發明,網絡層和網間業務層之間的區分逐漸消除。二者最初的區分主要是在低速長距離(廣域)鍊路和短距離局域鍊路之間;一般地,路由器承擔了将鍊路安裝到主機外的廣域網中,是以這種區分就變得不那麼重要了。

像鍊路層和實體層之間的分離所遇到的問題那樣,有些接口類型根本沒有辦法将信令編碼與主機接口分開。是以,在DoD模型中,這兩個層通常被合并成一個單獨的“層”。

DoD模型在曆史上是重要的,因為:

  • 這是第一次嘗試将網絡功能編碼成一個模型。
  • 設計了TCP/IP協定族(在其上運作全球網際網路),這個模型對于了解TCP/IP協定設計的許多方面都非常重要。
  • “内建”在模型的任何特定層都有多個協定的概念。這為縮小任何特定協定焦點範圍并允許許多不同的協定在同一網絡上同時運作的總體概念奠定了基礎。

3.2 開放系統互連模型

從20世紀60年代到80年代,主要的通信形式是電路交換;發送方會要求一個網元(一個交換機)将其連接配接到一個特定的接收方,這個交換機将完成連接配接(在接收方不忙的情況下),并且通過所建立的電路進行通信。如果這聽起來像一個傳統的電話系統,那是因為它實際上就是基于傳統網絡系統(現在稱為“普通老式電話服務”(POTS))。大型電話公司和計算機公司對這種模式進行了深度投資,并從圍繞電路交換技術設計的系統中擷取大量收入。随着DoD模型(以及一系列相關的協定和概念)開始在研究人員中流行起來,這些人決定建立一個新的标準組織,這個組織将建立一個替代系統,提供“兩全其美”的服務。系統将包含分組交換的最佳組成部分,同時保留電路交換的最好元素,以創造一個新的标準,讓每個人都滿意。這個新的标準組織于1977年被提出,并作為國際标準化組織(ISO)的一部分獲得通過。

這個新的ISO工作組設計了一個基于資料庫通信,類似于分組模型提案(已被拒絕)的分層模型,其主要目标是允許在20世紀70年代後期占主導地位的大型資料庫核心系統之間互相通信。該委員會被分為電信工程師團隊和資料庫團隊,使标準變得非常複雜。所開發的協定需要提供面向連接配接和無連接配接的會話控制,并且發明了整個應用程式協定族來建立電子郵件、檔案傳輸和許多其他應用程式(記住,應用程式是協定棧的一部分)。例如,需要編纂各種各樣的傳輸模式,以便提供廣泛的服務。直到1989年,整整十年過去了,規範還沒有完全完成。盡管許多政府、大型計算機制造商和電信公司在DoD協定棧和模型上支援它,但該協定并沒有得到廣泛的部署。

但是在這十年間,DoD協定棧仍在繼續發展;網際網路工程任務組(IETF)成為TCP/IP協定棧的上司者,主要為研究人員和大學(現在衆所周知的網際網路直到1992年才允許為商業流量)服務。随着OSI協定落地失敗,許多商業網絡和網絡裝置都轉向TCP/IP協定族,以便“馬上”解決現實世界的問題。

此外,由于TCP/IP協定棧是由美國政府撥款資助開發的,是以這些規範是免費的。事實上,由于大學和研究所學生需要實作他們的研究成果,進而TCP/IP協定棧在廣泛的系統中得到了實作。而OSI規範隻能從國際标準化組織購買紙質版本,而且購買者隻能是國際标準化組織的成員。國際标準化組織旨在成為一個“會員專用”的俱樂部,使得現有成員可以牢牢掌控分組交換技術的發展。但是,該組織的“會員專用”性質與業内人員有抵觸,最終扮演了一個逐漸衰落的角色。

不過,OSI模型為促進網絡工程的發展做出了許多貢獻;例如,其對服務品質(QoS)和路由問題的關注在之後的幾年中得到了回報。其中一個主要貢獻是明确了子產品化的概念;許多不同系統之間互相連接配接的複雜性以及許多不同的需求,推動了OSI社群明确責任界限,以及層間接口的清晰界定。

第二個貢獻是機器與機器之間的通信概念。如圖3-3所示,中間的幾個方框(最初稱為網關,現在稱為路由器和交換機)被明确地視為網絡模型的一部分。

帶你讀《計算機網絡問題與解決方案:一種建構彈性現代網絡的創新方法》之三:網絡傳輸模組化網絡傳輸模組化

圖3-3 OSI模型(包括了中間系統的概念)

甚至不需要看這張圖檔就能記住OSI模型—因為所有參加過網絡課程或者網絡工程認證學習的人都熟悉使用七層模型來描述網絡的運作方式。

通過這種方式建立網絡,其特點在于使得不同部分之間的互動更容易被看到和了解。通過模型垂直移動,每一對相鄰層都可以通過套接字或應用程式程式設計接口(API)進行互動。是以,如果要連接配接到特定的實體端口,資料鍊路層的一段代碼将連接配接到該端口的套接字。這使得不同層次之間的互相作用能夠被抽象化和标準化。網絡層的一個軟體不需要知道如何處理各種實體接口,隻需要知道如何将資料傳輸到同一系統的資料鍊路層軟體即可。

每一層都有一組特定的執行功能。

實體層,也稱為第1層,負責将這些0和1資料調制或序列化到實體鍊路上。每個鍊路類型都以一個不同的格式來發送一個0或1;實體層負責将這些0和1轉換成實體信号。

資料鍊路層,也稱為第2層,負責将某些傳輸的資訊實際發送到連接配接在同一鍊路中合适的計算機上。每個裝置都有一個不同的資料鍊路(第二層)位址,可以用來向特定裝置發送流量。資料鍊路層假定資訊流中的每個幀與同一資訊流中的所有其他幀是分開的,隻提供通過同一實體鍊路連接配接的裝置間通信。

網絡層,也稱為第3層,負責在非同一實體鍊路連接配接的系統之間傳輸資料。網絡層提供了全網(或者第3層)位址,而不是鍊路的本地位址,還提供了一些方法來發現到達目的位址所必須經過的一組裝置和鍊路。

傳輸層,也稱為第4層,負責不同裝置之間的透明資料傳輸。傳輸層協定可以是“可靠的”,這意味着傳輸層将會重新傳輸在較低層丢失的資料;也可以是“不可靠的”,這意味着在較低層丢失的資料必須通過某些更高層的應用程式來重新傳輸。

會話層,也稱為第5層,并非真正地傳輸資料,而是管理在兩台不同計算機上運作的應用程式之間的連接配接。會話層確定資料的類型、資料的形式以及資料流的可靠性,這些都是對外暴露并解釋說明的。

表示層,也稱為第6層,實際上是以某種方法來格式化資料,以便允許在這兩個裝置上運作的應用程式能夠了解和處理資料。加密、流量控制,以及任何其他需要提供應用程式和網絡之間接口的資料操作都發生在這一層。應用程式通過套接字與表示層互動。

應用層,也稱為第7層,提供了使用者和應用程式之間的接口,而應用程式又通過表示層與網絡進行互動。

七層模型不僅可以精确地描述層與層之間的互相作用,而且可以精确地描述多台計算機上平行層之間的互相作用。第一台裝置上的實體層可以與第二台裝置上的實體層進行通信,第一台裝置上的資料鍊路層可以與第二台裝置上的資料鍊路層通信等。正如裝置上兩個層之間的互相作用通過套接字來處理一樣,不同裝置在平行層之間的互動通過網絡協定來處理。

例如,以太網描述了實體線路上0和1的數字信号、一種啟動和停止一個資料幀的格式,以及在所有連接配接到單個線路的裝置中尋址單個裝置的方法。是以,以太網屬于OSI模型中的實體層和資料鍊路層(第1層和第2層)。

IP描述了将資料格式化為資料包,然後通過尋址和其他必要的方法,跨越多個資料鍊路層鍊路,将資料包發送到經過幾跳後的裝置上。是以,IP屬于OSI模型的網絡層(第3層)。

TCP描述了會話的建立與維護、資料重傳以及與應用程式的互動。是以,TCP屬于OSI模型的傳輸層和會話層(第4層和第5層)。

對于那些隻涉及TCP/IP協定棧的工程師來說,一個更令人困惑的問題是:在OSI協定棧中設計的協定與裝置進行互動的方式是不同的。在TCP/IP中,位址指的是接口(并且,在一個虛拟化程度很高的網絡世界裡,多個位址可以指向單個接口,或者一個選播的服務,或者一個多點傳播資料流等)。然而,在OSI模型中,每個裝置都有一個單獨的位址。這意味着OSI模型中的協定經常由裝置類型來引用。例如,在網絡中傳輸可達性和拓撲(或路由)資訊的協定稱為“中間系統到中間系統”(IS-IS)協定,因為它在中間系統之間運作。還有一個允許中間系統發現終端系統的協定,被稱為“終端系統到中間系統”(ES-IS)協定(沒想到這麼具有創造性的名字,是嗎?)。

注意:這是網絡工程史上令人悲哀的事實之一,TCP/IP協定族的支援者很早就不喜歡OSI協定套件了,以至于拒絕在開發過程中吸取那些經驗教訓。雖然近年來這在很大程度上已經變得相對溫和了,但多年來一個協定因其起源而被拒絕,而非關注其技術的優點,這給網絡工程上了一堂關于謙遜的課。對事不對人,把注意力集中在想法上,而不是人的身上。盡可能地向每個人和每個項目學習,不要讓自我的狹隘影響到一個大型項目或者影響解決手頭上的問題。

3.3 遞歸網際網路架構模型

DoD模型和OSI模型有兩個共同的特點:

  • 它們都包含應用層;這在網絡工程世界的早期場景中是有意義的,因為應用程式和網絡軟體都是一個大系統的一部分。
  • 它們将什麼資料應該包含在哪裡的概念與特定層應該實作什麼目标的概念結合了起來。

這導緻了一些奇怪的問題,比如:

  • 為獨立實體(自治系統)之間提供路由(可達性)的邊界網關協定(Border Gateway Protocol,BGP)在兩個模型的傳輸層之上運作。BGP算是一個應用程式嗎?同時,該協定提供了網絡層運作所需的可達性資訊,這使得BGP成為一個網絡層協定嗎?
  • IPsec将資訊添加到IP報頭,并指定網絡傳輸的加密資訊。因為IP運作在網絡層,而IPsec(這類的協定)在IP之上運作,這是否使得IPsec成為傳輸協定呢?或者,因為IPsec與IP并行運作,它是一個網絡層協定嗎?

對這些問題的争論為技術會議或者關于标準讨論會議提供了很多樂趣。然而,他們也指出這些模型的定義方式有些模糊。這種模糊性來自于這些模型中形式和功能的細密混合;它們描述了哪些資訊被包含,誰使用資訊,資訊是怎麼處理的,或者一個具體目标是否與網絡資訊傳輸所解決的具體問題相比對?答案是—以上都是。或許,視情況而定。

這就導緻了以下觀察結果:任何資料傳輸協定隻能提供四種功能,即傳輸、多路複用、糾錯和流量控制。這些聽起來很熟悉,因為這正是第2章所揭示的四種功能。

這四個功能可以自然分為兩組,即傳輸和多路複用、差錯和流量控制。是以,大多數協定可以分為兩類:

  • 該協定提供了傳輸,包括從一種資料格式到另一種資料格式的某種形式的翻譯;以及多路複用,即協定能夠将來自不同主機和應用程式的資料分開儲存。
  • 該協定對丢失或損壞的資料提供了糾正錯誤或重新傳輸的能力,即差錯控制;以及流量控制,由于網絡傳輸資料的能力與應用程式生成資料的能力不比對,流量控制可防止不必要的資料丢失。

從這個角度來看,以太網提供了傳輸服務和流量控制,是以它是一個集中于網絡中單個鍊路以及端口到端口(或隧道端點到隧道端點)的混合資料包。IP是一種提供傳輸服務的多跳協定(跨越多個實體鍊路的協定),而TCP也是一種多跳協定,它使用了IP的傳輸機制,并提供糾錯和流量控制。圖3-4說明了這一疊代模型。

帶你讀《計算機網絡問題與解決方案:一種建構彈性現代網絡的創新方法》之三:網絡傳輸模組化網絡傳輸模組化

圖3-4 RINA模型

模型的每一層都有相同的兩個功能之一,隻是範圍不同。這種模型在網絡協定的運作中并沒有得到廣泛的應用,但它提供了一個比七層或四層模型更簡單的網絡協定動态和操作視圖,并且增加了範圍的概念,這對于了解網絡運作至關重要。資訊的範圍是網絡穩定性和彈性的基礎。

3.4 面向連接配接與無連接配接

疊代模型再次引出網絡協定中面向連接配接和無連接配接概念。

在發送資料的第一個比特之前,面向連接配接的協定建立了端到端連接配接,包括全部有意義的資料傳輸狀态。傳輸狀态可以包括諸如服務品質要求、流量通過網絡的路徑、發送和接收資料的特定應用程式、資料可以被發送的速率以及其他資訊。一旦連接配接被建立,資料可以在非常小的開銷下進行傳輸。

另一方面,無連接配接服務将資料傳輸所需的資料與資料本身結合起來,在單個資料包(或協定資料單元)中傳輸。無連接配接協定将網絡資料傳輸所需的狀态傳播到每一個可能需要資料的裝置上,而面向連接配接的模型将狀态限制在隻需要知道特定資料流的裝置上。是以,在無連接配接的網絡中,單個裝置或鍊路故障可以通過将流量遷移到另一個可能路徑來解決,而不是重做所有工作:建構從源位址到目的位址的資料傳輸所需要的狀态。

大多數現代網絡都采用無連接配接的傳輸模型,同時結合了面向連接配接模型的服務品質、差錯控制和流量控制。這種組合并不總是理想的;例如,服務品質通常配置特定路徑以比對必須遵循這些路徑的特定資料流。這種對服務品質的處理比實際管理的流量更加面向連接配接,使得網絡的理想狀态和各種可能的故障模式之間嚴重脫節。

3.5 總結思考

了解一些模型以及這些模型如何适用于各種網絡協定,可以幫助我們快速地了解一個陌生的協定,并在一個運作的網絡中診斷問題。了解協定模型的曆史可以幫助我們了解特定協定的設計方式,特别是那些協定設計者認為需要解決的問題,以及最初設計時協定的周邊協定。不同模型以不同的方式抽象出了一套協定,了解這幾個模型以及如何将一套協定放入每個模型中,可以幫助我們以不同方式而不是單一方式來了解協定運作,就像在一幅畫中看到一個花瓶與在三維空間中看到一個花瓶是截然不同的。

特别重要的是無連接配接協定和面向連接配接協定這兩個概念,它們将是了解流量控制、差錯管理和許多其他協定運作的基礎。

在下一章,這些模型将應用于底層的傳輸協定。

3.6 拓展閱讀

帶你讀《計算機網絡問題與解決方案:一種建構彈性現代網絡的創新方法》之三:網絡傳輸模組化網絡傳輸模組化

3.7 複習題

1.研究X.25協定棧中的協定,該協定比本章描述的三個網絡模型出現得更早。X.25協定棧是否呈現了一種分層設計?DoD模型和OSI模型的哪些層與X.25協定棧中的哪些協定相符合?能否用RINA模型來描述每個協定?

2.研究IBM的系統網絡架構(Systems Network Architecture,SNA)協定棧中的協定,這些協定在本章描述的三個網絡模型之前就已經存在了。SNA協定棧是否呈現了分層設計?DoD模型和OSI模型的哪些層與SNA棧中的哪些協定相符合?能否用RINA模型來描述每個協定?

3.某些協定棧和模型(如X.25協定棧)考慮了計費,而其他協定棧和模型則沒有考慮。為什麼?思考在IP和X.25協定棧中的網絡使用率測量方式,特别是使用分組帶寬作為主要測量系統。

4.分層網絡模型如何有助于網絡協定棧的子產品化?

5.分層網絡模型如何幫助工程師了解網絡工作原理?

6.繪制一個比較DoD和OSI模型的圖表。其中一個模型的每一層是否與另一個模型完全契合?

7.考慮一下OSI和RINA模型,能否從RINA模型中找出哪些服務适合OSI模型中的哪些層嗎?

8.根據狀态/優化/表面(SOS)模型,特别是從狀态和優化兩方面來考慮無連接配接協定和面向連接配接協定的運作模型。能否解釋在一個面向連接配接模型中添加了狀态,會在哪裡增加了網絡資源的使用優化嗎?它是如何減少網絡資源的使用優化的?

9.在較老的網絡模型中,應用程式通常被認為是協定棧的一部分。然而,随着時間的推移,應用程式似乎已經基本上從網絡協定棧中分離出來了,并被視為網絡服務的使用者或消費者。思考終端主機的設計與運作在終端主機上的應用程式之間的一個特别轉變,這會導緻網絡工程思維的轉變嗎?

10.從協定設計的角度來看,固定長度的資料包(或幀,或信元)比可變長度的資料包更有意義嗎?與固定長度格式相比,可變長度的分組格式增加了多少狀态?獲得了多少優化?回答這個問題的一個有效出發點是全球網際網路上平均資料包長度的清單或圖表。

繼續閱讀