專利名稱:一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳輸?shù)姆椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)領(lǐng)域,具體提供一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn) 網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳輸?shù)姆椒ā?br>
背景技術(shù):
隨著網(wǎng)絡(luò)帶寬時延產(chǎn)品(BDP)的增加,通常的TCP協(xié)議(TransmissionControl Protocol傳輸控制協(xié)議)開始變的低效。這是因為它的AIMD (additive increase multiplicative decrease)算法徹底減少了 TCP擁塞窗口,但不能快速的恢復(fù)可用帶寬。 理論上的流量分析表明TCP在BDP增加到很高的時候比較容易受包損失攻擊。另外,繼承自TCP擁塞控制的不公平的RTT (Round-Trip Time,往返時延)也成為 在分布式數(shù)據(jù)密集程序中的嚴(yán)重問題。擁有不同RTT的并發(fā)TCP流將不公平的分享帶寬。 盡管在小的BDP網(wǎng)絡(luò)中使用通常的TCP實現(xiàn)來相對平等的共享帶寬,但在擁有大量BDP的 網(wǎng)絡(luò)中,通常的基于TCP的程序就必須承受嚴(yán)重的不公平的問題。這個RTT基于的算法嚴(yán) 重的限制了其在廣域網(wǎng)分布式計算的效率,例如dnternet上的網(wǎng)格計算。一直到今天,對標(biāo)準(zhǔn)的TCP的提高一直都不能在高BDP環(huán)境中效率和公平性方面 達(dá)到滿意的程度(特別是基于RTT的問題)。例如TCP的修改,RFC1423(高性能擴(kuò)展), RFC2018 (SACK)、RFC2582 (New Reno)、RFC2883 (D-SACK)、和 RFC2988 (RT0 計算)都或多或少 的提高了點效率,但最根本的AIMD算法沒有解決。HS TCP (RFC 3649)通過根本上改變TCP 擁塞控制算法來在高BDP網(wǎng)絡(luò)中獲得高帶寬利用率,但公平性問題仍然存在??紤]到上面的背景,需要一種在高BDP網(wǎng)絡(luò)支持高性能數(shù)據(jù)傳輸?shù)膫鬏攨f(xié)議。
發(fā)明內(nèi)容
本發(fā)明是針對以上問題,提供一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳 輸?shù)姆椒?,其能夠?qū)崿F(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的高速可靠的傳輸,并且保證了數(shù)據(jù)的完整性和準(zhǔn)確性。本發(fā)明的采用的技術(shù)方案如下一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳輸?shù)姆椒ǎ浒〝?shù)據(jù)發(fā)送和 數(shù)據(jù)接收兩個步驟,其中數(shù)據(jù)發(fā)送步驟具體包括Al、初始化網(wǎng)絡(luò)環(huán)境;A2、發(fā)送方發(fā)送連接命令包到指定的接收方用戶數(shù)據(jù)包協(xié)議端口上,其中命令包 中包括窗口大小;A3、接收方接收到連接命令包后回復(fù)一個響應(yīng)包;A4、發(fā)送方根據(jù)接收到的響應(yīng)包計算數(shù)據(jù)包往返時間,根據(jù)往返時間來設(shè)定發(fā)送 方的間隔時間;A5、發(fā)送方設(shè)定兩個定時器,一個是發(fā)送定時器,一個是重發(fā)定時器;發(fā)送定時器 是根據(jù)往返時間定時發(fā)送幀,而重發(fā)定時器是發(fā)送的數(shù)據(jù)超出等待響應(yīng)幀的時間,重新發(fā)送一次幀;A6、發(fā)送方定時發(fā)送數(shù)據(jù)幀,當(dāng)?shù)却憫?yīng)幀超時則重新發(fā)送等待響應(yīng)的數(shù)據(jù)幀;當(dāng) 接收到響應(yīng)幀,首先判斷是否在發(fā)送幀窗口之內(nèi),如果是在其內(nèi)則刪除該幀序列號之前數(shù) 據(jù)幀的超時定時器,擴(kuò)展窗口左沿;當(dāng)受到丟失幀和錯誤幀時,不僅重新傳指定的數(shù)據(jù)幀, 同時對該幀的前面的幀進(jìn)行定時器刪除,擴(kuò)展窗口 ;A7、當(dāng)發(fā)送方需要關(guān)閉連接時,則發(fā)送關(guān)閉命令幀,通知接收方將關(guān)閉連接。其中接收步驟具體包括Bi、初始化網(wǎng)絡(luò)環(huán)境;B2、接收方接收到發(fā)送方發(fā)出的連接命令包后回復(fù)一個響應(yīng)包;B3、接收方設(shè)定一個輔助定時器,并且輔助定時器的超時間隔應(yīng)該明顯短于與數(shù) 據(jù)幀相關(guān)聯(lián)的重發(fā)定時器的超時間隔;B4、接收方定時接收發(fā)送過來的數(shù)據(jù)幀,接收到數(shù)據(jù)幀后,首先判定是否在允許的 窗口范圍內(nèi),不在則直接舍棄;如果在其內(nèi)則判斷數(shù)據(jù)幀校驗位是否正確,如果正確則放入 緩沖區(qū),反之發(fā)送錯誤幀;接收方如果在指定時間內(nèi)未收到數(shù)據(jù)幀則發(fā)送超時幀請求發(fā)送 方重新發(fā)送該幀;B5、當(dāng)接收方受到關(guān)閉命令幀后,停止接收定時器,把緩沖區(qū)數(shù)據(jù)發(fā)送給上層程 序,清空緩沖區(qū)退出。本發(fā)明的一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳輸?shù)姆椒?,其?shù)據(jù)包 大小以及結(jié)構(gòu)設(shè)計原則如下為了保證數(shù)據(jù)包的完整避免拆包的可能性,數(shù)據(jù)包的大小設(shè) 定為512字節(jié)。其中包括一些必要的包信息數(shù)據(jù)位,如幀類型、信道出錯類型、幀序列號、應(yīng) 答序列號、CRC校驗、時間戳等。傳輸過程中的流量控制協(xié)議原則如下每一個發(fā)出的幀包含一個序列號,范圍從0到某個最大值。最大值通常是2n-l,以 便剛好對應(yīng)一個η位的字段。在任意時刻發(fā)送方都保持一個連續(xù)的序列號表,對應(yīng)于允許 發(fā)送的幀,這些幀被稱限定在發(fā)送窗口之內(nèi)。同樣,接收方也保持一個接收窗口,對應(yīng)于允 許接收的幀。發(fā)送方和接收方不必具有同樣大小的窗口和上、下限值。傳輸過程中的差錯控制協(xié)議如下接收到的數(shù)據(jù)必須為上層提供無差錯的數(shù)據(jù),無差錯的傳輸不僅要防止將出錯數(shù) 據(jù)交給上層,還有保證交付數(shù)據(jù)的順序也是正確的。當(dāng)接收端收到一個出錯的幀時,因為發(fā)送端并不了解這個情況,所以仍將繼續(xù)發(fā) 送幀,直到發(fā)進(jìn)窗口占滿后停止發(fā)送為止。在接收端,對出錯幀之后到來的幀,可以采用選 擇性重傳策略,該方法發(fā)送過程和接收過程都維持一個可以接受的序列號的窗口。發(fā)送方 的窗口大小從0開始,增長到某個預(yù)定最大值MAX_SEQ。與之相比,接收方的窗口總是保持 固定大小,且其值不超過(MAX_SEQ+l)/2.接收方為即將到來且允許接收的幀保留接收窗 口大小的幀緩沖區(qū),這樣,當(dāng)信道出錯時,接收方將存儲所有跟在壞幀之后的正確的幀,并 只要求發(fā)送方重傳出錯的幀。如果重傳正確,接收方將按順序排列的多個正確幀交給上層 程序,并且僅對最高序列號的幀進(jìn)行確認(rèn)。另外,對于選擇性重傳方法通常還輔之以發(fā)送否 定的應(yīng)答的策略,即當(dāng)接收方檢測到有錯誤發(fā)生(如幀的校驗和錯誤,或者收到的幀序列 號與所期望的不一致)時,它發(fā)送一個否定的確認(rèn)幀(NAK),NAK可以激發(fā)發(fā)送端立刻執(zhí)行
4重傳操作,而不需要等到相應(yīng)定時器超時,因此,使用NAK可以提高傳輸性能。本發(fā)明的一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳輸?shù)姆椒ㄅc現(xiàn)有技 術(shù)相比,其具有以下特點1、本發(fā)明有效避免數(shù)據(jù)丟失、數(shù)據(jù)包亂序等現(xiàn)象。2本發(fā)明由于 采用流量控制協(xié)議,根據(jù)網(wǎng)絡(luò)帶寬情況,充分的利用網(wǎng)絡(luò)帶寬資源。3、本發(fā)明采用了差錯控 制協(xié)議不及保證數(shù)據(jù)完整性,也提高了數(shù)據(jù)的準(zhǔn)確性。
附圖1為本發(fā)明的一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳輸?shù)姆椒?的發(fā)送方流程圖;附圖2為本發(fā)明的一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳輸?shù)姆椒?的接收方流程圖。
具體實施例方式下面結(jié)合附圖和具體實施例對本發(fā)明的一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù) 高速可靠傳輸?shù)姆椒ㄗ鬟M(jìn)一步的描述。如附圖1、2所示,首先發(fā)送方和接收方進(jìn)行傳輸準(zhǔn)備,發(fā)送方發(fā)送CNT (connect, 連接)命令包到指定的接收方UDP端口上,接收方接收到CNT命令包后回傳一個 ACK (acknowledge響應(yīng))響應(yīng)包,至此發(fā)送方和接收方建立了連接。發(fā)送方發(fā)送CNT命令包到指定的接收方UDP端口上,其中命令包中包括窗口大 ??;接收方接收到CNT命令包后回復(fù)一個ACK響應(yīng)包;發(fā)送方根據(jù)接收到的ACK響應(yīng)包計算數(shù)據(jù)包往返時間RTT,根據(jù)RTT來設(shè)定發(fā)送方 的間隔時間STP ;發(fā)送方設(shè)定兩個定時器,一個是發(fā)送定時器,一個是重發(fā)定時器。發(fā)送定時器是根 據(jù)RTT時間定時發(fā)送幀,而重發(fā)定時器是發(fā)送的數(shù)據(jù)超出等待響應(yīng)幀的時間,重新發(fā)送一 次幀。接收方設(shè)定一個輔助定時器,并且輔助定時器的超時間隔應(yīng)該明顯短于與數(shù)據(jù)幀 相關(guān)聯(lián)的重發(fā)定時器的超時間隔。發(fā)送方定時發(fā)送數(shù)據(jù)幀,當(dāng)?shù)却憫?yīng)幀超時則重新發(fā)送等待響應(yīng)的數(shù)據(jù)幀。當(dāng)接 收到響應(yīng)幀,首先判斷是否在發(fā)送幀窗口之內(nèi),如果是在其內(nèi)則刪除該幀序列號之前數(shù)據(jù) 幀的超時定時器,擴(kuò)展窗口左沿。當(dāng)受到丟失幀和錯誤幀時,不僅重新傳指定的數(shù)據(jù)幀,同 時對該幀的前面的幀進(jìn)行定時器刪除,擴(kuò)展窗口。接收方定時接收發(fā)送過來的數(shù)據(jù)幀,接收到數(shù)據(jù)幀后,首先判定是否在允許的窗 口范圍內(nèi),不在則直接舍棄。如果在其內(nèi)則判斷數(shù)據(jù)幀CRCKyclicRedundancy Check循環(huán) 冗余校驗)校驗位是否正確,如果正確則放入緩沖區(qū),反之發(fā)送錯誤幀NAK (NAK是否定應(yīng)答 或者非應(yīng)答的縮寫)。接收方如果在指定時間內(nèi)未收到數(shù)據(jù)幀則發(fā)送超時幀請求發(fā)送方重 新發(fā)送該幀。當(dāng)發(fā)送方需要關(guān)閉連接時,則發(fā)送CLOSE (關(guān)閉)命令幀,通知接收方我將關(guān)閉連接。
當(dāng)接收方受到CLOSE命令幀后,停止接收定時器,把緩沖區(qū)數(shù)據(jù)發(fā)送給上層程序, 清空緩沖區(qū)退出。以上所述的實施例,只是本發(fā)明較優(yōu)選的具體實施方式
的一種,本領(lǐng)域的技術(shù)人 員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。前文中一些英文譯文及其注釋Request For Comments (RFC),是一系列以編號排定的文件。文件收集了有關(guān) 因特網(wǎng)相關(guān)資訊,以及UNIX和因特網(wǎng)社群的軟件文件。目前RFC文件是由Internet Society(ISOC)所贊助發(fā)行?;镜囊蛱鼐W(wǎng)通訊協(xié)定都有在RFC文件內(nèi)詳細(xì)說明。RFC文件 還在標(biāo)準(zhǔn)內(nèi)額外加入了許多的論題,例如對于因特網(wǎng)新開發(fā)的協(xié)定及發(fā)展中所有的記錄。 因此幾乎所有的因特網(wǎng)標(biāo)準(zhǔn)都收錄在RFC文件之中。SACK (Selective Acknowledgment,選擇性確認(rèn)New Reno快速重傳和快速恢復(fù)算法RTO 超時重傳時間(Retransmission Time—Out)D-SACK Double SACK功能主要是使接受者能夠通過sack的塊來報道接收到的重 復(fù)的段,從而使發(fā)送者更好的進(jìn)行擁塞控制。HS TCP Highspeed TCP 高速 TCP 傳輸協(xié)議。
權(quán)利要求
一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳輸?shù)姆椒ǎ浒〝?shù)據(jù)發(fā)送和數(shù)據(jù)接收兩個步驟,其中數(shù)據(jù)發(fā)送步驟具體包括A1、初始化網(wǎng)絡(luò)環(huán)境;A2、發(fā)送方發(fā)送連接命令包到指定的接收方用戶數(shù)據(jù)包協(xié)議端口上,其中命令包中包括窗口大?。籄3、接收方接收到連接命令包后回復(fù)一個響應(yīng)包;A4、發(fā)送方根據(jù)接收到的響應(yīng)包計算數(shù)據(jù)包往返時間,根據(jù)往返時間來設(shè)定發(fā)送方的間隔時間;A5、發(fā)送方設(shè)定兩個定時器,一個是發(fā)送定時器,一個是重發(fā)定時器;發(fā)送定時器是根據(jù)往返時間定時發(fā)送幀,而重發(fā)定時器是發(fā)送的數(shù)據(jù)超出等待響應(yīng)幀的時間,重新發(fā)送一次幀;A6、發(fā)送方定時發(fā)送數(shù)據(jù)幀,當(dāng)?shù)却憫?yīng)幀超時則重新發(fā)送等待響應(yīng)的數(shù)據(jù)幀;當(dāng)接收到響應(yīng)幀,首先判斷是否在發(fā)送幀窗口之內(nèi),如果是在其內(nèi)則刪除該幀序列號之前數(shù)據(jù)幀的超時定時器,擴(kuò)展窗口左沿;當(dāng)受到丟失幀和錯誤幀時,不僅重新傳指定的數(shù)據(jù)幀,同時對該幀的前面的幀進(jìn)行定時器刪除,擴(kuò)展窗口;A7、當(dāng)發(fā)送方需要關(guān)閉連接時,則發(fā)送關(guān)閉命令幀,通知接收方將關(guān)閉連接。其中接收步驟具體包括B1、初始化網(wǎng)絡(luò)環(huán)境;B2、接收方接收到發(fā)送方發(fā)出的連接命令包后回復(fù)一個響應(yīng)包;B3、接收方設(shè)定一個輔助定時器,并且輔助定時器的超時間隔應(yīng)該明顯短于與數(shù)據(jù)幀相關(guān)聯(lián)的重發(fā)定時器的超時間隔;B4、接收方定時接收發(fā)送過來的數(shù)據(jù)幀,接收到數(shù)據(jù)幀后,首先判定是否在允許的窗口范圍內(nèi),不在則直接舍棄;如果在其內(nèi)則判斷數(shù)據(jù)幀校驗位是否正確,如果正確則放入緩沖區(qū),反之發(fā)送錯誤幀;接收方如果在指定時間內(nèi)未收到數(shù)據(jù)幀則發(fā)送超時幀請求發(fā)送方重新發(fā)送該幀;B5、當(dāng)接收方受到關(guān)閉命令幀后,停止接收定時器,把緩沖區(qū)數(shù)據(jù)發(fā)送給上層程序,清空緩沖區(qū)退出。
全文摘要
本發(fā)明涉及一種網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù)領(lǐng)域,具體提供一種基于用戶數(shù)據(jù)包協(xié)議實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)高速可靠傳輸?shù)姆椒?。其通過在數(shù)據(jù)發(fā)送方即數(shù)據(jù)接收方設(shè)置定時器,進(jìn)而使數(shù)據(jù)傳輸能夠以規(guī)定的方法進(jìn)行傳輸,不但能夠?qū)崿F(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的高速可靠的傳輸,并且保證了數(shù)據(jù)的完整性和準(zhǔn)確性。
文檔編號H04L29/06GK101969371SQ20101051700
公開日2011年2月9日 申請日期2010年10月19日 優(yōu)先權(quán)日2010年10月19日
發(fā)明者高杰 申請人:高杰