本節書摘來自異步社群《非常網管:網絡管理從入門到精通(修訂版)》一書中的第1章,第1.2節,作者: 崔北亮 , 陳家遷 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
兩台計算機進行通信時,必須采用相同的資訊交換規則。在計算機網絡中,用于規定資訊的格式以及發送和接收資訊的規則稱為網絡協定(network protocol)或通信協定(communication protocol)。為了減少網絡協定設計的複雜性,網絡設計者并不是設計一個單一、巨大的協定來為所有形式的通信規定完整的細節,而是采用把通信問題劃分為許多個小問題,然後為每個小問題設計一個單獨的協定的方法。這樣做使得每個協定的設計、分析、編碼和測試都比較容易,正如程式設計一樣,通過編寫“過程”和“函數”以友善調用,把一個複雜的程式子產品化、簡單化。分層模型(layering model)是一種用于開發網絡協定的設計方法。本質上,分層模型描述了把通信問題分為幾個小問題(稱為層次)的方法,每個小問題對應于一層。
為了減少網絡設計的複雜性,絕大多數網絡采用分層設計方法。所謂分層設計方法,就是按照資訊的流動過程将網絡的整體功能分解為多個功能層,不同機器上的同等功能層之間采用相同的協定,同一機器上的相鄰功能層之間通過接口進行資訊傳遞。
為了便于了解接口和協定的概念,首先以郵政通信系統為例進行說明。人們平常寫信時,對信件的格式和内容都有約定。寫信必須采用雙方都懂的語言文字和文體,開頭是對方稱謂,最後是落款等。這樣,對方收到信後,才可以看懂信中的内容,知道是誰寫的,什麼時候寫的等。信寫好後,必須将信封裝并交由郵局寄發,寄信人和郵局之間對信封寫法和郵票的貼法也有約定。在中國寄信必須先寫收信人位址、姓名,然後再寫寄信人的位址和姓名。郵局收到信後,首先進行信件的分揀和分類,然後傳遞有關運輸部門進行運輸,如航空信交民航、平信交鐵路運輸或公路運輸等。這時,郵局和運輸部門對到站地點、時間、包裹形式等也有約定。信件運送到目的地後進行相反的過程,最終将信件送到收信人手中,收信人依照約定的格式才能讀懂信件。如圖1-2-1所示,在整個過程中,主要涉及3個子系統,即使用者子系統、郵政子系統和運輸子系統。

從上例可以看出,各種約定都是為了達到将信件從一個源點送到一個目的點這個目标而設計的,這就是說,它們是因資訊的流動而産生的。可以将這些約定分為同等機構間的約定,如使用者之間的約定、郵政局之間的約定和運輸部門之間的約定,以及不同機構間的約定,如使用者與郵政局之間的約定以及郵政局與運輸部門之間的約定。
雖然兩個使用者、兩個郵政局和兩個運輸部門分處甲、乙兩地,但它們都分别對應同等機構,同屬一個子系統;而同處一地的不同機構則不在一個子系統内,它們之間的關系是服務與被服務的關系。很顯然這兩種約定是不同的,前者為部門内部的約定,而後者是不同部門之間的約定。在計算機網絡環境中,兩台計算機中兩個程序之間進行通信的過程與郵政通信的過程十分相似。
為了減少計算機網絡設計的複雜性,人們往往按功能将計算機網絡劃分為多個不同的功能層。網絡中同等功能層之間的通信規則就是該層使用的協定,如有關第n層的通信規則的集合,就是第n層的協定。而同一計算機不同功能層之間的通信規則稱為接口(interface),在第n層和第(n+ 1)層之間的接口稱為n /(n+1)層接口。總的來說,協定是不同機器同等功能層之間的通信約定,而接口是同一機器相鄰功能層之間的通信約定。不同的網絡,分層數量、各層的名稱和功能以及協定都各不相同。然而,在所有的網絡中,每一層的目的都是向它的上一層提供一定的服務。
協定階層化不同于程式設計中子產品化的概念。在程式設計中,各子產品可以互相獨立,任意拼裝或者并行,而層次則一定有上下之分,它是依資料流的流動而産生的。組成不同計算機同等功能層的實體稱為對等程序。對等程序不一定必須是相同的程式,但其功能必須完全一緻,且采用相同的協定。
分層設計方法将整個網絡通信功能劃分為垂直的層次集合後,在通信過程中,下層将向上層隐藏下層的實作細節。但層次的劃分應首先确定層次的集合及每層應完成的任務。劃分時應按邏輯組合功能,并具有足夠的層次,以使每層小到易于處理。同時層次也不能太多,以免産生難以負擔的處理開銷。
計算機網絡體系結構是網絡中分層模型以及各層功能的精确定義。對網絡體系結構的描述必須包括足夠的資訊,使實作者可以為每一功能層進行硬體設計或編寫程式,并使之符合相關協定。需要注意的是,網絡協定實作的細節不屬于網絡體系結構的内容,因為它們隐含在機器内部,對外部說來是不可見的。