【計算機網路筆記】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。

流程:

  1. 每週,Ann 會去收集她兄弟姊妹要寄出的信。
  2. Ann 把這些信交給每天來門口的郵差。
  3. 郵差透過郵政系統把信送到東岸的房子。
  4. Bill 在東岸收到一疊信,負責把信分發給他的兄弟姊妹(收信人)。

上述這樣的比喻可以製成以下的角色對照表:

比喻中的角色電腦網路術語說明
家庭主機(Hosts)如同端系統(End Systems)。
孩子們行程(Processes)正在執行的應用程式,通訊的真正端點。
郵件(Letters)應用層訊息應用程式要傳送的資料內容。
Ann 與 Bill傳輸層協定負責在「家裡」收集與分發郵件(多工與解多工)。
郵政服務(含郵差)網路層協定負責把信從這棟房子送到那棟房子。

於該比喻中,郵政服務(網路層)只負責把信從「西岸的房子」送到「東岸的房子」,郵差完全不認識家中那 12 個小孩,他只認得房子地址。

Ann 和 Bill(傳輸層)負責最後一哩路,確保郵件是交給 “Alice” 而不是 “Bob”,此為 Host-to-HostProcess-to-Process 的區別。

服務的限制與增強

既然傳輸層是建立在網路層之上,傳輸層的能力自然會受到底層的影響,在此有兩個重要的動態關係:

  1. 受限於底層
    • 如果底層網路很爛,傳輸層通常無法改變物理現實。
    • 延遲(Delay)與頻寬(Bandwidth):
      • 如果郵差(網路層)送信就是要三天,或者郵務車一次只能載一袋信,Ann 和 Bill(傳輸層)再怎麼努力,也無法保證郵件能「瞬間到達」或「無限量傳送」。
    • 結論:若網路層無法提供延遲或頻寬的保證,傳輸層通常也無法提供這些保證。
  2. 增強底層服務
    • 即使底層網路很爛,傳輸層可以透過「軟體機制」來提供更好的服務。
    • 可靠性(Reliability):
      • 情境:如果郵政服務不可靠,郵件可能會在途中遺失。
      • 對策:Ann 和 Bill 雙方可以約定好說:「如果你收到信,要回信告訴我,如果你沒回信,我就重新寄一份影本」。
      • 技術:即使網路層(IP)是不可靠的(會掉封包),傳輸層(如 TCP)可以透過確認回應(ACKs)和重傳(Retransmission)機制,為應用程式提供可靠資料傳輸。
    • 安全性(Security):
      • 情境:郵差可能會偷看郵件內容。
      • 對策:Ann 和 Bill 可以在寄信前用暗號(加密)寫信,收到後再解碼。
      • 技術:即使網路層沒有加密,傳輸層(如 TLS/SSL)可以提供加密,確保資料不被竊聽。

3.1.2 Overview of the Transport Layer in the Internet(網際網路傳輸層的概觀)

雖然在前面章節提過蠻多次的了,但還是要再提一次,在網際網路的傳輸層中,提供了兩個協定給應用程式開發者選擇:

  1. UDP(User Datagram Protocol):中譯使用者資料包協定,它提供的是不可靠(Unreliable)、非連線導向(Connectionless)的服務。
  2. 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 唯二提供的功能:

  1. 多工與解多工(Multiplexing and Demultiplexing):
    • 將 IP 的「主機到主機」交付服務,擴展為「行程到行程」的交付服務。
    • 簡單來說,就是確保收到的資料能送到正確的應用程式(透過 Port Number)。
  2. 錯誤檢查(Integrity Checking):在 Segment 標頭中包含錯誤偵測欄位(Checksum),用來檢查資料在傳輸過程中是否損毀。

UDP 與 TCP 的深度比較

UDP 是「除了基本功能什麼都不加」,TCP 則為「透過複雜機制把不可靠變可靠」。

  • UDP(User Datagram Protocol)
    • 設計哲學:極簡主義。
    • 功能:除了多工/解多工和錯誤檢查外,它沒有對 IP 增加任何功能。
    • 特性:
      • 不可靠:資料可能遺失。
      • 無流量控制:應用程式想送多快就送多快,對某些即時應用(如語音通話)很有吸引力,但也可能導致網路癱瘓。
  • TCP(Transmission Control Protocol)
    • 設計哲學:在不可靠的基礎上提供可靠服務,並維護網路整體的健康。
    • 功能:
      1. 可靠資料傳輸:透過
        • 流量控制(Flow Control)
        • 序號(Sequence Numbers)
        • 確認回應(Acknowledgment)
        • 計時器(Timers)等等
        • 確保資料正確、依序地從傳送端行程送到接收端行程。
      2. 壅塞控制(Congestion Control):
        • 這不是為了單一連線的利益,而是為了網際網路整體的利益。
        • 當 TCP 偵測到網路塞車時,會自動降低傳送速率,讓每條連線公平地分享頻寬,避免網路崩潰。

兩者比較表:

比較項目UDPTCP
服務類型非連線導向(Connectionless)連線導向(Connection-oriented)
可靠性不可靠(Unreliable)可靠(Reliable)
功能僅提供多工/解多工、錯誤檢查可靠傳輸、壅塞控制、流量控制
傳輸速率不受限受壅塞控制調節
複雜度高(需要維護連線狀態、計時器等)

總整理

傳輸層位於應用層之下、網路層之上,主要負責端系統(End Systems)上的行程通訊。

  1. 傳輸層 vs. 網路層:
    • 網路層(Network Layer):提供主機到主機(Host-to-Host)的邏輯通訊,只負責把封包送到正確的 IP 地址(房子)。
    • 傳輸層(Transport Layer):提供行程到行程(Process-to-Process)的邏輯通訊,負責把資料交給正確的應用程式。
  2. 家庭郵件比喻:
    • 家庭(Hosts):端系統。
    • 孩子(Processes):應用程式行程。
    • 郵件(Application Messages):資料內容。
    • 收發者 Ann/Bill(Transport Layer):負責多工與解多工。
    • 郵政服務(Network Layer):負責房屋間的郵件運送。
  3. 服務的限制與增強:
    • 無法改變的限制:若網路層頻寬不足或延遲高,傳輸層無法提供即時或無限量保證。
    • 可以增強的服務:
      • 可靠性(Reliability):透過確認(ACK)與重傳機制,在不可靠的 IP 上建立可靠傳輸。
      • 安全性(Security):透過加密技術(TLS/SSL 等)確保資料不被竊聽。
  4. 網際網路傳輸層概觀:
    • 封包術語定義:
      • 區段(Segment):傳輸層的封包單位。
      • 資料包(Datagram):網路層的封包單位。
      • 盡力而為的投遞服務(Best-effort Delivery):IP 的特性,盡力送達但不保證順序、不丟包。
  5. UDP vs. TCP:

所有傳輸層協定都必須具備的兩項基本功能:多工/解多工與錯誤檢查。

比較項目UDPTCP
服務類型非連線導向(Connectionless)連線導向(Connection-oriented)
可靠性不可靠(Unreliable)可靠(Reliable)
功能僅提供多工/解多工、錯誤檢查可靠傳輸、壅塞控制、流量控制
傳輸速率不受限受壅塞控制調節
複雜度高(需要維護連線狀態、計時器等)