網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)互聯(lián)網(wǎng)
在分布式系統(tǒng)中,數(shù)據(jù)通過(guò)各種網(wǎng)絡(luò)協(xié)議在網(wǎng)絡(luò)中傳輸。作為應(yīng)用程序開(kāi)發(fā)者,這往往在問(wèn)題出現(xiàn)之前似乎是一個(gè)黑盒子。
在本文中,我們將解釋常見(jiàn)網(wǎng)絡(luò)協(xié)議的工作原理,它們?cè)诜植际较到y(tǒng)中的應(yīng)用以及我們?nèi)绾谓鉀Q常見(jiàn)問(wèn)題。
讓我們首先了解網(wǎng)絡(luò)協(xié)議的使用情況。

互聯(lián)網(wǎng)和OSI模型
互聯(lián)網(wǎng)連接了世界各地的各種計(jì)算設(shè)備。我們可以從下面的圖表中大致了解。假設(shè)我們從智能手機(jī)或筆記本電腦訪問(wèn)一個(gè)網(wǎng)站,它連接到一個(gè)移動(dòng)網(wǎng)絡(luò)基站?;具B接到路由器,然后通過(guò)互聯(lián)網(wǎng)服務(wù)提供商(ISP)訪問(wèn)互聯(lián)網(wǎng)。數(shù)據(jù)包被轉(zhuǎn)發(fā)到本地ISP,然后到達(dá)托管網(wǎng)站的網(wǎng)絡(luò)。一旦數(shù)據(jù)包到達(dá)公司網(wǎng)絡(luò),它們經(jīng)過(guò)鏈路層交換機(jī)并到達(dá)適當(dāng)?shù)姆?wù)器。

路由器和鏈路層交換機(jī)都是數(shù)據(jù)包交換機(jī),它們的工作是轉(zhuǎn)發(fā)數(shù)據(jù)包。區(qū)別在于,路由器通常用于網(wǎng)絡(luò)核心連接多個(gè)網(wǎng)絡(luò),而鏈路層交換機(jī)用于訪問(wèn)網(wǎng)絡(luò)(物理連接終端系統(tǒng)和邊緣路由器的網(wǎng)絡(luò)),在單個(gè)網(wǎng)絡(luò)中連接多個(gè)設(shè)備。
為什么我們需要網(wǎng)絡(luò)協(xié)議?互聯(lián)網(wǎng)連接的設(shè)備需要使用它們可以理解的語(yǔ)言進(jìn)行通信。各種計(jì)算機(jī)系統(tǒng)使用OSI(開(kāi)放系統(tǒng)互連)模型規(guī)定的標(biāo)準(zhǔn)相互通信。OSI模型有七個(gè)抽象層,每個(gè)層都有獨(dú)特的職責(zé)和協(xié)議。
下圖顯示了OSI模型中各層的作用。每個(gè)中間層為上面的層提供一類(lèi)功能,并由下面的層提供服務(wù)。

應(yīng)用層
應(yīng)用層最接近最終用戶。大多數(shù)應(yīng)用程序位于此層。我們向后端服務(wù)器請(qǐng)求數(shù)據(jù),無(wú)需了解數(shù)據(jù)傳輸?shù)木唧w細(xì)節(jié)。此層的協(xié)議包括HTTP、SMTP、FTP、DNS等,我們稍后會(huì)詳細(xì)介紹它們。
表示層
該層處理數(shù)據(jù)編碼、加密和壓縮,為應(yīng)用層準(zhǔn)備數(shù)據(jù)。例如,HTTPS使用TLS(傳輸層安全)在客戶端和服務(wù)器之間進(jìn)行安全通信。
會(huì)話層
該層在兩個(gè)設(shè)備之間建立和關(guān)閉通信。如果數(shù)據(jù)量較大,會(huì)話層設(shè)置檢查點(diǎn)以避免從頭重新發(fā)送。
傳輸層
該層處理兩個(gè)設(shè)備之間的端到端通信。它在發(fā)送端將數(shù)據(jù)分割為段,并在接收端重新組裝它們。此層具有流量控制以防止擁塞。在該層中的關(guān)鍵協(xié)議是TCP和UDP,我們稍后會(huì)討論它們。
網(wǎng)絡(luò)層
該層實(shí)現(xiàn)不同網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸。它將段或數(shù)據(jù)報(bào)進(jìn)一步分割為較小的數(shù)據(jù)包,并使用IP地址找到到達(dá)目標(biāo)的最佳路由。這個(gè)過(guò)程稱(chēng)為路由。
數(shù)據(jù)鏈路層
該層允許在同一網(wǎng)絡(luò)上的設(shè)備之間進(jìn)行數(shù)據(jù)傳輸。數(shù)據(jù)包被分割為幀,并限制在本地區(qū)域網(wǎng)絡(luò)中。
物理層
該層通過(guò)電纜和交換機(jī)發(fā)送比特流,因此與設(shè)備之間的物理連接密切相關(guān)。
與OSI模型相比,TCP/IP模型只有4層。在討論層次結(jié)構(gòu)時(shí),重要的是要指定上下文。
現(xiàn)在我們了解了每個(gè)層的職責(zé),讓我們通過(guò)以下圖表總結(jié)數(shù)據(jù)傳輸過(guò)程。這被稱(chēng)為封裝和解封裝。封裝是在數(shù)據(jù)朝向目的地的過(guò)程中添加頭部信息。解封裝則是去除這些頭部以恢復(fù)原始數(shù)據(jù)。

- 步驟1:當(dāng)設(shè)備A使用HTTP通過(guò)網(wǎng)絡(luò)向設(shè)備B發(fā)送數(shù)據(jù)時(shí),應(yīng)用層會(huì)添加HTTP頭部。
- 步驟2:在傳輸層,TCP或UDP頭部會(huì)添加到數(shù)據(jù)中。數(shù)據(jù)會(huì)在傳輸層被封裝成TCP段。頭部包含源端口、目標(biāo)端口和序列號(hào)。
- 步驟3:接下來(lái),段會(huì)在網(wǎng)絡(luò)層被封裝成IP頭部。IP頭部包含源IP地址和目標(biāo)IP地址。
- 步驟4:在數(shù)據(jù)鏈路層,MAC頭部會(huì)添加到IP數(shù)據(jù)報(bào)中,其中包含源MAC地址和目標(biāo)MAC地址。
- 步驟5:封裝后的幀會(huì)發(fā)送到物理層,并以比特流的形式通過(guò)網(wǎng)絡(luò)發(fā)送。
- 步驟6-10:當(dāng)設(shè)備B從網(wǎng)絡(luò)接收到比特流時(shí),每一層都會(huì)解封裝數(shù)據(jù),并將其傳遞到相應(yīng)的層。






















