TCP和UDP的區別深刻了解&TCP三次握手,四次揮手的過程

TCP(傳輸控制協議,Transport Control Protocol)網絡

UDP(用戶數據報協議,User Data Protocol)spa

 

OSI 和 TCP/IP 模型在傳輸層定義兩種傳輸協議:TCP(或傳輸控制協議)和 UDP(或用戶數據報協議)。3d

UDP:

UDP 與 TCP 的主要區別在於 UDP 不必定提供可靠的數據傳輸。事實上,該協議不能保證數據準確無誤地到達目的地。UDP 在許多方面很是有效。當某個程序的目標是儘快地傳輸儘量多的信息時(其中任意給定數據的重要性相對較低),可以使用 UDP。ICQ 短消息使用 UDP 協議發送消息。blog

許多程序將使用單獨的TCP鏈接和單獨的UDP鏈接。重要的狀態信息隨可靠的TCP鏈接發送,而主數據流經過UDP發送。資源

TCP:

TCP的目的是提供可靠的數據傳輸,並在相互進行通訊的設備或服務之間保持一個虛擬鏈接。TCP在數據包接收無序、丟失或在交付期間被破壞時,負責數據恢復。它經過爲其發送的每一個數據包提供一個序號來完成此恢復。記住,較低的網絡層會將每一個數據包視爲一個獨立的單元,所以,數據包能夠沿徹底不一樣的路徑發送,即便它們都是同一消息的組成部分。這種路由與網絡層處理分段和從新組裝數據包的方式很是類似,只是級別更高而已。路由

爲確保正確地接收數據,TCP要求在目標計算機成功收到數據時發回一個確認(即 ACK)。若是在某個時限內未收到相應的 ACK,將從新傳送數據包。若是網絡擁塞,這種從新傳送將致使發送的數據包重複。可是,接收計算機可以使用數據包的序號來肯定它是否爲重複數據包,並在必要時丟棄它。class

TCP與UDP區別總結:效率

一、TCP(面向鏈接如打電話要先撥號創建鏈接),創建TCP鏈接需通過三次握手,釋放TCP鏈接需通過四次揮手;UDP是無鏈接的,即發送數據以前不須要創建鏈接請求

以下圖所示,能夠看到創建一個TCP鏈接的過程爲(三次握手的過程):程序

第一次握手

客戶端向服務端發送鏈接請求報文段。該報文段中包含自身的數據通信初始序號。請求發送後,客戶端便進入 SYN-SENT 狀態。

第二次握手

服務端收到鏈接請求報文段後,若是贊成鏈接,則會發送一個應答,該應答中也會包含自身的數據通信初始序號,發送完成後便進入 SYN-RECEIVED 狀態。

第三次握手

當客戶端收到鏈接贊成的應答後,還要向服務端發送一個確認報文。客戶端發完這個報文段後便進入 ESTABLISHED 狀態,服務端收到這個應答後也進入 ESTABLISHED 狀態,此時鏈接創建成功。

這裏可能你們會有個疑惑:爲何 TCP 創建鏈接須要三次握手,而不是兩次?這是由於這是爲了防止出現失效的鏈接請求報文段被服務端接收的狀況,從而產生錯誤。

TCP斷開鏈接:如圖所示

二、TCP提供可靠的服務。也就是說,經過TCP鏈接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付

Tcp經過校驗和,重傳控制,序號標識,滑動窗口、確認應答實現可靠傳輸。如丟包時的重發控制,還能夠對次序亂掉的分包進行順序控制。

三、UDP具備較好的實時性,工做效率比TCP高,適用於對高速傳輸和實時性有較高的通訊或廣播通訊。

4.每一條TCP鏈接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通訊

五、TCP對系統資源要求較多,UDP對系統資源要求較少。

相關文章
相關標籤/搜索