TCP和UDP的區別


TCP

TCP(Transmission Control Protocol,傳輸控制協議)是面向連接的協議,也就是說,在收發數據前,必須和對方建立可靠的連接。

TCP首部格式

TCP首部格式

  • 序號 :用於對字節流進行編號,例如序號為 301,表示第一個字節的編號為 301,如果攜帶的數據長度為 100 字節,那么下一個報文段的序號應為 401。
  • 確認號 :期望收到的下一個報文段的序號。例如 B 正確收到 A 發送來的一個報文段,序號為 501,攜帶的數據長度為 200 字節,因此 B 期望下一個報文段的序號為 701,B 發送給 A 的確認報文段中確認號就為 701。
  • 數據偏移 :指的是數據部分距離報文段起始處的偏移量,實際上指的是首部的長度。
  • 確認 ACK :當 ACK=1 時確認號字段有效,否則無效。TCP 規定,在連接建立后所有傳送的報文段都必須把 ACK 置 1。
  • 同步 SYN :在連接建立時用來同步序號。當 SYN=1,ACK=0 時表示這是一個連接請求報文段。若對方同意建立連接,則響應報文中 SYN=1,ACK=1。
  • 終止 FIN :用來釋放一個連接,當 FIN=1 時,表示此報文段的發送方的數據已發送完畢,並要求釋放運輸連接。
  • 窗口 :窗口值作為接收方讓發送方設置其發送窗口的依據。之所以要有這個限制,是因為接收方的數據緩存空間是有限的。

UDP

UDP(User Data Protocol,用戶數據報協議)是一個非連接的協議,傳輸數據之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程序的數據,並盡可能快地把它扔到網絡上。在發送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的限制。

UDP首部格式

UDP首部格式

首部字段只有 8 個字節,包括源端口、目的端口、長度、檢驗和。12 字節的偽首部是為了計算檢驗和臨時添加的。

總結

TCP:面向連接,提供可靠的服務,有流量控制,擁塞控制,無重復、無丟失、無差錯,面向字節流(把應用層傳下來的報文看成字節流,把字節流組織成大小不等的數據塊),只能是點對點,首部 20 字節,全雙工。

UDP:無連接,盡最大努力交付,沒有擁塞控制,面向報文(對於應用程序傳下來的報文不合並也不拆分,只是添加 UDP 首部),支持一對一、一對多、多對多,首部 8 字節。


免責聲明!

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



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