網絡協議驅動互聯網
在分布式系統中,數據通過各種網絡協議在網絡中傳輸。作為應用程序開發者,這往往在問題出現之前似乎是一個黑盒子。
在本文中,我們將解釋常見網絡協議的工作原理,它們在分布式系統中的應用以及我們如何解決常見問題。
讓我們首先了解網絡協議的使用情況。
互聯網和OSI模型
互聯網連接了世界各地的各種計算設備。我們可以從下面的圖表中大致了解。假設我們從智能手機或筆記本電腦訪問一個網站,它連接到一個移動網絡基站。基站連接到路由器,然后通過互聯網服務提供商(ISP)訪問互聯網。數據包被轉發到本地ISP,然后到達托管網站的網絡。一旦數據包到達公司網絡,它們經過鏈路層交換機并到達適當的服務器。
路由器和鏈路層交換機都是數據包交換機,它們的工作是轉發數據包。區別在于,路由器通常用于網絡核心連接多個網絡,而鏈路層交換機用于訪問網絡(物理連接終端系統和邊緣路由器的網絡),在單個網絡中連接多個設備。
為什么我們需要網絡協議?互聯網連接的設備需要使用它們可以理解的語言進行通信。各種計算機系統使用OSI(開放系統互連)模型規定的標準相互通信。OSI模型有七個抽象層,每個層都有獨特的職責和協議。
下圖顯示了OSI模型中各層的作用。每個中間層為上面的層提供一類功能,并由下面的層提供服務。
應用層
應用層最接近最終用戶。大多數應用程序位于此層。我們向后端服務器請求數據,無需了解數據傳輸的具體細節。此層的協議包括HTTP、SMTP、FTP、DNS等,我們稍后會詳細介紹它們。
表示層
該層處理數據編碼、加密和壓縮,為應用層準備數據。例如,HTTPS使用TLS(傳輸層安全)在客戶端和服務器之間進行安全通信。
會話層
該層在兩個設備之間建立和關閉通信。如果數據量較大,會話層設置檢查點以避免從頭重新發送。
傳輸層
該層處理兩個設備之間的端到端通信。它在發送端將數據分割為段,并在接收端重新組裝它們。此層具有流量控制以防止擁塞。在該層中的關鍵協議是TCP和UDP,我們稍后會討論它們。
網絡層
該層實現不同網絡之間的數據傳輸。它將段或數據報進一步分割為較小的數據包,并使用IP地址找到到達目標的最佳路由。這個過程稱為路由。
數據鏈路層
該層允許在同一網絡上的設備之間進行數據傳輸。數據包被分割為幀,并限制在本地區域網絡中。
物理層
該層通過電纜和交換機發送比特流,因此與設備之間的物理連接密切相關。
與OSI模型相比,TCP/IP模型只有4層。在討論層次結構時,重要的是要指定上下文。
現在我們了解了每個層的職責,讓我們通過以下圖表總結數據傳輸過程。這被稱為封裝和解封裝。封裝是在數據朝向目的地的過程中添加頭部信息。解封裝則是去除這些頭部以恢復原始數據。
- 步驟1:當設備A使用HTTP通過網絡向設備B發送數據時,應用層會添加HTTP頭部。
- 步驟2:在傳輸層,TCP或UDP頭部會添加到數據中。數據會在傳輸層被封裝成TCP段。頭部包含源端口、目標端口和序列號。
- 步驟3:接下來,段會在網絡層被封裝成IP頭部。IP頭部包含源IP地址和目標IP地址。
- 步驟4:在數據鏈路層,MAC頭部會添加到IP數據報中,其中包含源MAC地址和目標MAC地址。
- 步驟5:封裝后的幀會發送到物理層,并以比特流的形式通過網絡發送。
- 步驟6-10:當設備B從網絡接收到比特流時,每一層都會解封裝數據,并將其傳遞到相應的層。