UDP不屬於鏈接協議,具備資源消耗少,處理速度快的優勢,因此一般音頻,視頻和普通數據在傳送時,使用UDP較多,由於即便丟失少許的包,也不會對接受結果產生較大的影響。算法
傳輸層沒法保證數據的可靠傳輸,只能經過應用層來實現了。實現的方式能夠參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。緩存
最簡單的方式是在應用層模仿傳輸層TCP的可靠性傳輸。下面不考慮擁塞處理,可靠UDP的簡單設計。服務器
詳細說明:送端發送數據時,生成一個隨機seq=x,而後每一片按照數據大小分配seq。數據到達接收端後接收端放入緩存,併發送一個ack=x的包,表示對方已經收到了數據。發送端收到了ack包後,刪除緩衝區對應的數據。時間到後,定時任務檢查是否須要重傳數據。網絡
目前有以下開源程序利用udp實現了可靠的數據傳輸。分別爲RUDP、RTP、UDT。併發
RUDP 提供一組數據服務質量加強機制,如擁塞控制的改進、重發機制及淡化服務器算法等,從而在包丟失和網絡擁塞的狀況下, RTP 客戶機(實時位置)面前呈現的就是一個高質量的 RTP 流。在不干擾協議的實時特性的同時,可靠 UDP 的擁塞控制機制容許 TCP 方式下的流控制行爲。tcp
RTP爲數據提供了具備實時特徵的端對端傳送服務,如在組播或單播網絡服務下的交互式視頻音頻或模擬數據。性能
應用程序一般在 UDP 上運行 RTP 以便使用其多路結點和校驗服務;這兩種協議都提供了傳輸層協議的功能。可是 RTP 能夠與其它適合的底層網絡或傳輸協議一塊兒使用。若是底層網絡提供組播方式,那麼 RTP 可使用該組播表傳輸數據到多個目的地。設計
RTP 自己並無提供按時發送機制或其它服務質量(QoS)保證,它依賴於底層服務去實現這一過程。 RTP 並不保證傳送或防止無序傳送,也不肯定底層網絡的可靠性。 RTP 實行有序傳送, RTP 中的序列號容許接收方重組發送方的包序列,同時序列號也能用於決定適當的包位置,例如:在視頻解碼中,就不須要順序解碼。視頻
基於UDP的數據傳輸協議(UDP-basedData Transfer Protocol,簡稱UDT)是一種互聯網數據傳輸協議。UDT的主要目的是支持高速廣域網上的海量數據傳輸,而互聯網上的標準數據傳輸協議TCP在高帶寬長距離網絡上性能不好。資源
顧名思義,UDT建於UDP之上,並引入新的擁塞控制和數據可靠性控制機制。UDT是面向鏈接的雙向的應用層協議。它同時支持可靠的數據流傳輸和部分可靠的數據報傳輸。因爲UDT徹底在UDP上實現,它也能夠應用在除了高速數據傳輸以外的其它應用領域,例如點到點技術(P2P),防火牆穿透,多媒體數據傳輸等等。