1. 程式人生 > >OSI模型和TCP/IP協議族(一)

OSI模型和TCP/IP協議族(一)

出了 框架 調用 數據表 http n+1 互連 改變 2-2

1990年以前,再數據通信和組網文獻中占主導地位的分層模型是開放系統互連(Open System Interconnnection,OSI)模型。當時所有人都認為OSI模型將是數據通信的最終標準,然而這種情況並未發生。現在TCP/IP協議族成為了占主導地位的商用體系結構,因為它已經在因特網中應用,並且通過了廣發的測試,而OSI模型則從來沒有被完全實現過。
我們知道再兩個實體之間要進行通信需要有一個協議。而當該通信比較復雜時,就有必要將這個復雜的任務劃分為多層。此時,我們就需要有多個協議,每一層都有各自的協議。也許通過一段現實場景描述可以更好地理解協議分層的作用。下面舉兩個例子,再第一個例子中,因為通信過程非常簡單,所以只需要單層就可以實現,而在第二個例子中則需要三層。
例1


假設瑪利亞和安是鄰居,她們誌趣相投,但是瑪利亞只會講西班牙語而安只會說英語。由於她們倆在兒時都曾學過手語,每星期中有兩三天她們會抽時間在咖啡館見面,並用手語交換彼此的觀點和想法。偶爾,他們也會使用雙語字典,此時的通信是面對面的,只需要單層就可以實現,如下圖所示。
技術分享圖片

例2
假設由於工作上的原因,安不得不搬遷到另外一個城市,在搬走之前,兩人最後一次在咖啡館見面。雖然都很傷心,但是瑪利亞給安帶來了一個驚喜,她打開一個小包,裏面裝著兩臺機器。第一臺及其能夠掃描用英語寫的信,並把信的內容翻譯成某種密碼,反之也可以將密碼翻譯成英語。另一臺機器則能夠將西班牙語寫的信翻譯成密碼,也能將密碼翻譯成西班牙語。安帶走了第一臺機器,而瑪利亞留下了第二臺機器。通過使用密碼,這兩個好朋友仍然能夠互相通信,如下圖所示。
技術分享圖片

瑪利亞和安的通信過程如下。在第三層,瑪利亞用她所擅長的西班牙語寫了一封信,然後用那臺翻譯機掃描信的內容並將其翻譯成一封密碼。接著瑪利亞把信放進信封並投入郵局的信箱。郵車會將信送到安居住的城市的郵局,而郵局又會將信投遞到安的住所。安用她的翻譯機將信中的密碼翻譯成英語。對於從安到瑪利亞的通信過程,其處理方式相同,方向相反。不管是哪個方向,信的內容都是用密碼來傳遞的,雖然瑪利亞和安都不懂密碼,但是通過分層的通信,她們仍然能夠交換彼此的想法。
從例2可知發送方一共完成了三項不同的任務,而接收方也有三項響應的任務。在寄信人和收信人之間傳送信件的過程是由郵車完成的。而這些任務必須按照分層結構中指定的順序執行,這一點可能並不那麽顯而易見,在發送方,這封信必須先寫好,在翻譯成密碼,然後投遞到郵箱中,之後再由郵車從郵箱中取出並傳遞到郵局。在接收方,這封信首先必須要投遞到收信人的郵箱中,收信人才能收到信並讀出其內容。
在這裏面發送方的每一層都要使用下一層所提供的服務,位於最高一層的寄信人使用了中間一層提供的服務,而中間一層使用了最低一層提供的服務,最低一層則用到了郵車服務。
OSI模型


成立於1947年的國際標準化組織(International Standards Organization, ISO)是一個多國團體,專門就一些國際標準達成世界範圍的一致。全世界大約有四分之三的國家派代表參加,一個全方位覆蓋網絡通信問題的ISO標準就是開放系統互連(OSI)模型,它最早出現在20世紀70年代後期。
ISO是個組織;OSI是個模型
一個開放系統(open system)就是一組協議的集合,它使得兩個不同的系統之間能夠互相通信,而無須考慮其底層體系結構。OSI模型的作用就是展示兩個不同的系統怎樣才能做到互相通信,且不需要改變底層的硬件或軟件的邏輯。OSI模型不是一個協議,它是一個為了更好地理解並設計出靈活、穩健且可互操作的網絡體系結構而存在的模型。為OSI框架中的各種協議的創建提供基礎,這才是OSI模型的本意。
OSI模型是一個分層的框架結構,其目的是為了設計出能夠讓各種類型的計算機系統相互通信的網絡系統。它由七個獨立且相關的層組成,而每層都定義了信息通過網絡傳輸的完整過程中的一部分(見下圖)。掌握了OSI模型的基本概念之後,就有了學習數據通信的牢固基礎。
技術分享圖片
OSI模型由七個順序排列的層組成:物理層(第1層),數據鏈路層(第2層),網絡層(第3層),傳輸層(第4層),會話層(第5層),表示層(第6層)和應用層(第7層)。如下圖所示,設備A把一個報文發送到設備B的過程中涉及到的層,在報文從設備A到設備B的途中可能會經過多個中間節點,這些中間節點一般只涉及到OSI模型中的下三層。
技術分享圖片

在開發這個模型時,設計者們首先提取出傳輸數據過程中最基本的要素,然後進一步判斷哪些組網功能需要配合使用,並將這些功能劃分為不同的組,從而形成了這些層。每一層都定義了一組關系密切的功能,並且這些功能與其他層的功能有著明顯的區別。用這種方式來定義和定位功能集,設計者們就創建出了既有豐富功能又很靈活的體系結構。最重要的是,OSI模型使得各系統完全可以互操作,而沒有OIS模型這些系統將無法兼容。
處於一臺機器上的每一層都要調用緊挨的下一層的服務。例如,第3層使用第2層提供的服務,同時向第4層提供服務。而機器和機器之間,從邏輯上看起來像是一臺機器中的第x層與另一臺機器中的第x層之間在通信,這種通信是由協議來控制的,協議就是事先都同意的一組規則和約定
在上圖中,設備A向設備B發送報文(經過中間節點)。從發送方看,報文從第7層開始一直向下傳送到第1層,在第1層中完整的數據包被轉換為可傳送到接收設備的形式。從接收方看,報文又從第1層開始向上一直傳到第7層。
這些數據和網絡信息之所以能夠在發送設備中逐層向下傳遞,同時又在接收設備中能夠逐層向上交付,是因為沒對相鄰的層之間有一個接口(interface)。每個接口都定義了改層必須向它的上層提供什麽樣的信息和服務。定義清晰明確的接口和功能可以使網絡模塊化,只要改層向它的上層提供了預期的服務,層功能的具體實現是可以修改或替換的,而不需要對周圍的其他層進行改動。
上述7層可以看成分屬三個組,第1、2和3層(物理層、數據鏈路層和網絡層)是網絡支撐層,這些曾的任務是在物理上把數據從一個設備傳送到另一個設備(例如,電器規約、物理連接、物理編址、以及傳輸的定時和可靠性)。第5、6和7層(會話層、表示層和應用層)可以看成是用戶支撐層,這些層使得一些本來沒有關系的軟件系統之間有了互操作性。第4層(傳輸層)將這兩部分鏈接起來,使得底層所發送的是高層可以使用的形式。OSI的高層幾乎都是用軟件來實現的,而底層則是硬件和軟件的結合,除了物理層,它的絕大部分是硬件。
如下圖所示,給出了OSI各層的概貌。
技術分享圖片

D7數據表示第7層的數據單元,D6表示第6層的數據單元,以此類推。處理過程從第7層(應用層)開始,然後按降序逐層下去。每一層都可以在數據單元上附加一個首部。在第2層還要加上尾部。當這樣格式化的數據單元通過物理層(第1層)時,就轉換為電磁信號並沿著一條物理鏈路傳輸。到達終點後,信號首先進入第1層,並還原為它的數字形式。這個數據單元向上逐層通過OSI各層。每個數據塊在到達上一層時,相應的發送層所附加的首部和尾部就被移去,然後由改層進行相應的處理,當數據塊到達第7層時,這個報文就變為應用層所需要的形式,交給接收者使用。
上圖還揭示了OSI模型中數據通信的另一個特點:封裝。第7層的分組被封裝在第6層的分組中。整個第6層的分組又被封裝在第5層的分組中,以此類推。
換言之,第N層的分組中的數據部分就是第N+1層的完整分組(數據和開銷)。這一概念稱為封裝,因為第N層並不知道封裝後的分組中的哪個部分是數據,哪個部分是首部或者尾部,所以對第N層來說,從第N+1層傳來的整個分組被看作是一個整體。

OSI模型和TCP/IP協議族(一)