? 上一篇下一篇 ?

【服務器知識】TCP協議與UDP協議各自的優點及區別

  TCP是美國國防部設計的兩種傳輸協議之一,另一種是UDP。UDP是一種不可靠的網絡服務,負載比較小,而TCP則是一種可靠的通信服務,負載相對而言比較大。TCP采用套接字(socket)或者端口(port)來建立通信。TCP給端口到端口通信提供了錯誤和流量控制機制,同時TCP還負責建立連接、處理終止和中斷的端對端通信控制。 通常情況下我們認為TCP相比UDP具有更大的通信負載,UDP不具備TCP的控制特性,TCP用了大約20個字節來發送一個65Kbps的數據塊,這個報頭占整個數據塊的比重也不過3%。總得來看,這個負載是合理的,何況還令通信具有了可靠性。為了更好的了解這兩個協議,我們從它們各自的優點及區別來進行全面的了解。

一、首先,讓我們來了解兩個協議.

TCP—傳輸控制協議,提供的是面向連接、可靠的字節流服務。當客戶和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數據。TCP提供超時重發,丟棄重復數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。一個TCP連接必須要經過三次“對話”才能建立起來,簡單的描述下這三次對話的簡單過程:主機A向主機B發出連接請求數據包:“我想給你發數據,可以嗎?”,這是第一次對話;主機B向主機A發送同意連接和要求同步(同步就是兩臺主機一個在發送,一個在接收,協調工作)的數據包:“可以,你什么時候發?”,這是第二次對話;主機A再發出一個數據包確認主機B的要求同步:“我現在就發,你接著吧!”,這是第三次對話。三次“對話”的目的是使數據包的發送和接收同步,經過三次“對話”之后,主機A才向主機B正式發送數據。

【服務器知識】TCP協議與UDP協議各自的優點及區別

二、TCP三次握手過程

1 主機A通過向主機B 發送一個含有同步序列號的標志位的數據段給主機B ,向主機B 請求建立連接,通過這個數據段,

主機A告訴主機B 兩件事:我想要和你通信;你可以用哪個序列號作為起始數據段來回應我.

2 主機B 收到主機A的請求后,用一個帶有確認應答(ACK)和同步序列號(SYN)標志位的數據段響應主機A,也告訴主機A兩件事:

我已經收到你的請求了,你可以傳輸數據了;你要用哪佧序列號作為起始數據段來回應我

3 主機A收到這個數據段后,再發送一個確認應答,確認已收到主機B 的數據段:”我已收到回復,我現在要開始傳輸實際數據了

這樣3次握手就完成了,主機A和主機B 就可以傳輸數據了.

【服務器知識】TCP協議與UDP協議各自的優點及區別

三、TCP建立連接要進行3次握手,而斷開連接要進行4次
UDP—用戶數據報協議,是一個簡單的面向數據報的運輸層協議。UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快TCP協議與UDP協議的區別

(1) UDP是一個非連接的協議,傳輸數據之前源端和終端不建立連接,當它想傳送時就簡單地去抓取來自應用程序的數據,并盡可能快地把它扔到網絡上。在發送端,UDP傳送數據的速度僅僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程序每次從隊列中讀一個消息段。

(2) 由于傳輸數據不建立連接,因此也就不需要維護連接狀態,包括收發狀態等,因此一臺服務機可同時向多個客戶機傳輸相同的消息。

(3) UDP信息包的標題很短,只有8個字節,相對于TCP的20個字節信息包的額外開銷很小。

(4) 吞吐量不受擁擠控制算法的調節,只受應用軟件生成數據的速率、傳輸帶寬、源端和終端主機性能的限制。

(5)UDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持復雜的鏈接狀態表(這里面有許多參數)。

【服務器知識】TCP協議與UDP協議各自的優點及區別

四、TCP與UDP各自的優點

TCP的優點: 可靠,穩定 TCP的可靠體現在TCP在傳遞數據之前,會有三次握手來建立連接,而且在數據傳遞時,有確認、窗口、重傳、擁塞控制機制,在數據傳完后,還會斷開連接用來節約系統資源。 TCP的缺點: 慢,效率低,占用系統資源高,易被攻擊 TCP在傳遞數據之前,要先建連接,這會消耗時間,而且在數據傳遞時,確認機制、重傳機制、擁塞控制機制等都會消耗大量的時間,而且要在每臺設備上維護所有的傳輸連接,事實上,每個連接都會占用系統的CPU、內存等硬件資源。 而且,因為TCP有確認機制、三次握手機制,這些也導致TCP容易被人利用,實現DOS、DDOS、CC等攻擊。
UDP的優點: 快,比TCP稍安全 UDP沒有TCP的握手、確認、窗口、重傳、擁塞控制等機制,UDP是一個無狀態的傳輸協議,所以它在傳遞數據時非常快。沒有TCP的這些機制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無法避免攻擊的,比如:UDP Flood攻擊…… UDP的缺點: 不可靠,不穩定 因為UDP沒有TCP那些可靠的機制,在數據傳遞時,如果網絡質量不好,就會很容易丟包。 基于上面的優缺點,那么: 什么時候應該使用TCP: 當對網絡通訊質量有要求的時候,比如:整個數據要準確無誤的傳遞給對方,這往往用于一些要求可靠的應用,比如HTTP、HTTPS、FTP等傳輸文件的協議,POP、SMTP等郵件傳輸的協議。 在日常生活中,常見使用TCP協議的應用如下: 瀏覽器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件傳輸 ………… 什么時候應該使用UDP: 當對網絡通訊質量要求不高的時候,要求網絡通訊速度能盡量的快,這時就可以使用UDP。 比如,日常生活中,常見使用UDP協議的應用如下: QQ語音 QQ視頻 TFTP ……

五 、下面是我對兩個協議基本區別的理解
1.TCP是兩個基于連接才能發送數據與UDP不用連接就能發送數據;

2.TCO對系統資源的要求較多,UDP少較少;

3.UDP程序結構較簡單;

4.流模式與數據報模式 ;

5.TCP保證數據正確性,UDP可能丟包,TCP保證數據順序,UDP不保證;

6.UDP協議可以一對一通信,同時可以一對多通信

7.在一些應用場景下對可靠傳輸的要求不高的情況下,UDP協議具有更好的實時性,工作效率要比TCP高。同時,UDP的段結構要比TCP的段結構簡單,能降低網絡開銷。

 【服務器知識】TCP協議與UDP協議各自的優點及區別

六、總結:

TCP:是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。
UDP:是一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。
你可以這么理解:TCP必須保持連接才能通訊,UDP不必要建立連接隨時就可以通訊;
舉個例子:像我們找電話,必須兩邊都在,才能打電話,這個就是TCP。 像發短信,不必要對方在線,可以任意時候發短信,但是發送的短信可能會有延遲到達對方,這個就是UDP!兩者的區別主要就這些,更多請關注數據吧。