TCP、UDP的區別和應用場景
區別
-
基于連接 VS 無連接
TCP是面向連接的協議,而UDP是無連接的協議,這意味著當一個客戶端和一個服務器通過TCP發送資料錢,必須先建立連接,建立連接的程序也被稱為TCP三次握手
-
可靠性TCP
提供交付保證,這意味著一個使用TCP協議發送的訊息是保證交付給客戶端的,如果訊息在傳輸程序中丟失,那么它將重發,UDP是不可靠的,它不提供任何交付的保證,一個資料包在運輸程序中可能會丟失
-
有序性
訊息到達網路的另一端時可能是無序的,TCP協議將會為你排好序,UDP不提供任何有序性的保證
-
速度
TCP速度比較慢,而UDP速度比較快,因為TCP必須創建連接,以保證訊息的可靠交付和游戲性,它需要做比UDP多的事,這就是為什么UDP更適用于對速度比較敏感的應用,TCP適合傳輸大量資料,UDP適合傳輸少量資料
-
重量級 VS 輕量級
TCP是重量級的協議,UDP協議則是輕量級的協議,一個TCP資料報的報頭大小最少是20個位元組,UDP資料報的報頭固定是8個位元組,TCP報頭中包含序列號、ACK號、資料偏移量、保留、控制位、視窗、緊急指標、可選項、填充想、校驗位,源埠和目的埠,而UDP報頭只包含長度、源埠號、目的埠號、校驗
-
流量控制和擁塞控制
TCP有流量控制和擁塞控制、UDP沒有流量控制和擁塞控制
-
TCP是面向位元組流,UDP是面向報文
TCP是位元組流的協議,無邊界記錄,
UDP發送的每個資料報是記錄型的資料報,所謂的記錄型資料報就是接收行程可以識別接收到的資料報的記錄邊界
-
TCP只能單播,不能廣播和組播;UDP可以廣播和組播
TCP應用場景:效率要求相對低,但對準確性要求相對高的場景,因為傳輸中需要對資料確認,重發、排序等操作,相比之下效率沒有UDP高,(eg:檔案傳輸、郵件傳輸、遠程登錄)
UDP應用場景:效率要求相對高,對準確性要求相對低的場景(QQ、QQ聊天、QQ視頻、網路語音通過(即是通訊,要求速度高,但是出現偶爾斷續不是太大問題,并且此處完全不可以使用重傳機制)、廣播通信(廣播、多播)
補充
為什么TCP比UDP安全,但是還有很多用UDP?
- UDP無需建立連接(減少延遲)
- 無需維護連接狀態
- 頭部開銷小,一個TCP資料報的報頭大小最少是20位元組,UDP資料報的報頭固定是8個位元組
- 應用層能更好地控制要發送的資料和發送時間,UDP沒有擁塞控制,因此網路中的擁塞不會影響主機的發送頻率,某些實時應用要求以穩定的速度發送資料,可以容忍一些資料的丟失,但不允許有較大的延遲,而UDP正好滿足這些應用的需求
為何UDP快?
- 不需要建立連接
- 對于收到的資料,不用給出確認
- 沒有超時重傳機制
- 沒有流量控制和擁塞控制
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/501665.html
標籤:Java
