tcp和udp都是來自於傳輸層的協議。
傳輸層是位於第2層的,如下圖所示。
傳輸層位於應用層和網路層之間,負責位於不同主機中程序之間的通訊。
之前一位老哥問我:不同電腦之間是如何通訊的呢?是不是還要自己開發協議什麼的。
internet的傳輸層提供兩種不同的服務,應用開發者必須選擇其中的一種。
tcp是面向連線的可靠的傳輸層協議。
udp是無連線的不可靠的傳輸層協議。
何來可靠和不可靠之說?
udp相對於ip來說,只新增了process到process的分發服務和錯誤檢驗機制,因為,提供的也是不可靠的服務。
而tcp為應用提供了包括可靠資料傳輸、流量控制和擁塞控制等在內的服務。
有了可靠的tcp,為什麼還要udp?
應用可以更精細控制何時傳送何種資料
無需事先建立連線就可以傳送資料
無連線狀態,實現簡單
頭部開銷小
擴充套件:1、應用可更好控制何時傳送何種資料:無須建立連線,udp可盡快將訊息發給網路層;tcp可能需要重傳在規定時間內沒有收到確認的segment。udp沒有建立連線所引入的延遲,這可能是dns選擇udp而不是tcp的最主要原因。
2、實現簡單:udp因為是無連線的,host因而無須維護連線狀態,實現簡單;
3、頭部開銷小:udp的segment頭部欄位共8個位元組;而tcp的頭部共包括20個位元組.
udp被多數多**應用使用。但是…
udp通常被認為是不負責任的
udp流量通常不容易穿透防火牆
因此tcp的多**應用越來越多了…
總結tcp的優點:
可靠,穩定。
tcp的可靠體現在tcp在傳輸資料之前會有三次握手來建立連線,而且在資料傳遞時,有確認、視窗、重傳、擁塞控制機制,在資料傳完後,還會斷開連線用來節約系統資源。
tcp的缺點:
慢,效率低,占用資源高,易被攻擊;tcp在傳遞資料之前要先建立連線,這會消耗時間,而且在資料傳遞時,確認機制,重傳機制,擁塞控制機制等都會消耗大量的實踐,而且要在每台裝置上維護所有的傳輸連線。事實上每個連線都會占用系統的cpu、記憶體等硬體資源。
因為tcp有確認機制、三次握手機制,這些優點在成了缺陷,導致tcp容易被人利用,實現dos、ddos、cc、猜測攻擊等。
udp的優點:
快,比tcp稍安全。
udp沒有tcp的握手、確認、視窗、重傳、擁塞控制,udp是乙個無狀態的傳輸協議,所以它在傳遞資料時非常快。
沒有tcp的這些機制(如:三次握手),攻擊者利用udp的漏洞就要少一些。但是udp也是無法避免攻擊的,比如:udpflood等。
udp的缺點:
不可靠,不穩定。
因為udp沒有tcp那些可靠的機制,在資料傳遞時,如果網路質量不好,就會很容易丟包。
在udp和tcp協議面前,如何選擇並使用?
基於上面的優點和缺點的分析
什麼時候應該使用tcp傳輸協議:
什麼時候應該使用udp:
面試經常會問道:tcp和udp協議的區別是什麼?
簡化很多字的總結
TCP和UDP的區別
tcp transimission control protocol 傳輸控制協議 和udp user datagram protocol 是傳輸層的兩種實現版本!它們之間提供基本的服務又各有所長。因此,根據對特定服務質量的要求,應用層軟體單元可以選擇通過傳輸層的tcp版本或者udp版本來傳輸資料。...
TCP和UDP的區別
tcp和udp都是傳輸層的協議,他們的區別主要如下 1 tcp,全名 傳輸控制協議 是面向連線的,也就是說在傳送方和接收方在傳送資料之前,必須通過三次握手建立連線,相當於現實生活中的打 功能,必須先撥號,接通後才能說話,udp,全名 使用者資料報協議 是無連線的,其中一方向向另一方傳送資料時不需要建...
TCP和UDP的區別
tcp transmission control protocol,傳輸控制協議 是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線。乙個tcp連線必須要經過三次 對話 才能建立起來,其中的過程非常複雜,我們這裡只做簡單 形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三...