終於懂了TCP和UDP協議區別

TrueDei發表於2020-03-26

老樣子先認識一下這倆夥計

TCP和UDP都是來自傳輸層協議

傳輸層是位於第2層的,如下圖所示。

傳輸層位於應用層和網路層之間,負責位於不同主機中程式之間的通訊。
在這裡插入圖片描述

之前一位老哥問我:不同電腦之間是如何通訊的呢?是不是還要自己開發協議什麼的。

分析:這位老哥覺得如果開發一個應用需要自己定義協議。其實也並不是沒有道理的,協議是什麼?協議就是雙方通訊共同遵守的規則,被稱之為協議。像怎麼使用的HTTP,FTP這些都屬於應用服務,為什麼叫應用服務?因為是專門服務其他人的應用。像QQ、微信、淘寶、瀏覽器這些通常稱之為應用客戶端,當然了這些的服務端我們們是看不到摸不著的,除非你是參與其中開發的人員。QQ使用的是OICQ協議,HTTP服務則使用的HTTP協議,這些協議肯定都是自定義的。如果你使用HTTP伺服器的話,你就必須遵守這個規則,否則人家是不認你的。其實都是基於TCP或UDP的。

在這裡插入圖片描述
Internet的傳輸層提供兩種不同的服務,應用開發者必須選擇其中的一種

  • TCP

面向連線的可靠的傳輸層協議。

  • UDP

無連線的不可靠的傳輸層協議。

何來可靠和不可靠之說?

UDP相對於IP來說,只新增了process到process的分發服務和錯誤檢驗機制,因為,提供的也是不可靠的服務。
而TCP為應用提供了包括可靠資料傳輸、流量控制和擁塞控制等在內的服務。

有了可靠的TCP,為什麼還要UDP?

  • 應用可以更精細控制何時傳送何種資料
  • 無需事先建立連線就可以傳送資料
  • 無連線狀態,實現簡單
  • 頭部開銷小

擴充套件:

  • 1、應用可更好控制何時傳送何種資料:無須建立連線,UDP可儘快將訊息發給網路層;TCP可能需要重傳在規定時間內沒有收到確認的Segment。UDP沒有建立連線所引入的延遲,這可能是DNS選擇UDP而不是TCP的最主要原因。
  • 2、實現簡單:UDP因為是無連線的,Host因而無須維護連線狀態,實現簡單;
  • 3、頭部開銷小:UDP的Segment頭部欄位共8個位元組;而TCP的頭部共包括20個位元組.

UDP被多數多媒體應用使用。但是…

  • UDP通常被認為是不負責任
  • UDP流量通常不容易穿透防火牆
  • 因此TCP的多媒體應用越來越多了…

總結

TCP的優點:

  • 可靠,穩定。
  • TCP的可靠體現在TCP在傳輸資料之前會有三次握手來建立連線,而且在資料傳遞時,有確認、視窗、重傳、擁塞控制機制,在資料傳完後,還會斷開連線用來節約系統資源。

TCP的缺點:

  • 慢,效率低,佔用資源高,易被攻擊;TCP在傳遞資料之前要先建立連線,這會消耗時間,而且在資料傳遞時,確認機制,重傳機制,擁塞控制機制等都會消耗大量的實踐,而且要在每臺裝置上維護所有的傳輸連線。事實上每個連線都會佔用系統的CPU、記憶體等硬體資源。
  • 因為TCP有確認機制、三次握手機制,這些優點在成了缺陷,導致TCP容易被人利用,實現DOS、DDOS、CC、猜測攻擊等。

UDP的優點:

  • 快,比TCP稍安全。
  • UDP沒有TCP的握手、確認、視窗、重傳、擁塞控制,UDP是一個無狀態的傳輸協議,所以它在傳遞資料時非常快。
  • 沒有TCP的這些機制(如:三次握手),攻擊者利用UDP的漏洞就要少一些。但是UDP也是無法避免攻擊的,比如:UDPFlood等。

UDP的缺點:

  • 不可靠,不穩定。
  • 因為UDP沒有TCP那些可靠的機制,在資料傳遞時,如果網路質量不好,就會很容易丟包。

在UDP和TCP協議面前,如何選擇並使用?

基於上面的優點和缺點的分析

什麼時候應該使用TCP傳輸協議:

當網路通訊有要求的時候,比如:整個資料要準確無誤的傳遞給對方,這往往用於一些可靠的應用,比如:HTTP,HTTPS,FTP等傳輸檔案的協議,POP、SMTP等郵件傳輸協議。

什麼時候應該使用UDP:

當網路通訊質量要求不高的時候,要求網路通訊速度能儘量的快,這時就可以使用UDP。比如:QQ語言、QQ視訊等。

面試經常會問道:TCP和UDP協議的區別是什麼?

簡化很多字的總結

  • 1、TCP面向連線,UDP無連線;
  • 2、TCP佔用系統資源較多,UDP少;
  • 3、TCP結構複雜,UDP絞簡單;
  • 4、TCP基於流模式,UDP時資料包模式;
  • 5、TCP保證資料正確性,UDP可能丟包;
  • 6、TCP保證資料順序,UDP不保證。

相關文章