亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)據(jù)傳送方法、發(fā)送節(jié)點、接收節(jié)點及數(shù)據(jù)傳送系統(tǒng)與流程

文檔序號:12729526閱讀:741來源:國知局
一種數(shù)據(jù)傳送方法、發(fā)送節(jié)點、接收節(jié)點及數(shù)據(jù)傳送系統(tǒng)與流程

本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)傳送加速方法及相關(guān)的裝置和系統(tǒng)。



背景技術(shù):

在網(wǎng)絡(luò)通訊中,如何保證可靠、高效地在網(wǎng)絡(luò)上進行數(shù)據(jù)傳輸一直是學(xué)術(shù)界和工業(yè)界的研究重點,而數(shù)據(jù)傳輸效率與網(wǎng)絡(luò)協(xié)議的性能直接相關(guān),其中,吞吐率/傳輸速率是用來衡量網(wǎng)絡(luò)協(xié)議性能的重要指標之一。在現(xiàn)有的通信網(wǎng)絡(luò)中,通常采用TCP(Transmission Control Protocol,傳輸控制協(xié)議)或UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)作為傳輸層協(xié)議。TCP和UDP是TCP/IP模型中最通用的兩種傳輸層協(xié)議。根據(jù)統(tǒng)計,目前全球互聯(lián)網(wǎng)數(shù)據(jù)流量90%以上通過TCP傳輸,通過UDP傳輸?shù)牟蛔?0%。而且TCP所占份額還在繼續(xù)擴大,就連目前廣泛采用UDP協(xié)議的多媒體應(yīng)用也逐漸開始采用TCP協(xié)議傳輸多媒體數(shù)據(jù)包。然而,設(shè)計于二十多年前的TCP傳輸協(xié)議已經(jīng)越來越不適應(yīng)飛速發(fā)展的高速網(wǎng)絡(luò)環(huán)境和新型應(yīng)用的需求。比如,由于TCP自身的“雙窗口”擁塞控制,丟包重傳等機制,當網(wǎng)絡(luò)中存在一定程度的丟包和延時的時候,TCP連接的吞吐率顯著下滑,無法有效地利用帶寬,導(dǎo)致了TCP協(xié)議不能很好的支持數(shù)據(jù)的高吞吐率/傳輸速率傳輸。

針對TCP的傳輸速率的問題,各種網(wǎng)絡(luò)加速技術(shù)應(yīng)運而生。這些加速技術(shù)基本上可以分為三類:基于丟包(Loss-based)的TCP加速技術(shù)、基于延時(Delay-based)的TCP加速技術(shù)和基于學(xué)習(xí)(Learning-based)的TCP加速技術(shù)。

Loss-based的TCP加速技術(shù)沿襲了主流TCP以丟包來判斷擁塞并調(diào)整傳輸速率的方式。其對傳統(tǒng)TCP的改進主要是通過增大初始擁塞控制窗口(Congestion Window,CNWD),同時在通過丟包判斷出現(xiàn)擁塞后使用比傳統(tǒng)TCP更激進的方式恢復(fù)CNWD,以期減少擁塞對速率的影響。盡管這些改進在很多情況下確實能夠提升速率,但很多網(wǎng)絡(luò)會產(chǎn)生非擁塞因素的丟包,特別是無線網(wǎng)絡(luò),如信號被干擾等因素導(dǎo)致的丟包并不意味有擁塞發(fā)生,因此 Loss-based的TCP加速技術(shù)將丟包作為擁塞發(fā)生的信號很容易誤判,導(dǎo)致傳輸速率下降,帶寬得不到有效利用。

Delay-based的TCP加速技術(shù)克服了Loss-based的主要缺陷,采用延遲的變化來判斷擁塞程度并相應(yīng)調(diào)整傳輸速率。這一機制更符合現(xiàn)代網(wǎng)絡(luò)的特點,能夠在發(fā)生擁塞網(wǎng)絡(luò)節(jié)點的隊列開始堆積時就及時下調(diào)傳輸速率,避免擁塞惡化,減少甚至避免丟包的發(fā)生。同時,Delay-based的TCP加速技術(shù)不將丟包當作擁塞,在非擁塞因素發(fā)生的丟包時可以保持較高的速率。因此,設(shè)計優(yōu)良的Delay-based的TCP加速技術(shù)比Loss-based的TCP加速技術(shù)在傳輸速率上有了顯著的提升。盡管如此,當網(wǎng)絡(luò)路徑本身的延遲就變化很大時,Delay-based的TCP加速技術(shù)會將非擁塞因素導(dǎo)致的延遲增加誤判為擁塞并轉(zhuǎn)入擁塞處理,從而導(dǎo)致沒有必要的壓低傳輸速率。例如,包括移動互聯(lián)網(wǎng)在內(nèi)的無線網(wǎng)絡(luò)延遲變化就很頻繁,一些網(wǎng)絡(luò)設(shè)備(特別是安全設(shè)備)也可能不定時地引入額外的數(shù)據(jù)包處理延遲。

Learning-based的TCP加速技術(shù)采用網(wǎng)絡(luò)路徑特征自學(xué)習(xí)的動態(tài)算法,基于每一個TCP連接實時觀察、分析網(wǎng)絡(luò)特征,根據(jù)學(xué)習(xí)到的網(wǎng)絡(luò)特征隨時調(diào)整算法來更準確的判斷擁塞程度、更及時地判斷丟包,從而更恰當?shù)倪M行擁塞處理并更快速的進行丟包恢復(fù)。這一設(shè)計從原理上克服了靜態(tài)算法無法適應(yīng)網(wǎng)絡(luò)路徑特征變化的問題,保證了在各種不同網(wǎng)絡(luò)環(huán)境及頻繁變化的網(wǎng)絡(luò)延遲、丟包特征下加速效果的持續(xù)有效性。然而,Learning-based的TCP加速技術(shù)需要靠對歷史記錄的學(xué)習(xí)來了解當前網(wǎng)絡(luò)的情況,但是對于隨機丟包,延遲抖動大的網(wǎng)絡(luò),這種學(xué)習(xí)/判斷效果并不明顯,使得網(wǎng)絡(luò)的吞吐率/傳輸速率的提升并不顯著。

綜上,現(xiàn)有的傳輸協(xié)議的吞吐率/傳輸速率人仍然有較大的提升空間,盡管有一些加速算法可以起到一定的加速作用,但網(wǎng)絡(luò)的發(fā)展趨勢是流量特征越來越復(fù)雜并難以預(yù)測,尤其是在高延遲,高丟包,高帶寬延遲積的場景下,網(wǎng)絡(luò)路徑特征不斷發(fā)生變化,因此加速的效果也會起伏不定,有時甚至出現(xiàn)反效果。因此,現(xiàn)有技術(shù)中傳輸層協(xié)議的吞吐率/傳輸速率仍然有待提升。



技術(shù)實現(xiàn)要素:

本發(fā)明實施例提供一種數(shù)據(jù)傳送方法、發(fā)送/接收節(jié)點、及數(shù)據(jù)傳送系統(tǒng),用于提高數(shù)據(jù)傳輸?shù)乃俾省?/p>

為達到上述發(fā)明目的,一方面,本發(fā)明實施例提供了一種報文傳輸方法,該方法包括:發(fā)送節(jié)點以預(yù)定傳輸速率向接收節(jié)點傳輸多個數(shù)據(jù)包,接收節(jié)點根據(jù)接收到的數(shù)據(jù)包的序列號檢測出一個或多個丟失數(shù)據(jù)包后,向發(fā)送節(jié)點發(fā)送丟包反饋信息,以請求重傳丟失的數(shù)據(jù)包,發(fā)送節(jié)點接收到丟包反饋信息后,根據(jù)丟包反饋信息中的指示,重傳丟失的數(shù)據(jù)包。與傳統(tǒng)TCP盡力發(fā)送數(shù)據(jù)包的機制不同,在本發(fā)明實施例的數(shù)據(jù)傳送方法中,數(shù)據(jù)包是以特定的速率均勻發(fā)送的,可以減少緩數(shù)據(jù)包瞬時注入網(wǎng)絡(luò)造成網(wǎng)絡(luò)擁塞的情況,同時也不會像TCP一樣,由于發(fā)送窗口、擁塞窗口等限制而造成有包不能發(fā)的現(xiàn)象,可以顯著提高數(shù)據(jù)傳輸速率和帶寬利用率。

在第一種可能的實現(xiàn)方式中,發(fā)送節(jié)點發(fā)送的數(shù)據(jù)包攜帶有一個隨機序列號(SEQ)和一個滾動序列號(PKT.SEQ);接收節(jié)點可以根據(jù)接收到的數(shù)據(jù)包中的滾動序列號來檢測丟失數(shù)據(jù)包。由于PKT.SQE是用來指示數(shù)據(jù)包傳輸次序的,且只與數(shù)據(jù)包傳輸?shù)拇涡蛳嚓P(guān),因此接收節(jié)點可以根據(jù)前后到達包的PKT.SEQ來迅速的判斷丟包。雙SEQ機制可以在一個RTT(Round Trip Time,往返時間)內(nèi)發(fā)現(xiàn)任意丟失數(shù)據(jù)包,相對于TCP使用的超時重傳,時延更小。

根據(jù)第一方面第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,發(fā)送節(jié)點傳輸?shù)亩鄠€數(shù)據(jù)包的滾動序列號與該多個數(shù)據(jù)包的傳輸次序?qū)?yīng)。

根據(jù)第一方面的第一種或第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,重傳的數(shù)據(jù)包攜帶有新的滾動序列號。

根據(jù)第一方面的第一種或第二種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,重傳的數(shù)據(jù)包攜帶的隨機序列號與首次傳輸該數(shù)據(jù)包時攜帶的隨機序列號相同,重傳的數(shù)據(jù)包攜帶的滾動序列號與首次傳輸該數(shù)據(jù)包時攜帶的滾動序列號不同。

根據(jù)第一方面或以上實現(xiàn)方式種的任意一種,在第五種可能的實現(xiàn)方式中,丟包反饋信息包含有丟失數(shù)據(jù)包的序列號信息,該序列號信息具體可以為 隨機序列號或滾動序列號?;蛘咴诘诹N可能的實現(xiàn)方式中,丟包反饋信息包含有接收節(jié)點已接收的數(shù)據(jù)包的序列號信息,比如隨機序列號或滾動序列號。

根據(jù)第一方面或第一方面的以上實現(xiàn)方式種的任意一種,在第七種可能的實現(xiàn)方式中,接收節(jié)點發(fā)送的丟包反饋信息為包含丟包指示字段的NACK控制包,該丟包指示字段用于攜帶丟失數(shù)據(jù)包的滾動序列號;相應(yīng)地,發(fā)送節(jié)點接收到NACK控制包之后,基于NACK控制包所攜帶的滾動序列號,以及發(fā)送節(jié)點已發(fā)送的數(shù)據(jù)包的隨機序列號和滾動序列號之間的映射關(guān)系,確定丟失數(shù)據(jù)包的隨機序列號,并給確定出丟失數(shù)據(jù)包賦予新的滾動序列號后重傳。或者在第八種可能的實現(xiàn)方式中,NACK控制包的丟包指示字段也可以用于攜帶丟失數(shù)據(jù)包的隨機序列號,接收節(jié)點可以根據(jù)丟失數(shù)據(jù)包的滾動序列號,查詢數(shù)據(jù)包隨機序列號與滾動序列號的映射關(guān)系表,確定丟失數(shù)據(jù)包的隨機序列號,將確定出的序列號攜帶在丟失指示字段,反饋給發(fā)送節(jié)點。

根據(jù)第一方面第五種或第七種可能的實現(xiàn)方式,在第九種可能的實現(xiàn)方式中,NACK控制包的丟包指示字段包括:丟包開始字段(START)和丟包結(jié)束字段(END),其中,所述丟包開始字段和丟包結(jié)束字段分別用于指示多個連續(xù)的丟失數(shù)據(jù)包中首包和尾包的滾動序列號。相應(yīng)地,發(fā)送節(jié)點在接收到NACK控制包后,可以根據(jù)NACK控制包中的丟包開始字段和丟包結(jié)束字段,確定連續(xù)的多個丟失數(shù)據(jù)包,并重傳該多個連續(xù)的丟失數(shù)據(jù)包。接收節(jié)點用一個NACK控制包向發(fā)送節(jié)點反饋連續(xù)丟失的多個數(shù)據(jù)包,從而可以減少NACK控制包的個數(shù),節(jié)省網(wǎng)絡(luò)資源,提高重傳效率。

根據(jù)第一方面或第一方面的以上任意一種可能的實現(xiàn)方式,在第十種可能的實現(xiàn)方式中,數(shù)據(jù)包的隨機序列號和滾動序列號的映射關(guān)系以映射表的形式存儲在所述發(fā)送節(jié)點。進一步地,在第十一種可能的實現(xiàn)方式中,發(fā)送節(jié)點在傳輸數(shù)據(jù)包的過程中,將已發(fā)送的數(shù)據(jù)包的隨機序列號和滾動序列號的映射關(guān)系添加到該映射表,從而可以實現(xiàn)映射表動態(tài)更新。

根據(jù)第一方面或或第一方面的以上任意一種可能的實現(xiàn)方式,在第十二種可能的實現(xiàn)方式中,NACK控制包包含:釋放字段(Release SEQ),該釋放字段用于攜帶接收節(jié)點當前已接收到的數(shù)據(jù)包的隨機序列號或滾動序列號。相應(yīng) 地,發(fā)送節(jié)點在接收到NACK控制包后,可以根據(jù)釋放字段的指示,從發(fā)送緩存中釋放接收節(jié)點已接收到的數(shù)據(jù)包所占用的空間。進一步地,接收節(jié)點也可以及時釋放已接收到的數(shù)據(jù)包所占用的接收緩存。

根據(jù)第一方面或或第一方面的以上任意一種可能的實現(xiàn)方式,在第十三種可能的實現(xiàn)方式中,接收節(jié)點還周期性發(fā)送PACK控制包,該PACK控制包攜帶有HOL包的隨機序列號,其中,HOL包包括:未被所述發(fā)送節(jié)點感知的丟失數(shù)據(jù)包,和/或重傳后再次丟失的數(shù)據(jù)包;相應(yīng)地,發(fā)送節(jié)點接收到PACK控制包之后,會重傳與所述PACK控制包攜帶的隨機序列號對應(yīng)的數(shù)據(jù)包。通過周期性發(fā)送PACK控制包,并在PACK控制包中攜帶HOL包的隨機序列號(SEQ),可以有效解決由于NACK控制包丟失或者重傳的數(shù)據(jù)包再次丟失導(dǎo)致的接收內(nèi)存阻塞的問題。

進一步地,根據(jù)第一方面的第十三種可能的實現(xiàn)方式,在第十四種可能的實現(xiàn)方式中,PACK控制包還可以包括數(shù)據(jù)包接收速率和數(shù)據(jù)包丟失率中的至少一種。進一步地,在第十五種可能的實現(xiàn)方式中,發(fā)送節(jié)點根據(jù)PACK包含的數(shù)據(jù)包接收速率和/或數(shù)據(jù)包丟失率,調(diào)整初始傳輸速率,使其與數(shù)據(jù)包接收速率相適應(yīng)。通過周期性發(fā)送的PACK控制包,可以發(fā)送節(jié)點可以實現(xiàn)傳輸速率的動態(tài)調(diào)整,使得發(fā)送節(jié)點和接收節(jié)點的配合更加有效,進而可以提高數(shù)據(jù)傳輸?shù)男省?蛇x地,接收節(jié)點也可以將數(shù)據(jù)包接收速率和/或數(shù)據(jù)包丟失率等信息攜帶在另一個單獨的控制包中,反饋給發(fā)送節(jié)點。

根據(jù)第一方面的第十三種至第十五種可能的實現(xiàn)方式中的任一種,在第十六種可能的實現(xiàn)方式中,接收節(jié)點發(fā)送PACK的周期可以由max(RTT/a,threshold),(1<a<6)來計算。

根據(jù)第一方面的第十三種至第十六種可能的實現(xiàn)方式中的任一種,在第十七種可能的實現(xiàn)方式中,接收節(jié)點在接收到首個數(shù)據(jù)包后會啟動一個PACK定 時器,如果PACK定時器時間到,則發(fā)送PACK。

根據(jù)第一方面或第一方面的任意一種可能的實現(xiàn)方式,在第十八種可能的實現(xiàn)方式中,發(fā)送節(jié)點和接收節(jié)點建立UDP連接,并基于該UDP連接進行數(shù)據(jù)傳送。

本發(fā)明實施例第二方面還提供一種發(fā)送節(jié)點,包括協(xié)議棧,以及通過總線連接的處理器、存儲器和通信接口;其中,協(xié)議棧用于在處理器的控制下,執(zhí)行第一方面或第一方面的任一可能的實現(xiàn)方式中發(fā)送節(jié)點的流程。

本發(fā)明實施例第三方面還提供一種節(jié)點,包括協(xié)議棧,以及通過總線連接的處理器、存儲器和通信接口;其中,協(xié)議棧用于在處理器的控制下,執(zhí)行第一方面或第一方面的任一可能的實現(xiàn)方式中接收節(jié)點的流程。在第三方面和第四方面的第一種可能的實現(xiàn)方式中,通信接口包括發(fā)射電路和接收電路,協(xié)議棧具體用于通過發(fā)射電路傳輸數(shù)據(jù)包,并通過接收電路接收數(shù)據(jù)包。在第三方面和第四方面的第二種可能的實現(xiàn)方式中,協(xié)議棧由以可執(zhí)行程序的形式存儲在存儲器中,被處理器執(zhí)行以實現(xiàn)發(fā)送節(jié)點和接收節(jié)點的功能。

本發(fā)明實施例第四方面還提供一種數(shù)據(jù)傳送系統(tǒng),包括第二方面的發(fā)送節(jié)點和第三方面的接收節(jié)點。

本發(fā)明實施例第五方面還提供一種數(shù)據(jù)傳送系統(tǒng),包括發(fā)送節(jié)點和接收節(jié)點,其中發(fā)送節(jié)點包括實現(xiàn)第一方面或第一方面的任一可能的實現(xiàn)方式中發(fā)送節(jié)點的功能的一個或多個功能單元;接收節(jié)點包括實現(xiàn)第一方面或第一方面的任一可能的實現(xiàn)方式中接收節(jié)點的功能的一個或多個功能單元。

本發(fā)明實施例第六方面還提供一種計算機可讀存儲介質(zhì),該存儲介質(zhì)存儲程序代碼,該程序代碼用于執(zhí)行以上任一方面或任一方面的可能的實現(xiàn)方式中所描述的方法步驟。

在本發(fā)明實施例任一方面或任一方面的任一種實現(xiàn)方式中,數(shù)據(jù)包接收速率用于表示接收節(jié)點接收數(shù)據(jù)包的速率,或者接收節(jié)點從接收緩存讀取數(shù)據(jù)包的速率,或者所述接收節(jié)點從接收緩存讀取數(shù)據(jù)包的速率,或者接收節(jié)點接收有效數(shù)據(jù)包的速率,這里的有效數(shù)據(jù)包時指非冗余的數(shù)據(jù)包。發(fā)送緩存和接收緩存分別位于發(fā)送節(jié)點和接收節(jié)點的內(nèi)存中。隨機序列號標識數(shù)據(jù)包的身份或 數(shù)據(jù)部分的信息,用于確保數(shù)據(jù)在發(fā)送緩存中按序排列;滾動序列號用于指示發(fā)送節(jié)點傳輸數(shù)據(jù)包的次序。隨機序列號與數(shù)據(jù)包的數(shù)據(jù)部分相關(guān),而滾動序列號只與數(shù)據(jù)包的傳輸次序相關(guān),與數(shù)據(jù)包的數(shù)據(jù)部分無關(guān)。

本發(fā)明實施例提供的數(shù)據(jù)傳送方法、裝置及數(shù)據(jù)傳送系統(tǒng)中,發(fā)送器以一定的發(fā)送速率向接收器推送數(shù)據(jù)包,接收器在檢測到有丟失包的時候,通過快速的流中重傳,迅速的‘拉’回丟失包,并釋放已接收到的按序連續(xù)數(shù)據(jù)包所占用的內(nèi)存。從而能夠可以在高延遲,高丟包率的網(wǎng)絡(luò)中提高網(wǎng)絡(luò)吞吐率/傳輸速率。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實施例的一種典型應(yīng)用場景示意圖;

圖2是本發(fā)明實施例提供的一種數(shù)據(jù)傳送系統(tǒng)示意圖;

圖3是本發(fā)明實施例提供的協(xié)議棧工作原理圖;

圖4是本發(fā)明實施例提供的數(shù)據(jù)傳送方法示意圖;

圖5是本發(fā)明實施例提供的協(xié)議棧工作原理圖;

圖6是本發(fā)明實施例提供的雙序列號機制的示意圖;

圖7是本發(fā)明實施例的數(shù)據(jù)傳送方法流程圖;

圖8是本發(fā)明實施例提供的NACK控制包的結(jié)構(gòu)示意圖;

圖9是本發(fā)明實施例提供的PACK控制包的結(jié)構(gòu)示意圖;

圖10是本發(fā)明實施例提供的發(fā)送節(jié)點的工作流程圖;

圖11是本發(fā)明實施例提供的接收節(jié)點的工作流程圖

圖12是本發(fā)明實施例提供的數(shù)據(jù)傳送系統(tǒng)的數(shù)據(jù)交互流程示意圖;

圖13是本發(fā)明實施例提供的另一種數(shù)據(jù)傳送系統(tǒng)結(jié)構(gòu)圖。

具體實施方式

為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本發(fā)明保護的范圍。

本發(fā)明實施例描述的網(wǎng)絡(luò)架構(gòu)以及業(yè)務(wù)場景是為了更加清楚的說明本發(fā)明實施例的技術(shù)方案,并不構(gòu)成對于本發(fā)明實施例提供的技術(shù)方案的限定,本領(lǐng)域普通技術(shù)人員可知,隨著網(wǎng)絡(luò)架構(gòu)的演變和新業(yè)務(wù)場景的出現(xiàn),本發(fā)明實施例提供的技術(shù)方案對于類似的技術(shù)問題,同樣適用。

圖1為本發(fā)明方案的適用的一個典型的應(yīng)用場景示意圖。如圖1所示,在一種場景下,UE(user equipment,用戶設(shè)備)通過因特網(wǎng)服務(wù)提供商(Internet Service Provider,簡稱“ISP”)接入互聯(lián)網(wǎng),并基于傳輸協(xié)議與服務(wù)器進行數(shù)據(jù)傳輸,比如,從服務(wù)器下載內(nèi)容,或者備份UE本地的內(nèi)容至服務(wù)器,等等。通常,UE與服務(wù)器之間數(shù)據(jù)傳輸可能跨越多個地域,多個ISP,高延遲和高丟包率不可避免。在另一些場景下,UE之間,或者服務(wù)器之間也可以通過有線或無線鏈路傳輸數(shù)據(jù),因為鏈路等因素,同樣也存在數(shù)據(jù)包丟失的情況。因此為了保證數(shù)據(jù)的可靠傳輸,TCP(Transmission Control Protocol,傳輸控制協(xié)議)成為不同設(shè)備之間傳輸協(xié)議的首選。但是TCP為了保障數(shù)據(jù)傳輸可靠性而 引入的基于窗口的發(fā)送機制,擁塞控制、超時重傳等機制會極大的限制數(shù)據(jù)的傳送速率,降低鏈路利用率。本申請旨在保證數(shù)據(jù)可靠傳輸?shù)那疤嵯?,進一步提高數(shù)據(jù)的傳輸速率,提高鏈路利用率。可以理解的是,任何基于TCP/IP(Internet Protocol)參考模型的通信系統(tǒng)都適用于本發(fā)明實施例的提供的技術(shù)方案,其中,TCP/IP參考模型是一個抽象的分層模型,它通常也被通稱為TCP/IP協(xié)議棧,這個模型中,所有的網(wǎng)絡(luò)協(xié)議都被歸類到5個抽象的"層"中:物理層、鏈路層、網(wǎng)絡(luò)層、傳輸層以及應(yīng)用層,關(guān)于各層的定義均為現(xiàn)有技術(shù),本發(fā)明實施例不再贅述。

本申請所涉及到的用戶設(shè)備UE可以包括圖1所示的PC(個人電腦)、智能手機、筆記本電腦、平板電腦、DC(數(shù)字相機)等各種具有通信功能的手持設(shè)備、車載設(shè)備、可穿戴設(shè)備、計算設(shè)備以及各種形式的用戶設(shè)備(User Equipment,簡稱UE),移動臺(Mobile station,簡稱MS),終端(terminal),終端設(shè)備(Terminal Equipment)等等。為方便描述,本申請中,上面提到的設(shè)備統(tǒng)稱為用戶設(shè)備或UE。本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”“第四”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。

圖2是本發(fā)明實施例提供的一種數(shù)據(jù)傳送系統(tǒng)100的簡化框圖,根據(jù)圖2,該數(shù)據(jù)傳送系統(tǒng)100包括發(fā)送節(jié)點110、接入點10、無線接入網(wǎng)關(guān)12、廣域網(wǎng)14、以及接收節(jié)點20。所屬領(lǐng)域的技術(shù)人員可以理解一個數(shù)據(jù)傳送系統(tǒng)通??砂? 比圖2中所示的部件更少或更多的部件,或者包括與圖2中所示部件不同的部件,圖2僅僅示出了與本發(fā)明實施例所公開的多個實現(xiàn)方式的更加相關(guān)的部件。

另外,發(fā)送節(jié)點110和接收節(jié)點可以獨立的物理設(shè)備,也可以是虛擬機。在一種場景下,發(fā)送節(jié)點110可以是圖1中描述的用戶設(shè)備,接收節(jié)點20也可以是圖1中描述的服務(wù)器。在另一種場景下,用戶設(shè)備和服務(wù)器的角色也可以互換,即服務(wù)器作為發(fā)送節(jié)點,而用戶設(shè)備作為接收節(jié)點。當然,發(fā)送節(jié)點110和接收節(jié)點20也可以均為用戶設(shè)備,或者均為服務(wù)器,本發(fā)明不做特別限制。廣域網(wǎng)14可包括公用網(wǎng)絡(luò)、專用網(wǎng)絡(luò)、因特網(wǎng)的一部分和/或其任何組合。無線接入網(wǎng)關(guān)12和接入點10可包括在一個無線網(wǎng)絡(luò)中,出于簡潔之目的,該無線網(wǎng)絡(luò)的其它部分并未進行闡述。另外還需要說明的是,本發(fā)明實施例主要是對發(fā)送節(jié)點和接收節(jié)點上的部署的網(wǎng)絡(luò)協(xié)議進行優(yōu)化,以提升數(shù)據(jù)傳輸速率,與發(fā)送節(jié)點和接收節(jié)點之間的網(wǎng)絡(luò)類型無關(guān)。圖2所描述的發(fā)送節(jié)點和接收節(jié)點基于無線網(wǎng)絡(luò)傳輸數(shù)據(jù)只是本發(fā)明實施例的一種典型應(yīng)用場景,可以理解的是,不同的設(shè)備之間通過有線或無線網(wǎng)絡(luò)傳輸數(shù)據(jù),例如,圖1中不同UE之間通過無線網(wǎng)絡(luò)(如Wi-Fi網(wǎng)絡(luò)、蜂窩網(wǎng)絡(luò)),或者服務(wù)器之間通過有線或無線方式傳輸數(shù)據(jù)的場景下,均可使用本發(fā)明實施例提供的方法。

根據(jù)圖2,發(fā)送節(jié)點110包括處理器120、通信接口140和存儲器150。相應(yīng)地,接收節(jié)點20也包括處理器、通信接口和存儲器(圖2中未示出)。發(fā)送節(jié)點110和接收節(jié)點20還分別包括協(xié)議棧130和協(xié)議棧21。其中,協(xié)議棧130和21的 功能可由軟件、硬件和/或固件的適當組合執(zhí)行。此外,所屬領(lǐng)域的技術(shù)人員可以理解發(fā)送節(jié)點110和接收節(jié)點20可包括比圖2中所示部件更少或更多的部件,圖2僅示出了與本發(fā)明實施例所公開的多個實現(xiàn)方式的更加相關(guān)的部件。

發(fā)送節(jié)點110的存儲器150中存儲有應(yīng)用程序121(也可以稱為發(fā)送應(yīng)用程序),例如,應(yīng)用程序121可以是用于上傳內(nèi)容至接收節(jié)點20的備份程序,也可以是用于從接收節(jié)點20請求內(nèi)容的瀏覽器,本發(fā)明實施例不做特別限定。應(yīng)用程序通常屬于應(yīng)用層,處理器120可以讀取存儲器150中的應(yīng)用程序121并執(zhí)行,以實現(xiàn)特定的功能。相應(yīng)地,接收節(jié)點20上也運行有應(yīng)用程序22(也可稱為接收應(yīng)用程序)。應(yīng)用程序121和22可以基于協(xié)議棧130和21進行數(shù)據(jù)傳送。其中,參見圖3,發(fā)送節(jié)點110以及接收節(jié)點20的協(xié)議棧至少包括:網(wǎng)絡(luò)層協(xié)議(IP)和傳輸層協(xié)議(本發(fā)明實施例優(yōu)選UDP)。

進一步地,如圖3所示,本發(fā)明實施例的數(shù)據(jù)傳送系統(tǒng)中發(fā)送節(jié)點和接收節(jié)點的協(xié)議棧還包括加速協(xié)議Fillp,用于提供數(shù)據(jù)傳輸加速能力。其中,如圖4所示,發(fā)送節(jié)點上的Fillp主要用于將上層應(yīng)用程序的數(shù)據(jù)包封裝后以穩(wěn)定的傳輸速率持續(xù)從內(nèi)存中‘推送’至接收節(jié)點;接收節(jié)點上的Fillp主要用于檢測丟失數(shù)據(jù)包,并發(fā)送‘拉’請求以指示發(fā)送節(jié)點重傳丟失數(shù)據(jù)包。其中,F(xiàn)illp可以典型地承載與UDP之上,數(shù)據(jù)包經(jīng)發(fā)送節(jié)點上的Fillp處理之后,會依次傳遞給底層的UDP和IP進行封裝處理,并最終通過物理層的鏈路發(fā)送出去。相應(yīng)地,接收節(jié)點從物理鏈路接收到數(shù)據(jù)包后,IP和UDP會對數(shù)據(jù)包解封裝,然后 傳遞給Fillp處理后,寫入接收節(jié)點內(nèi)存,最終提交給上層應(yīng)用程序。其中,發(fā)送節(jié)點110以及接收節(jié)點20的協(xié)議棧對報文封裝和解封裝的過程如圖5所示,從圖5可以看出,報文封裝的過程實質(zhì)上是根據(jù)協(xié)議棧各層協(xié)議規(guī)范對報文添加報頭和/或幀尾的過程,而報文解封裝的過程實質(zhì)上是根據(jù)協(xié)議棧各層協(xié)議規(guī)范對報文去除報頭和/或幀尾的過程。

更具體地,根據(jù)圖3,在發(fā)送節(jié)點側(cè),F(xiàn)illp協(xié)議主要實現(xiàn):應(yīng)用層數(shù)據(jù)包封裝、基于特定速率的數(shù)據(jù)包傳輸、基于接收節(jié)點的丟包反饋信息進行重傳;在接收節(jié)點側(cè),F(xiàn)illp協(xié)議主要實現(xiàn):數(shù)據(jù)包解封裝、丟包檢測以及丟失包處理功能??蛇x地,F(xiàn)illp協(xié)議還可以包括如下功能中的至少一種:基于接收節(jié)點反饋信息的傳輸速率控制、數(shù)據(jù)包加/解密,網(wǎng)絡(luò)環(huán)境初始化,以及前向糾錯編碼(FEC)。關(guān)于加速協(xié)議Fillp的功能的實現(xiàn)細節(jié)請見后續(xù)實施例??梢岳斫獾氖?,在一個實施例中,如圖3所示,F(xiàn)illp可以位于傳輸層之上;在另一個實施例中,F(xiàn)illp的加速能力也可以作為傳輸層協(xié)議(如UDP)的擴展,集成到傳輸層協(xié)議中,或者也可以在應(yīng)用層以應(yīng)用程序或應(yīng)用程序插件的形式實現(xiàn),甚至也可以介于物理層(網(wǎng)卡)和網(wǎng)絡(luò)層(IP)之間,本發(fā)明實施例不做特別限制。

如圖3所示,在一個實施例中,發(fā)送節(jié)點和接收節(jié)點完成網(wǎng)絡(luò)環(huán)境初始化之后,建立連接(本發(fā)明實施例以UDP連接為例進行說明);發(fā)送節(jié)點上運行的應(yīng)用程序?qū)?shù)據(jù)寫入發(fā)送緩存,發(fā)送緩存通常是發(fā)送節(jié)點的內(nèi)存或內(nèi)存的部 分區(qū)域。Fillp采用雙序列號機制來封裝應(yīng)用程序的數(shù)據(jù)包,并將數(shù)據(jù)包傳遞給底層UDP協(xié)議和IP協(xié)議封裝處理之后通過物理層的物理鏈路發(fā)送給接收節(jié)點。具體地,如圖6所示,每個數(shù)據(jù)包包含頭部(Header)和數(shù)據(jù)部分(data),其中,頭部包含兩個序列號:一個隨機序列號(用SEQ表示)和一個滾動序列號(用PKT.SEQ表示);其中,隨機序列號的作用和TCP數(shù)據(jù)包頭部中的序列號(sequence number)一樣,都是用于標識數(shù)據(jù)包的身份(數(shù)據(jù)部分的信息),確保數(shù)據(jù)在發(fā)送緩存中按序排列;例如,隨機系列號可以與TCP報文頭部的序列號類似,為一個32字節(jié)的無符號值;在連接建立后,發(fā)送節(jié)點發(fā)送的首個數(shù)據(jù)包的隨機序列號通常是發(fā)送節(jié)點隨機產(chǎn)生的,后續(xù)的數(shù)據(jù)包的隨機序列號可以在首個數(shù)據(jù)包的隨機序列號的基礎(chǔ)上,根據(jù)數(shù)據(jù)包數(shù)據(jù)部分的長度(占用的字節(jié)數(shù))增加或減少;或者數(shù)據(jù)包的隨機序列號也可以根據(jù)數(shù)據(jù)包數(shù)據(jù)部分的內(nèi)容,采用特定算法(比如哈希算法,或消息摘要算法等)生成。滾動序列號與發(fā)送節(jié)點傳輸數(shù)據(jù)包的次序(也可以等同于發(fā)送節(jié)點已發(fā)送數(shù)據(jù)包的個數(shù))對應(yīng),例如,如果發(fā)送節(jié)點當前已發(fā)送n個數(shù)據(jù)包,則發(fā)送節(jié)點發(fā)送的下一個數(shù)據(jù)包的滾動序列號可以為n+1,n+2,或者其它與n呈線性關(guān)系或者單調(diào)函數(shù)關(guān)系的數(shù)值。在同一連接或同一會話中,發(fā)送節(jié)點傳輸?shù)拿總€數(shù)據(jù)包的滾動序列號都是唯一的,發(fā)送節(jié)點連續(xù)發(fā)送的多個數(shù)據(jù)包的滾動序列號應(yīng)該是單調(diào)遞增序列、單調(diào)遞減序列、或等比序列。需要說明的是,在本發(fā)明實施例中,隨機序列號是與數(shù)據(jù)包數(shù)據(jù)部分相關(guān)的,如果兩個數(shù)據(jù)包的數(shù)據(jù)部分相同,則其 隨機序列號也相同,比如一個數(shù)據(jù)包的隨機序列號為N,則無論是首次傳輸,還是重傳該數(shù)據(jù)包,其隨機序列號均不變;而滾動序列號只與數(shù)據(jù)包的傳輸次序相關(guān),與數(shù)據(jù)包的數(shù)據(jù)部分無關(guān),即在同一連接或同一會話中,每個數(shù)據(jù)包的滾動序列號都是唯一的,且數(shù)據(jù)包的滾動序列號與傳輸次序構(gòu)成具有單調(diào)性的函數(shù)。這樣,一個數(shù)據(jù)包在首次傳輸和重傳時,隨機序列號保持不變,但滾動序列號發(fā)生了變化。同時,接收節(jié)點側(cè)的Fillp可以根據(jù)接收到的數(shù)據(jù)包的滾動序列號,快速檢測出丟失的數(shù)據(jù)包,并反饋丟包信息給發(fā)送節(jié)點,以請求發(fā)送節(jié)點快速重傳丟失的數(shù)據(jù)包。在一個實施例中,以上描述的雙序列號機制可以用用到現(xiàn)有TCP中,以解決TCP中的丟包檢測問題,特別是丟失包重傳后再丟失的檢測問題。進一步地,在另一個實施例中,接收節(jié)點側(cè)的Fillp還可以將接收速率,數(shù)據(jù)包丟失率等信息反饋給發(fā)送節(jié)點,以便發(fā)送節(jié)點進行傳輸速率的調(diào)整。

在本發(fā)明實施例的數(shù)據(jù)傳送系統(tǒng)中,不采用傳統(tǒng)的TCP中基于“窗口”的發(fā)送機制,以及丟失包超時重傳機制,而是使用發(fā)送節(jié)點的內(nèi)存作為發(fā)送緩存,發(fā)送節(jié)點勻速從內(nèi)存中‘推’送數(shù)據(jù)包至接收節(jié)點;接收節(jié)點及時釋放已接收到的按序連續(xù)數(shù)據(jù)包所占用的發(fā)送緩存,并在檢測到丟失包的時候,發(fā)送‘拉’請求,以使發(fā)送節(jié)點重傳丟失包。這種發(fā)送節(jié)點主動‘推’數(shù)據(jù)包以及接收節(jié)點根據(jù)‘推’送過來的數(shù)據(jù)‘拉’丟失包的機制可以容忍鏈路的一定丟包,從而避免擁塞速率調(diào)整,做到鏈路的高吞吐和高傳輸率。

基于上述實施例描述的加速協(xié)議Fillp的基本框架和原理,下面描述本發(fā)明實施例的數(shù)據(jù)傳送系統(tǒng)在部署Fillp協(xié)議后進行數(shù)據(jù)傳送的方法,如圖7所示,該方法主要包括以下步驟:

步驟703:基于發(fā)送節(jié)點和接收節(jié)點之間建立的連接(本發(fā)明實施例優(yōu)選UDP連接),發(fā)送節(jié)點以初始傳輸速率向接收節(jié)點傳輸多個數(shù)據(jù)包,其中,每個數(shù)據(jù)包都攜帶有兩個序列號,分別為隨機序列號和滾動序列號;關(guān)于隨機序列號和滾動序列號的定義及實現(xiàn)可以參見圖5和圖6相關(guān)實施例的描述,不再贅述。需要說明書的是,TCP是基于窗口發(fā)送數(shù)據(jù)包的,只要在窗口內(nèi)的數(shù)據(jù)包都會全力發(fā)送,這樣很容易導(dǎo)致大量的數(shù)據(jù)包瞬時擁擠到網(wǎng)絡(luò)上,造成瞬時擁堵的問題。而在本發(fā)明實施例的數(shù)據(jù)傳送方法中,數(shù)據(jù)包是以特定的速率均勻發(fā)送的,可以減緩數(shù)據(jù)包包瞬時注入網(wǎng)絡(luò),同時也不會像TCP一樣,由于發(fā)送窗口、擁塞窗口等限制而造成有包不能發(fā)的現(xiàn)象,可以顯著提高數(shù)據(jù)傳輸速率和帶寬利用率。

在一個實施例中,發(fā)送節(jié)點的初始傳輸速率可以由用戶通過用戶界面、腳本或配置文件配置;在另一個實施例中,初始傳輸速率可以由發(fā)送節(jié)點根據(jù)其與接收節(jié)點之間的網(wǎng)絡(luò)帶寬自動配置。只要發(fā)送節(jié)點的發(fā)送緩存中有待發(fā)送的數(shù)據(jù)包,發(fā)送節(jié)點就一直以該初始傳輸速率傳輸發(fā)送緩存中的數(shù)據(jù)包,除非接收到傳輸速率調(diào)整指令。

步驟705:接收節(jié)點接收多個數(shù)據(jù)包;

在一個實施例中,接收節(jié)點接收數(shù)據(jù)包的速率與發(fā)送節(jié)點的初始傳輸速率相匹配,比如兩者相等,或者近似等。在一個實施例中,若接收節(jié)點的接收速率大于或小于發(fā)送節(jié)點的初始傳輸速率時,可以反饋控制信息給發(fā)送節(jié)點,使發(fā)送節(jié)點調(diào)整該初始發(fā)送速率,使其與接收節(jié)點的接收速率向匹配。

步驟706:接收節(jié)點根據(jù)接收到的一個或多個數(shù)據(jù)包攜帶的序列號,檢測出一個或多個丟失數(shù)據(jù)包,并根據(jù)檢測出的丟失數(shù)據(jù)包的信息生成丟包反饋信息發(fā)給發(fā)送節(jié)點。

在一個實施例中,接收節(jié)點可以根據(jù)接收到的數(shù)據(jù)包的滾動序列號PKT.SEQ來快速檢測丟包。例如,接收節(jié)點接收到滾動序列號PKT.SEQ=3的數(shù)據(jù)包后,如果PKT.SEQ=1的數(shù)據(jù)包已收到,但PKT.SEQ=2的數(shù)據(jù)包還未收到,則判定PKT.SEQ=2丟失。與傳統(tǒng)TCP需要通過多個ACK才能判定丟包相比,本發(fā)明實施例的方法更高效。

在一個實施例中,接收節(jié)點將檢測出的丟失數(shù)據(jù)包的隨機序列號或滾動序列號攜帶在ACK包中,發(fā)送給發(fā)送節(jié)點。

在另一個實施例中,接收節(jié)點將檢測出的丟失數(shù)據(jù)包的序列號攜帶在NACK(Negative Acknowledge)控制包(以下簡稱NACK)中,發(fā)送給發(fā)送節(jié)點。具體地,在一種可能的實現(xiàn)方式中,NACK包含丟包指示字段,該字段用于攜帶丟失數(shù)據(jù)包的滾動序列號;例如,如果接收節(jié)點根據(jù)當前接收到的數(shù)據(jù)包的序列號,判定PKT.SEQ=2的數(shù)據(jù)包丟失,則隨即將NACK的丟包指示字段 填充為2,發(fā)送給發(fā)送節(jié)點。在另一種可能的實現(xiàn)方式中,如圖8所示,NACK可以包括:丟包開始字段START和丟包結(jié)束字段END,其中,所述丟包開始字段START和丟包結(jié)束字段分別用于攜帶多個連續(xù)的丟包中首包和尾包的滾動序列號??梢岳斫獾氖?,由于數(shù)據(jù)包的滾動序列號是按傳輸順序遞增的,因此如果接收節(jié)點檢測到多個連續(xù)的丟包,則丟包開始字段和丟包結(jié)束字段分別指示了這多個連續(xù)的丟失數(shù)據(jù)包中滾動序列號數(shù)值最小和最大的數(shù)據(jù)包。如果接收節(jié)點當前只檢測到單個丟失的數(shù)據(jù)包,則構(gòu)造的NACK中START和END字段值相同,均為該丟失的數(shù)據(jù)包的滾動序列號。如圖8所示的,當接收節(jié)點收到PKT.SEQ=1的數(shù)據(jù)包,接著又收到PKT.SEQ=5的數(shù)據(jù)包,則判定連續(xù)丟失PKT.SEQ=2~4的3個數(shù)據(jù)包,并構(gòu)造START=2,END=4的NACK,以請求發(fā)送節(jié)點重傳這幾個連續(xù)丟失的數(shù)據(jù)包。當接收節(jié)點繼續(xù)接收到PKT.SEQ=7的數(shù)據(jù)包之后,判定PKT.SEQ=6的數(shù)據(jù)包丟失,因此構(gòu)造START=6,END=6的NACK發(fā)送給發(fā)送節(jié)點??梢钥闯觯ㄟ^START和END字段,可以用一個NACK控制包向發(fā)送節(jié)點反饋連續(xù)丟失的多個數(shù)據(jù)包,從而可以減少NACK控制包的個數(shù),節(jié)省網(wǎng)絡(luò)資源,提高重傳效率。在另一種可能的實現(xiàn)方式中,NACK包含的丟包指示字段也可以攜帶丟失數(shù)據(jù)包的隨機序列號;例如,如果接收節(jié)點根據(jù)當前接收到的數(shù)據(jù)包的滾動序列號(PKT.SEQ),判定PKT.SEQ=2的數(shù)據(jù)包丟失,則接收節(jié)點根據(jù)數(shù)據(jù)包的隨機序列號與滾動序列號的映射關(guān)系,確定該丟失數(shù)據(jù)包對應(yīng)的隨機序列號,并 將確定出的隨機序列號填充到NACK的丟包指示字段,發(fā)送給發(fā)送節(jié)點,使得發(fā)送節(jié)點根據(jù)NACK的丟失指示字段的指示,重傳對應(yīng)的數(shù)據(jù)包。

步驟707:發(fā)送節(jié)點根據(jù)接收到的丟包反饋信息的指示,重傳丟失的數(shù)據(jù)包。

在一個實施例中,發(fā)送節(jié)點基于接收到的NACK所攜帶的滾動序列號,以及發(fā)送節(jié)點已傳輸?shù)臄?shù)據(jù)包的隨機序列號和滾動序列號之間的映射關(guān)系,確定丟失數(shù)據(jù)包的隨機序列號,然后根據(jù)確定出的隨機序列號,從發(fā)送緩存中查找到對應(yīng)的數(shù)據(jù)包并重傳;其中,重傳的數(shù)據(jù)包攜帶有原始的隨機序列號和新的滾動序列號。在這種情形下,發(fā)送節(jié)點通常會記錄數(shù)據(jù)包的隨機序列號和滾動序列號的映射關(guān)系,比如,發(fā)送節(jié)點會將已傳輸和/或待傳輸?shù)臄?shù)據(jù)包的隨機序列號與滾動序列號之間的映射關(guān)系以哈希表的形式存儲,便于后續(xù)收到NACK后,根據(jù)NACK攜帶的滾動序列號,確定對應(yīng)的丟失數(shù)據(jù)包。

在另一個實施例中,發(fā)送節(jié)點可以根據(jù)接收節(jié)點已接收到的ACK包攜帶的接收節(jié)點已接收的數(shù)據(jù)包的序列號,確定丟失數(shù)據(jù)包,并重傳丟失數(shù)據(jù)包。

進一步地,在一個實施例中,NACK還包含:釋放字段(Release SEQ),釋放字段用于指示接收節(jié)點當前已接收到的數(shù)據(jù)包的隨機序列號和/或滾動序列號。如圖8所示,當接收節(jié)點收到PKT.SEQ=5的數(shù)據(jù)包,判定PKT.SEQ=2~4的3個數(shù)據(jù)包丟失,并且在丟包之前已接收的數(shù)據(jù)包的最大PKT.SEQ=1,因此Release SEQ字段的值填充為1,以指示發(fā)送節(jié)點將PKT.SEQ=1對應(yīng)的數(shù)據(jù)包所 占用的發(fā)送緩存釋放。進一步地,假設(shè)接收節(jié)點檢測到PKT.SEQ=6的數(shù)據(jù)包丟失時,若重傳的PKT.SEQ=2~4(之前被判定為丟失的3個數(shù)據(jù)包)已經(jīng)收到,則會構(gòu)造Release SEQ字段值為5的NACK,以指示發(fā)送節(jié)點將PKT.SEQ=2~5對應(yīng)的數(shù)據(jù)包所占用的發(fā)送緩存釋放。相應(yīng)地,在本實施例中,發(fā)送節(jié)點還執(zhí)行步驟709:根據(jù)接收到的NACK中的Release SEQ字段,從發(fā)送緩存中釋放Release SEQ字段所指示的數(shù)據(jù)包所占用的空間。發(fā)送緩存通常為發(fā)送節(jié)點的內(nèi)存,或內(nèi)存的部分區(qū)域。

需要說明的是,本發(fā)明所有實施例中的丟失數(shù)據(jù)包,是指接收節(jié)點根據(jù)已接收數(shù)據(jù)包的信息判定為丟失的數(shù)據(jù)包,因為網(wǎng)絡(luò)傳輸?shù)牟淮_定因素,接收節(jié)點判定出的丟失數(shù)據(jù)包并不一定真正發(fā)生了丟失,即接收節(jié)點有一定概率為“誤判”,但這種誤判并不是實質(zhì)影響本發(fā)明的效果。可選的,發(fā)送節(jié)點接收到丟包反饋信息后并不一定馬上重發(fā)丟失數(shù)據(jù)包,可以等待一段時間,減少由包亂序接收導(dǎo)致的‘誤判’帶來的影響,這個等待時間可以由用戶配置。

從以上描述可以看出,本發(fā)明上述實施例通過數(shù)據(jù)包的滾動序列號來快速檢測丟失數(shù)據(jù)包,同時在檢測到丟失數(shù)據(jù)包后發(fā)送丟包反饋信息給發(fā)送節(jié)點,以請求及時重傳丟失數(shù)據(jù)包。由于數(shù)據(jù)包發(fā)送以及提交給至上層應(yīng)用程序時的保序要求,如果某個數(shù)據(jù)包未被接收節(jié)點接收,那么該數(shù)據(jù)包后續(xù)的數(shù)據(jù)包被接收后必須保存在接收緩存,直至該數(shù)據(jù)包被重發(fā)并到達接收節(jié)點之后,才會提交給應(yīng)用程序,同時其占用的接收緩存才會被釋放,即如果接收緩存中的數(shù) 據(jù)不連續(xù)(即接收緩存中存在缺失的數(shù)據(jù)包),就無法及時釋放接收緩存。但在某些情形下,例如由于鏈路擁塞等原因,接收節(jié)點發(fā)送的丟包反饋信息在傳輸?shù)倪^程中丟失,或者發(fā)送節(jié)點重傳的丟失數(shù)據(jù)包再次發(fā)生丟失,接收節(jié)點都就會長時間接收不到丟失數(shù)據(jù)包,接收緩存中該數(shù)據(jù)包的缺失會導(dǎo)致的數(shù)據(jù)不連續(xù),從而使得接收緩存中的其它數(shù)據(jù)包長時間無法釋放,阻塞接收緩存。這種接收緩存中缺失的數(shù)據(jù)包,即造成接收緩存阻塞的數(shù)據(jù)包(典型代表為接收節(jié)點未接收到,但未被發(fā)送節(jié)點感知為丟失的數(shù)據(jù)包,以及重傳后再次丟失的數(shù)據(jù)包),通常也稱為HOL(Head of Line,隊首)包,這種因為HOL包造成的接收緩存阻塞的現(xiàn)象通常也稱為HOL效應(yīng)。為解決HOL包阻塞接收緩存的問題,本發(fā)明實施例的數(shù)據(jù)傳送的方法進一步還包括:

步驟713:接收節(jié)點周期性地向發(fā)送節(jié)點發(fā)送PACK(Period ACK)控制包(以下簡稱為PACK);其中,如圖9所示,PACK中包含HOL SEQ字段,該字段用于攜帶HOL包的隨機序列號信息。具體地,接收節(jié)點檢測出丟失數(shù)據(jù)包,并向發(fā)送節(jié)點發(fā)送丟包反饋信息后,如果在一定的時間間隔內(nèi)或者在PACK定時器時間到的時候仍未接收到丟失數(shù)據(jù)包,則判定該丟失數(shù)據(jù)包為HOL包,并在下一次發(fā)送的PACK中攜帶該HOL包的隨機序列號信息。其中,這里的時間間隔可以為一個RTT,或者用戶根據(jù)實際需求設(shè)置的值。接收節(jié)點將HOL包的隨機序列號填充在PACK的HOL SEQ字段,這樣,發(fā)送節(jié)點在接收到PACK后,可以根據(jù)HOL SEQ字段的指示,重傳HOL包,并且由于PACK是周期性發(fā)送的, 即便一個PACK發(fā)生丟失,仍能通過后續(xù)的PACK中將HOL包的信息反饋給發(fā)送節(jié)點,從而很好地解決了上述HOL包導(dǎo)致接收緩存阻塞的問題。在一個實施例中,接收節(jié)點發(fā)送PACK的周期可以由max(RTT/a,threshold),(1<a<6)來計算,其中,RTT全稱為Round Trip Time,是指一個數(shù)據(jù)包在發(fā)送節(jié)點和接收節(jié)點之間往返傳輸一次的時間,另外,這里的Threshold可以是由用戶來設(shè)置的一個閾值,本發(fā)明實施例優(yōu)選設(shè)置為15ms。當然這里的計算公式只是一個典型示例,這個周期可以由本領(lǐng)域技術(shù)人員根據(jù)實際需求定義,不局限于該公式。進一步地,接收節(jié)點在接收到第一個數(shù)據(jù)包之后,可以開啟一個PACK定時器,該定時器的周期可以根據(jù)以上描述的方法來設(shè)置,當定期器時間到,接收節(jié)點就發(fā)送一個PACK,并將定時器清零,重新開始計時。

可選地,如圖9所示,在一個實施例中,每個PACK攜帶有數(shù)據(jù)包接收速率和/或數(shù)據(jù)包丟失率中;其中數(shù)據(jù)包接收速率用于表示接收節(jié)點接收數(shù)據(jù)包的速率,或者接收節(jié)點從接收緩存讀取數(shù)據(jù)包的速率,或者接收節(jié)點接收有效數(shù)據(jù)包的速率,這里的有效數(shù)據(jù)包時指非冗余的數(shù)據(jù)包。數(shù)據(jù)包丟失率是由接收節(jié)點統(tǒng)計出的數(shù)據(jù)包丟失的比率,用于體現(xiàn)一段時間內(nèi)的網(wǎng)絡(luò)狀況。相應(yīng)地,本發(fā)明實施例的數(shù)據(jù)傳送的方法進一步還包括:

步驟715:發(fā)送節(jié)點根據(jù)接收到的PACK,調(diào)整初始傳輸速率,使其與PACK指示的數(shù)據(jù)包接收速率相適應(yīng)。

步驟717:發(fā)送節(jié)點基于調(diào)整之后的傳輸速率,繼續(xù)向接收節(jié)點傳輸數(shù)據(jù) 包;

步驟719:接收節(jié)點接收數(shù)據(jù)包,并重復(fù)以上步驟706-715。

可選地,如圖9所示,在一個實施例中,PACK還包含:釋放字段(Release SEQ),該字段的具體含義與NACK中的Release SEQ字段一樣,均是為了指示發(fā)送節(jié)點及時釋放接收節(jié)點已接收的數(shù)據(jù)包所占用的發(fā)送緩存??蛇x地,基于以上描述的任一實施例,在另一個實施例中,在步驟703之前,發(fā)送節(jié)點和接收節(jié)點還執(zhí)行步驟701:初始化網(wǎng)絡(luò)環(huán)境,以建立通信連接。

可選地,基于以上描述的任一實施例,在另一個實施例中,發(fā)送節(jié)點會記錄已發(fā)送的數(shù)據(jù)包的隨機序列號和滾動序列號的映射關(guān)系,比如,可以采用哈希表,或其它形式的映射表來存儲該映射關(guān)系。進一步地,在一個實施例中,發(fā)送節(jié)點還執(zhí)行步驟711:將已發(fā)送的數(shù)據(jù)包的隨機序列號和滾動序列號的映射關(guān)系添加到所述映射表,以實現(xiàn)映射表的動態(tài)更新。

本發(fā)明實施例提供的數(shù)據(jù)傳送方法及系統(tǒng)中,發(fā)送節(jié)點以相對固定的傳輸速率連續(xù)向接收節(jié)點傳輸數(shù)據(jù)包,接收節(jié)點檢測到丟失數(shù)據(jù)包后即時發(fā)送丟包反饋信息給發(fā)送節(jié)點,以請求發(fā)送節(jié)點重傳丟失數(shù)據(jù)包。這種發(fā)送節(jié)點主動‘推’數(shù)據(jù)包以及接收節(jié)點根據(jù)‘推’送過來的數(shù)據(jù)‘拉’丟失包的機制,在內(nèi)存足夠的情況下,不會像TCP一樣,由于發(fā)送窗口、擁塞窗口等限制而造成有數(shù)據(jù)包不能發(fā)的現(xiàn)象,可以顯著提高數(shù)據(jù)傳輸速率和帶寬利用率,同時,由于數(shù)據(jù)包是以一定的速率發(fā)送的,可以減緩數(shù)據(jù)包瞬時注入網(wǎng)絡(luò)。進一步地, 基于雙序列號傳輸數(shù)據(jù)包,使得接收節(jié)點可以快速檢測丟失數(shù)據(jù)包;進一步地,通過在NACK中攜帶Release SEQ字段來快速釋放可以釋放的協(xié)議棧內(nèi)存。進一步地,通過周期性的PACK控制包來解決HOL包導(dǎo)致接收緩存阻塞的問題。

下面結(jié)合圖10來描述本發(fā)明一個優(yōu)選的實施例中發(fā)送節(jié)點的工作流程,根據(jù)圖10,發(fā)送節(jié)點將從上層應(yīng)用程序接收到數(shù)據(jù)封裝后寫入發(fā)送緩存,其中,發(fā)送節(jié)點在封裝數(shù)據(jù)包的時候會在數(shù)據(jù)包頭部中添加前述實施例所描述的隨機序列號和滾動序列號。如果發(fā)送節(jié)點當前接收到接收節(jié)點發(fā)送的NACK,則根據(jù)NACK中的丟包指示字段和釋放字段,釋放可釋放的發(fā)送緩存,并把丟失包加入丟失包序列;如果發(fā)送節(jié)點當前接收到接收節(jié)點發(fā)送的PACK,則根據(jù)PACK攜帶的數(shù)據(jù)包接收速率和/或數(shù)據(jù)包丟失率,調(diào)整傳輸速率;如果發(fā)送節(jié)點當前既未接收到PACK,又未接收到NACK,則判斷丟失序列是否為空,該丟失序列用于存放被接收節(jié)點判定為丟失的數(shù)據(jù)包,若丟失序列非空,則發(fā)送丟失序列中的丟失數(shù)據(jù)包;若丟失序列為空,則繼續(xù)判斷發(fā)送緩存是否為空,如果發(fā)送緩存非空,則按照特定傳輸速率從發(fā)送緩存發(fā)送數(shù)據(jù)包,如果發(fā)送緩存為空,則繼續(xù)判斷上層應(yīng)用程序是否傳輸完畢,如果是,則關(guān)閉與接收節(jié)點之間建立的連接(如UDP連接),釋放發(fā)送緩存,如果否,則繼續(xù)等待從上次應(yīng)用程序接收數(shù)據(jù)并執(zhí)行上述流程。

相應(yīng)地,下面結(jié)合圖11來描述本發(fā)明一個優(yōu)選的實施例中接收節(jié)點的工作流程,根據(jù)圖11,接收節(jié)點接收到數(shù)據(jù)包后,判斷當前已接收到的數(shù)據(jù)包是否 可以提交給應(yīng)用程序的連續(xù)數(shù)據(jù)包,如果是,則提交連續(xù)數(shù)據(jù)包給應(yīng)用程序,并釋放已提交的數(shù)據(jù)包所占用的發(fā)送/接收緩存,如果否,則接收節(jié)點判定有數(shù)據(jù)包丟失,發(fā)送NACK至發(fā)送節(jié)點,同時把當前接收到的數(shù)據(jù)包放入接收緩存,這里的連續(xù)數(shù)據(jù)包是指傳輸次序連續(xù)的數(shù)據(jù)包。進一步地,接收節(jié)點會啟動一個PACK定時器(通常在接收到首個數(shù)據(jù)包后啟動),如果定時器時間到,則會觸發(fā)接收節(jié)點發(fā)送PACK,并將定時器清零,重新開始計時。如果應(yīng)用程序完成了全部的數(shù)據(jù)包接收,則接收節(jié)點關(guān)閉與發(fā)送節(jié)點之間建立的連接(如UDP連接),釋放接收緩存。

在本發(fā)明的一個實施例中,以上描述的圖10和圖11的流程可以分別由發(fā)送節(jié)點和接收節(jié)點的協(xié)議棧來實現(xiàn)。更具體地,在一個實施例中,圖10和圖11的流程可以由分別部署在發(fā)送節(jié)點和接收節(jié)點的加速協(xié)議(Fillp)來實現(xiàn),從協(xié)議層級來看,F(xiàn)illp可以在任何一層實現(xiàn),比如在一個實施例中,F(xiàn)illp可以介于網(wǎng)絡(luò)層和物理層之間,或者在傳輸層協(xié)議之上(Fillp優(yōu)選承載在UDP之上)。在另一個實施例中,以上描述的流程也可以直接由發(fā)送節(jié)點和接收節(jié)點的協(xié)議棧中的傳輸層協(xié)議(比如UDP)來實現(xiàn),當然,需要對現(xiàn)有的傳輸層協(xié)議做功能擴展。在另一個實施例中,以上描述的流程也可以分別由部署在發(fā)送節(jié)點和接收節(jié)點的一個應(yīng)用程序或應(yīng)用程序插件來實現(xiàn)。

下面通過圖12所示的示例來展示本發(fā)明實施例的數(shù)據(jù)傳送系統(tǒng)中數(shù)據(jù)包發(fā)送和接收的詳細流程,根據(jù)圖12,該流程主要包括以下步驟:

步驟1:發(fā)送節(jié)點確定初始傳輸速率,并通過與接收節(jié)點之間建立的連接(優(yōu)選UDP連接)以初始傳輸速率傳輸多個數(shù)據(jù)包,其中,發(fā)送節(jié)點會在每個數(shù)據(jù)包的包頭里添加雙序列號(隨機序列號和滾動序列號PKT.SEQ,以下為描述簡便,隨機序列號用SEQ表示,滾動序列號用PKT表示),比如數(shù)據(jù)包1中的:SEQ=1,PKT=1;數(shù)據(jù)包中SEQ=2,PKT=2等。需要說明的是,為了便于理解,圖12中我們假設(shè)每個數(shù)據(jù)包只帶1byte的數(shù)據(jù),因此相鄰的數(shù)據(jù)包的隨機序列號只相差1??蛇x地,發(fā)送節(jié)點會建立一個PKT.SEQ->SEQ的哈希(Hash)表。

步驟2:當接收節(jié)點收到第一個數(shù)據(jù)包(PKT=1)后,PACK計時器開始計時。

步驟3:由于鏈路原因,PKT=2,3,4的數(shù)據(jù)包丟失。SEQ=5,PKT=5的數(shù)據(jù)包被接收到,這時接收節(jié)點馬上返回NACK,NACK中攜帶可釋放內(nèi)存release SEQ=1(PKT=1的數(shù)據(jù)包已經(jīng)接收到),丟失指示字段NPKT=2~4(START=2,END=4)。這里接受節(jié)點可以根據(jù)滾動序列號更快的發(fā)現(xiàn)丟失的數(shù)據(jù)包,相比TCP來說,這時候TCP還無法做出判斷丟包。

步驟4:發(fā)送節(jié)點繼續(xù)傳輸數(shù)據(jù)包,SEQ=6,PKT=6的數(shù)據(jù)包又丟失。

步驟5:SEQ=7,PKT=7數(shù)據(jù)包被接收到,:接收節(jié)點馬上發(fā)出NACK(release SEQ=1,NPKT=6)通知PKT=6的數(shù)據(jù)包丟失。

步驟6:接收節(jié)點之前發(fā)出的NACK(NPKT=2~4)被發(fā)送節(jié)點接收到,根據(jù)發(fā)送節(jié)點已經(jīng)建立的PKT.SEQ->SEQ映射表,確定SEQ=2,3,4的數(shù)據(jù)包丟 失,發(fā)送節(jié)點馬上進入重傳階段:取出SEQ=2,3,4的數(shù)據(jù),并賦予新的PKT.SEQ,重傳。注意,這里SEQ=2,3,4的數(shù)據(jù)包對應(yīng)的PKT已經(jīng)變成了8,9,10,并且PKT.SEQ->SEQ映射表更新。進一步地,發(fā)送節(jié)點根據(jù)NACK中帶的release SEQ=1,釋放SEQ=1的數(shù)據(jù)包占用的發(fā)送緩存。

步驟7:接收節(jié)點接收到重傳的SEQ=2,3,4,PKT=8,9,10的數(shù)據(jù)包。對比于TCP來說,TCP是不能一次性的把丟失包全部重發(fā)的,只是會重傳序列號緊挨ACK number的一個丟失包,而本發(fā)明實施例的數(shù)據(jù)傳送系統(tǒng)中,發(fā)送節(jié)點可以把確認的丟失包在某一時刻全部重發(fā),重傳的效率更高。

步驟8:發(fā)送節(jié)點接收到NACK(NPKT=6),和上面處理NACK方式一樣,重發(fā)SEQ=6的數(shù)據(jù)包,重傳的該數(shù)據(jù)包的SEQ不變,但是PKT更新成11。

步驟9:發(fā)送節(jié)點繼續(xù)發(fā)送SEQ=8,PKT=12的數(shù)據(jù)包,假設(shè)由于鏈路問題,重傳的SEQ=6,PKT=11的數(shù)據(jù)包又再次丟失。

步驟10:當收到SEQ=8,PKT=12的數(shù)據(jù)包時候,接收節(jié)點發(fā)出NACK(release SEQ=5,NPKT=11)來通知發(fā)送節(jié)點PTK=11的數(shù)據(jù)包又丟失了(這里是SEQ=6的重傳包又丟失)。

步驟11:發(fā)送節(jié)點繼續(xù)發(fā)送SEQ=9,10,PKT=13,14的數(shù)據(jù)包,并被接收方接收到。

步驟12:接收節(jié)點收到NACK(release SEQ=5,NPKT=11),通過映射表查詢,發(fā)現(xiàn)重傳的SEQ=6又丟失了,再次重傳,PKT更新為PKT=15。同時根據(jù) release SEQ=5,釋放掉SEQ=2~5的數(shù)據(jù)包占用的發(fā)送緩存。

步驟13:接受節(jié)點接收到SEQ=6,PKT=15的數(shù)據(jù)包(SEQ=6的數(shù)據(jù)包一共重傳了2次)。

步驟14:發(fā)送節(jié)點發(fā)送SEQ=11,PKT=16和SEQ=12,PKT=17數(shù)據(jù)包,由于鏈路質(zhì)量,SEQ=11的數(shù)據(jù)包丟失。

步驟15:接收節(jié)點接收到SEQ=12,PKT=17的數(shù)據(jù)包后判斷出PKT=16的數(shù)據(jù)包丟失,發(fā)送NACK(release SEQ=10,NPKT=16)。

步驟16:發(fā)送節(jié)點發(fā)送SEQ=13,PKT=18和SEQ=14,PKT=19的數(shù)據(jù)包。

步驟17:接收節(jié)點接收到SEQ=13,PKT=18的數(shù)據(jù)包。這時候,由于PACK計時器到時,接收節(jié)點發(fā)送PACK,由于在接收緩存中SEQ=11的數(shù)據(jù)包缺失,導(dǎo)致接收緩存中的數(shù)據(jù)不連續(xù),無法及時提交給應(yīng)用程序并釋放接收緩存,所以在PACK中Nseq=11,通知發(fā)送方SEQ=11的數(shù)據(jù)包沒有收到,這個SEQ就是HOL包的SEQ。PACK發(fā)送結(jié)束后,PACK計時器歸0,重新計時。

步驟18:發(fā)送節(jié)點收到NACK(release SEQ=10,NPKT=16),查詢映射表,得知SEQ=11的數(shù)據(jù)包丟失,重傳SEQ=11的數(shù)據(jù)包,重傳的數(shù)據(jù)包PKT更新為20。釋放SEQ=6~10的數(shù)據(jù)包占用的發(fā)送緩存。

步驟19:發(fā)送節(jié)點接收到PACK(release SEQ=10,Nseq=11),發(fā)現(xiàn)SEQ=11的包丟失,成為阻塞接收緩存的HOL包,重發(fā)SEQ=11,PKT=21的數(shù)據(jù)包。進一步地,發(fā)送節(jié)點根據(jù)PACK中攜帶的接收速率和/或數(shù)據(jù)包丟失率信息,調(diào)整 傳輸速率。

步驟20:接收節(jié)點接收到SEQ=11,PKT=20的數(shù)據(jù)包,又接收到SEQ=11,PKT=21的數(shù)據(jù)包,丟棄。

從以上流程可以看出,發(fā)送節(jié)點的發(fā)包速率是固定的,屬于勻速發(fā)送,對比與TCP的窗口發(fā)送,不會造成瞬時注入網(wǎng)絡(luò)的數(shù)據(jù)包過多而導(dǎo)致的擁塞問題。進一步地,雙序列號機制可以在一個RTT內(nèi)發(fā)現(xiàn)任意丟失數(shù)據(jù)包,相對于TCP來說,判斷方法也比較簡單,相對于TCP使用的超時重傳,節(jié)約了更多時間。

下面描述本發(fā)明的裝置實施例,如圖2所示,本發(fā)明實施例一方面提供一種發(fā)送節(jié)點110,包括:處理器120、協(xié)議棧130、通信接口140和存儲器150,其中,處理器120具體可以包括通用處理器,數(shù)字信號處理器(DSP),專用集成電路(ASIC),現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯組件。存儲器150可以包括計算機可讀存儲介質(zhì),如磁存儲設(shè)備(例如,硬盤,軟盤,磁條),光存儲介質(zhì)(例如,數(shù)字多功能盤(DVD)),智能卡,閃存設(shè)備,隨機存取存儲器(RAM),只讀存儲器(ROM),可編程ROM(PROM),可擦除PROM(EPROM),寄存器,以及它們的任意組合。通信接口140具體包括:發(fā)射電路142和接收電路146;用戶設(shè)備110的存儲器150中存儲有應(yīng)用程序121,應(yīng)用程序121可被處理器執(zhí)行,以實現(xiàn)特定業(yè)務(wù)功能。協(xié)議棧130通常由軟件實現(xiàn),例如以可執(zhí)行程序的形式存儲在存儲器150中,被處理器執(zhí)行以實 現(xiàn)數(shù)據(jù)處理、發(fā)送和接收。在某些場景下,協(xié)議棧130也可以由現(xiàn)場可編程門陣列(Field Programmable Gata Array,F(xiàn)PGA)或特定用途集成電路(Application Specific Integrated Circuit,ASIC)等硬件電路或?qū)S眯酒瑏韺崿F(xiàn)。具體地,在一個實施例中,應(yīng)用程序121在被處理器執(zhí)行的過程中,一方面可以調(diào)用應(yīng)用程序編程接口(API)將數(shù)據(jù)傳遞給協(xié)議棧130,協(xié)議棧130在接收到數(shù)據(jù)后,根據(jù)協(xié)議規(guī)范對數(shù)據(jù)進行封裝等處理,然后通過系統(tǒng)函數(shù)調(diào)用內(nèi)核中的硬件驅(qū)動程序,以驅(qū)動相關(guān)的硬件,比如發(fā)射電路142將數(shù)據(jù)包發(fā)送出去。另一方面接收電路146在接收到數(shù)據(jù)包之后,在硬件驅(qū)動程序的作用下會將接收事件上報給內(nèi)核,內(nèi)核會調(diào)用協(xié)議棧130對數(shù)據(jù)進行處理。其中,協(xié)議棧130的傳輸、接收及處理數(shù)據(jù)的過程請參見圖3至圖12所示實施例中發(fā)送節(jié)點的工作流程,不再贅述。進一步地,存儲器150包括內(nèi)存,該內(nèi)存的全部或部分空間作為協(xié)議棧130的發(fā)送緩存。

另一方面,參見圖2,本發(fā)明實施例還提供一種接收節(jié)點20,包括:協(xié)議棧21、處理器、通信接口和存儲器(圖中未示出),其中,通信接口具體包括:發(fā)射電路和接收電路;其中協(xié)議棧21、處理器、通信接口和存儲器的具體形態(tài)與用戶設(shè)備110的協(xié)議棧、處理器、通信接口和存儲器類似,相關(guān)工作過程可以參照前述實施例的描述。進一步地,服務(wù)器20的協(xié)議棧21發(fā)送/接收、處理數(shù)據(jù)包的過程請參見圖3至圖12所示實施例中接收節(jié)點的工作流程,不再贅述。

本發(fā)明實施例還提供一種數(shù)據(jù)傳送系統(tǒng),如圖13所示,包括:發(fā)送節(jié)點13 和接收節(jié)點23,其中,發(fā)送節(jié)點13和接收節(jié)點33上分別運行有應(yīng)用程序131和應(yīng)用程序22。

其中,發(fā)送節(jié)點13包括:發(fā)送單元133、處理單元132和接收單元131,其中,處理單元132用于將發(fā)送節(jié)點13上運行的應(yīng)用程序的數(shù)據(jù)封裝成多個數(shù)據(jù)包,發(fā)送單元133用于以初始傳輸速率通過向接收節(jié)點傳輸多個數(shù)據(jù)包,接收單元131用于接收來自接收節(jié)點23的丟包反饋信息,發(fā)送單元133還用于,基于接收到的丟包反饋信息重傳丟失數(shù)據(jù)包;其中,重傳的數(shù)據(jù)包攜帶有新的滾動序列號。接收節(jié)點23包括:發(fā)送單元231、處理單元232以及接收單元233,其中,接收單元233用于接收發(fā)送節(jié)點13以初始傳輸速率傳輸?shù)亩鄠€數(shù)據(jù)包,處理單元232用于實現(xiàn)根據(jù)接收單元233接收到的數(shù)據(jù)包的滾動序列號檢測出至少一個丟失數(shù)據(jù)包后,通過發(fā)送單元231向發(fā)送節(jié)點13發(fā)送丟包反饋信息,以指示發(fā)送節(jié)點13重傳丟失數(shù)據(jù)包。需要說明的是,發(fā)送單元133、處理單元132和接收單元131還用于配合實現(xiàn)上述各方法實施例中發(fā)送節(jié)點的功能;發(fā)送單元133在處理單元132的控制下進行數(shù)據(jù)包的發(fā)送,接收單元131在處理單元132的控制下進行數(shù)據(jù)包的接收,處理單元132還用于根據(jù)接收到的控制包確定丟失數(shù)據(jù)包,并控制發(fā)送單元進行數(shù)據(jù)包重傳,可選地,處理單元還可以根據(jù)接收單元131收到的控制包進行數(shù)據(jù)傳輸速率的調(diào)整。相應(yīng)地,發(fā)送單元231、處理單元232以及接收單元233還用于配合實現(xiàn)上述各方法實施例中接收節(jié)點的功能,各單元的功能劃分與發(fā)送節(jié)點13類似,或者采用其他本領(lǐng)域技術(shù)人員通 用的劃分方式。

本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件(例如處理器)來完成,該程序可以存儲于計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:ROM、RAM、磁盤或光盤等。本發(fā)明實施例所使用的術(shù)語“程序”應(yīng)被廣泛地解釋為包括但不限于:指令,指令集,代碼,代碼段,子程序,軟件模塊,應(yīng)用,軟件包,線程,進程,函數(shù),固件,中間件等。

以上對本發(fā)明實施例所提供的報文傳輸方法、系統(tǒng)及用戶設(shè)備和服務(wù)器進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1