劉金華
對于任何需要管理服務(wù)器的人來說,懂得一些基本的網(wǎng)絡(luò)知識是必要的。它不僅能夠幫你上線服務(wù)并流暢地運行服務(wù),還能幫助你深入地診斷問題。這篇文章與操作系統(tǒng)無關(guān),但在實現(xiàn)利用網(wǎng)絡(luò)的功能和服務(wù)時應(yīng)該非常有幫助。
基礎(chǔ)術(shù)語
在我們開始討論任何深度的網(wǎng)絡(luò)之前,我們必須定義一些常見術(shù)語。
連接:在網(wǎng)絡(luò)中,一個連接表示通過網(wǎng)絡(luò)傳輸?shù)囊幌盗行畔ⅰ_@表示一個連接是在數(shù)據(jù)開始傳輸之前建立(遵循在協(xié)議中實現(xiàn)的過程),然后在數(shù)據(jù)傳輸結(jié)束之后解構(gòu)。
數(shù)據(jù)包:一般來說,數(shù)據(jù)包是在網(wǎng)絡(luò)上傳送的最基本的單元。當(dāng)通過網(wǎng)絡(luò)通信時,包就像是是從一個端點到另一個端點攜帶著您的數(shù)據(jù)(以片為單位)的信封。
數(shù)據(jù)包具有包含關(guān)于分組的信息的報頭部分,包括源和目的地,時間戳和網(wǎng)絡(luò)跳Ping等。數(shù)據(jù)包的主體部分包含正被傳送的實際數(shù)據(jù)。它有時被稱為Body或Payload。
網(wǎng)絡(luò)接口:網(wǎng)絡(luò)接口可以指到網(wǎng)絡(luò)硬件上任何類型的軟件接口。例如,如果計算機(jī)中有兩個網(wǎng)卡,則可以單獨控制和配置與其關(guān)聯(lián)的每個網(wǎng)絡(luò)接口。
網(wǎng)絡(luò)接口可以與物理設(shè)備相關(guān)聯(lián),也可以表示虛擬接口。
LAN:表示“本地網(wǎng)絡(luò)”。它指的是廣域網(wǎng)不可公開訪問的網(wǎng)絡(luò)或網(wǎng)絡(luò)的一部分。家庭或辦公室網(wǎng)絡(luò)就是LAN的例子。
WAN:表示“廣域網(wǎng)”。這是比LAN更廣闊的網(wǎng)絡(luò)。雖然WAN是用于描述一般的大型分散網(wǎng)絡(luò)的術(shù)語,但它通常指整個互聯(lián)網(wǎng)。
如果一個接口被連接到了廣域網(wǎng),通常就意味著它可以通過互聯(lián)網(wǎng)訪問。
協(xié)議:協(xié)議是一組規(guī)則和標(biāo)準(zhǔn),基本上定義了設(shè)備可以用來進(jìn)行通信的語言。在網(wǎng)絡(luò)中廣泛使用著大量協(xié)議,并且它們通常在不同的層次上實現(xiàn)。
一些低級協(xié)議有TCP、UDP、IP和ICMP。基于這些較低協(xié)議的應(yīng)用層協(xié)議有HTTP(用于訪問Web內(nèi)容),SSH、TLS/SSL和FTP。
端口:端口是單個機(jī)器上可以綁定到特定軟件的地址。它不是物理接口或位置,但它允許您的服務(wù)器能夠使用多個應(yīng)用程序進(jìn)行通信。
防火墻:防火墻是一個程序,決定是否允許進(jìn)入服務(wù)器或外出的流量。防火墻通常通過創(chuàng)建在哪些端口上可接受的流量類型的規(guī)則來工作。阻止服務(wù)器上沒有被特定應(yīng)用程序使用的端口。
NAT:表示網(wǎng)絡(luò)地址轉(zhuǎn)換。它是一種將傳入路由服務(wù)器的請求轉(zhuǎn)換到它在本地網(wǎng)絡(luò)中已知的相關(guān)設(shè)備或服務(wù)器的方法。這通常在物理本地網(wǎng)絡(luò)中實現(xiàn),是一種將通過IP訪問的請求路由到需要的后端服務(wù)器的一種方法。
VPN:就是虛擬專用網(wǎng)。它是通過互聯(lián)網(wǎng)連接獨立的本地網(wǎng)絡(luò),同時保持隱私的一種手段。通常出于安全原因,它把遠(yuǎn)程系統(tǒng)作為本地網(wǎng)絡(luò)上訪問。
上面這些不能窮盡你可能會遇到所有的術(shù)語,此刻我們應(yīng)該了解一些基本的、高層次的概念,這將使我們能夠更好地討論接下來主題。
網(wǎng)絡(luò)層次
雖然網(wǎng)絡(luò)通常被認(rèn)為是主機(jī)之間的水平連接,但是它在整個計算機(jī)或網(wǎng)絡(luò)中以垂直方式分層來實現(xiàn)的。
這意味著,有多個技術(shù)和協(xié)議建立在彼此之上,以使通信更容易地運行。每個連續(xù)的更高層都對原始數(shù)據(jù)做進(jìn)一步抽象,并使它更容易為應(yīng)用程序和用戶所使用。它還允許您以新的方式來利用較低層次,而無需投入時間和精力來開發(fā)處理這些類型的流量的協(xié)議和應(yīng)用程序。
我們用來談?wù)撁總€分層方案的語言會根據(jù)您使用的模型而有很大差異。但是不管用于討論的層次模型是什么,數(shù)據(jù)的流轉(zhuǎn)路徑是相同的。
當(dāng)數(shù)據(jù)從一個機(jī)器發(fā)出時,它按照自頂向下的順序過濾,在最低層傳輸?shù)搅硪慌_機(jī)器,然后通過另一計算機(jī)的層向上傳播,恢復(fù)到原來的數(shù)據(jù)。每一層都有能力在它從相鄰層接收的數(shù)據(jù)周圍添加自己的“包裝器”,這將有助于后面的層決定在數(shù)據(jù)被傳遞時對數(shù)據(jù)做什么。
OSI模型
過去,談?wù)摼W(wǎng)絡(luò)通信的不同層次的一種方法是OSI模型,OSI表示開放系統(tǒng)互連。
此模型定義了七個層次,分別是:
應(yīng)用層:應(yīng)用層是用戶和用戶應(yīng)用最經(jīng)常與之交互的層。網(wǎng)絡(luò)通信就是討論資源的可用性、通信對象以及數(shù)據(jù)同步。
表現(xiàn)層:表現(xiàn)層負(fù)責(zé)映射資源和創(chuàng)建上下文。它用于將低級網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換為應(yīng)用程序期望看到的數(shù)據(jù)。
會話層:會話層是一個連接處理程序。它以持久方式創(chuàng)建、維護(hù)和銷毀節(jié)點之間的連接。
傳輸層:傳輸層負(fù)責(zé)向其上的層傳遞可靠的連接。可靠是指驗證在連接的另一端完整接收到一條數(shù)據(jù)的能力。該層次可以重新發(fā)送已丟棄或損壞的信息,并可以確認(rèn)數(shù)據(jù)是否被遠(yuǎn)程計算機(jī)接收。
網(wǎng)絡(luò)層:網(wǎng)絡(luò)層用于在網(wǎng)絡(luò)上的不同節(jié)點之間路由數(shù)據(jù)。它使用地址來表示向哪臺計算機(jī)發(fā)送信息。該層還可以將較大的消息拆分為較小的塊,以在相對應(yīng)的時候?qū)ζ渲匦陆M裝。
鏈路層:該層次使用現(xiàn)有物理連接,在網(wǎng)絡(luò)上的不同節(jié)點或設(shè)備之間建立和維持可靠鏈路。
物理層:物理層負(fù)責(zé)處理用于建立連接的實際物理設(shè)備。該層涉及管理物理連接的裸軟件以及硬件本身(如以太網(wǎng)等)。
基于純硬件提供的功能,還有其他不同的層次。
TCP/ IP模型
TCP / IP模型通常被稱為因特網(wǎng)協(xié)議組,是更簡單并且已被廣泛采用的另一分層模型。它定義了四個單獨的層,其中一些與OSI模型重疊:
應(yīng)用層:在此模型中,應(yīng)用層負(fù)責(zé)在應(yīng)用程序之間創(chuàng)建和傳輸用戶數(shù)據(jù)。應(yīng)用程序可以位于遠(yuǎn)程系統(tǒng)上,并且對應(yīng)本地終端用戶操作。
這里的通信發(fā)生在不同個體之間。
傳輸層:傳輸層負(fù)責(zé)進(jìn)程之間的通信。這種層次的網(wǎng)絡(luò)利用端口來區(qū)分不同的服務(wù)。根據(jù)你所使用的協(xié)議類型,它可以建立不可靠或可靠的連接。
網(wǎng)絡(luò)層:這里的網(wǎng)絡(luò)層用于在網(wǎng)絡(luò)中從節(jié)點到節(jié)點傳輸數(shù)據(jù)。其只關(guān)心連接的端點,不關(guān)心如何從一個端點到另一個端點。在該層中使用IP地址作為到達(dá)遠(yuǎn)程設(shè)備的尋址方式。
鏈路層:鏈路層實現(xiàn)本地網(wǎng)絡(luò)的實際拓?fù)洌栽试S網(wǎng)絡(luò)層可以被尋址。它在相鄰節(jié)點之間建立連接用來發(fā)送數(shù)據(jù)。
就像你看到的,TCP / IP模型更抽象和流暢,使它更容易實現(xiàn),所以它成為了網(wǎng)絡(luò)層次中的主流實現(xiàn)。
接口
接口是計算機(jī)的網(wǎng)絡(luò)通信點。每個接口都與物理或虛擬網(wǎng)絡(luò)設(shè)備相關(guān)聯(lián)。
通常,您的機(jī)器會為每個以太網(wǎng)或無線互聯(lián)網(wǎng)卡配置網(wǎng)絡(luò)接口。
此外,它還定義了一個名為“回環(huán)”或本地接口的虛擬網(wǎng)絡(luò)接口。這可以用作單個計算機(jī)上的不同應(yīng)用程序和不同進(jìn)程之間通信。在許多工具中的“l(fā)o”接口就是一個例子。
很多時候,管理員會為外網(wǎng)服務(wù)配置一個接口,本地網(wǎng)絡(luò)和私有網(wǎng)絡(luò)配置一個接口。
協(xié)議
網(wǎng)絡(luò)通過將許多不同的協(xié)議搭載在彼此之上來工作。用這種方式,就可以使用彼此封裝的多個協(xié)議來傳輸一條數(shù)據(jù)。
我們將討論一些你可能會遇到的更常見的協(xié)議,并解釋它們的差異,以及說明它們所做處理的上下文。這里將從較低網(wǎng)絡(luò)層次上實現(xiàn)的協(xié)議開始,并逐步向上延伸到更高抽象的協(xié)議。
媒體訪問控制
媒體訪問控制是用于區(qū)分特定設(shè)備的通信協(xié)議。每個設(shè)備應(yīng)該在制造過程中獲得唯一的MAC地址,以區(qū)別于互聯(lián)網(wǎng)上的其他設(shè)備。
通過MAC地址可以唯一地指向某臺設(shè)備,即使你在操作期間通過軟件更改該設(shè)備的名稱。
媒體訪問控制是鏈路層上經(jīng)常使用的協(xié)議之一。
IP
IP協(xié)議是互聯(lián)網(wǎng)工作的基本協(xié)議之一。TCP / IP地址在每個網(wǎng)絡(luò)上都是唯一的,可以用它來找到網(wǎng)絡(luò)的特定機(jī)器。它在TCP / IP模型的網(wǎng)絡(luò)層實現(xiàn)。
網(wǎng)絡(luò)可以鏈接在一起,但是網(wǎng)絡(luò)流量必須在跨越網(wǎng)絡(luò)邊界時有對應(yīng)的路由信息。此協(xié)議假定網(wǎng)絡(luò)是不可靠,有多條路徑可以到達(dá)到同一目的地,并且不同路徑之間可以動態(tài)改變。
該協(xié)議有許多不同的實現(xiàn)。今天最常見的實現(xiàn)是IPv4,但是由于可用的IPv4地址越來越少,加之協(xié)議能力的改進(jìn),IPv6已越來越流行。
ICMP
ICMP表示互聯(lián)網(wǎng)控制消息協(xié)議。它通過在設(shè)備之間發(fā)送消息以了解是否可用或者錯誤信息。這些數(shù)據(jù)包用于各種網(wǎng)絡(luò)診斷工具,如ping和traceroute。
通常,當(dāng)某個不同的包出現(xiàn)問題會發(fā)送ICMP包,它們被用作網(wǎng)絡(luò)通信中的反饋機(jī)制。
TCP
TCP表示傳輸控制協(xié)議。它在TCP / IP模型的傳輸層實現(xiàn),用于建立可靠的連接。
TCP是一種協(xié)議,它把數(shù)據(jù)封裝成數(shù)據(jù)包,然后將這些數(shù)據(jù)包通過底層方法傳輸?shù)竭h(yuǎn)程終端。在另一端,它還可以檢查錯誤,控制請求某些部分重新發(fā)送,并重新組裝成一個邏輯塊信息發(fā)送到應(yīng)用層。
協(xié)議在建立一個連接開始數(shù)據(jù)傳輸之前,使用一個叫做“三次握手”的系統(tǒng)。這是一種保證兩端的通信請求被接受并達(dá)成一致以及確保數(shù)據(jù)可靠性的方法。
數(shù)據(jù)發(fā)送后,使用一個類似的“四次握手”來銷毀連接。
TCP協(xié)議是許多互聯(lián)網(wǎng)最受歡迎的用法的選擇,包括WWW、FTP、SSH和電子郵件。可以肯定地說,互聯(lián)網(wǎng)沒有TCP,就沒有我們的今天。
UDP
UDP表示用戶數(shù)據(jù)報協(xié)議。這是一個很受歡迎的TCP的伙伴協(xié)議,也在傳輸層實現(xiàn)。
TCP和UDP最主要的區(qū)別是:UDP提供不可靠的數(shù)據(jù)傳輸,它不確保數(shù)據(jù)已經(jīng)被另一端接收。這聽起來不是好事,對許多場景,這是極其重要的功能。因為它不需要等待確認(rèn)數(shù)據(jù)已接收和被迫重新發(fā)送數(shù)據(jù),UDP要比TCP快得多。它與遠(yuǎn)程主機(jī)之間不建立連接,它只是發(fā)送數(shù)據(jù),但不關(guān)心數(shù)據(jù)有沒有被接受。
它是一個簡單的事務(wù),它對于像網(wǎng)絡(luò)資源查詢等簡單的通信場景是非常有用的。它也不維護(hù)狀態(tài),所以對于把數(shù)據(jù)從一臺機(jī)器發(fā)送到許多實時客戶端的場景非常合適。這使它非常適合于那些不能延遲的像網(wǎng)絡(luò)電話,游戲和其他應(yīng)用程序的場景。
HTTP
HTTP表示超文本傳輸協(xié)議。這是一個定義在應(yīng)用層的協(xié)議,它構(gòu)成了網(wǎng)絡(luò)通信的基礎(chǔ)。HTTP定義了大量的函數(shù),用來幫你告訴遠(yuǎn)程系統(tǒng)你的請求。例如GET、POST和DELETE對被請求的數(shù)據(jù)以不同的方式進(jìn)行交互。
FTP
FTP表示文件傳輸協(xié)議。它也位于應(yīng)用層,并提供了將完整文件從一個主機(jī)傳輸?shù)搅硪粋€主機(jī)的方法。它本質(zhì)上是不安全的,因此不推薦用于任何面向外部的網(wǎng)絡(luò),除非它被用于公共的,僅用于下載資源的場景。
DNS
DNS表示域名系統(tǒng)。它是一種應(yīng)用層協(xié)議,用于為互聯(lián)網(wǎng)資源提供人性化的命名機(jī)制。它就是將域名綁定到一個IP地址,使你可以在瀏覽器中通過名稱來訪問你的網(wǎng)站。
SSH
SSH表示安全shell。它是在實現(xiàn)在應(yīng)用層的加密協(xié)議,可以提供安全的方式與遠(yuǎn)程服務(wù)器通信。由于其端到端加密和無處不在,許多其他技術(shù)基于它構(gòu)建。
有許多我們沒有覆蓋的其他協(xié)議同樣重要。然而,這應(yīng)該給了一個很好的概述,關(guān)于使得互聯(lián)網(wǎng)和網(wǎng)絡(luò)成為可能的基礎(chǔ)技術(shù)。
此刻,您應(yīng)該熟悉了一些基本的網(wǎng)絡(luò)術(shù)語,并且了解了不同的組件是如何實現(xiàn)相互通信。這將有助于您理解其他文章和您的系統(tǒng)中的文檔。