面試官:說說TCP和UDP的區別和應用場景


原創文章首發於公眾號:「碼農富哥」,歡迎收藏和關注,如轉載請注明出處!

上一篇聊完 一文徹底搞懂 TCP三次握手、四次揮手過程及原理
這次聊聊TCP和UDP的區別和場景

TCP/IP 中有兩個具有代表性的傳輸層協議,分別是 TCP 和 UDP。
來看看傳輸層位於OSI七層協議和TCP/IP四層協議的位置:
OSI七層協議和TCP/IP四層協議

那么TCP和UDP的區別和使用場景分別是怎樣的?
我們用一個圖來對比一下UDP和TCP:
image

TCP

TCP 是面向連接的、可靠的流協議。流就是指不間斷的數據結構,當應用程序采用 TCP 發送消息時,雖然可以保證發送的順序,但還是猶如沒有任何間隔的數據流發送給接收端。

TCP 為提供可靠性傳輸,實行“順序控制”或“重發控制”機制。此外還具備“流控制(流量控制)”、“擁塞控制”、提高網絡利用率等眾多功能。

TCP有以下特點:

  • TCP充分地實現了數據傳輸時各種控制功能,可以進行丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。而這些在 UDP 中都沒有。
  • 此外,TCP 作為一種面向有連接的協議,只有在確認通信對端存在時才會發送數據,從而可以控制通信流量的浪費。
  • 根據 TCP 的這些機制,在 IP 這種無連接的網絡上也能夠實現高可靠性的通信( 主要通過檢驗和、序列號、確認應答、重發控制、連接管理以及窗口控制等機制實現)。

UDP

UDP 是面向報文的,所謂面向報文,是指面向報文的傳輸方式是應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。因此,應用程序必須選擇合適大小的報文。若報文太長,則IP層需要分片,降低效率。若太短,會是IP太小。

UDP 是不具有可靠性的數據報協議,細微的處理它會交給上層的應用去完成。在 UDP 的情況下,雖然可以確保發送消息的大小,卻不能保證消息一定會到達。因此,應用有時會根據自己的需要進行重發處理。

UDP有以下特點:

  • UDP 不提供復雜的控制機制,利用 IP 提供面向無連接的通信服務。
  • 傳輸途中出現丟包,UDP 也不負責重發。
  • 當包的到達順序出現亂序時,UDP沒有糾正的功能。
  • 並且它是將應用程序發來的數據在收到的那一刻,立即按照原樣發送到網絡上的一種機制。即使是出現網絡擁堵的情況,UDP 也無法進行流量控制等避免網絡擁塞行為。
  • 如果需要以上的細節控制,不得不交由采用 UDP 的應用程序去處理。
  • UDP 常用於以下幾個方面:
    • 1.包總量較少的通信(DNS、SNMP等);
    • 2.視頻、音頻等多媒體通信(即時通信);
    • 3.限定於 LAN 等特定網絡中的應用通信;
    • 4.廣播通信(廣播、多播)。

UDP 和 TCP 的應用

他們的應用如下圖:
image

總結:

TCP 和 UDP 的優缺點無法簡單地、絕對地去做比較:TCP 用於在傳輸層有必要實現可靠傳輸的情況;
而在一方面,UDP 主要用於那些對高速傳輸和實時性有較高要求的通信或廣播通信。TCP 和 UDP 應該根據應用的目的按需使用。

最后

文章如果對你有收獲,可以收藏轉發,這也是對我寫作的肯定!另外可以關注我公眾號「碼農富哥」 (搜索id:coder2025),我會持續輸出Python,服務端架構,計算機基礎(MySQL, Linux,TCP/IP)的 原創 文章

掃碼關注我:碼農富哥


免責聲明!

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



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