1. 程式人生 > 其它 >OSI網路七層模型簡明教程

OSI網路七層模型簡明教程

如果你讀過計算機專業,或者學習過網路通訊,那你一定聽說過 OSI 模型,它曾無數次讓你頭大。OSI 是 Open System Interconnection 的縮寫,譯為“開放式系統互聯”。 OSI 模型把網路通訊的工作分為 7 層,從下到上分別是物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。 OSI 只是存在於概念和理論上的一種模型,它的缺點是分層太多,增加了網路工作的複雜性,所以沒有大規模應用。後來人們對 OSI 進行了簡化,合併了一些層,最終只保留了 4 層,從下到上分別是介面層、網路層、傳輸層和應用層,這就是大名鼎鼎的 TCP/IP 模型。 圖1:OSI 七層網路模型和 TCP/IP 四層網路模型的對比 這個網路模型究竟是幹什麼呢?簡而言之就是進行資料封裝的。 我們平常使用的程式(或者說軟體)一般都是通過應用層來訪問網路的,程式產生的資料會一層一層地往下傳輸,直到最後的網路介面層,就通過網線傳送到網際網路上去了。資料每往下走一層,就會被這一層的協議增加一層包裝,等到傳送到網際網路上時,已經比原始資料多了四層包裝。整個資料封裝的過程就像俄羅斯套娃。 當另一臺計算機接收到資料包時,會從網路介面層再一層一層往上傳輸,每傳輸一層就拆開一層包裝,直到最後的應用層,就得到了最原始的資料,這才是程式要使用的資料。 給資料加包裝的過程,實際上就是在資料的頭部增加一個標誌(一個數據塊),表示資料經過了這一層,我已經處理過了。給資料拆包裝的過程正好相反,就是去掉資料頭部的標誌,讓它逐漸現出原形。 你看,在網際網路上傳輸一份資料是多麼地複雜啊,而我們卻感受不到,這就是網路模型的厲害之處。我們只需要在程式碼中呼叫一個函式,就能讓下面的所有網路層為我們工作。 我們所說的 socket 程式設計,是站在傳輸層的基礎上,所以可以使用 TCP/UDP 協議,但是不能幹「訪問網頁」這樣的事情,因為訪問網頁所需要的 http 協議位於應用層。 兩臺計算機進行通訊時,必須遵守以下原則:
  • 必須是同一層次進行通訊,比如,A 計算機的應用層和 B 計算機的傳輸層就不能通訊,因為它們不在一個層次,資料的拆包會遇到問題。
  • 每一層的功能都必須相同,也就是擁有完全相同的網路模型。如果網路模型都不同,那不就亂套了,誰都不認識誰。
  • 資料只能逐層傳輸,不能躍層。
  • 每一層可以使用下層提供的服務,並向上層提供服務。