1. 程式人生 > >TCP和UDP的區別及應用場景

TCP和UDP的區別及應用場景

面試題回答:

TCP和UDP的區別

(1)TCP是面向連線的,udp是無連線的即傳送資料前不需要先建立連結。

(2)TCP提供可靠的服務。也就是說,通過TCP連線傳送的資料,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付。 並且因為tcp可靠,面向連線,不會丟失資料因此適合大資料量的交換。

(3)TCP是面向位元組流,UDP面向報文,並且網路出現擁塞不會使得傳送速率降低(因此會出現丟包,對實時的應用比如IP電話和視訊會議等)。

(4)TCP只能是1對1的,UDP支援1對1,1對多。

(5)TCP的首部較大為20位元組,而UDP只有8位元組。

(6)TCP是面向連線的可靠性傳輸,而UDP是不可靠的。

 

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 協議(如視訊傳輸、實時通訊等)。

原文:https://blog.csdn.net/leewccc/article/details/70225610