UDP與TCP的區別

2021-06-29 04:37:30 字數 2320 閱讀 7272

tcp(transmission control protocol)---傳輸控制協議,提供的是面向連線、可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立乙個tcp連線,之後才能傳輸資料。tcp建立連線要進行3次握手,而斷開連線要進行4次。tcp提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。 

udp(user data protocol

)---使用者資料報協議,是乙個簡單的面向資料報的運輸層協議。udp不提供可靠性,它只是把應用程式傳給ip層的資料報傳送出去,但是並不能保證它們能到達目的地。由於udp在傳輸資料報前不用在客戶和伺服器之間建立乙個連線,且沒有超時重發等機制,故而傳輸速度很快。

udp適用於一次只傳送少量資料、對可靠性要求不高的應用環境。比如,我們經常使用「ping」命令來測試兩台

主機之間tcp/ip通訊是否正常,其實「ping」命令的原理就是向對方主機傳送udp資料報,然後對方主機確認收到資料報,如果資料報是否到達的訊息及時反饋回來,那麼網路就是通的。例如,在預設狀態下,一次「ping」操作傳送4個資料報(如圖所示)。大家可以看到,傳送的資料報數量是4包,收到的也是4包(因為對方

主機收到後會發回乙個確認收到的資料報)。這充分說明了udp協議是

面向非連線

的協議,沒有建立連線的過程。正因為udp協議沒有連線的過程,所以它的通訊效率高;但也正因為如此,它的可靠性不如tcp協議高。qq就使用udp發訊息,因此有時會出現收不到訊息的情況

tcp要三次握手, 每次傳輸都會檢查包回執有重發機制, 用於可靠性要求高, 效能要求不高的傳輸.

udp會丟包, 丟包後不重發, 所以在可靠性要求低, 效能要求高的地方使用.

大多數情況下tcp已經滿足需求了, 但總有對效能欲求不滿的地方.

例如流**相關, 時延較大的衛星通訊方面, 鐵路資訊上報及互動系統, 城市交通資訊上報及互動系統等等, udp作用也是巨大, 而且udp和tcp並非公用一套埠, 合理運用也能起到意想不到的作用.

udp處理資料報,tcp處理網路流。

讀udp socket 一次返回乙個報文

讀tcp socket不一定能讀到乙個完整的報文

udp不保證報文到達的先後順序,不保證是否有報文丟失

tcp保證寫入流的資料按順序被讀出來

tcp可靠性高,效率低

關於tcp和udp的區別和概念上面都有人寫過了。我這裡寫乙個udp的應用。

在多人網路遊戲中,人物的移動可以用udp來發。因為人物一直處於移動當中,會頻繁發出位置資訊的包。由於發的比較頻繁,而且後面的位置資訊會覆蓋掉前面的位置資訊,所以丟不丟包不重要。就可以用udp來發。每個udp包的資料裡面加個時間戳,那麼進來的包你判斷下時間,如果是已經過期的包,就可以直接丟掉。這樣,即使udp包過來的順序不一樣都無所謂了

般使用tcp,可靠性傳輸。但用udp也可以做的很完美,比如qq就是使用udp

tcp是面向流字元的,資料流間無邊界;udp是面向分組的,分組間有明確的邊界。

對於tcp,傳送一串數字(1,2,3,4,5),接收時有可能變成兩次(1,2)和(2,4,5),或者變成任意接收方式,協議棧只保證接收順序正確;udp傳送乙個分組,接收方或者接收完全失敗,如果成功整個分組都會接收到。

1、tcp是面向連線的,udp是無連線的。模擬於打**和發電報的關係。

udp 的使用範圍很窄,而且程式設計比 tcp 難多了:

你真的很在乎延遲,不能忍受重傳,那麼就用udp,例如 ntp 協議。重傳ntp訊息純屬添亂。

你需要nat穿透,那麼不得不用udp。

其他情況,一旦程式要自己做重傳,你都是在用udp模擬出蹩腳的tcp,還不如直接用tcp呢。

總之:使用 udp 需要有強大到不容置疑的理由,when in doubt, use tcp.

一些協議,出於歷史原因,受當時技術和網路條件限制,選擇了基於udp實現,其選擇的理由現在很可能已經不再成立了。因此「***協議用udp」不是你現在寫網路應用程式也該用udp的理由,除非你本身就是在實現***協議。

另外,那些說tcp比udp慢、效率低的,你拿udp寫個程式,把千兆網頻寬打滿(tcp等價的**只有兩行:客戶端 while (true) 服務端 while (true) 。),且不說你的程式會有多複雜,先看看goodput到底是不是比tcp大、cpu使用率是不是比tcp低嘛。

從設計目的來看,udp的傳送方是不知道接受方是否收到資料,而tcp是要求傳送方確定的知道接受方

可以看出,udp與tcp的主要區別在於: 1.

基於連線與無連線;

2.對系統資源的要求(tcp較多,udp少);

3.udp程式結構較簡單;

4.流模式與資料報模式 ;

5.tcp

保證資料正確性,udp可能丟包,tcp保證資料順序,udp不保證。

TCP與UDP的區別

面向連線的tcp 面向連線 就是在正式通訊前必須要與對方建立起連線。比如你給別人打 必須等線路接通了 對方拿起話筒才能相互通話。tcp協議能為應用程式提供可靠的通訊連線,使一台計算機發出的位元組流無差錯地發往網路上的其他計算機,對可靠性要求高的資料通訊系統往往使用tcp協議傳輸資料。面向非連線的ud...

tcp 與udp 的區別

tcp提供面向連線 可靠的位元組流服務。udp提供面向資料報的傳輸層協議。1.tcp 提供客戶與伺服器之間的連線。tcp客戶與某個伺服器建立乙個連線,再跨跨該連線與伺服器交換資料,最後終止連線。2.tcp提供可靠性。當tcp向對端傳送資料時,要求對端返回乙個確認。如果沒收到確認,tcp就自動重傳資料...

TCP與UDP的區別

tcp transmission control protocol,傳輸控制協議 是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線。乙個tcp連線必須要經過三次 對話 才能建立起來,其中的過程非常複雜,我們這裡只做簡單 形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三...