1. 程式人生 > >什麼TCP,什麼是UDP,它們兩者的區別

什麼TCP,什麼是UDP,它們兩者的區別

1. 簡介

TCP和UDP是OSI模型中的傳輸層中的協議。

TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,有IETF的RFC 793定義。在簡化的計算機網路OSI模型中。完成第四層傳輸層所指定的功能。

UDP(User Datagram Protocol 使用者資料報協議)是OSI(Open System Inter connection,開放式系統互聯)參考模型中的一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務,IETF RFC 768是UDP的正式規範。UDP在IP報文的協議號是17。

2. TCP特性

點到點,全雙工,可靠有序的位元組流,面向連線,且存在流量個擁塞控制。

2.1 TCP的優點

可靠,穩定 TCP的可靠性現在傳遞資料之前,會有三次握手來建立連線,而且在資料傳遞時,有確認、視窗、重傳、擁塞控制機制,在資料傳完後,還會斷開連線用來節約系統資源

2.2 TCP的缺點

慢,效率低,佔用系統資源高,易被攻擊。 TCP在傳遞資料之前,要先建立連線,這會消耗時間,而且在資料傳遞時,確認機制、重傳機制、擁塞控制機制等都會消耗大量的時間,而且要在每臺裝置上維護所有的傳輸連線,事實上,每個連線都會佔用系統的CPU、記憶體等硬體資源。而且,因為TCP有確認機制、三次握手機制,這些也導致TCP容易被人利用,實現DOS、DDOS、CC等攻擊。

3. UDP特性

無連線,系統開銷小快速。主要應用於對丟包容忍較大,速率敏感的場景。

3.1 UDP的優點

快速,系統消耗低,比TCP稍安全。 UDP沒有TCP的握手、確認、視窗、重傳、擁塞控制等機制,UDP是一個無狀態的傳輸協議,所以它在傳遞資料時非常快。沒有TCP的這些機制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無法避免攻擊的,比如:UDP Flood攻擊。

3.2 UDP的缺點

不可靠,不穩定。 因為UDP沒有TCP那些可靠的機制,在資料傳遞時,如果網路質量不好,就會很容易丟包。

4. TCP與UDP的區別

1.連線性:TCP面向連線;UDP是無連線的。(TCP需要三次握手,而UDP不需要握手)
2.可靠性:TCP提供可靠的服務;UDP盡最大努力交付,即不保證可靠交付。(通過TCP連線傳送的資料,無差錯,不丟失,不重複,且按序到達;UDP則可能出現丟包,不保證順序到達)
3.面向物件:TCP面向位元組流;UDP是面向報文的。(面向報文的是指傳送方的UDP對應用層交下來的資料報文,不合並不拆分,只是在其上面加上首部後就交給了下面的網路層。)
舉個例子:
	傳送方使用TCP協議先發送100個位元組的包1,再發送10個位元組的包2;等待2秒後,接收方只需要接收一次就能將資料(110位元組)接收下來。
	傳送方使用UDP協議先發送100個位元組的包1,再發送10個位元組的包2;等待2秒後,接收方必須要接收量詞才能將包1(100位元組)和包2(10位元組)分別接受。
4.差錯擁塞控制:UDP沒有差錯和擁塞控制,因此網路出現擁塞不會使源主機的傳送速率降低。(TCP擁塞控制,當另一端出現阻塞時,會降低傳送速率。)
5.系統開銷:TCP首部開銷20位元組(具有報文段序號,應答序號,視窗大小等);UDP的首部開銷小,只有8個位元組(2個位元組的源埠,2個位元組的目的埠,2個位元組的報文長度,2個位元組的校驗和)。
6.通道:TCP的邏輯通訊通道是全雙工的可靠通道,即可以流入也可以流出的通道;UDP則是不可靠通道。
7.有序性:TCP是有序的位元組流;UDP則是無序的。(這是由於TCP頭部存在報文段的序號,而UDP沒有)