TCP UDP的區別以及TCP如何實現可靠傳輸

2021-10-07 01:30:37 字數 1138 閱讀 3953

1,tcp(transmission control protocol):

tcp充分實現了資料傳輸時各種控制功能,可以進行丟包的重發控制,還可以對次序亂掉的分包進行順序控制。而這些在udp中都沒有。此外,tcp作為一種面向有連線的協議,只有在確認通訊端存在時才會傳送資料,從而可以控制通訊流量的浪費。

tcp通過檢驗和、序列號、確認應答、重發控制、連線管理以及視窗控制等機制實現可靠性傳輸。此處不一一敘述。

2,udp(user datagram protocol):

udp不提供複雜的控制機制,利用ip提供面向無連線的通訊服務。並且它是將應用程式發來的資料在收到的那一刻,立刻按照原樣傳送到網路上的一種機制。

即使是出現網路擁堵的情況下,udp也無法進行流量控制等避免網路擁塞的行為。此外,傳輸途中如果出現了丟包,udp也不負責重發。甚至當出現包的到達順序亂掉時也沒有糾正的功能。如果需要這些細節控制,那麼不得不交給由採用udp的應用程式去處理。換句話說,udp將部分控制轉移到應用程式去處理,自己卻只提供作為傳輸層協議的最基本功能。udp有點類似於使用者說什麼聽什麼的機制,但是需要使用者充分考慮好上層協議型別並製作相應的應用程式。

3,區別:

4,tcp 協議如何保證可靠傳輸:

5,udp如何實現可靠傳輸:

傳輸層無法保證資料的可靠傳輸,只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。

最簡單的方式是在應用層模仿傳輸層tcp的可靠性傳輸。下面不考慮擁塞處理,可靠udp的簡單設計。

詳細說明:傳送端傳送資料時,生成乙個隨機seq=x,然後每一片按照資料大小分配seq。資料到達接收端後接收端放入快取,並傳送乙個ack=x+1的包,表示對方已經收到了資料。傳送端收到了ack包後,刪除緩衝區對應的資料。如果超過一定時間還沒收到ack,那麼重傳資料

目前有如下開源程式利用udp實現了可靠的資料傳輸。分別為rudp、rtp、udt。

特別感謝:

參考:

網路協議,如TCP UDP的區別?

1 tcp面向連線 如打 要先撥號建立連線 udp是無連線的,即傳送資料之前不需要建立連線 2 tcp提供可靠的服務。也就是說,通過tcp連線傳送的資料,無差錯,不丟失,不重複,且按序到達 udp盡最大努力交付,即不保證可靠交付 3 tcp面向位元組流,實際上是tcp把資料看成一連串無結構的位元組流...

TCP UDP作用,用途以及區別

一種傳輸控制協議,提供的是面向連線 可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立乙個tcp連線,之後才能傳輸資料。tcp提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。1.首先,tcp提供客戶與伺服器之間的連線。tcp客戶先與某個給定伺服器...

tcp三次握手 tcpudp區別

3次握手 第一次握手 主機a傳送位碼為syn 1,隨機產生seq number x的資料報到伺服器,客戶端進入syn send狀態,等待伺服器的確認 主機b由syn 1知道,a要求建立聯機 第二次握手 主機b收到請求後要確認聯機資訊,向a傳送ack number 主機a的seq 1 syn 1,ac...