首頁 > 軟體

UDP與TCP比較與選擇

2020-06-16 16:48:27

TCP

  • 簡介:
    傳輸控制協定,提供的是面向連線、可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立一個TCP連線,之後才能傳輸數 據。TCP提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。
  • 優點:
    可靠,穩定 TCP的可靠體現在TCP在傳遞資料之前,會有三次握手來建立連線,而且在資料傳遞時,有確認、視窗、重傳、擁塞控制機制,在資料傳完後,還會斷開連線用來節約系統資源。
  • 缺點:
    慢,效率低,佔用系統資源高,易被攻擊 TCP在傳遞資料之前,要先建連線,這會消耗時間,而且在資料傳遞時,確認機制、重傳機制、擁塞控制機制等都會消耗大量的時間,而且要在每台裝置上維護所有的傳輸連線,事實上,每個連線都會佔用系統的CPU、記憶體等硬體資源。 而且,因為TCP有確認機制、三次握手機制,這些也導致TCP容易被人利用,實現DOS、DDOS、CC等攻擊。

UDP

  • 簡介:
    使用者資料包協定,是一個簡單的面向資料包的運輸層協定。UDP不提供可靠性,它只是把應用程式傳給IP層的資料包傳送出去,但是並不能保證它 們能到達目的地。由於UDP在傳輸資料包前不用在客戶和伺服器之間建立一個連線,且沒有超時重發等機制,故而傳輸速度很快。
  • 優點:
    快,比TCP稍安全 UDP沒有TCP的握手、確認、視窗、重傳、擁塞控制等機制,UDP是一個無狀態的傳輸協定,所以它在傳遞資料時非常快。沒有TCP的這些機制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無法避免攻擊的,比如:UDP Flood攻擊……
  • 缺點:
    不可靠,不穩定 因為UDP沒有TCP那些可靠的機制,在資料傳遞時,如果網路品質不好,就會很容易丟包。

TCP與UDP區別總結:

  1. TCP面向連線(如打電話要先撥號建立連線);UDP是無連線的,即傳送資料之前不需要建立連線
  2. TCP提供可靠的服務。也就是說,通過TCP連線傳送的資料,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保 證可靠交付
  3. TCP面向位元組流,實際上是TCP把資料看成一連串無結構的位元組流;UDP是面向報文的
    UDP沒有擁塞控制,因此網路出現擁塞不會使源主機的傳送速率降低(對實時應用很有用,如IP電話,實時視訊會議等)
  4. 每一條TCP連線只能是點到點的;UDP支援一對一,一對多,多對一和多對多的互動通訊
  5. TCP首部開銷20位元組;UDP的首部開銷小,只有8個位元組
  6. TCP的邏輯通訊通道是全雙工的可靠通道,UDP則是不可靠通道

UDP應用場景

  1. 面向資料包方式
  2. 網路資料大多為短訊息
  3. 擁有大量Client
  4. 對資料安全性無特殊要求
  5. 網路負擔非常重,但對響應速度要求高

TCP與UDP的選擇

  • TCP
    當資料傳輸的效能必須讓位於資料傳輸的完整性、可控制性和可靠性時,TCP協定是當然的選擇。
    比如HTTP、HTTPS、FTP等傳輸檔案的協定,POP、SMTP等郵件傳輸的協定。 在日常生活中,常見使用TCP協定的應用如下: 瀏覽器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ檔案傳輸
  • UDP
    當強調傳輸效能而不是傳輸的完整性時,如:音訊和多 媒體應用,UDP是最好的選擇。在資料傳輸時間很短,以至於此前的連線過程成為整個流量主體的情況下,UDP也是一個好的選擇。
    比如,日常生活中,常見使用UDP協定的應用如下: QQ語音 QQ視訊 TFTP
  • 二者結合
    許多程式將使用單獨的TCP連線和單獨的UDP連線。重要的狀態資訊隨可靠的TCP連線傳送,而主資料流通過UDP傳送。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-08/153611.htm


IT145.com E-mail:sddin#qq.com