小菜學網絡之TCP/IP協議棧
本文轉載自微信公眾號「小菜學編程」,作者fasionchan。轉載本文請聯系小菜學編程公眾號。
上一小節,我們學習了 OSI 參考模型,見識到 分層 設計思想在通信系統中的重要作用。那么,現行的通信協議是不是按照 OSI 模型進行分層呢?各層的重要協議都有哪些呢?
目前使用最廣泛的通信協議是 TCP/IP 系列協議,但它并不是嚴格按照 OSI 參考模型設計的。實際上,TCP/IP 早在 OSI 參考模型提出前就開始研發,并逐步發展至今。
TCP/IP 協議棧也是分層設計的,但與 OSI 不同,它只分為 4 層:
網絡訪問層
網絡訪問層 ( network access layer )負責管理物理介質,并提供將數據從當前節點傳輸到下一節點的能力。因此,網絡訪問層的功能相當于 OSI 中的 物理層 和 數據鏈路層 。
不同的通信介質,有不同的接入設備,采用的協議也不同,常見的有:
- Ethernet ,以太網協議;
- PPP ,點對點協議;
- DSL ,用戶數字線路;
- etc
以 以太網卡 為例,它的通信介質是電纜,而通信協議則是 以太網協議 ,協議傳輸單元是 以太網幀 。
網卡電路直接處理電信號,并完成電信號與比特間的轉化。這相當于 OSI 物理層的功能,但網卡不會將物理層功能直接呈現給上層。
實際上,網卡將數據鏈路層中 網絡尋址 和 錯誤偵測 的功能也一并實現了,向上層提供以太網幀收發能力。系統可以調用網卡驅動發送以太網幀;網卡接到以太網幀后,也通過驅動程序提交給系統來處理。
總而言之,網絡訪問層以 幀 為通信單元,負責將數據發送到同一網絡(局域網)中的另一節點。
- 以 幀 為通信單元;
- 實現局域網通信;
網絡互連層
網絡互連層( internet layer )在網絡訪問層提供的局域網通信能力之上,實現網際通信能力。該層作用相當于 OSI 模型中的網絡層,同樣以 包 為通信單元,負責路徑選擇和數據包轉發。
TCP/IP 協議棧中的 IP 協議就是該層最核心的協議,它以 IP 包為通信單元。采用 IP 協議進行通信的主機,需要分配一個地址,這就是 IP 地址。IP 包頭部的源地址和目的地址字段,用來標注 IP 包的來源和目的地。
網絡互連層利用網絡訪問層的局域網通信能力,將 IP 包傳輸到下一節點。經過若干次轉發,IP 包最終被送達目標主機。更多細節,我們將在后續章節中揭曉。
- 以 包 為通信單元;
- 實現網際通信(點到點);
傳輸層
傳輸層( transport layer )則在網絡互連層點到點傳輸能力基礎上,實現端到端的進程間通信。該層相當于 OSI 模型中的傳輸層,同樣以 段 為通信單元,負責根據段中的端口號將數據送至目標進程。
最簡單的傳輸層協議應該是 UDP 協議,它非常簡單,只是引入了一個端口號。當一個 UDP 段搭載在 IP 包中送達目標主機后,系統根據段中的端口后,將數據提高給對應的進程。
IP 只是一種盡力而為的傳輸協議,并不完全可靠:一方面, IP 包在傳輸的過程中可能經過不同路由,達到目標主機時次序可能會亂;另一方面,中間路由可能因網絡擁塞而丟包。
為了保證數據傳輸的可靠性,協傳輸層還提供了 TCP 協議。除了端口號,TCP 協議還實現了數據序號、接收確認,以及超時重傳機制,從而為進程提供可靠、有序的數據流。
TCP 協議是傳輸層的核心協議,應用范圍也非常廣泛,因而是網絡學習中的重點。TCP 協議的實現非常復雜,細節將在后續章節展開介紹,現在有個初步認識即可。
- 以 分組 為通信單元;
- 實現進程間通信(端到端);
應用層
應用層( application layer )定義具體網絡應用的通信邏輯,讓應用進程間的協作成為可能。
傳輸層為進程提供了一般化的數據傳輸能力,但對數據本身未作任何規定。因此,實現應用的多個協作進程,需要一種協議,以對數據達成統一認識。
以 Web 應用舉例,瀏覽器進程作為客戶端,必須按照 HTTP 協議的規定,向 Web 服務進程發起請求,才能為服務器所理解;同理,Web 服務器處理請求后,必須按照 HTTP 協議的規定,想客戶端回復響應。
HTTP 協議對 Web 應用進程來說,就是它們彼此間交流的共同語言。由于網絡應用極為豐富,應用協議種類也不在少數,我們常見的有以下這些:
- HTTP
- HTTPS
- FTP
- SMTP(郵件發送)
- etc
小結
本節介紹了目前最流行的 TCP/IP 協議棧,它同樣采用分層設計思路,與 OSI 分層略有差別,但大同小異。TCP/IP 模型與 OSI 模型的對應關系,以及各層的主要協議,列舉如下:
后續我們將以該圖為指引,自底向上,逐層深入學習。敬請期待!