---
# System prepended metadata

title: Computer Networking — 3. Transport Layer
tags: [Computer Networking]

---

# Computer Networking — 3. Transport Layer

contributed by <[`kaeteyaruyo`](https://github.com/kaeteyaruyo)>

###### tags: `Computer Networking`

位於應用層與網路層的中間，傳輸層是網路分層架構當中相當核心的一個部份。它負責為執行在不同主機上的應用程式提供直接傳輸服務，扮演著相當關鍵性的角色。在本章中為了教學需要，我們將會輪流探討傳輸層協定的原理原則以及現有協定的實作細節。跟之前一樣，我們會特別強調網際網路所使用的通訊協定，也就是 TCP 和 UDP 傳輸層協定。

首先我們會先來討論傳輸層和網路層兩者之間的關係，為了讓我們接下來能夠檢驗傳輸層的第一個重要功能 —— 把網路層「在兩個終端系統之間進行傳輸」的服務擴大成「在兩個跑在不同終端系統上的應用程式之間進行傳輸」。我們將會在介紹網際網路的無狀態傳輸協定，也就是 UDP 時，展示這個功能是怎麼實現的。

接著我們會再回到原理的探討，思考一個電腦網路傳輸最基本的問題 —— 兩個網路實體要怎麼在有可能會造成資料遺失或損壞的傳輸媒介上，可靠地傳遞資料呢？在看過一系列愈來愈複雜（也愈來愈真實！）的情境之後，我們就能掌握一系列現有的傳輸協定用來解決這個問題的技巧。然後我們就會看到這些原則是怎麼被融入 TCP，這個網際網路的連接導向傳輸協定當中的。

再來我們會思考第二個也很重要的網路連網的基本問題 —— 也就是如何控制傳輸速率，以避免網路的壅塞或是解決壅塞的狀態。我們會探討壅塞的成因是什麼，以及有什麼後果，最後會介紹最常見的壅塞控制技術。在徹底了解壅塞控制這個議題後，我們就會來研究 TCP 是怎麼進行壅塞控制的。

----

[<< 2.8 Summary](https://hackmd.io/@kaeteyaruyo/computer-networking-2-8) | [目錄](https://hackmd.io/@kaeteyaruyo/computer-networking-index) | [3.1 Introduction and Transport-Layer Services >>](https://hackmd.io/@kaeteyaruyo/computer-networking-3-1)
