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

一種基于UDP的數(shù)據(jù)傳輸方法和系統(tǒng)與流程

文檔序號:11778128閱讀:326來源:國知局
一種基于UDP的數(shù)據(jù)傳輸方法和系統(tǒng)與流程

本發(fā)明涉及數(shù)據(jù)傳輸技術(shù)領(lǐng)域,特別是涉及一種基于udp的數(shù)據(jù)傳輸方法和系統(tǒng)。



背景技術(shù):

在當前互聯(lián)網(wǎng)迅速發(fā)展的環(huán)境下,多終端、多屏的應用層出不窮。用戶對文件傳輸?shù)乃俣群头€(wěn)定性的要求都越來越高,許多應程序的用戶體驗更加依賴于文件能否快速穩(wěn)定的傳輸。

然后,互聯(lián)網(wǎng)用戶卻千差萬別,而且,用戶所在網(wǎng)絡與服務器之間的鏈路也會因所在運營商、所購買帶寬等因素而有所不同,那么用戶所獲得的服務質(zhì)量也會有一定的差別。其中,許多用戶所獲得的服務質(zhì)量較差的原因是因為接收端丟包引起。

而在弱網(wǎng)環(huán)境下(例如,周圍的所有wifi信號采用的都是2.4g頻段服務,那么這將導致多個信號采用同一個頻段進行服務,而這些無線信號將會互相干擾),更加容易引起數(shù)據(jù)包的丟失。

而目前網(wǎng)絡上常用udp(userdatagramprotocol用戶數(shù)據(jù)報協(xié)議)協(xié)議約定進行數(shù)據(jù)包的傳輸,當發(fā)生丟包的時候,udp協(xié)議需要對所發(fā)送的被丟失的數(shù)據(jù)包進行回退并進行重傳,那么由于所丟失的數(shù)據(jù)包的數(shù)據(jù)量相比于原始發(fā)送的多個數(shù)據(jù)包的數(shù)據(jù)量明顯減小,因此,還會縮小發(fā)送窗口。其中,發(fā)送窗口的大小與本次傳輸?shù)臄?shù)據(jù)量的最大值相關(guān)。那么由于發(fā)生丟包而導致了發(fā)送窗口縮小,那么由于其懲罰機制,當發(fā)送端再對另一組數(shù)據(jù)包進行發(fā)送時,則會采用已經(jīng)縮小的發(fā)送窗口發(fā)送,那么這將導致所發(fā)送的另一組數(shù)據(jù)包的數(shù)據(jù)量偏小,以符合發(fā)送窗口的大小,從而引起數(shù)據(jù)發(fā)送能力的大幅度下降。所以當發(fā)生丟包時,現(xiàn)有技術(shù)中在進行數(shù)據(jù)包傳輸?shù)姆桨笗箶?shù)據(jù)的傳輸能力大幅度下降,從而導致數(shù)據(jù)傳輸速度較低。



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

本發(fā)明提供了一種基于udp的數(shù)據(jù)傳輸方法和系統(tǒng),以解決相關(guān)技術(shù)中采用udp協(xié)議進行數(shù)據(jù)傳輸時,會直接對丟失的數(shù)據(jù)包進行重傳而導致的數(shù)據(jù)傳輸速度較低的問題。

為了解決上述問題,根據(jù)本發(fā)明的一個方面,本發(fā)明公開了一種基于udp的數(shù)據(jù)傳輸方法,包括:

發(fā)送端采用柯西矩陣對待傳輸?shù)囊唤Mudp數(shù)據(jù)包的數(shù)據(jù)部分進行糾刪編碼,針對所述一組udp數(shù)據(jù)包生成至少一個冗余包,其中,一組udp數(shù)據(jù)包的udp數(shù)據(jù)包數(shù)量為p個,p為正整數(shù);

所述發(fā)送端將一組udp數(shù)據(jù)包和相應的至少一個冗余包作為一組待傳輸?shù)脑紨?shù)據(jù)包發(fā)送至接收端;

所述接收端對所述原始數(shù)據(jù)包進行接收并檢測是否丟失udp數(shù)據(jù)包;

如果發(fā)生丟包,則所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量是否大于或等于p,其中,所述發(fā)送端和所述接收端對所傳輸?shù)囊唤Mudp數(shù)據(jù)包所包含的udp數(shù)據(jù)包數(shù)量p的具體數(shù)值作有預先約定;

若所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量大于或等于p,則所述接收端采用柯西矩陣對所述接收到的同組數(shù)據(jù)包進行糾刪解碼,得到所述發(fā)送端發(fā)送的一組udp數(shù)據(jù)包,其中,所述同組數(shù)據(jù)包包括來自一組原始數(shù)據(jù)包中的至少一個冗余包和至少一個udp數(shù)據(jù)包;

所述接收端從解碼得到的一組udp數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤。

可選地,所述接收端對所述原始數(shù)據(jù)包進行接收并檢測是否丟失udp數(shù)據(jù)包的步驟之后,所述方法還包括:

如果未發(fā)生丟包,則所述接收端將接收到的所述至少一個冗余包進行丟棄。

可選地,所述原始數(shù)據(jù)包中的每個冗余包和每個udp數(shù)據(jù)包均包括包頭部分和數(shù)據(jù)部分,所述包頭部分至少包含以下信息:

包編號、編碼分片編號、時間戳、編碼序號、是否為冗余包。

可選地,所述接收端檢測是否丟失udp數(shù)據(jù)包的步驟,包括:

所述接收端根據(jù)所接收到的同組數(shù)據(jù)包的包頭部分的是否為冗余包的信息,確定所接收到的同組數(shù)據(jù)包中屬于udp數(shù)據(jù)包的目標數(shù)據(jù)包;

所述接收端根據(jù)所述目標數(shù)據(jù)包的包數(shù)量以及所述原始數(shù)據(jù)包中包含的udp數(shù)據(jù)包的數(shù)量p判斷是否丟失udp數(shù)據(jù)包。

可選地,所述接收端從解碼得到的一組udp數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤的步驟之前,所述方法還包括:

所述接收端根據(jù)所接收到的同組數(shù)據(jù)包的包頭部分的包編號確定所丟失的udp數(shù)據(jù)包的包編號;

并且,所述接收端從解碼得到的一組udp數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤的步驟,包括:

所述接收端根據(jù)所丟失的udp數(shù)據(jù)包的包編號從解碼得到的一組udp數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤。

根據(jù)本發(fā)明的再一方面,本發(fā)明還公開了一種基于udp的數(shù)據(jù)傳輸系統(tǒng),包括:發(fā)送端和接收端;

所述發(fā)送端包括:

編碼模塊,用于采用柯西矩陣對待傳輸?shù)囊唤Mudp數(shù)據(jù)包的數(shù)據(jù)部分進行糾刪編碼,針對所述一組udp數(shù)據(jù)包生成至少一個冗余包,其中,一組udp數(shù)據(jù)包的udp數(shù)據(jù)包數(shù)量為p個,p為正整數(shù);

發(fā)送模塊,用于將一組udp數(shù)據(jù)包和相應的至少一個冗余包作為一組待傳輸?shù)脑紨?shù)據(jù)包發(fā)送至接收端;

其中,所述發(fā)送端和所述接收端對所傳輸?shù)囊唤Mudp數(shù)據(jù)包所包含的udp數(shù)據(jù)包數(shù)量p的具體數(shù)值作有預先約定;

所述接收端包括:

接收檢測模塊,用于對來自發(fā)送端的一組原始數(shù)據(jù)包進行接收并檢測是否丟失udp數(shù)據(jù)包,其中,所述原始數(shù)據(jù)包包括一組udp數(shù)據(jù)包和對應于所述udp數(shù)據(jù)包的至少一個冗余包,一組udp數(shù)據(jù)包的udp數(shù)據(jù)包數(shù)量為p個,p為正整數(shù);

判斷模塊,用于如果發(fā)生丟包,則判斷所接收到的同組數(shù)據(jù)包的包數(shù)量是否大于或等于p,其中,所述發(fā)送端和所述接收端對所傳輸?shù)囊唤Mudp數(shù)據(jù)包所包含的udp數(shù)據(jù)包數(shù)量p的具體數(shù)值作有預先約定;

解碼模塊,用于若所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量大于或等于p,則采用柯西矩陣對所述接收到的同組數(shù)據(jù)包進行糾刪編碼,得到所述原始數(shù)據(jù)包中的一組udp數(shù)據(jù)包,其中,所述同組數(shù)據(jù)包包括來自一組原始數(shù)據(jù)包中的至少一個冗余包和至少一個udp數(shù)據(jù)包;

恢復模塊,用于從解碼得到的所述原始數(shù)據(jù)包中的一組udp數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤。

可選地,所述接收端還包括:

丟棄模塊,用于如果未發(fā)生丟包,則將接收到的所述至少一個冗余包進行丟棄。

可選地,所述原始數(shù)據(jù)包中的每個冗余包和每個udp數(shù)據(jù)包包括包頭部分和數(shù)據(jù)部分,所述包頭部分至少包含以下信息:

包編號、編碼分片編號、時間戳、編碼序號、是否為冗余包。

可選地,所述接收檢測模塊包括:

第一確定子模塊,用于根據(jù)所接收到的同組數(shù)據(jù)包的包頭部分的是否為冗余包的信息,確定所接收到的同組數(shù)據(jù)包中屬于udp數(shù)據(jù)包的目標數(shù)據(jù)包;

判斷子模塊,用于根據(jù)所述目標數(shù)據(jù)包的包數(shù)量以及所述原始數(shù)據(jù)包中包含的udp數(shù)據(jù)包的數(shù)量p判斷是否丟失udp數(shù)據(jù)包。

可選地,所述解碼模塊包括:

第二確定子模塊,用于根據(jù)所接收到的同組數(shù)據(jù)包的包頭部分的包編號確定所丟失的udp數(shù)據(jù)包的包編號;

并且,所述恢復模塊包括:

恢復子模塊,用于根據(jù)所丟失的udp數(shù)據(jù)包的包編號從解碼得到的所述原始數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤。

與現(xiàn)有技術(shù)相比,本發(fā)明包括以下優(yōu)點:

本發(fā)明通過采用柯西矩陣對每組待發(fā)的udp數(shù)據(jù)包進行糾刪編碼操作生成冗余包,并作為一組數(shù)據(jù)包進行發(fā)送,從而在發(fā)生丟包時,可以通過對所接收到的同組數(shù)據(jù)包進行解碼操作,從而得到待發(fā)的udp數(shù)據(jù)包,避免了對所丟失的數(shù)據(jù)包的重傳,提升了數(shù)據(jù)包的傳輸速度和效率。

附圖說明

圖1a是本發(fā)明的一種基于udp的數(shù)據(jù)傳輸方法實施例的步驟流程圖;

圖1b是本發(fā)明的又一種基于udp的數(shù)據(jù)傳輸方法實施例的步驟流程圖;

圖2是本發(fā)明的另一種基于udp的數(shù)據(jù)傳輸方法實施例的流程框圖;

圖3是本發(fā)明的一種發(fā)送端實施例的結(jié)構(gòu)框圖;

圖4是本發(fā)明的一種接收端實施例的結(jié)構(gòu)框圖;

圖5是本發(fā)明的一種基于udp的數(shù)據(jù)傳輸系統(tǒng)實施例的結(jié)構(gòu)框圖。

具體實施方式

為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步詳細的說明。

參照圖1a,示出了本發(fā)明的一種基于udp(userdatagramprotocol,用戶數(shù)據(jù)報協(xié)議)的數(shù)據(jù)傳輸方法實施例的步驟流程圖,具體可以包括如下步驟:

步驟101,發(fā)送端采用柯西矩陣對待傳輸?shù)囊唤Mudp數(shù)據(jù)包的數(shù)據(jù)部分進行糾刪編碼,針對所述一組udp數(shù)據(jù)包生成至少一個冗余包;

其中,一組udp數(shù)據(jù)包的udp數(shù)據(jù)包數(shù)量為p個,p為正整數(shù);

步驟102,所述發(fā)送端將一組udp數(shù)據(jù)包和相應的至少一個冗余包作為一組待傳輸?shù)脑紨?shù)據(jù)包發(fā)送至接收端;

步驟103,所述接收端對所述原始數(shù)據(jù)包進行接收并檢測是否丟失udp數(shù)據(jù)包;

如果發(fā)生丟包,則步驟104,所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量是否大于或等于p;

其中,所述發(fā)送端和所述接收端對所傳輸?shù)囊唤Mudp數(shù)據(jù)包所包含的udp數(shù)據(jù)包數(shù)量p的具體數(shù)值作有預先約定;

所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量大于或等于p,則步驟105,所述接收端采用柯西矩陣對所述接收到的同組數(shù)據(jù)包進行erasurecode解碼,得到所述發(fā)送端發(fā)送的一組udp數(shù)據(jù)包;

其中,所述同組數(shù)據(jù)包包括來自一組原始數(shù)據(jù)包中的至少一個冗余包和至少一個udp數(shù)據(jù)包;

步驟106,所述接收端從解碼得到的一組udp數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤;

借助于本發(fā)明上述實施例的技術(shù)方案,本發(fā)明通過采用柯西矩陣對每組待發(fā)的udp數(shù)據(jù)包進行糾刪編碼操作生成冗余包,并作為一組數(shù)據(jù)包進行發(fā)送,從而在發(fā)生丟包時,可以通過對所接收到的同組數(shù)據(jù)包進行解碼操作,從而得到待發(fā)的udp數(shù)據(jù)包,避免了對所丟失的數(shù)據(jù)包的重傳,提升了數(shù)據(jù)包的傳輸速度和效率。

可選地,在上述實施例的基礎(chǔ)上,參照圖1b,示出了本發(fā)明的又一種udp的數(shù)據(jù)傳輸方法實施例的步驟流程圖,如圖1b所示,在步驟104之后,所述方法還包括:

若所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量小于p,則執(zhí)行步驟107,所述接收端向所述發(fā)送端發(fā)送控制包;

其中,所述控制包包含表示通知所述發(fā)送端一組原始數(shù)據(jù)包發(fā)生丟包,需要對所述一組原始數(shù)據(jù)包進行重發(fā)的信息。

步驟108,所述發(fā)送端在接收到來自所述發(fā)送端的所述控制包時,對所述控制包對應的一組原始數(shù)據(jù)包進行重發(fā)。

若未發(fā)生丟包,則步驟109,所述接收端將接收到的所述至少一個冗余包進行丟棄。

這樣,只有在同組數(shù)據(jù)包的包數(shù)量小于p時,才會重復原始數(shù)據(jù)包,進一步提升數(shù)據(jù)傳輸效率。

在另一個實施例中,為了解決弱網(wǎng)環(huán)境下,由丟包引起的網(wǎng)絡能力下降,并且可以在不更改內(nèi)核的前提下,廣泛應用于不同終端上,本發(fā)明使用基于糾刪碼技術(shù)的udp傳輸技術(shù)。通過糾刪碼技術(shù),對數(shù)據(jù)進行冗余傳輸,當發(fā)生丟包時,接收端通過冗余的數(shù)據(jù)包對丟失的數(shù)據(jù)包進行恢復。通過本發(fā)明,可以保證在弱網(wǎng)環(huán)境下,數(shù)據(jù)傳輸速度的穩(wěn)定性。同時,同于本發(fā)明處理網(wǎng)絡的應用層,可以不更新內(nèi)核的前提下,方便的應用于多個平臺。

本發(fā)明實施例的目的在于通過設計一種的傳輸協(xié)議,解決在弱網(wǎng)的環(huán)境下,因丟包而引起數(shù)據(jù)傳輸過慢的問題。從而復雜的網(wǎng)絡環(huán)境下,提高點到點(服務器到用戶端、家用路由器到用戶端及用戶端到用戶端)的數(shù)據(jù)傳輸能力,在不進行硬件和網(wǎng)絡升級的前提下,獲得更好的服務質(zhì)量。

為了實現(xiàn)上述目的,本發(fā)明實施例通過對所傳輸?shù)膗dp數(shù)據(jù)包進行冗余編碼,傳輸過程中,傳輸多于原始數(shù)據(jù)總量的數(shù)據(jù),當有部分數(shù)據(jù)包因網(wǎng)絡問題而丟包,接收端無法接收時,若丟包的數(shù)量在一定范圍內(nèi),那么發(fā)送端可以依據(jù)一窗口內(nèi)已經(jīng)接收到數(shù)據(jù)包,對所丟失的包進行恢復。

本發(fā)明實施例的基于udp的數(shù)據(jù)傳輸方法的具體流程如下:

首先:發(fā)送端將所要發(fā)送的文件數(shù)據(jù)緩存到內(nèi)存中;

其中,所緩存的數(shù)據(jù)的形成方式如下:

發(fā)送端首先可以依據(jù)mtu(最大傳輸單元maximumtransmissionunit)對待傳輸?shù)奈募M行數(shù)據(jù)劃分,得到n個數(shù)據(jù)包,每個數(shù)據(jù)包的長度相等,均為mtu長度。即,文件被拆分為n個數(shù)據(jù)包,將n個數(shù)據(jù)包編號為1~n,即包編號;然后,再將n個數(shù)據(jù)包劃分為k組,每組有p個數(shù)據(jù)包;這樣,發(fā)送端就可以將k組數(shù)據(jù)包緩存到內(nèi)存中。

然后,發(fā)送端采用udp協(xié)議對每組數(shù)據(jù)包進行傳輸,在傳輸之前,可以采用柯西矩陣對待傳輸?shù)囊唤Mudp數(shù)據(jù)包(例如這里為第一組緩存中的數(shù)據(jù)包)的數(shù)據(jù)部分進行糾刪編碼(即,erasurecode),針對所述一組udp數(shù)據(jù)包生成至少一個冗余包,其中,一組udp數(shù)據(jù)包的udp數(shù)據(jù)包數(shù)量為p個,p為正整數(shù),所述發(fā)送端將一組udp數(shù)據(jù)包和相應的至少一個冗余包作為一組待傳輸?shù)脑紨?shù)據(jù)包發(fā)送至接收端;

其中,對于具體的erasurecode過程,下面以具體實例作簡要說明。例如該組udp數(shù)據(jù)包包括4個數(shù)據(jù)包,下面要對該四個數(shù)據(jù)包生成兩個冗余包,那么可以采用六行的柯西矩陣c來生成冗余數(shù)據(jù)包。

首先,需要將一組udp數(shù)據(jù)包中的四個數(shù)據(jù)包的數(shù)據(jù)部分轉(zhuǎn)化為向量,得到四個數(shù)據(jù)包向量d0、d1、d2、d3,它們的集合采用向量d表示,然后按照公式1進行編碼計算:

其中柯西矩陣中的每個元素與一組數(shù)據(jù)包d中的每個元素進行異或運算,可以得到編碼后的向量s,其中,向量s中包含了兩個冗余數(shù)據(jù)包向量c0和c1。

然后,就可以將向量s中的每個數(shù)據(jù)部分的向量與相應的包頭部分組合起來發(fā)送至接收端;

這樣,通過上述距離實例的方法就可以通過矩陣異或操作,將p個數(shù)據(jù)包變成p+m個(m為冗余包的個數(shù))數(shù)據(jù)包,這p+m個包被劃分為一組,每組有一個編號,所有包都通過udp進行傳輸。

其中,為了保證數(shù)據(jù)傳輸過程可控,同時發(fā)送過程中可以得知每個數(shù)據(jù)包在整個傳輸過程中,所在的位置、所在的分組、是否為數(shù)據(jù)名\冗余包等信息,每組通過udp協(xié)議傳輸?shù)臄?shù)據(jù)包中,即所述原始數(shù)據(jù)包中的每個冗余包和每個udp數(shù)據(jù)包均包括包頭部分和數(shù)據(jù)部分,所述包頭部分至少包含以下信息:包編號、編碼分片編號、時間戳、編碼序號、是否為冗余包。

其中,上述方法中,發(fā)送端在發(fā)送對緩存中的數(shù)據(jù)編碼后的數(shù)據(jù)時,依據(jù)數(shù)據(jù)包編號順序進行發(fā)送,每發(fā)送p個數(shù)據(jù)包,加入m個冗余包。

然后,上述方法中,接收端可以對接收到的同組數(shù)據(jù)包進行數(shù)據(jù)包類型的區(qū)分,即,依照包頭部分的信息來檢測是否丟失了udp數(shù)據(jù)包。

具體而言,所述接收端可以根據(jù)所接收到的同組數(shù)據(jù)包的包頭部分的“是否為冗余包”的信息,來確定接收到的同組數(shù)據(jù)包中哪些是udp數(shù)據(jù)包,即目標數(shù)據(jù)包;然后,接收端根據(jù)所述接收到的udp數(shù)據(jù)包(即目標數(shù)據(jù)包)的包數(shù)量以及該組數(shù)據(jù)包中包含的udp數(shù)據(jù)包的數(shù)量p來判斷是否丟失udp數(shù)據(jù)包。

其中,所述發(fā)送端和所述接收端對所傳輸?shù)囊唤Mudp數(shù)據(jù)包所包含的udp數(shù)據(jù)包數(shù)量p以及上述參數(shù)n、k、m的具體數(shù)值都作有預先約定,這樣,接收端就可以依據(jù)這些參數(shù)來判斷是否丟失udp數(shù)據(jù)包以及丟失了多少個udp數(shù)據(jù)包。

當沒有發(fā)生數(shù)據(jù)包丟失時,所述接收端將接收到的同組數(shù)據(jù)包中的冗余包丟掉;

當發(fā)生數(shù)據(jù)包丟失時,則所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量是否大于或等于p;

若所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量大于或等于p,則所述接收端采用柯西矩陣對所述接收到的數(shù)據(jù)包d0,d2,c0,c1進行糾刪(即,erasure)解碼,得到發(fā)送端發(fā)送的一組數(shù)據(jù)包d0,d1,d2,d3;

其中,具體的解碼過程如公式2所示:

其中,接收到的同組數(shù)據(jù)包的向量為d’(包括向量d0、d2、c0、c1),與公式1對應的實例相對應,數(shù)據(jù)包(向量)d1和d3丟失,其中,柯西矩陣c’為從編碼的柯西矩陣c中抽取的矩陣,其中,柯西矩陣c中的第1~6行的元素分別與向量d0、d1、d2、d3、c0、c1一一對應,因此,柯西矩陣c’中的每行的元素的構(gòu)成方式是:從柯西矩陣c中抽取對應于d0、d2、c0、c1的元素。

其中,柯西矩陣c’的逆矩陣和接收到的同組數(shù)據(jù)包的向量d’中的每個元素分別進行異或運算,就可以得到原始發(fā)送的一組數(shù)據(jù)包,包括數(shù)據(jù)包向量d0、d1、d2、d3。

然后,所述接收端根據(jù)所接收到的同組數(shù)據(jù)包的包頭部分的包編號確定所丟失的udp數(shù)據(jù)包的包編號(這里丟失的數(shù)據(jù)包為d1和d3);

那么接收端就可以根據(jù)所丟失的udp數(shù)據(jù)包的包編號從解碼得到的當初發(fā)送的udp數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包(即數(shù)據(jù)包為d1和d3)進行恢復并寫入磁盤。

當接收到的數(shù)據(jù)包丟失并且同組數(shù)據(jù)包(包括udp數(shù)據(jù)包和冗余包)的包數(shù)量小于p時,所述接收端向所述發(fā)送端發(fā)送控制包,所述控制包包含表示通知所述發(fā)送端一組原始數(shù)據(jù)包發(fā)生丟包,需要對所述一組原始數(shù)據(jù)包進行重發(fā)的信息。

所述發(fā)送端在接收到來自所述發(fā)送端的所述控制包時,對所述控制包對應的一組原始數(shù)據(jù)包進行重發(fā)。

此外,在上述實施例中,在對所發(fā)送的文件數(shù)據(jù)按照mtu進行劃分時,如果文件數(shù)據(jù)的大小無法被mtu整除,那么劃分得到的最后一個數(shù)據(jù)包的長度將小于mtu。

此時,可以對最后一個數(shù)據(jù)包進行補零來使其長度達到mtu,從而進行上述傳輸過程。

其中,每個數(shù)據(jù)包(包括udp數(shù)據(jù)包和冗余包)的長度為包頭長度及數(shù)據(jù)長度之和,長度為網(wǎng)絡的mtu值。如此以保證每個數(shù)據(jù)包的傳輸過程中,達到最優(yōu)的效率進行傳輸。

此外,為了使本發(fā)明實施例在不升級內(nèi)核的前提下,能夠方便的應用到各平臺,本發(fā)明實施例使用udp作為傳輸層協(xié)議。

另外,也可以不進行補零操作,那么該包長度小于mtu的最后一個數(shù)據(jù)包將不進行上述編碼操作進行傳輸,而是直接按照相關(guān)技術(shù)中的方法進行傳輸,那么如果發(fā)生丟包,那么直接進行重傳即可。

借助于本發(fā)明實施例的上述技術(shù)方案,本發(fā)明可以在復雜網(wǎng)絡條件下,滿足文件傳輸?shù)母咚?、穩(wěn)定需求,通過對將udp數(shù)據(jù)包加入控制信息(包頭部分),并對其數(shù)據(jù)部分進行冗余糾刪編碼,防止在發(fā)生丟包的情況下,數(shù)據(jù)重傳,有效的提升文件傳輸?shù)乃俣群涂煽啃浴?/p>

可選地,本發(fā)明的上述方法還可以通過對傳輸性能進行分析,來調(diào)整編碼冗余包的具體數(shù)量,自適應的給出編碼得到的冗余包數(shù)量,并可以進一步升級編解碼算法,減少信令開銷并提高編解碼效率。

另外,上述技術(shù)方案可用于服務器到客戶端、家用智能路能器到客戶端、客戶端等等終端之間的文件傳輸需求,以解決復雜網(wǎng)絡環(huán)境下,文件傳輸速度低的問題。

下面結(jié)合圖2所示的一具體實例對傳輸過程進行簡要說明:

例如需要傳輸?shù)囊唤Mudp數(shù)據(jù)包,包含四個數(shù)據(jù)包,分別為p0~p3數(shù)據(jù)包,經(jīng)過矩陣異或運算,得到6個數(shù)據(jù)包(包括4個數(shù)據(jù)包及2個冗余包),傳輸過程中,p1和p3兩個數(shù)據(jù)包丟失,接收端接到后,通過冗余包以及傳輸成功的p0和p2兩個數(shù)據(jù)包,對原始的四個數(shù)據(jù)包進行恢復,可以得到p1和p3,從而使得p0~p34個數(shù)據(jù)包可以成功寫入磁盤,這四個數(shù)據(jù)包傳輸成功,避免了對丟失的數(shù)據(jù)包的重傳而導致的數(shù)據(jù)傳輸速度低的問題,提升了傳輸效率。

需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應該知悉,本發(fā)明實施例并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明實施例所必須的。

與上述本發(fā)明實施例所提供的方法相對應,參照圖3,示出了本發(fā)明一種發(fā)送端實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:

編碼模塊31,用于采用柯西矩陣對待傳輸?shù)囊唤Mudp數(shù)據(jù)包的數(shù)據(jù)部分進行糾刪編碼,針對所述一組udp數(shù)據(jù)包生成至少一個冗余包;

其中,一組udp數(shù)據(jù)包的udp數(shù)據(jù)包數(shù)量為p個,p為正整數(shù);

發(fā)送模塊32,用于將一組udp數(shù)據(jù)包和相應的至少一個冗余包作為一組待傳輸?shù)脑紨?shù)據(jù)包發(fā)送至接收端;

其中,所述發(fā)送端和所述接收端對所傳輸?shù)囊唤Mudp數(shù)據(jù)包所包含的udp數(shù)據(jù)包數(shù)量p的具體數(shù)值作有預先約定;

可選地,該發(fā)送端還可以包括:重發(fā)模塊,用于在接收到來自所述發(fā)送端的控制包時,對所述控制包對應的一組原始數(shù)據(jù)包進行重發(fā);

其中,所述控制包包含表示通知所述發(fā)送端一組原始數(shù)據(jù)包發(fā)生丟包,需要對所述一組原始數(shù)據(jù)包進行重發(fā)的信息。

與上述本發(fā)明實施例所提供的方法相對應,參照圖4,示出了本發(fā)明一種接收端實施例的結(jié)構(gòu)框圖,具體可以包括如下模塊:

接收檢測模塊41,用于對來自發(fā)送端的一組原始數(shù)據(jù)包進行接收并檢測是否丟失udp數(shù)據(jù)包;

其中,所述原始數(shù)據(jù)包包括一組udp數(shù)據(jù)包和對應于所述udp數(shù)據(jù)包的至少一個冗余包,一組udp數(shù)據(jù)包的udp數(shù)據(jù)包數(shù)量為p個,p為正整數(shù);

判斷模塊42,用于如果發(fā)生丟包,則判斷所接收到的同組數(shù)據(jù)包的包數(shù)量是否大于或等于p;

其中,所述發(fā)送端和所述接收端對所傳輸?shù)囊唤Mudp數(shù)據(jù)包所包含的udp數(shù)據(jù)包數(shù)量p的具體數(shù)值作有預先約定;

解碼模塊43,用于若所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量大于或等于p,則采用柯西矩陣對所述接收到的同組數(shù)據(jù)包進行糾刪解碼,得到所述原始數(shù)據(jù)包中的一組udp數(shù)據(jù)包,其中,所述同組數(shù)據(jù)包包括來自一組原始數(shù)據(jù)包中的至少一個冗余包和至少一個udp數(shù)據(jù)包,;

恢復模塊44,用于從解碼得到的所述原始數(shù)據(jù)包中的一組udp數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤;

可選地,所述接收端還可包括:控制重復模塊,用于若判斷所接收到的同組數(shù)據(jù)包的包數(shù)量小于p,則向所述發(fā)送端發(fā)送控制包,所述控制包包含表示通知所述發(fā)送端所述一組原始數(shù)據(jù)包發(fā)生丟包,需要對所述一組原始數(shù)據(jù)包進行重發(fā)的信息。

與上述本發(fā)明實施例所提供的方法相對應,參照圖5,示出了本發(fā)明一種基于udp的數(shù)據(jù)傳輸系統(tǒng)實施例的結(jié)構(gòu)框圖,包括:發(fā)送端501和接收端502;

所述發(fā)送端501包括:

編碼模塊31,用于采用柯西矩陣對待傳輸?shù)囊唤Mudp數(shù)據(jù)包的數(shù)據(jù)部分進行糾刪編碼,針對所述一組udp數(shù)據(jù)包生成至少一個冗余包;

其中,一組udp數(shù)據(jù)包的udp數(shù)據(jù)包數(shù)量為p個,p為正整數(shù);

發(fā)送模塊32,用于將一組udp數(shù)據(jù)包和相應的至少一個冗余包作為一組待傳輸?shù)脑紨?shù)據(jù)包發(fā)送至接收端;

其中,所述發(fā)送端和所述接收端對所傳輸?shù)囊唤Mudp數(shù)據(jù)包所包含的udp數(shù)據(jù)包數(shù)量p的具體數(shù)值作有預先約定;

所述接收端502包括:

接收檢測模塊41,用于對來自發(fā)送端的一組原始數(shù)據(jù)包進行接收并檢測是否丟失udp數(shù)據(jù)包;

其中,所述原始數(shù)據(jù)包包括一組udp數(shù)據(jù)包和對應于所述udp數(shù)據(jù)包的至少一個冗余包,一組udp數(shù)據(jù)包的udp數(shù)據(jù)包數(shù)量為p個,p為正整數(shù);

判斷模塊42,用于如果發(fā)生丟包,則判斷所接收到的同組數(shù)據(jù)包的包數(shù)量是否大于或等于p;

其中,所述發(fā)送端和所述接收端對所傳輸?shù)囊唤Mudp數(shù)據(jù)包所包含的udp數(shù)據(jù)包數(shù)量p的具體數(shù)值作有預先約定;

解碼模塊43,用于若所述接收端判斷所接收到的同組數(shù)據(jù)包的包數(shù)量大于或等于p,則采用柯西矩陣對所述接收到的數(shù)據(jù)包進行糾刪解碼,得到所述原始數(shù)據(jù)包中的一組udp數(shù)據(jù)包,其中,所述同組數(shù)據(jù)包包括來自一組原始數(shù)據(jù)包中的至少一個冗余包和至少一個udp數(shù)據(jù)包;

恢復模塊44,用于從解碼得到的所述原始數(shù)據(jù)包中的一組udp數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤;

可選地,所述發(fā)送端501還可以包括:重發(fā)模塊,用于在接收到來自所述發(fā)送端的控制包時,對所述控制包對應的一組原始數(shù)據(jù)包進行重發(fā);

其中,所述控制包包含表示通知所述發(fā)送端一組原始數(shù)據(jù)包發(fā)生丟包,需要對所述一組原始數(shù)據(jù)包進行重發(fā)的信息。

可選地,所述接收端502還可以包括:控制重復模塊,用于若判斷所接收到的同組數(shù)據(jù)包的包數(shù)量小于p,則向所述發(fā)送端發(fā)送控制包,所述控制包包含表示通知所述發(fā)送端所述一組原始數(shù)據(jù)包發(fā)生丟包,需要對所述一組原始數(shù)據(jù)包進行重發(fā)的信息。

可選地,所述接收端502還包括:

丟棄模塊,用于如果未發(fā)生丟包,則將接收到的所述至少一個冗余包進行丟棄。

優(yōu)選地,所述原始數(shù)據(jù)包中的每個冗余包和每個udp數(shù)據(jù)包包括包頭部分和數(shù)據(jù)部分,所述包頭部分至少包含以下信息:

包編號、編碼分片編號、時間戳、編碼序號、是否為冗余包。

可選地,所述接收檢測模塊41包括:

第一確定子模塊,用于根據(jù)所接收到的同組數(shù)據(jù)包的包頭部分的是否為冗余包的信息,確定所接收到的同組數(shù)據(jù)包中屬于udp數(shù)據(jù)包的目標數(shù)據(jù)包;

判斷子模塊,用于根據(jù)所述目標數(shù)據(jù)包的包數(shù)量以及所述原始數(shù)據(jù)包中包含的udp數(shù)據(jù)包的數(shù)量p判斷是否丟失udp數(shù)據(jù)包。

可選地,所述解碼模塊43包括:

第二確定子模塊,用于根據(jù)所接收到的同組數(shù)據(jù)包的包頭部分的包編號確定所丟失的udp數(shù)據(jù)包的包編號;

并且,所述恢復模塊44包括:

恢復子模塊,用于根據(jù)所丟失的udp數(shù)據(jù)包的包編號從解碼得到的所述原始數(shù)據(jù)包中查找所丟失的udp數(shù)據(jù)包進行恢復并寫入磁盤。

對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。

本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。

本領(lǐng)域內(nèi)的技術(shù)人員應明白,本發(fā)明實施例的實施例可提供為方法、裝置、或計算機程序產(chǎn)品。因此,本發(fā)明實施例可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。

本發(fā)明實施例是參照根據(jù)本發(fā)明實施例的方法、終端設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理終端設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理終端設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理終端設備上,使得在計算機或其他可編程終端設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程終端設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

盡管已描述了本發(fā)明實施例的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明實施例范圍的所有變更和修改。

最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。

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

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