TCP和UDP的區別和優缺點


1、TCP與UDP區別總結:

1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付
Tcp通過校驗和,重傳控制,序號標識,滑動窗口、確認應答實現可靠傳輸。如丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。
3、UDP具有較好的實時性,工作效率比TCP高,適用於對高速傳輸和實時性有較高的通信或廣播通信。
4.每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
5、TCP對系統資源要求較多,UDP對系統資源要求較少。

2、為什么UDP有時比TCP更有優勢?
UDP以其簡單、傳輸快的優勢,在越來越多場景下取代了TCP,如實時游戲。
(1)網速的提升給UDP的穩定性提供可靠網絡保障,丟包率很低,如果使用應用層重傳,能夠確保傳輸的可靠性。
(2)TCP為了實現網絡通信的可靠性,使用了復雜的擁塞控制算法,建立了繁瑣的握手過程,由於TCP內置的系統協議棧中,極難對其進行改進。
采用TCP,一旦發生丟包,TCP會將后續的包緩存起來,等前面的包重傳並接收到后再繼續發送,延時會越來越大,基於UDP對實時性要求較為嚴格的情況下,采用自定義重傳機制,能夠把丟包產生的延遲降到最低,盡量減少網絡問題對游戲性造成影響。

 

 為什么TCP不適用於實時傳輸?

TCP影響實時性不是因為握手消耗時間。握手一開始建立完就沒事了

一般來說,單位時間內傳輸的數據流量比較平滑。 TCP依賴滑動窗口進行流量控制,滑動窗口大小是自適應的,影響滑動窗口主要有兩個因素,一是網絡延時,二是傳輸速率,滑動窗口的大小與延時成正比,與傳輸速率也成正比。在給定的網絡環境下,延時可以認為是固定的,因此滑動窗口僅與傳輸速率有關,當傳輸實時數據時,因為數據流通量比較固定,所以這時TCP上的滑動窗口會處於一個不大不小的固定值,這個值大小恰好保證當前生產的數據實時傳輸到對方,當出現網絡丟包時,按TCP協議(快速恢復),滑動窗口將減少到原來的一半,因此速率立刻減半,此時發送速率將小於數據生產速率,一些數據將滯留在發送端,然后滑動窗口將不斷增大,直到積累的數據全部發送完畢。上述過程即為典型的TCP流量抖動過程,對於實時傳輸影響很大,可能形成較大的突發時延,從用戶感觀角度來說,就是有時比較流暢,但有時卡(“抖一下”,並且比較嚴重),因此實時傳輸通常不使用TCP。

 

應用場景:

比如普通的會議視頻圖像,當然首選UDP,畢竟丟幾包無所謂。

如果傳輸文件等,不能丟包,用TCP

 

udp如何實現可靠性傳輸(新浪)

UDP它不屬於連接型協議,因而具有資源消耗小,處理速度快的優點,所以通常音頻、視頻和普通數據在傳送時使用UDP較多,因為它們即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。
傳輸層無法保證數據的可靠傳輸,只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。
 實現確認機制、重傳機制、窗口確認機制。
         目前有如下開源程序利用udp實現了可靠的數據傳輸。分別為RUDP、RTP、UDT。

基於UDP的數據傳輸協議(UDP-based Data Transfer Protocol,簡稱UDT)是一種互聯網數據傳輸協議。UDT的主要目的是支持高速廣域網上的海量數據傳輸,而互聯網上的標准數據傳輸協議TCP在高帶寬長距離網絡上性能很差。 顧名思義,UDT建於UDP之上,並引入新的擁塞控制和數據可靠性控制機制。UDT是面向連接的雙向的應用層協議。

 

https://blog.csdn.net/pangyemeng/article/details/50387078?utm_source=copy 

https://blog.csdn.net/xiaobangkuaipao/article/details/76793702?utm_source=copy


免責聲明!

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



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