TCP和UDP的區別及應用場景


 

    • 區別

      1. 面向連接VS無連接
        TCP建立一個連接需要3次握手IP數據包,斷開連接需要4次握手。另外斷開連接時發起方可能進入TIME_WAIT狀態長達數分鍾(視系統設置,windows一般為120秒),在此狀態下連接(端口)無法被釋放。
        UDP不需要建立連接,可以直接發起。
      2. 可靠VS不可靠
        TCP利用握手、ACK和重傳機制,udp沒有。
        1,校驗和(校驗數據是否損壞);
        2,定時器(分組丟失則重傳);
        3,序列號(用於檢測丟失的分組和重復的分組);
        4,確認應答ACK(接收方告知發送方正確接收分組以及期望的下一個分組);
        5,否定確認(接收方通知發送方未被正確接收的分組);
        6,窗口和流水線(用於增加信道的吞吐量)。(窗口大小:無需等待確認應答而可以繼續發送數據的最大值)
      3. 有序性
        TCP利用seq序列號對包進行排序,udp沒有。
      4. 面向字節流vs面向報文
        • 面向報文
          面向報文的傳輸方式是應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。因此,應用程序必須選擇合適大小的報文。若報文太長,則IP層需要分片。UDP對應用層交下來的報文,既不合並,也不拆分,而是保留這些報文的邊界。這也就是說,應用層交給UDP多長的報文,UDP就照樣發送,即一次發送一個報文。(一個upd的最大報文長度2^16-1-20-8,20是ip報文頭,8是udp報文頭)
        • 面向字節流
          面向字節流的話,雖然應用程序和TCP的交互是一次一個數據塊(大小不等),但TCP把應用程序看成是一連串的無結構的字節流。TCP有一個緩沖,當應用程序傳送的數據塊太長,TCP就可以把它划分短一些再傳送。如果應用程序一次只發送一個字節,TCP也可以等待積累有足夠多的字節后再構成報文段發送出去。
      5. tcp有流量控制,udp沒有
      6. tcp的頭部比20bytes,udp8byres
    • TCP應用場景:
      效率要求相對低,但對准確性要求相對高的場景。因為傳輸中需要對數據確認、重發、排序等操作,相比之下效率沒有UDP高。舉幾個例子:文件傳輸(准確高要求高、但是速度可以相對慢)、接受郵件、遠程登錄。

    • UDP應用場景:
      效率要求相對高,對准確性要求相對低的場景。舉幾個例子:QQ聊天、在線視頻、網絡語音電話(即時通訊,速度要求高,但是出現偶爾斷續不是太大問題,並且此處完全不可以使用重發機制)、廣播通信(廣播、多播)。


免責聲明!

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



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