認識 TCP 傳輸控制協定和 UDP 用戶資料包協定

簡介

TCP(通訊控制協定)和 UDP(用戶資料包協定)是網際網路中常見的協定,負責在網際網路將資料從設備傳輸到伺服器。

TCP 和 UDP 都會將資料分割成更小的單元進行傳輸,它們稱為封包,封包中包含發送端和接收端的 IP 位址、各種配置、使用者傳送的實際資料等。

TCP

傳輸控制協定(Transmission Control Protocol,簡稱 TCP)是一種連接導向的、可靠的、基於位元組流的傳輸層通訊協定,在 IETF 的 RFC 793 被規範。

TCP 是網際網路上最常用的協定,這種協定較為可靠,運作方法如下:

  1. TCP 為每個封包分配一個唯一的識別碼和一個序號,這些號碼能讓接收端識別封包的完整性,以及封包的順序。
  2. 當接收端收到封包後,如果順序正確,會向發送端傳送一個確認信號(Acknowledgement),以此確認接收端已經收到封包。
  3. 發送端傳送另一個封包。
  4. 如果封包遺失或發送順序錯誤,接收端會保持沈默,不發送確認信號。這表示發送端需要重新傳送封包。

因為資料是按照順序發送的,有助於流量控制和解決資料壅塞的問題,並容易發現和修復錯誤。因此,經由 TCP 發送的資料能完全到達目的地。即使網路阻塞,傳輸的資料也不會出問題。不過 TCP 也有缺點,發送端和接收端之間有很多往來的通訊,因此建立連線和交換資料需要更多的時間。

UDP

用戶資料包協定(User Datagram Protocol,簡稱 UDP)是一個簡單的以資料包為基礎的傳輸層協定,由 David P. Reed 在 1980 年設計,且在 RFC 768 中被規範。

UDP 不需要唯一識別碼和序號就能完成相同的工作。這種協定以串流方式傳送資料,發送端不會等待接收端的確認信號,會繼續不斷發送封包資料。UDP 幾乎沒有錯誤修正功能,也不在乎封包遺失,因此很容易出錯,但傳輸速度比 TCP 更快。串流媒體、VoIP 語音、網路遊戲等服務經常使用 UDP 協定,這網路應用不太需要可靠性機制,封包遺失不會導致服務中斷。

比較

TCP UDP
可靠性 可靠 不可靠
速度
傳輸方式 封包按順序傳輸 封包以串流方式傳輸
錯誤檢查與修正
壅塞控制
確認 只有檢查碼
適用服務 要求可靠傳輸的服務,例如電子郵件、網頁瀏覽、檔案傳輸 即時服務,例如串流媒體、網路電話、網路遊戲

參考資料