TCP 與 UDP 是什麼?差異為何?

2023年2月10日

💎 加入 E+ 成長計畫 與超過 300+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

TCP 原理

TCP 全名 Transmission Control Protocol 是一種面向連接的協定,它在傳送資料前會建立一個可靠的連接,並且在傳送過程中提供錯誤檢查和重新傳送功能,確保傳送的資料不會丟失。

TCP 原理
TCP 原理

以下流程可以搭配上圖來看,當 Client 向 Server 發送請求前,會經過的程序為:

  1. Client 向 Server 主動傳送一個要求連線封包
  2. Server 接收並確認這個封包後,也會回傳一個相對應的封包給 Client 確認,並等待。
  3. Client 收到 Server 的封包後,就確認了第一步驟發送的封包有被正確接收,如果 Client 也同意與 Server 建立連線,就會再回傳一個確認封包告知 Server。
  4. Server 接收到也確認過後,就完成了三次交握,並建立連線。

TCP 特性

建立完連線後,後續進行傳輸封包都會加上序號,而這個序號可以讓 TCP 擁有可靠的傳輸性,能夠確保:

  • 完整性:接收端能夠確認封包是否傳送完畢,判斷是否有缺漏。
  • 重傳處理:當發現有缺少封包或者逾時,則會在一定的時間內重新傳送。
  • 順序性:封包的序號可以確保接收方在收到封包時,重建順序。

為了能夠提升整體傳輸效率,TCP 並非一個封包一個封包傳送,而是利用滑動窗口的方式來傳輸,每一次傳輸一個窗口的量,藉此來提升傳輸效率。

UDP 原理

UDP 全名為 User Datagram Protocol 是一種面向非連接的協定,它沒有保證傳送資料的可靠性,因此傳送速度更快,通信引擎也更簡單。由下圖所示,傳輸方(Server)不需確認接收方(Client)是否有收到封包,封包也不像 TCP 管理得如此嚴密,也因為少了一些確認機制,不僅表頭資料會比較少,傳輸效率也比較好,適合應用的場景為:串流服務。

UDP 原理
UDP 原理

TCP 與 UDP 的比較

TCP 和 UDP 的主要差別在於傳送資料的可靠性:TCP 提供可靠的傳送,而 UDP 不保證傳送的可靠性。因此,如果對資料的完整性有更高的要求,則選用 TCP;如果通信需要更快的速度,則選用 UDP。


相關文章

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們