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