TCP和UDP的區別


前言

我們都知道TCP和UDP作為傳輸協議,被廣泛應用於網絡通信。這些基礎的網絡知識也是需要了解,既然兩種傳輸協議都可以用於通信,那它們兩者又有何區別。本文將以下面5個點進行對比:

  • 連接特點
  • 交互通信
  • 數據處理
  • 傳輸服務
  • 報頭開銷

UDP和TCP在TCP/IP模型中的位置

在比較這兩者的區別之前,有必要了解下TCP/IP模型,這有利於我們理解下面的內容。

網絡模型並非一開始就有的,在網絡發展初期,網絡協議都是互聯網公司自己定義的。由於各家公司的網絡協議不同,沒有統一標准的網絡協議來規定,各個公司的協議都不能互通。這對於網絡發展很不利,為了解決這個問題,國際標准化組織 1984 提出的模型標准,簡稱 OSI(Open Systems Interconnection Model),這是一個標准,並非實現。TCP/IP 協議就是基於此模型設計。

TCP/IP模型是一個四層模型,自底而上分別是網絡接口層、網絡層、傳輸層和應用層

  • 網絡接口層:實現網卡接口的網絡驅動程序,以處理數據在物理媒介(比如以太網、令牌環等)上的傳輸
  • 網絡層:實現數據包的選路和轉發
  • 傳輸層:為主機的應用程序提供端到端的通信,傳輸層只關心通信的起始端和目的端,而不在乎數據包的中轉過程
  • 應用層:負責處理應用程序的邏輯

連接特點

UDP

UDP是一種無連接的傳輸層協議,因為在使用UDP發送報文段時,發送端和接收端的傳輸層實體之間沒有進行握手。所謂的握手,就是發送端和接收端通過發送一些特定的報文段來互相確認,從而為發送做准備。由於UDP可以不用任何准備即可進行數據數據傳輸,因此UDP的數據傳輸速度會比TCP快。

TCP

TCP是一種面向連接的傳輸層協議,網絡系統需要在兩台計算機之間發送數據之前先建立連接。類似於我們打電話一樣,通信之前需要呼叫和應答。其過程分為建立連接(三次握手)、使用連接(數據傳輸)、釋放連接(四次揮手)三個過程。由於這些機制,TCP數據傳輸會比UDP可靠,即確保雙方都互通后再發送數據,保證數據包能夠完整的發送過去。

交互通信

UDP

UDP是無連接的傳輸協議,不需要維護連接狀態,包括收發狀態,可以實現一對一,一對多,多對一和多對多的交互通信。

TCP

TCP是面向連接的傳輸協議,發送數據需要雙方建立連接,屬於端到端的通信,實現的是一對一的交互通信。

數據處理

UDP

UDP是面向報文的。發送端的傳輸層對應用層交下來的報文,在添加報頭后就向下交付給IP層。既不拆分,也不合並,而是保留這些報文的邊界。接收端傳輸層接收到報文會去掉報頭,將數據部分交給應用層。

TCP

TCP是面向字節流的。發送端的應用層將數據字節流交付到傳輸層的緩存區,根據發送策略對字節流分片,添加報頭發送TCP報文。接收端傳輸層收到報文后,去掉報頭存儲到接收緩存。接收緩存將字節流片段交給應用層,應用層再將字節流片段重組還原為可用的數據。

傳輸服務

UDP

UDP提供無連接的不可靠服務。在發送端到接收端的傳遞過程中出現數據包丟失或接收誤碼的情況,協議本身並不能做出任何檢測或提示。UDP只是盡可能快地把數據扔到網絡上,並不保證數據包的完整性。因此UDP沒有可靠性保證、順序保證和流量控制字段。

TCP

TCP提供面向連接的可靠服務。在發送端到接收端的傳遞過程中出現數據包丟失或接收誤碼的情況,接收端在定時器超時后沒有收到相應的確認,發送端會重新發送數據包。TCP連接每一方的接收緩沖空間大小都固定,接收端只允許另一端發送接收端緩沖區所能接納的數據,TCP在此基礎上提供流量控制,防止較快主機致使較慢主機的緩沖區溢出。

報頭開銷

UDP

UDP傳輸的段有8個字節的報頭和有效載荷字段構成。UDP報頭由4個域組成,其中每個域各占用2個字節,具體包括源端口號、目標端口號、數據報長度、校驗和。

  • 端口號:使用端口號為不同的應用保留其各自的數據傳輸通道
  • 長度:數據報的長度是指包括報頭和數據部分在內的總字節數
  • 校驗和:使用報頭中的校驗值來保證數據的安全

TCP

TCP傳輸的段有最小20字節的報頭和有效載荷字段構成。TCP具體組成包括端口號、序號、確認號、保留域、標志域、窗口、校驗和、緊急指針構成,另外可擴展首部包括選項和填充。

總結

UDP

特點

  • 無連接
  • 支持一對一,一對多,多對一和多對多的通信
  • 面向報文
  • 不可靠傳輸,不使用流量控制和擁塞控制
  • 報頭開銷小,僅8字節

應用場景

常用於實時應用。例如視頻直播、IP電話,QQ語音和QQ視頻就是使用UDP的協議。

TCP

特點

  • 面向連接
  • 一對一通信
  • 面向字節流
  • 可靠傳輸,使用流量控制和擁塞控制
  • 報頭最小20字節,最大60字節

應用場景

常用於對可靠性要求高的通信。例如文件傳輸。

本文部分配圖來源於https://www.bilibili.com/video/av40163489


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM