亚洲 欧洲 日韩 综合色天使,久久国产Av无码一区二区老太,人妻醉酒被下药迷昏带到诊所 ,亚州老熟女A片AV色欲小说

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

今天這篇的標(biāo)題是“掃盲”,也就是說:即使那些完全不懂 IT 領(lǐng)域,也不懂CT領(lǐng)域的讀者,依然能看懂(至少能看懂一部分)。為了做到這點(diǎn),我會(huì)盡量使用通俗的比喻,并適當(dāng)加一些示意圖。

另外,就算你已經(jīng)比較了解網(wǎng)絡(luò)通信領(lǐng)域,本文中提到的某些部分,也可能是你所不知道的。也就是說:懂行的同學(xué),看看此文,也會(huì)有幫助。
本文的標(biāo)題特地強(qiáng)調(diào)了【系統(tǒng)性】——我希望這篇教程能幫助讀者對(duì)“計(jì)算機(jī)網(wǎng)絡(luò)通信”這個(gè)領(lǐng)域進(jìn)行系統(tǒng)性學(xué)習(xí)(何為“系統(tǒng)性學(xué)習(xí)”?)
為了做到【系統(tǒng)性】這個(gè)目的,這篇教程很長。建議大伙兒慢慢看,不要著急。

★基本概念

為了足夠通俗,我先要介紹一些基本概念。

◇信道(channel)

這是通訊領(lǐng)域非?;镜母拍睿隙ㄒ攘牧乃?。
通俗地說,信道就是“傳送信息的通道”。

◇信道的類型

首先,信道可以從廣義上分為“物理信道 & 邏輯信道”。
顧名思義,“物理信道”就是直接使用某種【物理介質(zhì)】來傳送信息;至于“邏輯信道”——是基于“物理信道”之上抽象出來的玩意兒(待會(huì)兒講到“協(xié)議?!钡臅r(shí)候再聊)。

◇信道的帶寬

帶寬”指的是:某個(gè)信道在單位時(shí)間內(nèi)最大能傳輸多少比特的信息。
請(qǐng)注意:
電氣領(lǐng)域 & 計(jì)算機(jī)領(lǐng)域都有“帶寬”這個(gè)概念,但兩者的定義不太一樣。電氣領(lǐng)域所說的“帶寬”指的是“模擬帶寬”,單位是“赫茲/Hz”;計(jì)算機(jī)領(lǐng)域所說的“帶寬”指“數(shù)字帶寬”,單位是“比特率”或“字節(jié)率”。
后續(xù)章節(jié)提到“帶寬”,都是指計(jì)算機(jī)領(lǐng)域的術(shù)語。

◇帶寬的單位——容易把外行繞暈

“比特率”或“字節(jié)率”很容易搞混淆。用英文表示的話——大寫字母 B 表示【字節(jié)】;小寫字母 b 表示【比特】。

由于帶寬的數(shù)字通常很大,要引入“K、M、G”之類的字母表示數(shù)量級(jí),于是又引出一個(gè)很扯蛋的差異——“10進(jìn)制”與“2進(jìn)制”的差異。
【10進(jìn)制】的 K 表示 1000;M 表示 1000×1000(1百萬)
【2進(jìn)制】的 K 表示 1024(2的10次方);M 表示 1024×1024(2的20次方)
為了避免扯皮,后來國際上約定了一個(gè)規(guī)矩:對(duì)【2進(jìn)制】的數(shù)量級(jí)要加一個(gè)小寫字母 i。比如說:Ki 表示 1024;Mi 表示 1024×1024 …… 以此類推。
舉例:
1Kbps 表示“1000比特每秒”
1KiBps 表示“1024字節(jié)每秒”

◇信道的工作模式:單工 VS 半雙工 VS 全雙工

再來說說信道的工作模式。大致可以分為如下三種。為了讓大伙兒比較好理解,我對(duì)每一種都舉相應(yīng)的例子。

單工(simplex)
比如“電臺(tái)廣播”就是典型的【單工】?!半娕_(tái)”可以發(fā)信號(hào)給“收音機(jī)”,但“收音機(jī)”【不能】發(fā)信號(hào)給“電臺(tái)”。

半雙工(half-duplex)
比如“單條鐵路軌道”,就是典型的【半雙工】。火車在單條鐵軌上,可以有兩種運(yùn)行方向;但對(duì)于同一個(gè)瞬間,只能選其中一個(gè)方向(否則就撞車了)。

全雙工(full-duplex)
比如“光纖”就是典型的【全雙工】。在同一根光導(dǎo)纖維中,可以有多個(gè)光束【同時(shí)相向】傳播,互相不會(huì)干擾對(duì)方。

◇端點(diǎn)

為了敘述方便,我把參與通訊的對(duì)象(主體)稱作“通訊端點(diǎn)”,簡稱“端點(diǎn)”。
這里的“端點(diǎn)”是廣義的,可以是硬件(比如某個(gè)網(wǎng)卡),也可以是軟件(比如某個(gè)應(yīng)用程序)。

◇單播、組播/多播、廣播、選播

對(duì)于“網(wǎng)絡(luò)通訊”,至少得有 N 個(gè)端點(diǎn)參與,并且【N ≥ 2】才有意義。
當(dāng) N 個(gè)端點(diǎn)構(gòu)成一個(gè)網(wǎng)絡(luò),這時(shí)候就會(huì)涉及到“單播、組播、廣播”這幾個(gè)概念。
通俗地說:
單播(unicast)——發(fā)送給網(wǎng)絡(luò)中的指定的【單個(gè)】端點(diǎn)
組播/多播(multicast)——發(fā)送給網(wǎng)絡(luò)中的指定的【多個(gè)】端點(diǎn)
廣播(broadcast)——發(fā)送給網(wǎng)絡(luò)中的【所有】端點(diǎn)
選播(anycast)——發(fā)送給網(wǎng)絡(luò)中隨機(jī)選擇的【單個(gè)】端點(diǎn)

通訊協(xié)議(protocol)

所謂的“通訊協(xié)議”就是:參與通訊的各方所采用的某種【約定】。只有大家都遵守這個(gè)約定,才有可能相互傳遞信息。
打個(gè)比方:如果兩個(gè)人要用自然語言交流,前提是:雙方使用相同(或相互兼容)的自然語言。
“通訊協(xié)議”就類似某種自然語言,參與通訊的多個(gè)端點(diǎn),都必須能理解這個(gè)語言。

★從“分層”到“參考模型”

◇分層

在聊“分層”之前,先說說“分工”。比如在一個(gè)公司中,通常設(shè)有不同的工種/崗位,這就是【分工】。
對(duì)于網(wǎng)絡(luò)通訊也是如此,不太可能用一種通訊協(xié)議完成所有的信息傳遞任務(wù)(注:對(duì)于特別簡單的網(wǎng)絡(luò),或許有可能只用單一協(xié)議;但如今的網(wǎng)絡(luò)通訊已經(jīng)很復(fù)雜,用【單個(gè)】通訊協(xié)議包辦所有事情,已經(jīng)不太可能)
一旦采用了多種通訊協(xié)議,這幾種協(xié)議之間,該如何配合捏?
在網(wǎng)絡(luò)通訊領(lǐng)域,采用的是【分層】的設(shè)計(jì)思路。多個(gè)層次的協(xié)議在一起協(xié)同工作,技術(shù)上稱作“協(xié)議棧”(洋文叫做“protocol stack”)。

◇協(xié)議棧的原理

對(duì)于多層次的協(xié)議棧。每個(gè)層次都有各自的“端點(diǎn)”(進(jìn)行通訊的主體)。處于【同一層次】的兩個(gè)端點(diǎn)會(huì)使用該層次的協(xié)議進(jìn)行通訊(注:同一個(gè)層次的協(xié)議,可能只有一個(gè),也可能有多個(gè))。
除了最頂層,每個(gè)層次的端點(diǎn)會(huì)向其【直接】上層提供“服務(wù)”;除了最底層,每個(gè)層次的端點(diǎn)會(huì)調(diào)用【直接】下層提供的“服務(wù)”(這里所說的“服務(wù)”指某種“編程接口”,技術(shù)行話叫 API)。

(“協(xié)議棧”的示意圖)

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(“服務(wù)”與“協(xié)議”之間的關(guān)系)

◇邏輯信道

(前一個(gè)小節(jié)說了)每個(gè)層次會(huì)向上一個(gè)層次提供服務(wù)(API 調(diào)用)。對(duì)上層而言,調(diào)用下層提供的 API 發(fā)送信息,其效果相當(dāng)于在使用某種【信道】進(jìn)行通訊,這也就是我在 ★基本概念 那個(gè)章節(jié)所說的“邏輯信道”。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(“邏輯信道”示意圖)

◇數(shù)據(jù)格式的原理

大部分協(xié)議會(huì)把要傳送的數(shù)據(jù)切割為 N 份,每一份就是一個(gè)數(shù)據(jù)包。
通常來說,數(shù)據(jù)包的格式有如下三部分:

頭部
身體(也稱作“有效載荷”)
尾部(注:很多協(xié)議沒有尾部)

如果你收過快遞,可以把“網(wǎng)絡(luò)數(shù)據(jù)包”與“快遞包裹”作一個(gè)對(duì)照——
數(shù)據(jù)包的“頭/尾”,就類似于快遞包裹的【包裝袋】。數(shù)據(jù)包的“身體”,就類似于快遞包裹里面的東西。

對(duì)于【相鄰】兩層的協(xié)議,【下】層包含【上】層。也就是說:下層協(xié)議的【載荷】就是上層協(xié)議的【整體】。
還是以快遞舉例:
假設(shè)你從網(wǎng)上買了一臺(tái)筆記本電腦。電腦出廠時(shí),電腦廠商肯定會(huì)提供一個(gè)包裝盒。快遞公司在寄送這臺(tái)筆記本的時(shí)候,又會(huì)在筆記本的盒子外面再加一個(gè)包裝袋。對(duì)應(yīng)到網(wǎng)絡(luò)協(xié)議——“快遞公司的包裝袋”相當(dāng)于【下層】協(xié)議;“電腦廠商的包裝盒”,相當(dāng)于【上層】協(xié)議。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(上下層協(xié)議的格式及包含關(guān)系)

◇網(wǎng)絡(luò)分層的參考模型

上述所說的“分層 & 協(xié)議棧”只是一個(gè)抽象的(籠統(tǒng)的)思路。具體要分幾層?每一層要干啥事兒?這些都是很有講究滴!網(wǎng)絡(luò)技術(shù)發(fā)展了幾十年,已經(jīng)有很多牛人提出了各種不同的劃分方案,稱之為“網(wǎng)絡(luò)分層的參考模型”(為了打字省力,以下簡稱“模型”)。
在各種模型中,名氣最大的當(dāng)然是“OSI 模型”(洋文稱作“OSI model”)。在后續(xù)的章節(jié)中,我會(huì)以這個(gè)模型為主體,進(jìn)行介紹。
除了“OSI 模型”還有一個(gè)很出名的模型是“TCP/IP 模型”(因?yàn)榛ヂ?lián)網(wǎng)很成功,它才跟著出名)。對(duì)“TCP/IP 模型”的分層,不同的文章或書籍,說法不太一樣(“3層、4層、5層”皆有),這就引發(fā)了一些爭議。包括幾位熱心讀者也在博客留言,表達(dá)不同意見。為了避免一家之言,貼出XX百科的“”,其中給出了幾種比較有名的說法。
另外,我想提醒一下:
由于本文是基于【OSI 模型】進(jìn)行展開。對(duì)于 TCP/IP 模型到底算幾層,這方面的爭論【不】影響本文后續(xù)的內(nèi)容。

★OSI 概述

◇OSI 的歷史

“OSI”的全稱是“Open System Interconnection”。先說說它的歷史。
上世紀(jì)70年代,“國際電信聯(lián)盟”(ITU)想對(duì)各國的電信系統(tǒng)(電話/電報(bào))建立標(biāo)準(zhǔn)化的規(guī)格;與此同時(shí),“國際標(biāo)準(zhǔn)化組織”(ISO)想要建立某種統(tǒng)一的標(biāo)準(zhǔn),使得不同公司制造的大型主機(jī)可以相互聯(lián)網(wǎng)。
后來,這兩個(gè)國際組織意識(shí)到:“電信系統(tǒng)互聯(lián)”與“電腦主機(jī)互聯(lián)”的性質(zhì)差不多。于是 ISO 與 ITU 就決定合作,兩家一起干。這2個(gè)組織的2套班子,從上世紀(jì)70年代開始搞,搞來搞去,搞了很多年,一直到1984年才終于正式發(fā)布 OSI 標(biāo)準(zhǔn)。

◇OSI 標(biāo)準(zhǔn)的兩個(gè)組成部分

嚴(yán)格來講,OSI 包括兩大部分——
其一,抽象的概念模型,也就是前面提到的【OSI model】;
其二,針對(duì)這個(gè)概念模型的具體實(shí)現(xiàn)(具體的通訊協(xié)議),洋文叫做【OSI protocols】。

(前面說了)OSI 是由 ISO & ITU 聯(lián)手搞出來滴。這兩個(gè)國際組織里面的人,要么是來自各國的電信部門,要么是來自各國的高校學(xué)者。總而言之,既有嚴(yán)重的官僚風(fēng)氣,又有明顯的學(xué)究風(fēng)氣。(正是因?yàn)檫@兩種風(fēng)氣疊加,所以搞了很多年,才搞出 OSI)
OSI 的協(xié)議實(shí)現(xiàn)(OSI protocols),不客氣地說,就是一堆垃圾——據(jù)說把 OSI protocols 所有的協(xié)議文檔,全部打印成 A4 紙,摞起來得有一米多高!是不是很嚇人?協(xié)議搞得如此復(fù)雜,嚴(yán)重違背了 IT 設(shè)計(jì)領(lǐng)域的 KISS 原則。
由于 OSI protocols 實(shí)在太復(fù)雜,后來基本沒人用。但 OSI model 反而廣為流傳,并且成為“網(wǎng)絡(luò)分層模型”中名氣最大,影響力最廣的一個(gè)。
因此,本文后續(xù)章節(jié)中,凡是提到 OSI,指的是【OSI model】。

◇OSI 模型的7層

OSI 模型總共分7層,示意圖參見如下表格:

層次

中文名

英文名

第7層

應(yīng)用層

Application Layer

第6層

表示層

Presentation Layer

第5層

會(huì)話層

Session Layer

第4層

傳輸層

Transport Layer

第3層

網(wǎng)絡(luò)層

Network Layer

第2層

數(shù)據(jù)鏈路層

Data Link Layer

第1層

物理層

Physical Layer

(注:為了打字省力,在后續(xù)章節(jié)把“數(shù)據(jù)鏈路層”直接稱為“鏈路層”)

考慮到本文是針對(duì)一般性讀者的【掃盲教程】,我重點(diǎn)聊第1~4層。搞明白這幾個(gè)層次之后,有助于你更好地理解網(wǎng)絡(luò)的很多概念,也有助于你更好地理解很多信息安全的概念。
網(wǎng)上已經(jīng)有很多關(guān)于 OSI 的文章,可惜大部分寫得粗糙——很多文章只是在照抄定義。
要想更好地理解 OSI 模型,你得搞明白:為啥需要引入某某層?(請(qǐng)注意:這是一個(gè) WHY 型的問題)
接下來在討論 OSI 的每個(gè)層次時(shí),我都會(huì)專門寫一個(gè)小節(jié),談該層次的【必要性】。搞明白【必要性】,你就知道為啥要引入這個(gè)層次。

物理層:概述

◇物理層的必要性

通俗地說:直接與物理介質(zhì)打交道的層次,就是物理層。這一層的必要性比較明顯。
因?yàn)樗械耐ㄓ?,歸根結(jié)底都要依賴于【物理介質(zhì)】。與物理介質(zhì)打交道,需要牽涉到很多與【物理學(xué)】相關(guān)的東東。比如:“無線電通訊”需要關(guān)心“頻率/波長”;電纜通訊需要跟“電壓”打交道;“光纖通訊”需要關(guān)心“玻璃的折射率&光線的入射角” ……
“物理層”的主要職責(zé)是:屏蔽這些細(xì)節(jié),使得“物理層”之上的層次不用再去操心物理學(xué)。

◇物理信道的類型

何為“物理信道”,在本文開篇的“基本概念”已經(jīng)提到了。
對(duì)于“物理信道”,還可以進(jìn)一步細(xì)分為如下三大類:
1. 有線信道(比如:雙絞線、同軸電纜、光纖、等等)
2. 無線信道(比如:微波通訊、電臺(tái)廣播、衛(wèi)星通訊、等等)
3. 存儲(chǔ)信道

“存儲(chǔ)信道”比較少見,很多人沒聽說過,稍微解釋一下。
假設(shè)你要把一大坨信息傳送給另一個(gè)人,除了用“有線 or 無線”這兩種通訊方式,還可以把信息先保存到某種【存儲(chǔ)介質(zhì)】(比如硬盤),然后再把存儲(chǔ)介質(zhì)用某種方式(比如快遞)轉(zhuǎn)交給對(duì)方。這就是所謂的“存儲(chǔ)信道”。

◇信噪比(Signal-to-noise ratio)

信噪比這個(gè)概念是從通信領(lǐng)域借用的術(shù)語。
對(duì)于“物理信道”,總是會(huì)存在某些環(huán)境干擾,稱之為“噪聲”(Noise)。“信道傳輸?shù)挠杏眯畔ⅰ迸c“無用的干擾噪聲”,這兩者的比值就是“信噪比”。
“信噪比”單位是【分貝】?!胺重悺庇⑽慕凶觥癲ecibel”(簡寫為 dB)。“deci”表示“十進(jìn)制”;“bel”是為了紀(jì)念大名鼎鼎的貝爾(電話它爹)。

◇帶寬的限制因素

“物理信道”要依賴于物理傳輸介質(zhì)。不管使用何種物理介質(zhì),都要受限于某些基本的物理學(xué)定律(比如“光速上限”)。另外,不管何種物理介質(zhì),總是會(huì)有或多或少的環(huán)境干擾(噪聲)。這兩個(gè)因素導(dǎo)致了:任何“物理信道”的最大傳輸率總是有限滴。
由于物理層是最底下的一層,物理層之上的其它層次總是要直接或間接地依賴【物理信道】。因此,其它層次建立的“邏輯信道”,其帶寬只會(huì)比“物理信道”的最大帶寬更小。換句話說:“物理信道”的帶寬上限也就是整個(gè)協(xié)議棧的帶寬上限。

多路復(fù)用(Multiplexing)

一般來說,凡是能實(shí)現(xiàn)【長距離】通訊的“物理信道”,都有相當(dāng)?shù)慕?jīng)濟(jì)成本。比如鋪設(shè)“光纖、同軸電纜”都要花錢。無線電通訊雖然免去了鋪設(shè)線路的成本,但需要競標(biāo)購買頻段。因此,物理信道非常強(qiáng)調(diào)“多路復(fù)用”。
所謂的“多路復(fù)用”,通俗地說就是:盡可能地共享物理信道,不要浪費(fèi)了。
“多路復(fù)用”有很多種類型;不同的類型,原理也不同。為了展示各種不同的原理,我拿【無線通信】來說事兒。
無線通信領(lǐng)域的“多路復(fù)用”,【至少】有如下幾種:

頻分多路復(fù)用/FDM(Frequency-Division Multiplexing)
這個(gè)最簡單,就是根據(jù)頻率拆分。不同的線路占用不同的頻段,互不干擾。(電臺(tái)廣播用的就是這個(gè)思路)
但這個(gè)思路的缺點(diǎn)很明顯——
其一,要依賴足夠?qū)挼念l段(頻段是稀缺資源);
其二,不同線路的流量可能會(huì)動(dòng)態(tài)變化。如果某個(gè)線路空閑,其占用的頻段就浪費(fèi)了。
(注:光纖通訊中有個(gè)“波分多路復(fù)用/WDM”,本質(zhì)上就是 FDM)

時(shí)分多路復(fù)用/TDM(Time-Division Multiplexing)
這種思路只用一個(gè)很窄的頻段。為了在同一個(gè)頻道發(fā)送多個(gè)信道,采用【分時(shí)機(jī)制】,把時(shí)間切割成很小的時(shí)間片,每個(gè)線路占用一個(gè)時(shí)間片。周而往復(fù)。
這個(gè)思路有點(diǎn)像十字路口的紅綠燈——每隔一段時(shí)間,其中一條路可以通行。
這個(gè)思路的優(yōu)點(diǎn)是:可以只使用一個(gè)很窄的頻段。缺點(diǎn)是:線路越多,每條線路等待越久;即使某個(gè)線路空閑,依然會(huì)占用時(shí)間片(浪費(fèi)了資源)。

碼分多路復(fù)用/CDM(Code-Division Multiplexing)
這種思路采用某種【編碼】的技巧,使得多個(gè)端點(diǎn)可以在同一個(gè)時(shí)間點(diǎn)使用同一頻段發(fā)送數(shù)據(jù);由于他們采用不同的編碼方式,不會(huì)相互干擾。
一般來說,CDM 要依賴于“擴(kuò)頻技術(shù)”(spread spectrum),需占用一個(gè)比較寬的頻道范圍。這算是缺點(diǎn)。但其優(yōu)點(diǎn)很明顯——
其一,可以支持 N 個(gè)線路(N 動(dòng)態(tài)變化);
其二,即使任何一個(gè)線路的流量動(dòng)態(tài)變化,也不會(huì)浪費(fèi)物理信道的資源。
顯然,這種思路明顯優(yōu)于 FDM & TDM。如今在移動(dòng)通訊領(lǐng)域大名鼎鼎的 CDMA(碼分多址),采用的就是這個(gè)思路。

★物理層:具體實(shí)例

◇物理層的【協(xié)議】

物理層的協(xié)議主要有如下:
USB 協(xié)議
藍(lán)牙協(xié)議的一部分
IEEE 802.11 的一部分(Wi-Fi)
IEEE 802.16(WiMAX)
IEEE 1394火線接口
RS-232 協(xié)議(串行接口/串口
……
(考慮到篇幅)我不可能具體細(xì)聊這些協(xié)議,只是貼出每個(gè)的XX百科鏈接,感興趣的同學(xué)自己點(diǎn)進(jìn)去看。

◇物理層的【協(xié)議實(shí)現(xiàn)】

對(duì)于電腦主機(jī)(含移動(dòng)設(shè)備),“網(wǎng)卡硬件”包含了物理層的協(xié)議實(shí)現(xiàn)(參見如下示意圖)
另外,還有一些專門的【1層】網(wǎng)絡(luò)設(shè)備,也提供物理層的功能(參見下一個(gè)小節(jié))。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(OSI 模型中,不同層次的協(xié)議實(shí)現(xiàn))

◇物理層相關(guān)的【網(wǎng)絡(luò)設(shè)備】

調(diào)制解調(diào)器(modem)
通俗地說,“調(diào)制解調(diào)器”就是用來翻譯“數(shù)字信號(hào) & 模擬信號(hào)”。
在發(fā)送信息時(shí),modem 把電腦要發(fā)送的“字節(jié)流”(數(shù)字信號(hào))翻譯成“模擬信號(hào)”,然后通過物理介質(zhì)發(fā)送出去;當(dāng)它從物理介質(zhì)收到“模擬信號(hào)”,再翻譯成“數(shù)字信號(hào)”,傳回給電腦。
早期的撥號(hào)上網(wǎng),modem 面對(duì)的物理介質(zhì)是“固話線路”;如今家庭寬帶普及,光纖入戶,modem 面對(duì)的物理介質(zhì)是“光纖線路”。

(老式 modem,用于固定電話線路)

中繼器repeater
信號(hào)在物理介質(zhì)中傳輸,會(huì)出現(xiàn)【衰減】(不論是“有線 or 無線”都有可能衰減)?!爸欣^器”的作用是【信號(hào)增益】,使得信號(hào)能傳得更遠(yuǎn)。
另外,比如“微波通訊”是直線傳播,而地球表面有弧度,還有地形的起伏。所以每隔一定距離要建“微波塔”。這玩意兒也相當(dāng)于“中繼器”。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(微波塔示意圖)

集線器(hub)
可以把“集線器”視作更牛逼的“中繼器”——“中繼器”只有兩個(gè)口(只能連接兩個(gè)通訊端點(diǎn)),而“集線器”有多個(gè)口(同時(shí)連接多個(gè)通訊端點(diǎn))。
通常所說的“集線器”是指“以太網(wǎng)集線器”。這種設(shè)備如今已經(jīng)逐步淘汰,很少見到了。

另外,很多同學(xué)應(yīng)該都用過“USB hub”,就是針對(duì) USB 線的“集線器”(“USB 線”也可以視作某種通訊介質(zhì))。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(老式的10兆以太網(wǎng)集線器)

★鏈路層:概述

◇鏈路層的必要性

對(duì)信息的打包
物理層傳輸?shù)男畔?,通俗地說就是【比特流】(也就是一長串比特)。但是對(duì)于計(jì)算機(jī)來說,“比特流”太低級(jí)啦,處理起來極不方便?!版溌穼印币傻牡谝粋€(gè)事情,就是把“比特流”打包成更大的一坨,以方便更上層的協(xié)議進(jìn)行處理。在 OSI 模型中,鏈路層的一坨,稱之為“幀”(frame)。

差錯(cuò)控制
物理介質(zhì)的傳輸,可能受到環(huán)境的影響。這種影響不僅僅體現(xiàn)為“噪聲”,有時(shí)候會(huì)出現(xiàn)嚴(yán)重的干擾,導(dǎo)致物理層傳輸?shù)摹氨忍亓鳌背鲥e(cuò)(某個(gè)比特“從0變1”或“從1變0”)。因此,鏈路層還需要負(fù)責(zé)檢查物理層的傳輸是否出錯(cuò)。在 IT 行話中,檢測是否出錯(cuò),稱之為“差錯(cuò)控制機(jī)制”(后面有一個(gè)小節(jié)會(huì)簡單說一下這個(gè)話題)。

流量控制
假設(shè)兩個(gè)端點(diǎn)通過同一個(gè)物理信道進(jìn)行通訊,這兩個(gè)端點(diǎn)處理信息的速度可能不同。如果發(fā)送方輸出信息的速度超過接收方處理信息的速度,通訊就會(huì)出問題。于是就需要有某種機(jī)制來協(xié)調(diào),確保發(fā)送方的發(fā)送速度不會(huì)超出接收方的處理速度。在技術(shù)行話中,這稱之為“流量控制”,簡稱“流控”。

信道復(fù)用
在上一個(gè)章節(jié)已經(jīng)講到:用于遠(yuǎn)距離通訊的“物理介質(zhì)”,總是有成本。因此需要對(duì)物理信道進(jìn)行“多路復(fù)用”,就會(huì)導(dǎo)致多個(gè)端點(diǎn)共用同一個(gè)物理信道。如果同時(shí)存在多個(gè)發(fā)送者和多個(gè)接收者。接收者如何知道某個(gè)信息是發(fā)給自己而不是別人?
另外,某些物理介質(zhì)可能不支持并發(fā)(無法同時(shí)發(fā)送信息)。某些物理介質(zhì)可能是【半雙工】,所有這些物理層的限制,都使得“多路復(fù)用”變得復(fù)雜。為了解決這些問題,鏈路層需要提供了某種相應(yīng)的機(jī)制(協(xié)議),術(shù)語叫做“介質(zhì)訪問控制”(洋文是“Media Access Control”,簡稱 MAC)。后續(xù)小節(jié)會(huì)聊它。

◇差錯(cuò)控制

為了發(fā)現(xiàn)傳輸?shù)男畔⑹欠癯鲥e(cuò),設(shè)計(jì)了很多相應(yīng)的數(shù)學(xué)算法。這些算法大體分為兩類:“檢錯(cuò)算法 & 糾錯(cuò)算法”。
簡而言之,“檢錯(cuò)算法”只能檢測出錯(cuò)誤,而“糾錯(cuò)算法”不但能檢測出錯(cuò)誤,還能糾正錯(cuò)誤。很顯然,“糾錯(cuò)算法”更牛逼,但是它也更復(fù)雜。
常見的“檢錯(cuò)算法”對(duì)傳輸?shù)臄?shù)據(jù)計(jì)算出一個(gè)【校驗(yàn)值】,接收方收到數(shù)據(jù)會(huì)重新計(jì)算校驗(yàn)和,如果算出來不對(duì),就把收到的數(shù)據(jù)丟棄,讓對(duì)方重發(fā)。“校驗(yàn)算法”的原理類似于《掃盲文件完整性校驗(yàn)——關(guān)于散列值和數(shù)字簽名》一文中提到的“散列算法/哈希算法”。
“糾錯(cuò)算法”更高級(jí),由于涉及到更多數(shù)學(xué),我就不展開啦。
對(duì)于【無線】物理信道,由于出錯(cuò)的概率更高,并且重新傳輸數(shù)據(jù)的成本也更高。所以【無線】通訊的鏈路層協(xié)議,更傾向于用【糾錯(cuò)】機(jī)制;作為對(duì)比,【有線】通訊的鏈路層協(xié)議,更傾向于用【檢錯(cuò)】機(jī)制。

MAC 協(xié)議

“MAC 協(xié)議”用來確保對(duì)下層物理介質(zhì)的使用,不會(huì)出現(xiàn)沖突。為了形象,我拿“鐵路系統(tǒng)”來比喻,說明“MAC 協(xié)議”的用途。
假設(shè)有一條【單軌】鐵路連接 A/B 兩地。有很多火車想從 A 開到 B,同時(shí)還有很多火車想從 B 開到 A。
首先,要確保不發(fā)生撞車(如果已經(jīng)有車在 A 開往 B 的途中,那么 B 就不能再發(fā)車);其次,即使是同一個(gè)方向的車,出發(fā)時(shí)間也要錯(cuò)開一個(gè)時(shí)間間隔。
所有這些協(xié)調(diào)工作,都是靠“MAC 協(xié)議”來搞定。

◇MAC 地址

為了完成上述任務(wù),光有“MAC 協(xié)議”還不夠,還需要為每一個(gè)端點(diǎn)引入【惟一的】標(biāo)識(shí)。這個(gè)標(biāo)識(shí)就稱作“MAC 地址”。
通俗地說,每個(gè)網(wǎng)卡都內(nèi)置了一個(gè)“MAC 地址”。這個(gè)地址是網(wǎng)卡在出廠的時(shí)候就已經(jīng)設(shè)置好的,并且用某種機(jī)制確保該地址【全球唯一】。

如何保證 MAC 地址全球唯一捏?簡單說一下:
MAC 地址包含6個(gè)字節(jié)(48個(gè)比特),分為兩半。第一部分稱作【OUI】,OUI 的24個(gè)比特中,其中2個(gè)比特有特殊含義,其它22個(gè)比特,用來作為網(wǎng)卡廠商的唯一編號(hào)。這個(gè)編號(hào)由國際組織 IEEE 統(tǒng)一分配。
MAC 地址第二部分的24比特,由網(wǎng)卡廠商自己決定如何分配。每個(gè)廠商只要確保自己生產(chǎn)的網(wǎng)卡,后面這24比特是唯一的,就行啦。

(MAC 地址的構(gòu)成) 順便說說【虛擬網(wǎng)卡】的 MAC 地址。
“虛擬網(wǎng)卡”是由【虛擬化軟件】創(chuàng)建滴。IEEE 也給每個(gè)虛擬化軟件的廠商(含開源社區(qū))分配了唯一的 OUI。因此,虛擬化軟件在創(chuàng)建“虛擬網(wǎng)卡”時(shí),會(huì)使用自己的 OUI 生成前面24個(gè)比特;后面的24比特,會(huì)采用某種算法使之盡可能【隨機(jī)化】。由于“2的24次方”很大(224 = 16777216),碰巧一樣的概率很低。
(注:如果手工修改 MAC 地址,故意把兩塊網(wǎng)卡的 MAC 地址搞成一樣,那確實(shí)就做不到唯一性了。并且會(huì)導(dǎo)致鏈路層的通訊出問題)

★鏈路層:具體實(shí)例

◇鏈路層的【協(xié)議】

鏈路層的協(xié)議主要有如下:
MAC 協(xié)議(介質(zhì)訪問控制)
LLC 協(xié)議(邏輯鏈路控制)
ARP 協(xié)議(解析 MAC 地址)
IEEE 802.3(以太網(wǎng))
IEEE 802.11 的一部分(Wi-Fi)
L2TP 協(xié)議(2層VPN)
PPP 協(xié)議(撥號(hào)上網(wǎng))
SLIP 協(xié)議(撥號(hào)上網(wǎng))
……
(考慮到篇幅)我不可能具體細(xì)聊這些協(xié)議,只是貼出每個(gè)的XX百科鏈接,感興趣的同學(xué)自己點(diǎn)進(jìn)去看。

◇鏈路層的【協(xié)議實(shí)現(xiàn)】

對(duì)于電腦主機(jī)(含移動(dòng)設(shè)備),“網(wǎng)卡硬件 & 網(wǎng)卡驅(qū)動(dòng)”會(huì)包含鏈路層協(xié)議的實(shí)現(xiàn)(參見如下示意圖)。
另外,還有一些專門的【2層】網(wǎng)絡(luò)設(shè)備,也提供鏈路層的功能(參見下一個(gè)小節(jié))。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(OSI 模型中,不同層次的協(xié)議實(shí)現(xiàn))

◇鏈路層相關(guān)的【網(wǎng)絡(luò)設(shè)備】

網(wǎng)絡(luò)交換機(jī)(network switch)
(注:一般提到“網(wǎng)絡(luò)交換機(jī)”,如果不加定語,指的就是“2層交換機(jī)”;此外還有更高層的交換機(jī),在后續(xù)章節(jié)介紹)
為啥要有交換機(jī)捏?我拿“以太網(wǎng)的發(fā)展史”來說事兒。
以太網(wǎng)剛誕生的時(shí)候,稱之為“經(jīng)典以太網(wǎng)”,電腦是通過【集線器】相連?!凹€器”前面提到過,工作在【1層】(物理層),并不理解鏈路層的協(xié)議。因此,集線器的原理是【廣播】模式——它從某個(gè)網(wǎng)線接口收到的數(shù)據(jù),會(huì)復(fù)制 N 份,發(fā)送到其它【每個(gè)】網(wǎng)線接口。假設(shè)有4臺(tái)電腦(A、B、C、D)都連在集線器上,A 發(fā)數(shù)據(jù)給 B,其實(shí) C & D 也都收到 A 發(fā)出的數(shù)據(jù)。顯然,這種工作模式很(低效)。由于“經(jīng)典以太網(wǎng)”的工作模式才“10兆”,所以集線器雖然低效,還能忍受。
后來要發(fā)展“百兆以太網(wǎng)”,再用這種傻SB的廣播模式,就不能忍啦。于是“經(jīng)典以太網(wǎng)”就發(fā)展為“交換式以太網(wǎng)”。用【交換機(jī)】代替“集線器”。
交換機(jī)是工作在2層(鏈路層)的設(shè)備,能夠理解鏈路層協(xié)議。當(dāng)交換機(jī)從某個(gè)網(wǎng)線接口收到一份數(shù)據(jù)(鏈路層的“幀”),它可以識(shí)別出“鏈路幀”里面包含的目標(biāo)地址(接收方的 MAC 地址),然后只把這份數(shù)據(jù)轉(zhuǎn)發(fā)給“目標(biāo) MAC 地址相關(guān)的網(wǎng)線接口”。
由于交換機(jī)能識(shí)別2層協(xié)議,它不光比集線器的性能高,而且功能也強(qiáng)得多。比如(稍微高級(jí)點(diǎn)的)交換機(jī)可以實(shí)現(xiàn)“MAC 地址過濾、VLAN、QoS”等多種額外功能。

網(wǎng)橋/橋接器(network bridge)
“交換機(jī)”通常用來連接【同一種】網(wǎng)絡(luò)的設(shè)備。有時(shí)候,需要讓兩臺(tái)不同網(wǎng)絡(luò)類型的電腦相連,就會(huì)用到【網(wǎng)橋】。
下面以“操作系統(tǒng)虛擬機(jī)”來舉例(完全沒用過虛擬機(jī)的同學(xué),請(qǐng)?zhí)^這個(gè)舉例)。
在這篇博文,我介紹了虛擬機(jī)的幾種“網(wǎng)卡模式”,其中有一種模式叫做【bridge 模式】。一旦設(shè)置了這種模式,Guest OS 的虛擬網(wǎng)卡,對(duì)于 Host OS 所在的外部網(wǎng)絡(luò),是【雙向】可見滴。也就是說,物理主機(jī)所在的外部網(wǎng)絡(luò),也可以看見這塊虛擬網(wǎng)卡。
現(xiàn)在,假設(shè)你的物理電腦(Host OS)只安裝了【無線網(wǎng)卡】(WiFi),而虛擬化軟件給 Guest OS 配置的通常是【以太網(wǎng)卡】。顯然,這是兩種【不同】的網(wǎng)絡(luò)。為啥 Guest OS 的以太網(wǎng)卡設(shè)置為“bridge 模式”之后,外部 WiFi 網(wǎng)絡(luò)可以看到它捏?
奧妙在于——虛擬化軟件在內(nèi)部悄悄地幫你實(shí)現(xiàn)了一個(gè)“網(wǎng)橋”。這個(gè)網(wǎng)橋把“Host OS 的 WiFi 網(wǎng)卡”與“Guest OS 的以太網(wǎng)卡”關(guān)聯(lián)起來。WiFi 網(wǎng)卡收到了鏈路層數(shù)據(jù)之后,如果接收方的 MAC 地址對(duì)應(yīng)的是 Guest OS,網(wǎng)橋會(huì)把這份數(shù)據(jù)丟給 Guest OS 的網(wǎng)卡。
這種網(wǎng)卡模式之所以稱作“bridge 模式”,原因就在于此。

◇鏈路層相關(guān)的【軟件工具】

嗅探抓包工具(Sniffer)
要了解鏈路層的數(shù)據(jù)包結(jié)構(gòu),需要用到“嗅探工具”。這類工具能捕獲流經(jīng)你網(wǎng)卡的所有【鏈路層】數(shù)據(jù)包。前面聊“協(xié)議?!钡臅r(shí)候說過:下層數(shù)據(jù)包的載荷就是上層數(shù)據(jù)包的整體。因此,拿到【鏈路層】數(shù)據(jù)包也就意味著:你已經(jīng)拿到2層之上的所有數(shù)據(jù)包的信息了。
有些抓包工具自帶圖形界面,可以直接顯示數(shù)據(jù)包的內(nèi)容給你看。還有些只提供命令行(只是把獲取的數(shù)據(jù)包保存為文件),然后要搭配其它圖形化的工具來展示數(shù)據(jù)包的內(nèi)容。
抓包的工具有很多,名氣最大的是 Wireshark(原先叫做 Ethereal)。

ARP 命令
首先,ARP 是“MAC 地址解析協(xié)議”的洋文名稱。該協(xié)議根據(jù)“IP 地址”解析“MAC 地址”。
Windows 自帶一個(gè)同名的 arp 命令,可以用來診斷與“MAC 地址”相關(guān)的信息。比如:列出當(dāng)前子網(wǎng)中其它主機(jī)的 IP 地址以及對(duì)應(yīng)的 MAC 地址。這個(gè)命令在 Linux & Mac OS 上也有。

★網(wǎng)絡(luò)層:概述

◇網(wǎng)絡(luò)層的必要性

路由機(jī)制(routing)
在 OSI 模型中,鏈路層本身【不】提供路由功能。你可以通俗地理解為:鏈路層只處理【直接相連】的兩個(gè)端點(diǎn)(注:這么說不完全嚴(yán)密,只是幫助外行理解)
對(duì)于某個(gè)復(fù)雜網(wǎng)絡(luò),可能有很多端點(diǎn),有很復(fù)雜的拓?fù)浣Y(jié)構(gòu)。當(dāng)拓?fù)渥銐驈?fù)雜,總有一些端點(diǎn)之間【沒有直連】。那么,如何在這些【沒有直連】的端點(diǎn)之間建立通訊捏?此時(shí)就需要提供某種機(jī)制,讓其它端點(diǎn)幫忙轉(zhuǎn)發(fā)數(shù)據(jù)。這就需要引入“路由機(jī)制”。
為了避免把“鏈路層”搞得太復(fù)雜,路由機(jī)制放到“鏈路層”之上來實(shí)現(xiàn),也就是“網(wǎng)絡(luò)層”。

基于【路由】的地址編碼方式
鏈路層已經(jīng)提供了某種全球唯一的地址編碼方式(MAC 地址)。但“MAC 地址”有如下幾個(gè)問題:
其一,它是固定的(雖然可以用技術(shù)手段去修改 MAC 地址,但很少這么干)
其二,MAC 地址的編碼是基于【廠商】,無法體現(xiàn)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。或者說,“MAC 地址”對(duì)于“路由機(jī)制”是不夠友好滴。
因此,需要引入一種更抽象(更高層)的地址,也就是“網(wǎng)絡(luò)層地址”。咱們常說的“IP 地址”,是“網(wǎng)絡(luò)層地址”的實(shí)現(xiàn)方式之一。

為了幫你理解,舉個(gè)例子:
每個(gè)人都有身份證號(hào)(這就類似于“MAC 地址”)。當(dāng)某人加入了某個(gè)公司,公司會(huì)為此人再分配一個(gè)“員工號(hào)”(這就類似于“網(wǎng)絡(luò)地址”)。既然有身份證號(hào),為啥公司還要另搞一套“員工編號(hào)”捏?因?yàn)椤皢T工編號(hào)”有額外的好處。比如說:可以把員工號(hào)劃分為不同的區(qū)間,對(duì)應(yīng)不同的部門。這樣一來,只要看到員工號(hào),就知道此人來自哪個(gè)部門。
類似道理,每個(gè)網(wǎng)卡都有自己固定的 MAC 地址,當(dāng)這個(gè)網(wǎng)卡接入到不同的網(wǎng)絡(luò),每次都可以再分配不同的“網(wǎng)絡(luò)地址”。通過“網(wǎng)絡(luò)地址”可以看出這個(gè)網(wǎng)卡屬于哪個(gè)網(wǎng)絡(luò)(對(duì)路由比較方便)。

網(wǎng)際互聯(lián)(internetwork)
引入“網(wǎng)絡(luò)層”的另一個(gè)目的是:屏蔽不同類型的網(wǎng)絡(luò)之間的差異,從而有利于【網(wǎng)際互聯(lián)】(也就是建立“網(wǎng)絡(luò)的網(wǎng)絡(luò)”)。
一般來說,要想聯(lián)通【異種】網(wǎng)絡(luò),就要求每個(gè)網(wǎng)絡(luò)中都有一臺(tái)主機(jī)充當(dāng)【網(wǎng)關(guān)】(gateway)?!揪W(wǎng)關(guān)】起到“中介/翻譯”的作用——幫不同的網(wǎng)絡(luò)翻譯協(xié)議,使得不同的網(wǎng)絡(luò)可以互相聯(lián)通。
假設(shè)【沒有】統(tǒng)一的網(wǎng)絡(luò)層,網(wǎng)關(guān)的工作就很難做。就好比說:如果全球沒有某種通用的自然語言,就需要培養(yǎng)非常多不同類型的翻譯人才(假設(shè)有30種主要語言,任意兩種互譯,就需要幾百種不同的翻譯人才)。
反之,如果有了某種統(tǒng)一的網(wǎng)絡(luò)層標(biāo)準(zhǔn),問題就好辦多了(還是假設(shè)有30種主要語言,只要選定某種作為通用語,然后培養(yǎng)29種翻譯人才,就可以實(shí)現(xiàn)任意兩種語言互譯)。
如今的互聯(lián)網(wǎng)時(shí)代,【IP 協(xié)議】就是那個(gè)充當(dāng)統(tǒng)一標(biāo)準(zhǔn)的網(wǎng)絡(luò)層協(xié)議。

◇網(wǎng)絡(luò)拓?fù)洌╪etwork topology)

網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)有很多種,有簡單的,有復(fù)雜的。一般來說,再復(fù)雜的拓?fù)?,也可以逐步分解為若干簡單拓?fù)涞慕M合。
對(duì)拓?fù)涞难芯浚袑iT一個(gè)數(shù)學(xué)分支(拓?fù)鋵W(xué))??紤]到本文只是掃盲,我不可能再去聊“拓?fù)鋵W(xué)”。因此,只挑幾種簡單的拓?fù)浣Y(jié)構(gòu),讓大伙兒有個(gè)直觀的印象。

(常見的網(wǎng)狀拓?fù)浣Y(jié)構(gòu):星形拓?fù)?、環(huán)形拓?fù)洹⒖偩€拓?fù)?、網(wǎng)狀拓?fù)涞鹊龋?/span>

如今的互聯(lián)網(wǎng),整體的拓?fù)浣Y(jié)構(gòu)超級(jí)復(fù)雜。但還是可以逐步分解為上述幾種基本的拓?fù)浣Y(jié)構(gòu)。

(互聯(lián)網(wǎng)的復(fù)雜拓?fù)?,右下角是圖中某個(gè)小點(diǎn)的放大。

為節(jié)省大伙兒的”學(xué)習(xí)”流量,我貼的是縮小圖。

◇互聯(lián)網(wǎng)的拓?fù)洹獜摹皻v史”的角度看其健壯性

從上面那張圖可以看出:互聯(lián)網(wǎng)拓?fù)涞摹揪植俊坑泻芏嗍恰靶切瓮負(fù)洹保ó?dāng)然也有其它的)。但從【宏觀】上看,更像是“網(wǎng)狀拓?fù)洹薄?br />在現(xiàn)實(shí)生活中,對(duì)于復(fù)雜結(jié)構(gòu),通常都會(huì)采用“樹狀層次結(jié)構(gòu)”,以便于管理。比如:域名系統(tǒng)、公司組織結(jié)構(gòu)、官僚系統(tǒng) …… 那為啥互聯(lián)網(wǎng)的【宏觀】拓?fù)浣Y(jié)構(gòu)是“網(wǎng)狀”捏?這就要說到互聯(lián)網(wǎng)的歷史。

在上世紀(jì)50年代(冷戰(zhàn)高峰期),漂亮國軍方的指揮系統(tǒng)高度依賴于電信公司提供的電話網(wǎng)絡(luò)。當(dāng)時(shí)的電話網(wǎng)絡(luò)大致如下——
在基層,每個(gè)地區(qū)有電話交換局,每一部電話都連入當(dāng)?shù)氐慕粨Q局。
在全國,設(shè)有若干個(gè)長途局,每個(gè)交換局都接入某個(gè)特定的長途局(不同地區(qū)的交換局通過長途局中轉(zhuǎn))。
簡而言之,當(dāng)時(shí)漂亮國的電話網(wǎng)絡(luò)是典型的【多級(jí)星形拓?fù)洹?。這種拓?fù)涞膬?yōu)點(diǎn)是:簡單、高效、便于管理;但缺點(diǎn)是:健壯性很差。從這個(gè)案例中,大伙兒可以再次體會(huì)到“效率”與“健壯性”之間的矛盾。
話說1957年的時(shí)候,蘇聯(lián)成功試射第一顆洲際彈道導(dǎo)彈(ICBM),漂亮國軍方開始擔(dān)心:一旦蘇聯(lián)先用洲際導(dǎo)彈攻擊美國,只要把少數(shù)幾個(gè)長途局轟掉,軍方的指揮系統(tǒng)就會(huì)癱瘓。也就是說,“長途局”已經(jīng)成為美國軍方的【單點(diǎn)故障】(何為“單點(diǎn)故障”?參見這篇博文)。
1960年,美國國防部找來大名鼎鼎的蘭德公司進(jìn)行咨詢,要求提供一個(gè)應(yīng)對(duì)核打擊的方案。該公司的研究員 Paul Baran 設(shè)計(jì)了一個(gè)方案,把“星形拓?fù)洹备臑椤揪W(wǎng)狀拓?fù)洹?。采用【網(wǎng)狀拓?fù)洹康暮锰幵谟冢杭词拱l(fā)生全面核大戰(zhàn),大量骨干節(jié)點(diǎn)被摧毀,整個(gè)網(wǎng)絡(luò)也不會(huì)被分隔成幾個(gè)孤島,軍方的指揮系統(tǒng)依然能正常運(yùn)作。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(左邊:互聯(lián)網(wǎng)誕生前——美國的電話網(wǎng)絡(luò)  右邊:蘭德公司的“Baran 方案”)

有了蘭德公司的方案,美國軍方找到當(dāng)時(shí)最大的電信公司 AT&T,想要實(shí)現(xiàn)這個(gè)系統(tǒng),結(jié)果被否決了。AT&T 高層認(rèn)為:搞這樣一種系統(tǒng)根本不切實(shí)際。于是 Baran 的方案中途夭折。
為啥 AT&T 反對(duì)這個(gè)方案捏?一方面,成功的大公司總是有很強(qiáng)的思維定勢(關(guān)于這點(diǎn),參見這篇文章);另一方面,Baran 的設(shè)計(jì)方案確實(shí)很超前——其前瞻性不僅包括“拓?fù)浣Y(jié)構(gòu)”,而且把當(dāng)時(shí)電信行業(yè)的幾大核心觀念完全顛覆掉了(具體如何顛覆,后續(xù)章節(jié)還會(huì)再聊)。
時(shí)間一晃又過了好多年,到了60年代末,由于一系列機(jī)緣巧合,英國佬發(fā)現(xiàn)了“Baran 方案”的價(jià)值,并據(jù)此搞了一個(gè)小型的 NPL 網(wǎng)絡(luò)(NPL 是“國家物理實(shí)驗(yàn)室”的縮寫)。然后在某次 ACM 會(huì)議上,美國佬看到英國佬的論文,才意識(shí)到:Baran 方案完全可行。經(jīng)歷了“出口轉(zhuǎn)內(nèi)銷”的命運(yùn)之后,該方案重新被美國國防部重視。之后,(國防部下屬的)“高級(jí)計(jì)劃研究局”(ARPA)開始籌建“阿帕網(wǎng)”(ARPANET),才有了如今的互聯(lián)網(wǎng)。

◇路由的大致原理

聊完“拓?fù)洹?,再來聊“路由”?br />當(dāng)主機(jī) A 向主機(jī) B 發(fā)送網(wǎng)絡(luò)層的數(shù)據(jù)時(shí),大致會(huì)經(jīng)歷如下步驟:

1.
A 主機(jī)的協(xié)議棧先判斷“A B 兩個(gè)地址”是否在同一個(gè)子網(wǎng)(“子網(wǎng)掩碼”就是用來干這事兒滴)。
如果是同一個(gè)子網(wǎng),直接發(fā)給對(duì)方;如果不是同一個(gè)子網(wǎng),發(fā)給本子網(wǎng)的【默認(rèn)網(wǎng)關(guān)】。
(此處所說的“網(wǎng)關(guān)”指“3層網(wǎng)關(guān)/網(wǎng)絡(luò)層網(wǎng)關(guān)”) 2.
對(duì)于“默認(rèn)網(wǎng)關(guān)”,有可能自己就是路由器;也可能自己不是路由器,但與其它路由器相連。
也就是說,“默認(rèn)網(wǎng)關(guān)”要么自己對(duì)數(shù)據(jù)包進(jìn)行路由,要么丟給能進(jìn)行路由的另一臺(tái)設(shè)備。
(萬一找不到能路由的設(shè)備,這個(gè)數(shù)據(jù)就被丟棄,于是網(wǎng)絡(luò)通訊出錯(cuò))
3.
當(dāng)數(shù)據(jù)到達(dá)某個(gè)路由器之后,有如下幾種可能——
3.1
該路由器正好是 B 所在子網(wǎng)的網(wǎng)關(guān)(與 B 直連),那就把數(shù)據(jù)包丟給 B,路由過程就結(jié)束啦;
3.2
亦或者,路由器會(huì)把數(shù)據(jù)包丟給另一個(gè)路由器(另一個(gè)路由器再丟給另一個(gè)路由器) …… 如此循環(huán)往復(fù),最終到達(dá)目的地 B。
3.3
還存在一種可能性:始終找不到“主機(jī) B”(有可能該主機(jī)“斷線 or 關(guān)機(jī) or 根本不存在”)。為了避免數(shù)據(jù)包長時(shí)間在網(wǎng)絡(luò)上閑逛,還需要引入某種【數(shù)據(jù)包存活機(jī)制】(洋文叫做“Time To Live”,簡稱 TTL)。
通常會(huì)采用某個(gè)整數(shù)(TTL 計(jì)數(shù))表示數(shù)據(jù)包能活多久。當(dāng)主機(jī) A 發(fā)出這個(gè)數(shù)據(jù)包的時(shí)候,這個(gè)“TTL 計(jì)數(shù)”就已經(jīng)設(shè)置好了。每當(dāng)這個(gè)數(shù)據(jù)包被路由器轉(zhuǎn)發(fā)一次,“TTL 記數(shù)”就減一。當(dāng) TTL 變?yōu)榱?,這個(gè)數(shù)據(jù)包就死了(被丟棄)。

對(duì)于某些大型的復(fù)雜網(wǎng)絡(luò)(比如互聯(lián)網(wǎng)),每個(gè)路由器可能與其它 N 個(gè)路由器相連(N 可能很大)。對(duì)于上述的 3.2 情形,它如何判斷:該轉(zhuǎn)發(fā)給誰捏?
這時(shí)候,“路由算法”就體現(xiàn)出價(jià)值啦——
一般來說,路由器內(nèi)部會(huì)維護(hù)一張【路由表】。每當(dāng)收到一個(gè)網(wǎng)絡(luò)層的數(shù)據(jù)包,先取出數(shù)據(jù)包中的【目標(biāo)地址】,然后去查這張路由表,看誰距離目標(biāo)最近,就把數(shù)據(jù)包轉(zhuǎn)發(fā)給誰。
上面這段話看起來好像很簡單,其實(shí)路由算法挺復(fù)雜滴??紤]到本文是“掃盲性質(zhì)”,而且篇幅已經(jīng)很長,不可能再去聊“路由算法”的細(xì)節(jié)。對(duì)此感興趣的同學(xué),可以去看《計(jì)算機(jī)網(wǎng)絡(luò)》的第5章。

◇路由算法的演變史(以互聯(lián)網(wǎng)為例)

(技術(shù)菜鳥可以跳過這個(gè)小節(jié))
由于互聯(lián)網(wǎng)的 IP 協(xié)議已經(jīng)成為“網(wǎng)絡(luò)層協(xié)議”的事實(shí)標(biāo)準(zhǔn),我簡單聊一下互聯(lián)網(wǎng)的路由機(jī)制是如何進(jìn)化滴。

第1階段:靜態(tài)全局路由表
(前面說了)互聯(lián)網(wǎng)的前身是“阿帕網(wǎng)/ARPANET”。在阿帕網(wǎng)誕生初期(上世紀(jì)70年代),全球的主機(jī)很少。因此,早期的路由表很簡單,既是“全局”滴,又是“靜態(tài)”滴。簡而言之,每個(gè)路由器內(nèi)部都維護(hù)一張“全局路由表”,這個(gè)“路由表”包含了全球所有其它路由器的關(guān)聯(lián)信息。每當(dāng)來了一個(gè)數(shù)據(jù)包,查一下這張全局路由表,自然就清楚要轉(zhuǎn)發(fā)給誰,才能最快到達(dá)目的地。
早期的阿帕網(wǎng),主機(jī)的變化比較少,也很少增加路由器。每當(dāng)出現(xiàn)一個(gè)新的路由器,其它路由器的管理員就手工編輯各自的“全局路由表”。
為了加深大伙兒印象,特意找來兩張70年代初的阿帕網(wǎng)拓?fù)鋱D(注:圖中的 IMP 是“Interface Message Processor”的縮寫,也就是如今所說的“路由器”)。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(1973年的阿帕網(wǎng))

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(1977年的阿帕網(wǎng))

第2階段:動(dòng)態(tài)全局路由表
后來,“阿帕網(wǎng)/互聯(lián)網(wǎng)”的規(guī)模猛增,路由器數(shù)量也跟著猛增,隔三差五都有新的路由器冒出來。再用“靜態(tài)路由表”這種機(jī)制,(編輯路由表的)管理員會(huì)被活活累死。于是改用“動(dòng)態(tài)路由表”,并引入某種“路由發(fā)現(xiàn)機(jī)制”。但“路由表”依然是【全局】滴。

第3階段:動(dòng)態(tài)分級(jí)路由表
再到后來,全球的路由器越來越多,成千上萬,再搞“全局路由表”已經(jīng)不太現(xiàn)實(shí)了——
一方面,“全局路由表”越來越大(查詢的速度就越來越慢)
另一方面,由于互聯(lián)網(wǎng)的流量越來越大,每來一個(gè)數(shù)據(jù)包都要查表,查詢?cè)絹碓筋l繁。
于是,路由器開始吃不消了。為了解決困境,想出一個(gè)新招數(shù):引入“分級(jí)路由”(hierarchical routing)。所謂的“分級(jí)路由”就是:把整個(gè)互聯(lián)網(wǎng)分為多個(gè)大區(qū)域,每個(gè)大區(qū)域內(nèi)部再分小區(qū)域,小區(qū)域內(nèi)部再分小小區(qū)域 …… 看到這里,熟悉“數(shù)據(jù)結(jié)構(gòu)與算法”的同學(xué)就會(huì)意識(shí)到——這相當(dāng)于構(gòu)造了一個(gè)【樹狀】層次結(jié)構(gòu)。
有了這個(gè)層次結(jié)構(gòu),每個(gè)路由器重點(diǎn)關(guān)注:自己所在的那個(gè)最小化區(qū)域里面的網(wǎng)絡(luò)拓?fù)?。如此一來,每個(gè)路由器的“路由表”都會(huì)大幅度減小。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(全局路由表 VS 分級(jí)路由表)

◇互聯(lián)網(wǎng)的路由——從“CAS”的角度看其健壯性

如果把互聯(lián)網(wǎng)視作一個(gè)系統(tǒng),每個(gè)公網(wǎng)上的路由器都是一個(gè)自適應(yīng)的主體。假如某個(gè)地區(qū)的網(wǎng)絡(luò)流量突然暴漲,骨干網(wǎng)路由器會(huì)自動(dòng)分流;假如因?yàn)榈卣鸹騑ar,導(dǎo)致某個(gè)地區(qū)的骨干網(wǎng)路由器全部下線,周邊地區(qū)的路由器也會(huì)自動(dòng)避開這個(gè)區(qū)域 …..
所有這些工作,【不需要】依靠任何最高指揮中樞,去進(jìn)行協(xié)調(diào)。
相反,如果互聯(lián)網(wǎng)的路由系統(tǒng)中,設(shè)立了某種“Center委員會(huì)”進(jìn)行實(shí)時(shí)調(diào)度,那互聯(lián)網(wǎng)早就完蛋了,根本無法成長為今天這種規(guī)模。

◇網(wǎng)絡(luò)層的兩種交換技術(shù)——電路交換(circuit switching) VS 分組交換(packet switching)

(技術(shù)菜鳥可以跳過這個(gè)小節(jié))
前面聊“互聯(lián)網(wǎng)誕生”,說到蘭德公司的“Baran 方案”。該方案對(duì)當(dāng)時(shí)的電信系統(tǒng)提出幾大革命性的變化,其中之一就是“分組交換”技術(shù)(也稱“數(shù)據(jù)包交換”or“封包交換”)。
一般來說,網(wǎng)絡(luò)層的設(shè)計(jì)有兩種截然不同的風(fēng)格:【電路交換 VS 分組交換】。有時(shí)候也分別稱之為“有連接的網(wǎng)絡(luò)層 VS 無連接的網(wǎng)絡(luò)層”。此處所說的“連接”指的是某種“虛電路”(洋文叫做“virtual circuit”,簡稱 VC)。

要理解“虛電路”,首先要從老式的電話系統(tǒng)說起。
最早期的電話,既沒有撥號(hào)盤也沒有按鍵,全靠一張嘴。當(dāng)你拿起電話,先告訴接線員你要打給誰,接線員會(huì)用一根跳接線,插入電話交換設(shè)備的某個(gè)插孔,從而把你的電話機(jī)與對(duì)方的電話機(jī)相連。于是建立了一條兩人之間的電話通路,也就是“電路”。你可以把“接線員”想象成某種“人肉路由器” ??

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(1900年法國巴黎的電話交換局,可以看到接線員在操作電話交換設(shè)備)

后來發(fā)明了“自動(dòng)電話交換機(jī)”,導(dǎo)致“接線員”全體下崗。雖然自動(dòng)化了,但原理還是一樣——當(dāng)你在電話上撥了某人的號(hào)碼,電話局的交換機(jī)會(huì)自動(dòng)選擇一條線路。只有當(dāng)這條線路建立起來,對(duì)方的電話才會(huì)響。一旦雙方開始通話,雙方之間的語音都是通過這條線路傳輸。并且這條線路是獨(dú)占的——只要通話不掛斷,這條線路就不會(huì)再分配給其他人使用。

前面提到“互聯(lián)網(wǎng)誕生的歷史”,當(dāng)時(shí)軍方推動(dòng)的“Baran 方案”被 AT&T 斷然拒絕。因?yàn)檫@個(gè)方案完全顛覆了傳統(tǒng)的電話系統(tǒng)——
顛覆之1:把“模擬信號(hào)”顛覆為“數(shù)字信號(hào)”(這點(diǎn)比較好理解,我就不解釋了)
顛覆之2:把“星形拓?fù)洹鳖嵏矠椤熬W(wǎng)狀拓?fù)洹保P(guān)于這點(diǎn),前面的小節(jié)已經(jīng)討論了)
顛覆之3:把“電路交換”顛覆為“分組交換”(這就是本小節(jié)的重點(diǎn))

為了幫大伙兒理解上述第3點(diǎn),舉個(gè)例子:
假設(shè)主機(jī) A 要向主機(jī) B 發(fā)送一大坨數(shù)據(jù)。因?yàn)閿?shù)據(jù)太多,肯定要分成好幾坨小一點(diǎn)的(分成多個(gè)數(shù)據(jù)包)。如何把這些數(shù)據(jù)包發(fā)送給對(duì)方捏?

“電路交換”的實(shí)現(xiàn)方式
在發(fā)送數(shù)據(jù)之前,要先建立連接通道(通過路由算法,找出 A & B 之間的某條通路)。這條通路就是所謂的“虛電路/VC”。一旦 VC 建立,每一個(gè)數(shù)據(jù)包都是從這條拓?fù)渎窂竭M(jìn)行路由。

“分組交換”的實(shí)現(xiàn)方式
在發(fā)送數(shù)據(jù)之前,【不需要】建立通道,讓每個(gè)數(shù)據(jù)包獨(dú)立進(jìn)行路由。這種情況下,這幾個(gè)數(shù)據(jù)包可能會(huì)走【不同的】拓?fù)渎窂?。因此,?shù)據(jù)包到達(dá)的順序與發(fā)送的順序【不一定】相同。接收方收到所有數(shù)據(jù)包之后,還要自己進(jìn)行排序。
XX百科上有一個(gè) GIF 動(dòng)畫(這個(gè)鏈接),比較直觀地演示“分組交換/封包交換”的效果。由于這個(gè)動(dòng)畫稍微有點(diǎn)大(超過 1MB),我就不貼到博文中了。

當(dāng)時(shí)的電話系統(tǒng)主要承載語音傳輸,“電路交換”顯然性能更高。那為啥 Baran 的設(shè)計(jì)要采用“分組交換”捏?我又要再次提到【效率 VS 健壯性】之間的矛盾與均衡。
對(duì)于“電路交換”,一旦建立連接,同一個(gè)連接的所有數(shù)據(jù)都走相同的路徑(會(huì)經(jīng)過完全相同的路由器)。也就是說,傳輸?shù)倪^程中,如果某個(gè)路由器掛掉了(網(wǎng)絡(luò)掉線 or 硬件當(dāng)機(jī) or 軟件崩潰)。那么,該路由器正在處理的 N 個(gè)連接全都要報(bào)廢。而“分組交換”則更加靈活——即使某個(gè)路由器掛掉了,后續(xù)的數(shù)據(jù)包會(huì)自動(dòng)轉(zhuǎn)向另外的路由器,損失很小。
“Baran 方案”之所以采用“分組交換”的設(shè)計(jì),因?yàn)槿思疫@個(gè)方案是提交給軍方用來應(yīng)對(duì)【全面核戰(zhàn)爭】滴,當(dāng)然要考慮健壯性啦。

話說這兩種交換機(jī)制,各有很多支持者,并分裂為兩大陣營,分別是:“電信陣營 VS 互聯(lián)網(wǎng)陣營”。兩大陣營的口水戰(zhàn)持續(xù)了 N 年,都無法說服對(duì)方。到了后來設(shè)計(jì) OSI 模型的時(shí)候,為了保持中立性與通用性,OSI 模型本身并沒有強(qiáng)制要求網(wǎng)絡(luò)層采用哪一種風(fēng)格。
經(jīng)過幾十年之后,咱們已經(jīng)可以看出來:“互聯(lián)網(wǎng)陣營”占據(jù)主導(dǎo)地位。如今,連電信系統(tǒng)都是架構(gòu)在互聯(lián)網(wǎng)之上。

★網(wǎng)絡(luò)層:具體實(shí)例

◇網(wǎng)絡(luò)層的【協(xié)議】

網(wǎng)絡(luò)層的協(xié)議有很多。由于“互聯(lián)網(wǎng)”已經(jīng)成為全球的事實(shí)標(biāo)準(zhǔn),因此我只列出屬于“互聯(lián)網(wǎng)協(xié)議族”的那些“網(wǎng)絡(luò)層協(xié)議”:
IP 協(xié)議(含 IPv4 & IPv6)
ICMP
IGMP
IPSec
……
(考慮到篇幅)我不可能具體細(xì)聊這些協(xié)議,只是貼出每個(gè)的XX百科鏈接,感興趣的同學(xué)自己點(diǎn)進(jìn)去看。
對(duì)上述這些協(xié)議,最重要的當(dāng)然是 IP 協(xié)議。如果你想要深入了解 IP 協(xié)議,可以參考如下這本書。關(guān)于 IP 協(xié)議的書,此書的影響力最大。這本書共3卷,通常只需看第1卷。
《TCP-IP 詳解》

◇網(wǎng)絡(luò)層的【協(xié)議實(shí)現(xiàn)】

對(duì)于電腦主機(jī)(含移動(dòng)設(shè)備),網(wǎng)絡(luò)層的協(xié)議實(shí)現(xiàn)通常包含在操作系統(tǒng)自帶的網(wǎng)絡(luò)模塊中(也就是“操作系統(tǒng)協(xié)議?!保?。具體參見如下示意圖。
另外,還有一些專門的【3層】網(wǎng)絡(luò)設(shè)備,也提供網(wǎng)絡(luò)層的功能(參見本章節(jié)的后續(xù)小節(jié))。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(OSI 模型中,不同層次的協(xié)議實(shí)現(xiàn))

◇IP 地址的格式及含義

當(dāng)年設(shè)計(jì)阿帕網(wǎng)的時(shí)候,采用了【4字節(jié)】(32比特)來表示“網(wǎng)絡(luò)層地址”(也就是 IP 地址)。
“IP 地址”的含義很重要,我有必要解釋一下:
咱們平時(shí)所說的 IP 地址,采用【點(diǎn)分十進(jìn)制】來表示。就是把地址的4個(gè)字節(jié),先翻譯為十進(jìn)制,然后每個(gè)字節(jié)用一個(gè)小數(shù)點(diǎn)分隔開(參見如下示意圖):

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(4字節(jié) IP 地址:“二進(jìn)制”與“點(diǎn)分十進(jìn)制”的對(duì)照示意圖)

“IP 地址”的32比特,分為兩部分:第1部分用來標(biāo)識(shí)【子網(wǎng)】,第2部分用來標(biāo)識(shí)該子網(wǎng)中的【主機(jī)】。
這兩部分各占用多少比特,是不確定的。在這種情況下,“操作系統(tǒng)協(xié)議棧”如何知道哪些比特標(biāo)識(shí)“子網(wǎng)”,哪些比特標(biāo)識(shí)“主機(jī)”捏?奧妙在于【子網(wǎng)掩碼】。所以,大伙兒在給系統(tǒng)配置 IP 地址的時(shí)候,通常都需要再設(shè)置一個(gè)【子網(wǎng)掩碼】,就這個(gè)用途。

◇IP 地址枯竭,及其解決方法

前一個(gè)小節(jié)提到:IP地址包含【4字節(jié)】(32比特)。因此,最多只能表示【2的32次方】(42億左右)的不同地址。考慮到還有很多地址保留給特殊用途,實(shí)際可用地址遠(yuǎn)遠(yuǎn)不到42億。
到了如今,全球網(wǎng)民都已經(jīng)幾十億了,IP 地址開始枯竭。咋辦捏?為了解決這個(gè)問題,發(fā)展出若干技術(shù)手段。簡單說一下最常見的幾種手段:

IPv6
名氣最大(最多人知道)的技術(shù)手段,大概是 IPv6 了。這招想要一勞永逸地解決地址枯竭的問題,采用了16字節(jié)(128比特)來表示 IP 地址。
設(shè)計(jì) IPv6 的人自豪地宣稱:即使給地球上的每一粒沙子分配一個(gè) IPv6 地址,依然綽綽有余(確實(shí)沒有吹牛,“2的128次方”是天文數(shù)字)。
但 IPv6 的缺點(diǎn)在于,【無法】向下兼容原有的 IP 協(xié)議(原有的協(xié)議叫“IPv4”)。IPv6 的普及一直比較慢,這是主要原因。

代理服務(wù)器(proxy)
一看到代理,很多人就想到”學(xué)習(xí)”。其實(shí)它也可以用來解決“地址枯竭”的問題。
比如說,某個(gè)公司有100人,100臺(tái)電腦。如果每臺(tái)電腦都分配公網(wǎng) IP 地址,就要消耗100個(gè)公網(wǎng)地址(太浪費(fèi)啦)。
可以只申請(qǐng)一個(gè)公網(wǎng) IP,然后在內(nèi)網(wǎng)搞一個(gè)代理服務(wù)器,公網(wǎng) IP 分配給它(代理服務(wù)器有兩個(gè)網(wǎng)卡,一個(gè)接內(nèi)網(wǎng),一個(gè)接公網(wǎng))。然后在其它電腦上設(shè)置代理,指向這臺(tái)代理服務(wù)器,就都可以上外網(wǎng)啦。
(注:在本文的末尾有一個(gè) ★雜項(xiàng) 的章節(jié),會(huì)專門聊一下“代理”這個(gè)話題)

網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
前面 proxy 那招有個(gè)缺點(diǎn):內(nèi)網(wǎng)的每臺(tái)電腦里面的每個(gè)上網(wǎng)軟件,都要單獨(dú)設(shè)置代理。實(shí)在太麻煩啦!
后來就發(fā)明了某種更牛逼的招數(shù)——網(wǎng)絡(luò)地址轉(zhuǎn)換(洋文是“Network Address Translation”,簡稱 NAT)。
用了這招,還是只要申請(qǐng)一個(gè)公網(wǎng) IP,分配給內(nèi)網(wǎng)的網(wǎng)關(guān)(網(wǎng)關(guān)有兩個(gè)網(wǎng)卡,一個(gè)接內(nèi)網(wǎng),一個(gè)接公網(wǎng))。然后在內(nèi)網(wǎng)的網(wǎng)關(guān)配置 NAT 功能,自動(dòng)就可以讓內(nèi)網(wǎng)的每臺(tái)電腦訪問外網(wǎng)。
在這篇帖子,我介紹了虛擬機(jī)的幾種“網(wǎng)卡模式”,其中有一種模式叫做【NAT 模式】,就是指這個(gè)玩意兒。
采用了 NAT 技術(shù)之后,可能會(huì)對(duì)某些應(yīng)用軟件(尤其是 P2P 類型的)造成兼容性問題,于是又發(fā)明了一些“NAT 穿透技術(shù)”(NAT traversal)。這類技術(shù)有好幾種,如果有空的話,我會(huì)單獨(dú)寫教程介紹。

其它解決方法
關(guān)于“IPv4 地址空間耗盡”,解決方法肯定不止上面這幾招。限于篇幅,就此打住。更多的討論參見XX百科的“這個(gè)鏈接”。

◇網(wǎng)絡(luò)層相關(guān)的【網(wǎng)絡(luò)設(shè)備】

路由器(router)
(前面章節(jié)聊“路由原理”的時(shí)候,已經(jīng)介紹過它;這里就不再浪費(fèi)口水啦)

3層交換機(jī)(Layer 3 switching)
“3層交換機(jī)”是在“2層交換機(jī)”的基礎(chǔ)上,增加了對(duì)網(wǎng)絡(luò)層的處理。因此,它可以做到類似路由器的效果——在幾個(gè)子網(wǎng)之間轉(zhuǎn)發(fā)數(shù)據(jù)。
與路由器的差別在于——“3層交換機(jī)”鏈接的幾個(gè)子網(wǎng)是【同種】網(wǎng)絡(luò);而路由器可以連接【異種】網(wǎng)絡(luò)。
從上面這句話看,“3層交換機(jī)”的能力顯然不如“路由器”。既然已經(jīng)有“路由器”,為啥還要發(fā)明“3層交換機(jī)”捏?這就要說到【單臂路由器】的弊端。
對(duì)于企業(yè)內(nèi)網(wǎng)的“2層交換機(jī)”,通常都支持 VLAN 功能。通俗地說:可以在交換機(jī)中劃分多個(gè)【虛擬子網(wǎng)】。其實(shí)這些子網(wǎng)的中所有的電腦,都還是接入這臺(tái)交換機(jī),只不過這些子網(wǎng)配置了不同的網(wǎng)絡(luò)地址。對(duì)于同一個(gè) VLAN 內(nèi)部的通訊,“2層交換機(jī)”自己就可以搞定(只需要用到2層協(xié)議);但對(duì)于【跨】VLAN 主機(jī)之間的通訊,“2層交換機(jī)”就沒戲啦(它沒有路由功能)。因此,就必須在它旁邊外加一個(gè)路由器,形成如下拓?fù)浣Y(jié)構(gòu)。在這個(gè)拓?fù)渲?,路由器只與單個(gè)設(shè)備(2層交換機(jī))相連,所以稱之為“單臂”。
請(qǐng)注意:如下示意圖只畫了兩臺(tái)電腦,位于兩個(gè) VLAN。實(shí)際上可能有很多個(gè) VLAN,每個(gè)里面有幾十臺(tái)電腦。于是,交換機(jī)與路由器之間的傳輸通道就會(huì)成為瓶頸——【跨】VLAN 的任意兩臺(tái)電腦通訊,數(shù)據(jù)包都要到路由器那里兜一圈。為了消除這種瓶頸,才發(fā)明了“3層交換機(jī)”——把路由功能直接集成到交換機(jī)內(nèi)部。

無線熱點(diǎn)(Wireless Access Point)
“無線熱點(diǎn)”通常用來提供無線接入,使得某個(gè)【無線】設(shè)備能接入到某個(gè)【有線】網(wǎng)絡(luò)中。一般來說,熱點(diǎn)都內(nèi)置了路由功能,那么它就是“無線路由器”,對(duì)應(yīng)到“3層”(網(wǎng)絡(luò)層)。反之,如果沒有路由功能,它就是“網(wǎng)橋”,屬于“2層”(鏈路層)。

◇網(wǎng)絡(luò)層相關(guān)的【軟件工具】

ping
這個(gè)命令,很多人應(yīng)該都知道。早在 Win9x 就有這個(gè)命令了。它使用(網(wǎng)絡(luò)層的)ICMP 協(xié)議來測試某個(gè)遠(yuǎn)程主機(jī)是否可達(dá)。
提醒一下:
如果 ping 命令顯示某個(gè) IP 地址不可達(dá),有很多種情況。比如說:

這個(gè) IP 地址對(duì)應(yīng)的主機(jī)已經(jīng)關(guān)機(jī)
這個(gè) IP 地址對(duì)應(yīng)的主機(jī)已經(jīng)斷線
這個(gè) IP 地址對(duì)應(yīng)的主機(jī)拒絕響應(yīng) ICMP 協(xié)議
從你本機(jī)到這個(gè) IP 地址之間,有某個(gè)防火墻攔截了 ICMP 協(xié)議
……

traceroute
這是一個(gè)通用的工具,用來測試路由。很早以前的 Windows 就已經(jīng)內(nèi)置了它,命令是 tracert。在 POSIX(Linux&UNIX)上通常叫 traceroute
你可以用這個(gè)命令,測試你本機(jī)與互聯(lián)網(wǎng)另一臺(tái)主機(jī)之間的路由(也就是:從你本機(jī)到對(duì)方主機(jī),要經(jīng)過哪些路由器)

★傳輸層:概述

◇傳輸層的必要性

屏蔽“有連接 or 無連接”的差異
(上一個(gè)章節(jié)提到)網(wǎng)絡(luò)層本身已經(jīng)屏蔽了【異種網(wǎng)絡(luò)】的差異(比如“以太網(wǎng)、ATM、幀中繼”之間的差異),而且網(wǎng)絡(luò)層也屏蔽了路由的細(xì)節(jié)。但網(wǎng)絡(luò)層本身還有一個(gè)差異,也就是網(wǎng)絡(luò)層的兩種交換技術(shù):電路交換(有連接) VS 分組交換(無連接)。
前面章節(jié)也提到了:上述兩種交換技術(shù)各有很多支持者,并分裂為兩大陣營。當(dāng)年設(shè)計(jì) OSI 模型的時(shí)候,為了保持中立性與通用性,并沒有強(qiáng)制規(guī)定“網(wǎng)絡(luò)層”必須采用何種交換機(jī)制。
對(duì)于開發(fā)網(wǎng)絡(luò)軟件的程序員來說,當(dāng)然不想操心“網(wǎng)絡(luò)層用的是哪一種交換機(jī)制”。因此,需要對(duì)網(wǎng)絡(luò)層的上述差異再加一個(gè)抽象層(也就是“傳輸層”)。

從“主機(jī)”到“進(jìn)程”
前面介紹的“網(wǎng)絡(luò)層”,其設(shè)計(jì)是面向主機(jī)(電腦)?!熬W(wǎng)絡(luò)層地址”也就是某個(gè)主機(jī)的地址。
而“傳輸層”是面向【進(jìn)程】滴!因?yàn)閭鬏攲右峁┙o【網(wǎng)絡(luò)軟件】使用,而網(wǎng)絡(luò)軟件打交道的對(duì)象是【另一個(gè)網(wǎng)絡(luò)軟件】。因此,傳輸層必須在“網(wǎng)絡(luò)層地址”的基礎(chǔ)上,再引入某種新的標(biāo)識(shí),用來區(qū)分同一臺(tái)主機(jī)上的不同【進(jìn)程】。

◇傳輸層的特殊性

在 OSI 7層模型中,傳輸層正好居中。這是一個(gè)很特殊的位置。
OSI 模型最下面3層,與【網(wǎng)絡(luò)設(shè)備】比較密切。這里面所說的“網(wǎng)絡(luò)設(shè)備”,既包括那些獨(dú)立的主機(jī)(比如“路由器、交換機(jī)、等”),也包括電腦上的硬件(比如“網(wǎng)卡”)。
OSI 模型最上面3層,與【網(wǎng)絡(luò)軟件】比較密切(或者說,與“用戶的業(yè)務(wù)邏輯”比較密切)。
而中間的傳輸層,正好是承上啟下。對(duì)于開發(fā)應(yīng)用軟件的程序猿/程序媛,“傳輸層”是他們能感知的最低一層。

◇傳輸層的【端口】

剛才談“傳輸層的必要性”,提到說——“網(wǎng)絡(luò)層地址”只能標(biāo)識(shí)【主機(jī)】,而傳輸層必須要能標(biāo)識(shí)【進(jìn)程】。為了達(dá)到這個(gè)目的,于是就引入了“傳輸層端口”這個(gè)概念(為了打字省力,后續(xù)討論簡稱為“端口”)。
在 OSI 模型中,“端口”的官方稱呼是“傳輸服務(wù)訪問點(diǎn)”(洋文縮寫 TSAP)。但是作為程序員,我已經(jīng)習(xí)慣于“端口”這個(gè)稱呼。后續(xù)介紹依然用“端口”一詞。
當(dāng)程序員使用傳輸層提供的 API 開發(fā)網(wǎng)絡(luò)軟件時(shí),通常把“端口”與“網(wǎng)絡(luò)地址”一起使用(構(gòu)成“二元組”),就可以定位到某個(gè)主機(jī)上的某個(gè)進(jìn)程。

★傳輸層:具體實(shí)例

◇傳輸層的【協(xié)議】

為了讓程序員可以更爽地使用傳輸層來開發(fā)網(wǎng)絡(luò)軟件,傳輸層既要提供“有連接”的風(fēng)格,也要提供“無連接”的風(fēng)格。關(guān)于這兩種風(fēng)格的對(duì)比,前面已經(jīng)聊過,這里不再浪費(fèi)口水。
具體到“互聯(lián)網(wǎng)協(xié)議族”,有兩個(gè)主要的傳輸層實(shí)現(xiàn),分別是 TCP & UDP(前者是“有連接”,后者是“無連接”)。
除了 TCP & UDP,“互聯(lián)網(wǎng)協(xié)議族”還提供了其它一些傳輸層協(xié)議。因?yàn)楸容^冷門,我就不介紹啦。

◇傳輸層的【協(xié)議實(shí)現(xiàn)】

對(duì)于電腦主機(jī)(含移動(dòng)設(shè)備),傳輸層的協(xié)議實(shí)現(xiàn)通常包含在操作系統(tǒng)自帶的網(wǎng)絡(luò)模塊中(也就是“操作系統(tǒng)協(xié)議?!保>唧w參見如下示意圖。
另外,還有一些專門的【4層】網(wǎng)絡(luò)設(shè)備,也提供傳輸層的功能(參見后續(xù)的小節(jié))。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(OSI 模型中,不同層次的協(xié)議實(shí)現(xiàn))

◇套接字(socket API)

前面說了:傳輸層是面向程序員(讓他們可以更方便地開發(fā)網(wǎng)絡(luò)軟件)。因此,就需要提供一些封裝傳輸層的【庫】(API)。程序員只需要調(diào)用這些【庫】,就可以使用傳輸層的協(xié)議進(jìn)行通訊啦。
影響力最大的傳輸層封裝庫,當(dāng)然是 socket API。它來自加州大學(xué)伯克利分校。
在互聯(lián)網(wǎng)誕生初期,伯克利分校開發(fā)了一個(gè) UNIX 操作系統(tǒng)的的變種,叫做“伯克利 UNIX 發(fā)行版”(BSD Unix),也就是如今 BSD 操作系統(tǒng)的前身。伯克利發(fā)行版內(nèi)置了一套用來進(jìn)行網(wǎng)絡(luò)編程的 API,當(dāng)時(shí)叫做“伯克利套接字”(Berkeley sockets)。由于這套 API 用起來很方便,很多其它的 UNIX 變種也移植了這套 API,于是就逐漸成了業(yè)界的事實(shí)標(biāo)準(zhǔn)。到了上世紀(jì)90年代,Windows & Linux 也都提供了這套 API。
由于大部分讀者不是程序員,“套接字”這個(gè)話題就到此為止。如果你是個(gè)程序員,并且對(duì)網(wǎng)絡(luò)編程感興趣,可以參考我的電子書清單,其中有一個(gè)分類目錄是【IT 類 / 軟件開發(fā) / 網(wǎng)絡(luò)相關(guān)】。

◇傳輸層相關(guān)的【網(wǎng)絡(luò)設(shè)備】

4層交換機(jī)(Layer 4 switching)
前面已經(jīng)介紹了“3層交換機(jī)”,“4層交換機(jī)”是其進(jìn)一步的改良,可以識(shí)別傳輸層的協(xié)議,獲取 TCP or UDP 的端口號(hào)。
有了這個(gè)能力,網(wǎng)管就可以在這種交換機(jī)上配置一些管理策略。比如說:(根據(jù)傳輸層端口號(hào))過濾掉某種流量,或者對(duì)某種流量設(shè)置轉(zhuǎn)發(fā)的優(yōu)先級(jí)。

狀態(tài)防火墻(stateful firewall)
網(wǎng)絡(luò)防火墻分好幾種,大部分屬于這種。它能完全處理 TCP 協(xié)議的狀態(tài),顯然它屬于“4層”(傳輸層)。

◇傳輸層相關(guān)的【軟件工具】

netcat 家族——傳輸層的“瑞士軍刀”
很多與 TCP/UDP 相關(guān)的事情,都可以用 netcat 搞定。另外,netcat 還有很多衍生品(衍生的開源項(xiàng)目),構(gòu)成一個(gè)豐富的 netcat 家族。在上述教程也有介紹。

netstat & ss
Windows 和 POSIX(Linux&UNIX)都有一個(gè) netstat 命令,可以查看當(dāng)前系統(tǒng)的 TCP/UDP 狀態(tài)(包括當(dāng)前系統(tǒng)開啟了哪些監(jiān)聽端口)。
另外,Linux 上還有一個(gè) ss 命令,功能更強(qiáng)(但這個(gè)命令在 Windows 上默認(rèn)沒有)

nmap
這是最著名的開源的掃描器,可以掃描遠(yuǎn)程主機(jī)監(jiān)聽了哪些傳輸層端口(注:前面提到的“netcat 家族”也可以干這事兒)
nmap 的功能很強(qiáng),“端口掃描”只是其功能之一。

★業(yè)務(wù)層(OSI 上三層):概述

一不小心,這篇教程已經(jīng)寫了這么長。為了照顧那些有“閱讀障礙”的讀者,我要稍微控制一下篇幅,就把 OSI 的【上三層】合在一起討論。
前面的章節(jié)說過:【上三層】更接近于“網(wǎng)絡(luò)軟件”,對(duì)應(yīng)的是應(yīng)用軟件的業(yè)務(wù)邏輯,因此我統(tǒng)稱為“業(yè)務(wù)層”。
注:有些書(比如《計(jì)算機(jī)網(wǎng)絡(luò)》)會(huì)把 OSI 的上三層統(tǒng)稱為“應(yīng)用層”。由于 OSI 模型中本來就有一個(gè)“應(yīng)用層”,我認(rèn)為這樣容易搞混(尤其不利于技術(shù)菜鳥),所以另外起了一個(gè)“業(yè)務(wù)層”的名稱。

◇業(yè)務(wù)層的必要性

業(yè)務(wù)層顯然是必要滴。因?yàn)閭鬏攲游挥诓僮飨到y(tǒng),它不可能去了解網(wǎng)絡(luò)軟件的業(yè)務(wù)邏輯。為了讓網(wǎng)絡(luò)軟件能夠相互通訊,肯定要在傳輸層之上再定義更高層的協(xié)議。
問題在于:網(wǎng)絡(luò)軟件千奇百怪,其業(yè)務(wù)邏輯各不相同,因此,“業(yè)務(wù)層如何設(shè)計(jì)”,【無】一定之規(guī)。有些軟件只用一個(gè)協(xié)議來搞定所有的業(yè)務(wù)邏輯(只有一層);有些軟件會(huì)參考 OSI,把業(yè)務(wù)邏輯的協(xié)議分為三層;還有些軟件可能會(huì)分出更多的層次。
再強(qiáng)調(diào)一下:業(yè)務(wù)層的協(xié)議如何分層,完全看具體的業(yè)務(wù)邏輯,不要生搬硬套任何現(xiàn)有的參考模型。

◇會(huì)話層 & 表示層 & 應(yīng)用層

對(duì)于大部分讀者來說,【沒必要】花時(shí)間去了解 OSI 最上面三層之間的區(qū)別。你只需把最上面三層視作【一坨】——他們都是與網(wǎng)絡(luò)軟件的業(yè)務(wù)邏輯密切相關(guān)滴。
那么,哪些人需要詳細(xì)了解“這三層的差異”捏?
如果你是個(gè)程序員,并且你正好是開發(fā)【網(wǎng)絡(luò)】軟件,我建議你了解一下 OSI 模型的最上面三層,有助于你更深刻地思考某些網(wǎng)絡(luò)協(xié)議的設(shè)計(jì)。所謂的“更深刻”指的是:你不能光停留在 WHAT 層面,要提升到 HOW 甚至 WHY 層面(參見《學(xué)習(xí)技術(shù)的三部曲:WHAT、HOW、WHY》)

★業(yè)務(wù)層(OSI 上三層):具體實(shí)例

◇業(yè)務(wù)層的【協(xié)議】

業(yè)務(wù)層的協(xié)議非常多。即使光把各種協(xié)議的名稱列出來,也很費(fèi)勁。所以我就偷懶一下,只點(diǎn)評(píng)幾個(gè)特別重要的協(xié)議。

HTTP 協(xié)議
如果讓我評(píng)選最重要的業(yè)務(wù)層協(xié)議,我首推 HTTP 協(xié)議?;ヂ?lián)網(wǎng)的普及推動(dòng)了 Web 的普及,而 Web 的普及使得 HTTP 成為信息時(shí)代的重要支柱。當(dāng)你上網(wǎng)的時(shí)候,你看到的網(wǎng)頁(HTML 頁面)就是通過 HTTP 協(xié)議傳輸?shù)侥愕臑g覽器上。
如今 HTTP 已經(jīng)不僅僅用來展示網(wǎng)頁,還有很多業(yè)務(wù)層的協(xié)議是建立在 HTTP 協(xié)議之上。比如說:如果你用 RSS 訂閱我的WebSite,RSS 閱讀器需要調(diào)用 blogspot 博客平臺(tái)提供的 RSS 接口,這些 RSS 接口就是基于 HTTP 協(xié)議傳輸?shù)巍?br />考慮到本文的篇幅,我不可能在這里細(xì)聊 HTTP 協(xié)議的規(guī)格,有興趣的同學(xué)可以去看《HTTP 權(quán)威指南》這本書。

SSL/TLS 協(xié)議
最早的 HTTP 協(xié)議是【明文】滴;為了強(qiáng)化安全性,后來又設(shè)計(jì)了 SSL 協(xié)議,用來【加密】HTTP 流量;再后來,SSL 升級(jí)為 TLS(這倆是同義詞)。如今經(jīng)??吹降?HTTPS 相當(dāng)于“HTTP over TLS”。
SSL/TLS 設(shè)計(jì)得比較優(yōu)雅(很靈活),使得其它業(yè)務(wù)層的協(xié)議可以很方便地架構(gòu)在 SSL/TLS 之上。這樣的好處是:其它協(xié)議就不用自己再設(shè)計(jì)一套加密機(jī)制&認(rèn)證機(jī)制。
SSL/TLS 對(duì)于安全性很重要,因此我專門寫了一個(gè)系列教程(如下),詳細(xì)介紹該協(xié)議的技術(shù)細(xì)節(jié)。
《掃盲 HTTPS 和 SSL/TLS 協(xié)議》(系列)

域名相關(guān)的協(xié)議(DNS 及其它)
域名相關(guān)的協(xié)議,也很重要。因?yàn)橛蛎到y(tǒng)是整個(gè)互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施。最早的域名查詢協(xié)議是“DNS 協(xié)議”,由于這個(gè)協(xié)議【沒有】加密,導(dǎo)致了一些安全隱患。比如 GFW 就利用 DNS 的這個(gè)弱點(diǎn),搞“域名污染/域名投毒”。因此,后來又設(shè)計(jì)了一系列新的域名協(xié)議,引入了加密的機(jī)制。
關(guān)于這些協(xié)議的掃盲教程,可以參考如下幾篇博文:
《掃盲 DNS 原理,兼談“域名劫持”和“域名欺騙/域名污染”》
《對(duì)比4種強(qiáng)化域名安全的協(xié)議——DNSSEC,DNSCrypt,DNS over TLS,DNS over HTTPS》

◇業(yè)務(wù)層相關(guān)的【網(wǎng)絡(luò)設(shè)備】

應(yīng)用層防火墻(application firewall)
前面提到了:大多數(shù)網(wǎng)絡(luò)防火墻處于4層(狀態(tài)防火墻),另外還有少數(shù)處于7層,也就是“應(yīng)用層防火墻”(有時(shí)候也稱之為“7層防火墻”)。
一般來說,這類防火墻具備了【深度包檢測】(deep packet inspection,簡稱 DPI)的能力,可以分析應(yīng)用層協(xié)議的【內(nèi)容】。
簡單說一下“深度包檢測”:
如果某個(gè)網(wǎng)絡(luò)設(shè)備,僅僅分析“應(yīng)用層協(xié)議”本身,它還【不夠格】稱之為 DPI。為了做到 DPI,還要能理解應(yīng)用層協(xié)議所承載的【內(nèi)容】。
比如說:某人通過【明文】的 HTTP 協(xié)議從網(wǎng)上下載了一個(gè) zip 壓縮包。對(duì)于這個(gè)下載行為,那些做得好的 DPI 設(shè)備不光能識(shí)別出“HTTP 協(xié)議的內(nèi)容是 ZIP 壓縮包”,而且還能從 ZIP 壓縮包中提取出里面的文件。

入侵檢測(intrusion detection system)
一般來說,“入侵檢測”如果不加定語,通常指“【網(wǎng)絡(luò)】入侵檢測”(洋文叫 NIDS);另外還有一種“【主機(jī)】入侵檢測”(洋文叫 HIDS)。HIDS 與本文無關(guān)。
“入侵檢測”是一種網(wǎng)絡(luò)安全設(shè)備,它通過嗅探(sniffer)的方式抓取網(wǎng)上的數(shù)據(jù)包,然后進(jìn)行分析,嘗試發(fā)現(xiàn)網(wǎng)絡(luò)中是否存在黑客/駭客的入侵的行為。故名“入侵檢測”。
由于 IDS 需要理解【應(yīng)用層】(7層)的內(nèi)容,因此它與“應(yīng)用層防火墻”有個(gè)共同點(diǎn),需要具備某種程度的 DPI(深度包檢測)能力。它倆的一大差異是【部署方式】。
考慮到很多讀者是 IT 外行,簡單說一下“旁路部署”——
如果你學(xué)過中學(xué)物理,應(yīng)該知道電路有“串聯(lián) & 并聯(lián)”。所謂的“旁路部署”類似于電路中的【并聯(lián)】。通俗地說:IDS 是【并聯(lián)】部署,防火墻是【串聯(lián)】部署。

GFW(Great Firewall)

由于“Great Firewall”中有“Firewall”字樣,很多【誤以為】GFW 是防火墻,其實(shí)不然!GFW 本質(zhì)上就是 IDS——其部署方式類似于 IDS(旁路部署),其工作方式有很大一部分也類似于 IDS(當(dāng)然啦,GFW 的功能比 IDS 更多)。

★雜項(xiàng)

有些概念,并不屬于某個(gè)特定的層次,單獨(dú)放到這個(gè)章節(jié)。

◇VPN(virtual private network)

同學(xué)們使用 VPN,一多半是為了學(xué)習(xí)。其實(shí) VPN 的本意(如其名稱所示)是為了提供某種虛擬化的私有的網(wǎng)絡(luò),讓身處異地的多個(gè)人,可以用 VPN 構(gòu)建出一個(gè)虛擬的內(nèi)網(wǎng),從而能在這個(gè)內(nèi)網(wǎng)中協(xié)同工作。
VPN 的類型很多,使用的技術(shù)也各不相同,因此 VPN 對(duì)應(yīng)的 OSI 層次很寬(“1層”到“6層”)。我到XX百科剽竊了如下這張圖,讓你見識(shí)一下 VPN 的多樣性。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(名目繁多的 VPN,分類示意圖)

◇代理(proxy)

那些經(jīng)?!睂W(xué)習(xí)”的同學(xué),對(duì)“代理”應(yīng)該都很熟悉了?!按怼迸c VPN 類似,一開始并不是用來學(xué)習(xí)滴,“學(xué)習(xí)”只是這倆的副業(yè)。

代理服務(wù)器(proxy server)
“代理服務(wù)器”部署在“客戶端 & 服務(wù)端”之間,起到某種“中介”的作用?!按矸?wù)器”的類型有很多,干的事情各不相同。

網(wǎng)絡(luò)設(shè)備具體有哪些圖片(網(wǎng)絡(luò)設(shè)備具體有哪些服務(wù)器)

(“代理服務(wù)器”的簡單示意圖)

代理客戶端(proxy client)
早期的代理服務(wù)器,【不】需要“代理客戶端”。因?yàn)樵缙诘摹按矸?wù)器”支持的是【標(biāo)準(zhǔn)協(xié)議】。比如“HTTP proxy server”支持的是標(biāo)準(zhǔn) HTTP協(xié)議,而用戶的電腦上,已經(jīng)有瀏覽器(原生支持 HTTP 協(xié)議)。這種情況下,自然不需要再有“代理客戶端”。
后來,為了滿足某些特殊需求(比如”學(xué)習(xí)”),“代理服務(wù)器”必須使用某種特殊的(非標(biāo)準(zhǔn)的)協(xié)議。因此,就必須在用戶的環(huán)境中安裝“代理客戶端”。對(duì)于學(xué)習(xí)來說,你裝的學(xué)習(xí)軟件,相當(dāng)于“代理客戶端”。

代理的層次
“代理”也分不同的層次。比較常見的有如下幾種:

TCP 代理(TCP 端口轉(zhuǎn)發(fā))——4層(傳輸層)
SOCKS 代理——5層(會(huì)話層)
HTTP 代理——7層(應(yīng)用層)
……

◇網(wǎng)關(guān)(gateway)

前面的某些章節(jié),已經(jīng)稍微提及了“網(wǎng)關(guān)”這個(gè)概念,但還沒有具體介紹它。
嚴(yán)格來講,“網(wǎng)關(guān)”是一個(gè)邏輯概念,【不要】把它當(dāng)成具體的網(wǎng)絡(luò)設(shè)備。充當(dāng)“網(wǎng)關(guān)”的東東,可能是:路由器 or XX層交換機(jī) or XX層防火墻 or 代理服務(wù)器 ……
“網(wǎng)關(guān)”也分不同的層次。如果不加定語,通常指的是“3層網(wǎng)關(guān)”(網(wǎng)絡(luò)層網(wǎng)關(guān))。列幾種比較常見的,供參考:

路由器充當(dāng)網(wǎng)關(guān)——3層(網(wǎng)絡(luò)層)
3層交換機(jī)充當(dāng)網(wǎng)關(guān)——3層(網(wǎng)絡(luò)層)
4層交換機(jī)充當(dāng)網(wǎng)關(guān)——4層(傳輸層)
應(yīng)用層防火墻充當(dāng)網(wǎng)關(guān)——7層(應(yīng)用層)
代理服務(wù)器充當(dāng)網(wǎng)關(guān)——(取決于代理的層次,參見前一個(gè)小節(jié))
……

◇隧道協(xié)議(tunneling protocol)

所謂的“隧道協(xié)議”,通俗地說就是:用某種協(xié)議包裹另一種協(xié)議,以滿足某些特殊的需求。
看到這里,估計(jì)某些同學(xué)會(huì)感到納悶——因?yàn)槲以诒疚拈_頭介紹“協(xié)議?!钡臅r(shí)候提到說:相鄰的兩層協(xié)議,下層會(huì)包裹上層?!八淼绤f(xié)議的包裹”與“上下層協(xié)議的包裹”,差別在哪捏?
我來解釋一下:
“隧道協(xié)議”可以做到更靈活的包裹——既可以對(duì)層次相隔很遠(yuǎn)的協(xié)議進(jìn)行包裹,也可以對(duì)同一層的協(xié)議進(jìn)行包裹,甚至可以“倒掛”——所謂的“倒掛”就是讓【上】層反過來包裹【下】層。
舉例:
《如何讓【不支持】代理的網(wǎng)絡(luò)軟件,通過代理進(jìn)行聯(lián)網(wǎng)(不同平臺(tái)的 N 種方法)》,其中介紹了“HTTP 代理”的兩種模式:“轉(zhuǎn)發(fā)模式 & 隧道模式”。對(duì)于“HTTP 代理”的隧道模式,可以實(shí)現(xiàn)【TCP over HTTP】(把 TCP 協(xié)議打包到 HTTP 協(xié)議內(nèi)部),這就是剛才所說的“倒掛”。
另外,VPN 小節(jié)的那張圖中,有些類型的 VPN 就是用“隧道協(xié)議”的機(jī)制實(shí)現(xiàn)。

如果你覺得有些【網(wǎng)絡(luò)相關(guān)】的概念,不太明白,歡迎留言,進(jìn)行反饋。我會(huì)根據(jù)大伙兒的反饋,再對(duì)這篇教程進(jìn)行補(bǔ)充。

本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 sumchina520@foxmail.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。
如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.qjsdgw.cn/5656.html