實現不同網絡之間的數據傳輸。它進一步將網段或數據報分解成更小的數據包,并使用 IP 地址找到通往最終目的地的最佳路由。這一過程被稱為路由選擇。
我們為什么需要網絡協議來傳輸數據?
連接互聯網的各種設備需要用它們能理解的語言進行通信。各種計算機系統使用 OSI(Open Systems Interconnectio)模型規定的標準相互通信。
OSI 模型有七個抽象層,每個層都有不同的職責和協議。
下圖顯示了 OSI 模型中每一層的功能。每個中間層都為其上層提供功能,并由其下層提供服務。
圖片
01 應用層
應用層最接近終端用戶。大多數應用程序都位于這一層。我們從后端服務器請求數據,無需了解數據傳輸的具體細節。這一層的協議包括 HTTP、SMTP、FTP、DNS 等。
02 表現層
這一層處理數據編碼、加密和壓縮,為應用層準備數據。例如,HTTPS 利用 TLS 實現客戶端與服務器之間的安全通信。
03 會話層
該層用于打開和關閉兩個設備之間的通信。如果數據量較大,會話層就會設置檢查點,避免從頭開始重新發送。
04 傳輸層
該層處理兩個設備之間的端到端通信。它在發送方將數據分解成段,然后在接收方重新組裝。這一層有流量控制,以防止擁塞。這一層的主要協議是 TCP 和 UDP。
05 網絡層
這一層實現不同網絡之間的數據傳輸。它進一步將網段或數據報分解成更小的數據包,并使用 IP 地址找到通往最終目的地的最佳路由。這一過程被稱為路由選擇。
06 數據鏈路層
這一層允許在同一網絡的設備之間傳輸數據。數據包被分解成幀,這些幀被限制在局域網內。
07 物理層
這一層通過電纜和交換機發送比特流,因此與設備之間的物理連接密切相關。
既然我們已經了解了每一層的職責,那就讓我們來總結一下圖中的數據傳輸過程。這就是所謂的封裝(encapsulation)和解封裝(decapsulation)。
封裝是指在數據向目的地傳輸的過程中為數據添加報頭(header)。解封裝會移除這些報頭,以獲取原始數據。
- 步驟 1:當設備 A 使用 HTTP 通過網絡向設備 B 發送數據時,最初會在應用層添加一個 HTTP 報頭。
- 步驟 2:在數據中添加 TCP 或 UDP 報頭。它在傳輸層被封裝成 TCP segments。報頭包含源端口、目的端口和序列號。
- 步驟 3:在網絡層用 IP 報頭對這些段落進行封裝。IP 報頭包含源 IP 地址和目的 IP 地址。
- 步驟 4:在數據鏈路層為 IP 數據報添加 mac 報頭,其中包含源 MAC 地址和目的 MAC 地址。
- 第 5 步:封裝幀被發送到物理層,并作為比特流在網絡上發送。
- 步驟 6-10:設備 B 從網絡接收到比特流后,會啟動解封裝過程,這與封裝過程相反。報頭逐層去除,直到設備 B 可以訪問原始數據。
請注意,每一層都使用報頭來處理指令,而不需要解封上一層的數據。
TCP/IP 模型
與理論上的 OSI 模型相比,TCP/IP 模型提供了一個更實用的框架。它包含四個關鍵層:
- 應用層 支持 HTTP、SMTP 等最終用戶進程
- 傳輸層 處理主機到主機的通信(TCP、UDP)
- 網絡層 尋址和路由數據包(IP 協議)
- 鏈路層 通過網絡的物理電線、電纜或無線信道移動比特
這一模型更貼近現實世界的互聯網通信,將七個 OSI 層壓縮為這四個關鍵層。