內容簡介
- 前言
- 如何通信
- OSI 七層模型
- 總結
1. 前言
上一課,我們初步了解了互聯網的一點歷史,也體會到了互聯網的重要性。
這一課我們就來學習:OSI 七層模型。
上一課說到,2019 年全球有近 44 億網民,大約每 2 人里就有一人使用互聯網,互聯網的規模已經是超乎想象般宏大。
你也許會問:
- 我們怎么實現在這么多的機器之間通信呢 ?
- 怎么才能不在這“數據的迷宮”里失去方向呢 ?
不用擔心,我們一起來學習,以期待找到問題的答案。
首先我們來理解互聯網是怎么創建的,以及使用什么規范來很好地組織這么多信息。
2. 如何通信
設想一下,假如你可以在任何時候和任何人通信,豈不是很棒 ?是的,這就是互聯網的初衷。
平時,當我們身處一個 10 人小組,會感到表達自己的觀點有些困難。如果是 100 人,就更困難。假如有 1000 人,那幾乎就聽不到你說話了。
但是互聯網就是要向不可能挑戰,要能夠做到:在任何時刻,同時和任何人通信。
當然了,要達到這個目的,必須要建立一個復雜的通信系統,使得各臺機器之間能夠相互對話。
但是這樣的一個通信模型如何構建呢?
我們可以從最熟悉的通信方式開始理解。
來盤點一下一般的通信方式吧:
- 說話
- 打電話
- 郵件
- 手機(通話、短信、微信等等)
- 飛鴿傳書( →_→ )
- 等等
接下來,讓我們試著來理解,在這些通信方式中,有哪些基本要素是我們通信活動所必不可少的。
在說話這種通信方式里,我們需要:
- 說話者
- 聽話者
- 傳聲媒介(空氣)
打電話的方式,跟說話是類似的,但我們還需要一個在說話和電子學之間的中介。
實際上,我們要把說話的聲音轉成電信號,電信號通過電話線等傳播介質到達接收者那一端,然后轉為聲音被聽見。在這里有一個信息的封裝。
我們可以舉郵件的例子來看一下這個封裝信息的系統,在郵件收發時我們需要:
- 寄件人
- 收件人
- 傳播介質(信)
- 容器(信封)
- 中介(郵局)
是不是慢慢能理解我們通信需要什么條件了?
那么問題又來了:
- 我們對電腦也能這樣應用嗎?
- 怎么才能讓大家可以同時發出訊息呢?
- 我們能夠即時和地球另一端的某人通信嗎?
接下來我們就看一下網絡的先驅者們如何把人類通信的原理“應用”到電腦的通信中。
他們把所有研究的成果重組,創立了一個標準,所有連到互聯網的人都要遵守,這個標準就是:OSI 七層模型。
3. OSI 七層模型
OSI 七層模型,聽上去是不是很帥?這個標準誕生在 1984 年,只比我早了 3 年出生(不小心暴露了自己的年齡…)。
聰明如你也許已經注意到了:這個標準比互聯網的出現晚了很久。
原因很簡單:
OSI 七層模型是在人們有了不少機器之間通信的經驗之后才能夠誕生的。因此這個標準不僅能夠適用于現有的通信,也適用于將來的通信及其可能的演進。它的目的是使通信標準化,以保證機器最大化的演進潛力和協同工作能力。
聽起來很不錯,但是到底 OSI 七層模型是什么?。?/p>
OSI 七層模型是一個標準,規定了機器(主要是電腦)之間如何通信。因此假如你想要讓你的洗碗機和洗衣機通信的話,就需要遵從 OSI 模型,或者至少從 OSI 模型獲得啟發。這意味著需要遵從分層的通信方式。
這里的層(“層”的英語是 layer)又是什么呢?
OSI 模型是一個分層的模型,就是說它分為幾個部分,每一部分稱為一層,每一層扮演固定的角色,就如下圖所示:
上圖中,我們可以看到 OSI 有 7 層,每一層名字都不一樣。從下到上分別是:
- Physical layer(物理層)
- Data Link layer(數據鏈路層)
- Network layer(網絡層)
- Transport layer(傳輸層)
- Session layer(會話層)
- Presentation layer(表示層)
- Application Layer(應用層)
暫時對這些名稱有點懵是正常的。但請放心,我們慢慢學習。
關于如何巧記這 7 層,有一個小口訣:
All People Seem To Need Data Processing
翻譯成英語是“似乎所有人都需要數據處理”。這一句話由七個英語單詞組成,每一個的首字母正好是按第 7 層到第 1 層的首字母的順序。
當然,除了這句話,也有人想出其它有意思的小口訣來幫助記憶 OSI七層模型。剛才那句話是從第 7 層到 第 1 層的順序,有人想出下面的這句話,是從第 1 層到第 7 層的:
Please Do Not Throw Sausage Pizza Away
翻譯成英語是“請不要扔掉香腸比薩”。這一句話由七個英語單詞組成,每一個的首字母正好是按第 1 層到第 7 層的首字母的順序。
好吧,你也可以自己想出喜歡的記憶方式。我個人還是比較喜歡第一個句子,畢竟提到了 data processing(數據處理),跟我們的 OSI 模型還比較貼合。
看到這里你也許又會發問:“為什么 OSI 模型是 7 層,不是 17 層或者 250 層?”
還記得之前提到的嗎?
我們知道:如果要通信,需要有固定數目的組分,比如 發送者,接收者,語言等等。
網絡的先驅者們設計了用于構建通信系統的主要元素,他們發現數目定為 7 最合適(“好吧,你厲害你說什么都對…”)。OSI 的每一層都有特定的分工,這 7 層合起來就可以使一臺機器和另一臺通信。
下面我們來看一下這 7 層各自的細節:
第 1 層或者物理層(Physical layer):
- 名字:物理層
- 作用:為通信提供傳播媒介
- 輔助作用:沒有
- 相關設備:集線器(也就是常說的 Hub)
第 2 層或者數據鏈路層(Data Link layer):
- 名字:數據鏈路層
- 作用:使局域網中的機器互相連接
- 輔助作用:偵測傳輸錯誤
- 相關設備:交換機(也就是常說的 Switch)
第 3 層或者網絡層(Network layer):
- 名字:網絡層
- 作用:使各個網絡相互連接
- 輔助作用:分割傳輸的數據包
- 相關設備:路由器(也就是常說的 Router)
第 4 層或者傳輸層(Transport layer):
- 名字:傳輸層
- 作用:管理應用程序的連接
- 輔助作用:保證連接的有效建立
- 相關設備:沒有
第 5 層或會話層(Session layer):
- 我們不在乎!
是的,你沒有看錯:我們不在乎第 5 層。
在第 4 層以上的,除了第 7 層,我們都不在乎。當然了,我也有些夸大。但是第 5 層和第 6 層不在本課程考慮范圍之內。
原因很簡單:
OSI 七層模型是一個理論模型,今天的互聯網使用的實際模型是 TCP/IP 模型,而后者不使用 OSI 的第 5 層和第 6 層,因此我們無視它們。
好,我想你應該理解了。當然了,第 7 層我們需要考慮。其實正是為了這第 7 層上的應用程序我們才大費周章,構建這個模型。
是的,第 7 層就是“老大”,是“終極 Boss”,就得伺候著,就是這么任性…
第 7 層或者應用層(Application layer):
- 名字:應用層
- 作用:沒有
- 輔助作用:沒有
- 相關設備:代理(也就是常說的 Proxy)
什么?第 7 層竟然沒有作用!那“伺候”它干嘛?說白了,這一層就是展示我們構建通信架構所要服務的所有應用程序。
因此,我們會把重心放在提供服務和引導數據傳遞的第 1 - 4 層,當然第 7 層也會花時間去講。其實,還有一種說法是把 1 - 4 層合稱為“網絡層”。因為正是這 4 層負責引導數據從一臺機器傳遞到另一臺機器,以供機器上的屬于第 7 層的應用程序使用。
在深入理解這 4 層之前,很有必要提一下使用 OSI 模型的兩個原則:
- 每一層都是相對獨立的;
- 每一層只能和相鄰的層通信。
1. 每一層都是相對獨立的:
其所產生的影響是某一層所用的信息不能被另一層使用。例如,對于某些有一定網絡知識的讀者來說,應該知道 IP 地址是屬于第 3 層的,就不能被另外的層所使用。
這樣規定的好處是可以方便通信方式的變革。
想象一下,今天你使用互聯網,雖然你可能并不了解它的原理,但實際上你使用的是第 3 層的 IPv4(Internet Protocol Version 4,互聯網協議第四版)這個協議。未來,我們將從 IPv4 演進到 IPv6(互聯網協議第六版。相比第四版的 32 位地址空間,可以達到 128 位地址空間)。這時,假如我們除了第 3 層以外,在另一些層中也用到了 IPv4,那我們除了要改第 3 層的協議,我們也要改其它凡是用到 IPv4 協議的層,就會很麻煩。
保持各層的相對獨立性可以使得我們改換一層所關聯的協議時,無需更改其它的層。
2. 每一層只能和相鄰的層通信:
為了理解這個原則,我們必須了解機器是怎么利用 OSI 模型來通信的。
想象以下場景:
你坐在電腦前,打開你的瀏覽器。你在瀏覽器的地址欄里輸入一個網址,按下回車鍵,那個網站就出現了。
雖然你并不知情,但其實你就在使用 OSI 模型。
大體來說,位于 OSI 第 7 層的應用程序(此處是瀏覽器),與第 1 - 4 層(合稱“網絡層”)對話,以便這 4 層把機器上的應用程序所要的信息從遠端的機器上(比如 google.com 的服務器)傳輸過來。
在一個傳輸過程中,我們會跨越 OSI 模型的各層,從上到下:
由此可見,多虧了第 2 個原則,我們能保證在信息的傳輸過程中,OSI 模型的各層都會被跨越,也就保證每一層的作用都能得到實現。當然了,差不多是這樣。因為實際上對于互聯網,OSI 模型是一個理論模型,第 7 層其實是跳過 5、6 層而直接和底下 4 層通信的。所以是 7 -> 4 -> 3 -> 2 -> 1 。
4. 總結
-
OSI 七層模型是一個規范,其規定了機器之間如何通信;
-
OSI 模型是一個理論模型,互聯網實際使用的是 TCP/IP 模型;
-
OSI 模型有 7 層;
-
每一層都有一個特定的作用;
-
第 1 - 4 層合稱為“網絡層”;
-
每一層相對獨立;
-
每一層只能和相鄰的層通信;
-
當傳輸數據時,我們從 OSI 的最上層遍歷到最下層;在另一個機器那里,則是相反的方向,從最下層到最上層。