TCP和UDP的區別

TCP和UDP都是傳輸層的協議,他們的區別主要如下:

1、TCP,全名“傳輸控制協議”,是面向連接的,也就是說在發送方和接收方在發送數據之前,必須通過三次握手建立連接,相當於現實生活中的打電話功能,必須先撥號,接通後才能說話,UDP,全名“用戶數據報協議”,是無連接的,其中一方向向另一方發送數據時不需要建立連接,直接發送,相當於現實中的發短信

2、TCP是可靠的傳輸協議:TCP在IP協議的基礎之上添加了序號機制,確認機制,超時重傳機制,數據校驗,從而保證傳輸的可靠性,而UDP是不可靠的協議,UDP協議僅僅就是在IP協議的基礎上添加了端口和差錯檢查的功能,由於IP協議時盡最大努力傳輸,從而導致了UDP的不可靠性

3、TCP協議是面向字節流的,TCP將應用層傳遞下來的數據僅僅當做無結構的數據流,並不知道所傳數據流的含義,它可能將應用程序的兩個數據塊拼接到一起組成一個段發送。UDP是面向報文的,應用程序交給UDP多長的報文,UDP就加上首部後發送,如果報文過大,就會導致IP層分片,從而降低了IP層的效率。

4、TCP是一對一通信的,而UDP支持一對一和一對多以及多對多通信

首先還是把協議特性說一下,明白了特性自然知道應用場合了,嘿嘿!兩種協議都是傳輸層協議,爲應用層提供信息載體。TCP協議是基於連接的可靠協議,有流量控制和差錯控制,也正因爲有可靠性的保證和控制手段,所以傳輸效率比UDP低;UDP協議是基於無連接的不可靠協議,沒有控制手段,僅僅是將數據發送給對方,因此效率比TCP要高。

基於上述特性,不難得到結論,TCP協議適用於對效率要求相對低,但對準確性要求相對高的場景下,或者是有一種連接概念的場景下;而UDP協議適用於對效率要求相對高,對準確性要求相對低的場景。

好了,現在回到你的問題,舉幾個應用的例子。TCP一般用於文件傳輸(FTP HTTP 對數據準確性要求高,速度可以相對慢),發送或接收郵件(POP IMAP SMTP 對數據準確性要求高,非緊急應用),遠程登錄(TELNET SSH 對數據準確性有一定要求,有連接的概念)等等;UDP一般用於即時通信(QQ聊天 對數據準確性和丟包要求比較低,但速度必須快),在線視頻(RTSP 速度一定要快,保證視頻連續,但是偶爾花了一個圖像幀,人們還是能接受的),網絡語音電話(VoIP 語音數據包一般比較小,需要高速發送,偶爾斷音或串音也沒有問題)等等。

作爲知識的擴展,可以再說一些其他應用。比如,TCP可以用於網絡數據庫,分佈式高精度計算系統的數據傳輸;UDP可以用於服務系統內部之間的數據傳輸,因爲數據可能比較多,內部系統局域網內的丟包錯包率又很低,即便丟包,頂多是操作無效,這種情況下,UDP經常被使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章