UDP如何實現(xiàn)可靠傳輸

概述

UDP不屬于連接協(xié)議唠雕,具有資源消耗少,處理速度快的優(yōu)點吨述,所以通常音頻岩睁,視頻和普通數(shù)據(jù)在傳送時,使用UDP較多揣云,因為即使丟失少量的包捕儒,也不會對接受結(jié)果產(chǎn)生較大的影響。

傳輸層無法保證數(shù)據(jù)的可靠傳輸,只能通過應(yīng)用層來實現(xiàn)了刘莹。實現(xiàn)的方式可以參照tcp可靠性傳輸?shù)姆绞窖忠悖皇菍崿F(xiàn)不在傳輸層,實現(xiàn)轉(zhuǎn)移到了應(yīng)用層点弯。

最簡單的方式是在應(yīng)用層模仿傳輸層TCP的可靠性傳輸扇调。下面不考慮擁塞處理,可靠UDP的簡單設(shè)計蒲拉。

  • 1肃拜、添加seq/ack機制,確保數(shù)據(jù)發(fā)送到對端
  • 2雌团、添加發(fā)送和接收緩沖區(qū),主要是用戶超時重傳士聪。
  • 3锦援、添加超時重傳機制。

詳細說明:送端發(fā)送數(shù)據(jù)時剥悟,生成一個隨機seq=x灵寺,然后每一片按照數(shù)據(jù)大小分配seq。數(shù)據(jù)到達接收端后接收端放入緩存区岗,并發(fā)送一個ack=x的包略板,表示對方已經(jīng)收到了數(shù)據(jù)。發(fā)送端收到了ack包后慈缔,刪除緩沖區(qū)對應(yīng)的數(shù)據(jù)叮称。時間到后,定時任務(wù)檢查是否需要重傳數(shù)據(jù)藐鹤。

目前有如下開源程序利用udp實現(xiàn)了可靠的數(shù)據(jù)傳輸瓤檐。分別為RUDP、RTP娱节、UDT挠蛉。

開源程序

1、RUDP(Reliable User Datagram Protocol)

RUDP 提供一組數(shù)據(jù)服務(wù)質(zhì)量增強機制肄满,如擁塞控制的改進谴古、重發(fā)機制及淡化服務(wù)器算法等,從而在包丟失和網(wǎng)絡(luò)擁塞的情況下稠歉, RTP 客戶機(實時位置)面前呈現(xiàn)的就是一個高質(zhì)量的 RTP 流掰担。在不干擾協(xié)議的實時特性的同時,可靠 UDP 的擁塞控制機制允許 TCP 方式下的流控制行為轧抗。

2恩敌、RTP(Real Time Protocol)

RTP為數(shù)據(jù)提供了具有實時特征的端對端傳送服務(wù),如在組播或單播網(wǎng)絡(luò)服務(wù)下的交互式視頻音頻或模擬數(shù)據(jù)横媚。

應(yīng)用程序通常在 UDP 上運行 RTP 以便使用其多路結(jié)點和校驗服務(wù)纠炮;這兩種協(xié)議都提供了傳輸層協(xié)議的功能月趟。但是 RTP 可以與其它適合的底層網(wǎng)絡(luò)或傳輸協(xié)議一起使用。如果底層網(wǎng)絡(luò)提供組播方式恢口,那么 RTP 可以使用該組播表傳輸數(shù)據(jù)到多個目的地孝宗。

RTP 本身并沒有提供按時發(fā)送機制或其它服務(wù)質(zhì)量(QoS)保證,它依賴于底層服務(wù)去實現(xiàn)這一過程耕肩。 RTP 并不保證傳送或防止無序傳送因妇,也不確定底層網(wǎng)絡(luò)的可靠性。 RTP 實行有序傳送猿诸, RTP 中的序列號允許接收方重組發(fā)送方的包序列婚被,同時序列號也能用于決定適當?shù)陌恢茫纾涸谝曨l解碼中梳虽,就不需要順序解碼址芯。

3、UDT(UDP-based Data Transfer Protocol)

基于UDP的數(shù)據(jù)傳輸協(xié)議(UDP-basedData Transfer Protocol窜觉,簡稱UDT)是一種互聯(lián)網(wǎng)數(shù)據(jù)傳輸協(xié)議谷炸。UDT的主要目的是支持高速廣域網(wǎng)上的海量數(shù)據(jù)傳輸,而互聯(lián)網(wǎng)上的標準數(shù)據(jù)傳輸協(xié)議TCP在高帶寬長距離網(wǎng)絡(luò)上性能很差禀挫。

顧名思義旬陡,UDT建于UDP之上,并引入新的擁塞控制和數(shù)據(jù)可靠性控制機制语婴。UDT是面向連接的雙向的應(yīng)用層協(xié)議描孟。它同時支持可靠的數(shù)據(jù)流傳輸和部分可靠的數(shù)據(jù)報傳輸。由于UDT完全在UDP上實現(xiàn)腻格,它也可以應(yīng)用在除了高速數(shù)據(jù)傳輸之外的其它應(yīng)用領(lǐng)域画拾,例如點到點技術(shù)(P2P),防火墻穿透菜职,多媒體數(shù)據(jù)傳輸?shù)鹊取?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末青抛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子酬核,更是在濱河造成了極大的恐慌蜜另,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫡意,死亡現(xiàn)場離奇詭異举瑰,居然都是意外死亡,警方通過查閱死者的電腦和手機蔬螟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門此迅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事耸序∪绦” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵坎怪,是天一觀的道長罢坝。 經(jīng)常有香客問我,道長搅窿,這世上最難降的妖魔是什么嘁酿? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮男应,結(jié)果婚禮上闹司,老公的妹妹穿的比我還像新娘。我一直安慰自己殉了,他們只是感情好开仰,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著薪铜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恩溅。 梳的紋絲不亂的頭發(fā)上隔箍,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音脚乡,去河邊找鬼蜒滩。 笑死,一個胖子當著我的面吹牛奶稠,可吹牛的內(nèi)容都是我干的俯艰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼锌订,長吁一口氣:“原來是場噩夢啊……” “哼竹握!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辆飘,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤啦辐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜈项,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芹关,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年紧卒,在試婚紗的時候發(fā)現(xiàn)自己被綠了侥衬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖轴总,靈堂內(nèi)的尸體忽然破棺而出直颅,到底是詐尸還是另有隱情,我是刑警寧澤肘习,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布际乘,位于F島的核電站,受9級特大地震影響漂佩,放射性物質(zhì)發(fā)生泄漏脖含。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一投蝉、第九天 我趴在偏房一處隱蔽的房頂上張望养葵。 院中可真熱鬧,春花似錦瘩缆、人聲如沸关拒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽着绊。三九已至,卻和暖如春熟尉,著一層夾襖步出監(jiān)牢的瞬間归露,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工斤儿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剧包,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓往果,卻偏偏與公主長得像疆液,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陕贮,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 由于在傳輸層UDP已經(jīng)是不可靠的連接堕油,那就要在應(yīng)用層自己實現(xiàn)一些保障可靠傳輸?shù)臋C制 簡單來講,要使用UDP來構(gòu)建可...
    Temple_Li閱讀 2,791評論 0 1
  • 個人認為飘蚯,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習博客系列博客是一部非常精彩的學(xué)習筆記馍迄,這雖然只是...
    貳零壹柒_fc10閱讀 5,055評論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的局骤,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,069評論 6 174
  • RTSP SDP RTP/RTCP 介紹應(yīng)用層 RTSP攀圈、SDP; 傳輸層 RTP峦甩、TCP赘来、UDP现喳; 網(wǎng)絡(luò)層 IP...
    Atom_Woo閱讀 3,848評論 0 7
  • 2014-04-19 做一個中立的幌缝、獨立的灸促、具有道德力量的研究共同體 ——小城散漫表達系列之“研究共同體” 火山 ...
    朱明云閱讀 311評論 0 2