【計算機網路筆記】3.1 Introduction and Transport-Layer Services
【計算機網路筆記】3.1 Introduction and Transport-Layer Services
Hello Guys, I’m LukeTseng. 歡迎你也感謝你點入本篇文章,本系列主要讀本為《Computer Networking: A Top-Down Approach, 8th Edition》,就是計算機網路的聖經,會製作該系列也主要因為修課上會用到。若你喜歡本系列或本文,不妨動動你的手指,為這篇文章按下一顆愛心吧,或是追蹤我的個人公開頁也 Ok。
傳輸層簡介
傳輸層(Transport Layer)位於應用層(Application Layer)之下,網路層(Network Layer)之上。
傳輸層的核心功能是為執行在不同主機(Host)上的應用程式行程(Application Processes)之間提供邏輯通訊(Logical Communication)。
所謂邏輯通訊:從應用程式的角度看,好像兩台主機是直接連在一起的,儘管中間隔著無數的路由器和連結。
3.1.1 Relationship Between Transport and Network Layers(傳輸層與網路層的關係)
通訊的對象是誰?
在協定堆疊(Protocol Stack)中,傳輸層位於網路層之上。
兩者皆提供邏輯通訊,但對象截然不同:
- 網路層(Network Layer):提供主機到主機(Host-to-Host)的邏輯通訊。
- 網路層的工作是將封包從該台電腦的網卡送到那台電腦的網卡。
- 它只認得 IP 位址(像是房子的地址),不認得是哪個程式要用這些資料。
- 傳輸層(Transport Layer):提供行程到行程(Process-to-Process)的邏輯通訊。
- 傳輸層的工作是接手網路層送來的資料,精確地分發給正在執行的應用程式(例如 Chrome、Line、LOL 等等)。
重要觀念釐清:
- 傳輸層協定只執行在端系統(End Systems)上。
- 網路中間的路由器(Routers)只負責網路層的工作(轉發 IP 封包),通常不會檢查傳輸層的標頭資訊。就像郵局的轉運站只看信封上的地址,不會拆開信來看裡面是寫給誰的。
比喻:家庭郵件
書中以家庭郵件的方式做比喻,情境設定如下:
想像有兩個家庭,一個在美國東岸,一個在西岸:
- 每個家庭有 12 個孩子(堂表兄弟姊妹)。
- 他們每週都會寫信給對方家庭的孩子。
- 每個家庭有一位負責收發郵件的代表:東岸是 Bill,西岸是 Ann。
流程:
- 每週,Ann 會去收集她兄弟姊妹要寄出的信。
- Ann 把這些信交給每天來門口的郵差。
- 郵差透過郵政系統把信送到東岸的房子。
- Bill 在東岸收到一疊信,負責把信分發給他的兄弟姊妹(收信人)。
上述這樣的比喻可以製成以下的角色對照表:
| 比喻中的角色 | 電腦網路術語 | 說明 |
|---|---|---|
| 家庭 | 主機(Hosts) | 如同端系統(End Systems)。 |
| 孩子們 | 行程(Processes) | 正在執行的應用程式,通訊的真正端點。 |
| 郵件(Letters) | 應用層訊息 | 應用程式要傳送的資料內容。 |
| Ann 與 Bill | 傳輸層協定 | 負責在「家裡」收集與分發郵件(多工與解多工)。 |
| 郵政服務(含郵差) | 網路層協定 | 負責把信從這棟房子送到那棟房子。 |
於該比喻中,郵政服務(網路層)只負責把信從「西岸的房子」送到「東岸的房子」,郵差完全不認識家中那 12 個小孩,他只認得房子地址。
Ann 和 Bill(傳輸層)負責最後一哩路,確保郵件是交給 “Alice” 而不是 “Bob”,此為 Host-to-Host 與 Process-to-Process 的區別。
服務的限制與增強
既然傳輸層是建立在網路層之上,傳輸層的能力自然會受到底層的影響,在此有兩個重要的動態關係:
- 受限於底層
- 如果底層網路很爛,傳輸層通常無法改變物理現實。
- 延遲(Delay)與頻寬(Bandwidth):
- 如果郵差(網路層)送信就是要三天,或者郵務車一次只能載一袋信,Ann 和 Bill(傳輸層)再怎麼努力,也無法保證郵件能「瞬間到達」或「無限量傳送」。
- 結論:若網路層無法提供延遲或頻寬的保證,傳輸層通常也無法提供這些保證。
- 增強底層服務
- 即使底層網路很爛,傳輸層可以透過「軟體機制」來提供更好的服務。
- 可靠性(Reliability):
- 情境:如果郵政服務不可靠,郵件可能會在途中遺失。
- 對策:Ann 和 Bill 雙方可以約定好說:「如果你收到信,要回信告訴我,如果你沒回信,我就重新寄一份影本」。
- 技術:即使網路層(IP)是不可靠的(會掉封包),傳輸層(如 TCP)可以透過確認回應(ACKs)和重傳(Retransmission)機制,為應用程式提供可靠資料傳輸。
- 安全性(Security):
- 情境:郵差可能會偷看郵件內容。
- 對策:Ann 和 Bill 可以在寄信前用暗號(加密)寫信,收到後再解碼。
- 技術:即使網路層沒有加密,傳輸層(如 TLS/SSL)可以提供加密,確保資料不被竊聽。
3.1.2 Overview of the Transport Layer in the Internet(網際網路傳輸層的概觀)
雖然在前面章節提過蠻多次的了,但還是要再提一次,在網際網路的傳輸層中,提供了兩個協定給應用程式開發者選擇:
- UDP(User Datagram Protocol):中譯使用者資料包協定,它提供的是不可靠(Unreliable)、非連線導向(Connectionless)的服務。
- TCP(Transmission Control Protocol):中譯傳輸控制協定,它提供的是可靠(Reliable)、連線導向(Connection-oriented)的服務。
術語解析
- 區段(Segment):指傳輸層(Transport Layer)的封包。
- 註:雖有些技術文件(RFC)中,UDP 的封包有時被稱為 Datagram(資料包),但為了清楚區分層級,則統一將 TCP 和 UDP 的封包都稱為 Segment。
- 資料包(Datagram):指網路層(Network Layer)的封包。
- IP 協定的資料單位,Segment 會被封裝在 Datagram 裡面傳送。
- 盡力而為的投遞服務(Best-effort Delivery Service):IP 協定的服務模型,意思是 IP 會盡最大的努力把資料送到目的地,但不做任何保證。它不保證送達、不保證順序、也不保證資料內容正確。
IP 協定服務模型(The IP Service Model)
IP 是網際網路的網路層協定,其特點為:
- 邏輯通訊:提供主機(Host)之間的邏輯連接。
- 不可靠(Unreliable):IP Datagram 可能會丟失、亂序、或者內容損毀。
- 定址(Addressing):每台主機都有一個 IP 位址(IP Address)。
此為 TCP 和 UDP 的起點,它們兩個的任務就是要把這個「不可靠的主機對主機」服務,擴展成「應用行程對應用行程」的服務。
傳輸層的最基本責任
無論 TCP 或 UDP,它們都必須提供兩個最基本的功能,這也是 UDP 唯二提供的功能:
- 多工與解多工(Multiplexing and Demultiplexing):
- 將 IP 的「主機到主機」交付服務,擴展為「行程到行程」的交付服務。
- 簡單來說,就是確保收到的資料能送到正確的應用程式(透過 Port Number)。
- 錯誤檢查(Integrity Checking):在 Segment 標頭中包含錯誤偵測欄位(Checksum),用來檢查資料在傳輸過程中是否損毀。
UDP 與 TCP 的深度比較
UDP 是「除了基本功能什麼都不加」,TCP 則為「透過複雜機制把不可靠變可靠」。
- UDP(User Datagram Protocol)
- 設計哲學:極簡主義。
- 功能:除了多工/解多工和錯誤檢查外,它沒有對 IP 增加任何功能。
- 特性:
- 不可靠:資料可能遺失。
- 無流量控制:應用程式想送多快就送多快,對某些即時應用(如語音通話)很有吸引力,但也可能導致網路癱瘓。
- TCP(Transmission Control Protocol)
- 設計哲學:在不可靠的基礎上提供可靠服務,並維護網路整體的健康。
- 功能:
- 可靠資料傳輸:透過
- 流量控制(Flow Control)
- 序號(Sequence Numbers)
- 確認回應(Acknowledgment)
- 計時器(Timers)等等
- 確保資料正確、依序地從傳送端行程送到接收端行程。
- 壅塞控制(Congestion Control):
- 這不是為了單一連線的利益,而是為了網際網路整體的利益。
- 當 TCP 偵測到網路塞車時,會自動降低傳送速率,讓每條連線公平地分享頻寬,避免網路崩潰。
- 可靠資料傳輸:透過
兩者比較表:
| 比較項目 | UDP | TCP |
|---|---|---|
| 服務類型 | 非連線導向(Connectionless) | 連線導向(Connection-oriented) |
| 可靠性 | 不可靠(Unreliable) | 可靠(Reliable) |
| 功能 | 僅提供多工/解多工、錯誤檢查 | 可靠傳輸、壅塞控制、流量控制 |
| 傳輸速率 | 不受限 | 受壅塞控制調節 |
| 複雜度 | 低 | 高(需要維護連線狀態、計時器等) |
總整理
傳輸層位於應用層之下、網路層之上,主要負責端系統(End Systems)上的行程通訊。
- 傳輸層 vs. 網路層:
- 網路層(Network Layer):提供主機到主機(Host-to-Host)的邏輯通訊,只負責把封包送到正確的 IP 地址(房子)。
- 傳輸層(Transport Layer):提供行程到行程(Process-to-Process)的邏輯通訊,負責把資料交給正確的應用程式。
- 家庭郵件比喻:
- 家庭(Hosts):端系統。
- 孩子(Processes):應用程式行程。
- 郵件(Application Messages):資料內容。
- 收發者 Ann/Bill(Transport Layer):負責多工與解多工。
- 郵政服務(Network Layer):負責房屋間的郵件運送。
- 服務的限制與增強:
- 無法改變的限制:若網路層頻寬不足或延遲高,傳輸層無法提供即時或無限量保證。
- 可以增強的服務:
- 可靠性(Reliability):透過確認(ACK)與重傳機制,在不可靠的 IP 上建立可靠傳輸。
- 安全性(Security):透過加密技術(TLS/SSL 等)確保資料不被竊聽。
- 網際網路傳輸層概觀:
- 封包術語定義:
- 區段(Segment):傳輸層的封包單位。
- 資料包(Datagram):網路層的封包單位。
- 盡力而為的投遞服務(Best-effort Delivery):IP 的特性,盡力送達但不保證順序、不丟包。
- 封包術語定義:
- UDP vs. TCP:
所有傳輸層協定都必須具備的兩項基本功能:多工/解多工與錯誤檢查。
| 比較項目 | UDP | TCP |
|---|---|---|
| 服務類型 | 非連線導向(Connectionless) | 連線導向(Connection-oriented) |
| 可靠性 | 不可靠(Unreliable) | 可靠(Reliable) |
| 功能 | 僅提供多工/解多工、錯誤檢查 | 可靠傳輸、壅塞控制、流量控制 |
| 傳輸速率 | 不受限 | 受壅塞控制調節 |
| 複雜度 | 低 | 高(需要維護連線狀態、計時器等) |
