TCP 與 UDP 的區別及應用場景【轉】

(轉自:https://blog.csdn.net/leewccc/article/details/70225610

TCP 與 UDP 的區別及應用場景
概述
  兩者都是通信協議, TCP、UDP 是傳輸層協議,但他們的通信機制與應用場景不同,下面來闡述兩者的區別以及它們的應用場景。

 

TCP 與 UDP
  TCP(Transmission Control Protocol),又叫傳輸控制協議,UDP(User Datagram Protocol),又叫用戶數據報協議,它們都是傳輸層的協議,但兩者的機制不同,它們的區別如下:

特點    TCP    UDP
連接性    面向連接    面向非連接
可靠性    可靠    不可靠
傳輸效率    慢    快

 


TCP  
  從如上表格看到,TCP 是面向連接的,並且是一種可靠的協議,在基於 TCP 進行通信時,通信雙方需要先建立一個 TCP 連接,建立連接需要經過三次握手,握手成功纔可以進行通信,關於 TCP 三次握手、四次揮手的過程請看該文章。 
  另外 TCP 協議是一種可靠的傳輸協議,那麼它是如何保證可靠性的呢?

 

可靠性
  在講解 TCP 如何保證可靠性前,首先得理解什麼是可靠。在通信的角度來看,可靠即要確保通信雙方的通信信息不會丟失,若丟失了保證能夠對其進行恢復,並且收到的信息內容與原發送內容一樣。 
  在 TCP 中,傳輸報文都是通過建立的虛擬連接來進行傳輸,發送端傳輸的每一個 TCP 報文,都會對其進行編號(編號是由於網絡傳輸的原因,發送的報文可能會亂序到達,因此需要根據編號對報文進行重排),並且開啓一個計時器;當接收端收到報文後,並且通過校驗和對收到的報文數據進行校驗,若校驗成功則會返回一個確認報文,告知發送端我已經成功收到該報文了;若發送端在計時器結束前仍未收到確認報文,則認爲接收端接收失敗,則會重傳該報文;服務端若收到重複報文(根據編號發現已經是收到了),則會將該報文丟棄。 
  因此,從上面的機制可以知道,TCP 是通過重傳、確認和校驗和的方式來確保可靠。 
注:校驗和並不能檢驗數據是否被篡改過,想要保證數據的完整性可以瞭解一下數字簽名

 

UDP
  UDP 是一種面向無連接,且不可靠的協議,在通信過程中,它並不像 TCP 那樣需要先建立一個連接,只要(目的地址,端口號,源地址,端口號)確定了,就可以直接發送信息報文,並且不需要確保服務端一定能收到或收到完整的數據。它僅僅提供了校驗和機制來保障一個報文是否完整,若校驗失敗,則直接丟棄報文,不做任何處理。

 

TCP 與 UDP 的應用場景
  從特點上我們已經知道,TCP 是可靠的但傳輸速度慢 ,UDP 是不可靠的但傳輸速度快。因此在選用具體協議通信時,應該根據通信數據的要求而決定。 
  若通信數據完整性需讓位與通信實時性,則應該選用 TCP 協議(如文件傳輸、重要狀態的更新等);反之,則使用 UDP 協議(如視頻傳輸、實時通信等)。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章