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