一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)姆椒跋到y(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)姆椒?,其步驟有:1、終端將數(shù)據(jù)進(jìn)行分成N個(gè)數(shù)據(jù)包;2、終端將各數(shù)據(jù)包與其序號(hào)同時(shí)發(fā)送給服務(wù)器;3、服務(wù)器接收一數(shù)據(jù)包并存儲(chǔ)至緩存區(qū)中,同時(shí)記錄本次成功接收的數(shù)據(jù)包序號(hào)i;4、服務(wù)器在延遲時(shí)間內(nèi)查找緩存區(qū)中的已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j;5、若i大于j,則服務(wù)器向終端發(fā)送j和i;若i不大于j,則不發(fā)送應(yīng)答;6、終端判斷數(shù)據(jù)是否丟包,若i與j的差大于1,則數(shù)據(jù)丟包,進(jìn)行補(bǔ)傳;否則不進(jìn)行補(bǔ)傳;7、當(dāng)最后一數(shù)據(jù)包接收和判斷完之后,服務(wù)器進(jìn)行組包。本發(fā)明還提供一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)南到y(tǒng),既降低數(shù)據(jù)的丟包率,又提高數(shù)據(jù)的網(wǎng)絡(luò)傳輸速度。
【專利說明】一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)姆椒跋到y(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種網(wǎng)絡(luò)數(shù)據(jù)傳輸技術(shù),尤其涉及一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)姆椒跋到y(tǒng)。
【背景技術(shù)】
[0002]無線互聯(lián)網(wǎng)的迅速發(fā)展及其網(wǎng)絡(luò)覆蓋率的迅速提升,為人們能夠隨時(shí)隨地享受互聯(lián)網(wǎng)服務(wù)提供了極大的便利,同時(shí)也為車聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用提供了更加可靠的保證。但是,移動(dòng)互聯(lián)網(wǎng)又是一個(gè)不均衡的網(wǎng)絡(luò),在很多實(shí)際環(huán)境中其網(wǎng)絡(luò)環(huán)境并不是那么理想,如何保證在低速網(wǎng)絡(luò)環(huán)境下數(shù)據(jù)的實(shí)時(shí)可靠傳輸依然是一個(gè)比較棘手的問題。
[0003]在低速網(wǎng)路環(huán)境中,數(shù)據(jù)傳輸效率低下、數(shù)據(jù)丟包現(xiàn)象嚴(yán)重等問題都會(huì)嚴(yán)重影響數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和可靠性。在低速網(wǎng)絡(luò)環(huán)境下(網(wǎng)絡(luò)實(shí)際平均帶寬5k/s左右),采用正常的數(shù)據(jù)傳輸策略進(jìn)行測試,其結(jié)果是:丟包率大于30%,采集到的一個(gè)小時(shí)的數(shù)據(jù)要經(jīng)過3個(gè)小時(shí)才能夠全部傳完。這種數(shù)據(jù)傳輸效率在實(shí)際應(yīng)用中是不能容忍的?;诖耍景l(fā)明提出了一種在低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)姆椒跋到y(tǒng)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題之一,在于提供一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)姆椒?,既降低了?shù)據(jù)的丟包率,又提高了數(shù)據(jù)的網(wǎng)絡(luò)傳輸速度。
[0005]本發(fā)明的問題之一,是這樣實(shí)現(xiàn)的:
一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)姆椒?,包括如下步驟:
步驟1、終端將數(shù)據(jù)分成N個(gè)數(shù)據(jù)包,并分別將每個(gè)數(shù)據(jù)包標(biāo)上序號(hào),該序號(hào)為1~N,N為正整數(shù);
步驟2、終端將各數(shù)據(jù)包與其序號(hào)同時(shí)發(fā)送給服務(wù)器;
步驟3、服務(wù)器接收某一數(shù)據(jù)包并存儲(chǔ)至緩存區(qū)中,將該數(shù)據(jù)包緩存一限定的時(shí)間,在該限定的時(shí)間內(nèi)若服務(wù)器沒有接收到其他數(shù)據(jù)包,則將該數(shù)據(jù)包的序號(hào)記為本次成功接收的數(shù)據(jù)包序號(hào)i ;若服務(wù)器有接收到其他數(shù)據(jù)包,每個(gè)接收到的數(shù)據(jù)包均存儲(chǔ)至緩存區(qū)中緩存一限定的時(shí)間,則將最后接收的數(shù)據(jù)包的序號(hào)記為本次成功接收的數(shù)據(jù)包序號(hào)i,i的范圍是1~N ;
步驟4、服務(wù)器從緩存區(qū)中查找已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j,j的范圍是0-N-1, j為0表示未成功接收數(shù)據(jù)包;
步驟5、服務(wù)器判斷i和j的大小,若i大于j,則服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j和本次成功接收的數(shù)據(jù)包序號(hào)i ;若i小于j,則服務(wù)器不向終端發(fā)送應(yīng)答;不出現(xiàn)i等于j的情況;
步驟6、終端根據(jù)應(yīng)答內(nèi)容中的已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j和本次成功接收的數(shù)據(jù)包序號(hào)i的大小判斷數(shù)據(jù)是否丟包,若i減去j的差值大于1,則數(shù)據(jù)出現(xiàn)丟包現(xiàn)象,終端對(duì)j至i之間的序號(hào)中的數(shù)據(jù)包進(jìn)行補(bǔ)傳;否則數(shù)據(jù)沒有出現(xiàn)丟包現(xiàn)象,不需要進(jìn)行補(bǔ)傳,接著再重復(fù)步驟3至步驟6對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ)與判斷,直到最后一數(shù)據(jù)包接收和判斷完畢;
步驟7、當(dāng)最后一數(shù)據(jù)包接收和判斷完之后,服務(wù)器判斷成功接收到的數(shù)據(jù)包的包數(shù)與N的大小是否一致,若一致時(shí),則進(jìn)行組包;若不一致時(shí),則查找出丟失的數(shù)據(jù)包序號(hào),并向終端發(fā)送補(bǔ)傳應(yīng)答,則終端將丟失的數(shù)據(jù)包重新發(fā)送給服務(wù)器。
[0006]本發(fā)明要解決的技術(shù)問題之二,在于提供一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)南到y(tǒng),既降低了數(shù)據(jù)的丟包率,又提高了數(shù)據(jù)的網(wǎng)絡(luò)傳輸速度。
[0007]本發(fā)明的問題之二,是這樣實(shí)現(xiàn)的:
一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)南到y(tǒng),包括數(shù)據(jù)分配模塊、數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)查找模塊、應(yīng)答發(fā)送模塊、丟包判斷模塊、數(shù)據(jù)組包模塊;
所述數(shù)據(jù)分配模塊,終端將數(shù)據(jù)分成N個(gè)數(shù)據(jù)包,并分別將每個(gè)數(shù)據(jù)包標(biāo)上序號(hào),該序號(hào)為1~N,N為正整數(shù);
所述數(shù)據(jù)發(fā)送模塊,終端將各數(shù)據(jù)包與其序號(hào)同時(shí)發(fā)送給服務(wù)器;
所述數(shù)據(jù)存儲(chǔ)模塊,服務(wù)器接收某一數(shù)據(jù)包并存儲(chǔ)至緩存區(qū)中,將該數(shù)據(jù)包緩存一限定的時(shí)間,在該限定的時(shí)間內(nèi)若服務(wù)器沒有接收到其他數(shù)據(jù)包,則將該數(shù)據(jù)包的序號(hào)記為本次成功接收的數(shù)據(jù)包序號(hào)i ;若服務(wù)器有接收到其他數(shù)據(jù)包,每個(gè)接收到數(shù)據(jù)包均存儲(chǔ)至緩存區(qū)中緩存一限定的時(shí)間,則將最后接收的數(shù)據(jù)包的序號(hào)記為i,i的范圍是1~N ;
所述數(shù)據(jù)查找模塊,服務(wù)器從緩存區(qū)中查找已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j,j的范圍是0~N-1,j為O表示未成功接收數(shù)據(jù)包;
所述應(yīng)答發(fā)送模塊,服務(wù)器判斷i和j的大小,若i大于j,則服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j和本次成功接收的數(shù)據(jù)包序號(hào)i ;若i小于j,則序號(hào)為i的數(shù)據(jù)包為補(bǔ)傳的數(shù)據(jù),服務(wù)器不向終端發(fā)送應(yīng)答;不出現(xiàn)i等于j的情況;
所述丟包判斷模塊,終端根據(jù)應(yīng)答內(nèi)容中的已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j和本次成功接收的數(shù)據(jù)包序號(hào)i的大小判斷數(shù)據(jù)是否丟包,若i減去j的差值大于1,則數(shù)據(jù)出現(xiàn)丟包現(xiàn)象,終端對(duì)j至i之間的序號(hào)中的數(shù)據(jù)包進(jìn)行補(bǔ)傳;否則數(shù)據(jù)沒有出現(xiàn)丟包現(xiàn)象,不需要進(jìn)行補(bǔ)傳,接著再重復(fù)步驟3至步驟6對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ)與判斷,直到最后一數(shù)據(jù)包接收和判斷完畢;
所述數(shù)據(jù)組包模塊,當(dāng)最后一數(shù)據(jù)包接收和判斷完之后,服務(wù)器判斷成功接收到的數(shù)據(jù)包的包數(shù)與N的大小是否一致,若一致時(shí),則進(jìn)行組包;若不一致時(shí),則查找出丟失的數(shù)據(jù)包序號(hào),并向終端發(fā)送補(bǔ)傳應(yīng)答,則終端將丟失的數(shù)據(jù)包重新發(fā)送給服務(wù)器。
[0008]本發(fā)明具有如下優(yōu)點(diǎn):
本發(fā)明為了解決在低速網(wǎng)絡(luò)環(huán)境下丟包、網(wǎng)絡(luò)延遲現(xiàn)象嚴(yán)重的問題提出了一種解決方案;本發(fā)明已經(jīng)使用在實(shí)際的車輛CAN數(shù)據(jù)采集系統(tǒng)中,測試結(jié)果表明:丟包率基本可以控制在1%以下,網(wǎng)絡(luò)延遲也比之前得到很大提升,原來一個(gè)小時(shí)數(shù)據(jù)需要近三個(gè)小時(shí)才能完成傳輸,使用本發(fā)明后一小時(shí)數(shù)據(jù)可以控制在一小時(shí)十分鐘之內(nèi)傳完。因此,該發(fā)明在低速網(wǎng)絡(luò)環(huán)境下還是有著較為優(yōu)秀的表現(xiàn)。
【專利附圖】
【附圖說明】
[0009]下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說明。
[0010]圖1為本發(fā)明方法執(zhí)行的程序原理圖。
【具體實(shí)施方式】
[0011]參閱圖1所示,本發(fā)明的一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)姆椒?,包括如下步驟:
步驟1、終端將數(shù)據(jù)分成N個(gè)數(shù)據(jù)包,并分別將每個(gè)數(shù)據(jù)包標(biāo)上序號(hào),該序號(hào)為1~N,N為正整數(shù),每個(gè)數(shù)據(jù)包的大小為1KB,假定N為9,則序號(hào)包括1、2、3、4、5、6、7、8、9 ;
步驟2、終端將各數(shù)據(jù)包與其序號(hào)同時(shí)發(fā)送給服務(wù)器,不必等到第N包數(shù)據(jù)應(yīng)答成功之后再發(fā)送第N+1包數(shù)據(jù);
步驟3、服務(wù)器接收序號(hào)為I的數(shù)據(jù)包并存儲(chǔ)至緩存區(qū)中,將該數(shù)據(jù)包緩存5分鐘,在這5分鐘之內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則將該數(shù)據(jù)包的序號(hào)I記為本次成功接收的數(shù)據(jù)包序號(hào)i ;i的范圍是1~9 ;
步驟4、服務(wù)器從緩存區(qū)中查找已接收的除第I包外的數(shù)據(jù)包最大序號(hào)j,查找到緩存區(qū)中沒有已接收完的數(shù)據(jù)包,此時(shí)認(rèn)為已接收的除第I包外的數(shù)據(jù)包最大序號(hào)j為0,j的范圍是0~8 ;
步驟5、在I大于O的情況下,服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第I包外的數(shù)據(jù)包最大序號(hào)O和本次成功接收的數(shù)據(jù)包序號(hào)I ;
步驟6、終端根據(jù)應(yīng)答內(nèi)容的的本次成功接收的數(shù)據(jù)包序號(hào)I和已接收的除第I包外的數(shù)據(jù)包最大序號(hào)O的大小判斷數(shù)據(jù)是否丟包,此時(shí)I減去O的差值不大于1,則數(shù)據(jù)沒有出現(xiàn)丟包現(xiàn)象,不需要進(jìn)行補(bǔ)傳;
接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為2,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則查找到已接收的除第2包外的數(shù)據(jù)包最大序號(hào)1,此時(shí)序號(hào)2大于序號(hào)1,服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第2包外的數(shù)據(jù)包最大序號(hào)I和本次成功接收的數(shù)據(jù)包序號(hào)2 ;終端根據(jù)應(yīng)答的本次成功接收的數(shù)據(jù)包序號(hào)2和已接收的除第2包外的數(shù)據(jù)包最大序號(hào)I的大小判斷數(shù)據(jù)是否丟包,此時(shí)2減去I的差值不大于I,則數(shù)據(jù)沒有出現(xiàn)丟包現(xiàn)象,不需要進(jìn)行補(bǔ)傳;
接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為5,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則查找到已接收的除第5包外的數(shù)據(jù)包最大序號(hào)2,此時(shí)序號(hào)5大于序號(hào)2,服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第5包外的數(shù)據(jù)包最大序號(hào)2和本次成功接收的數(shù)據(jù)包序號(hào)5 ;終端根據(jù)應(yīng)答的本次成功接收的數(shù)據(jù)包序號(hào)5和已接收的除第5包外的數(shù)據(jù)包最大序號(hào)2的大小判斷數(shù)據(jù)是否丟包,此時(shí)5減去2的差值大于1,則數(shù)據(jù)出現(xiàn)丟包現(xiàn)象,終端對(duì)2至5之間的序號(hào)3和4中的數(shù)據(jù)包進(jìn)行補(bǔ)傳;
接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為3,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則查找到已接收的除第3包外的數(shù)據(jù)包最大序號(hào)5,此時(shí)序號(hào)3小于序號(hào)5,則序號(hào)為3的數(shù)據(jù)包為補(bǔ)傳的數(shù)據(jù),服務(wù)器不向終端發(fā)送應(yīng)答; 接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為4,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則查找到已接收的除第4包外的數(shù)據(jù)包最大序號(hào)5,此時(shí)序號(hào)4小于序號(hào)5,則序號(hào)為4的數(shù)據(jù)包為補(bǔ)傳的數(shù)據(jù),服務(wù)器不向終端發(fā)送應(yīng)答;
接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為9,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器有接收到第7包數(shù)據(jù),將第7包數(shù)據(jù)存儲(chǔ)至緩存區(qū)中緩存5分鐘,則此時(shí)本次成功接收的數(shù)據(jù)包序號(hào)i為7,查找到已接收的除第7包外的數(shù)據(jù)包最大序號(hào)j為9,此時(shí)序號(hào)7小于序號(hào)9,服務(wù)器不向終端發(fā)送應(yīng)答;
步驟7、當(dāng)?shù)?包數(shù)據(jù)接收和判斷完之后,服務(wù)器判斷成功接收到的數(shù)據(jù)包的包數(shù)7與總數(shù)據(jù)包的數(shù)量9大小不一致,則查找出丟失的數(shù)據(jù)包序號(hào)6和序號(hào)8,并向終端發(fā)送補(bǔ)傳應(yīng)答,則終端將丟失的第6包數(shù)據(jù)與第8包數(shù)據(jù)重新發(fā)送給服務(wù)器。
[0012]分包調(diào)整的具體步驟有:數(shù)據(jù)包發(fā)送完畢后,服務(wù)器延時(shí)2s用于判斷數(shù)據(jù)是否丟包,若數(shù)據(jù)有丟包,則服務(wù)器計(jì)算出丟包序號(hào),然后根據(jù)公式:帶寬=網(wǎng)絡(luò)吞吐量/耗時(shí),計(jì)算當(dāng)前網(wǎng)絡(luò)實(shí)際的帶寬;接著根據(jù)P=w*0.3計(jì)算出分包大小P,然后通知終端調(diào)整數(shù)據(jù)包的大小為P。
[0013]一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)南到y(tǒng),包括數(shù)據(jù)分配模塊、數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)查找模塊、應(yīng)答發(fā)送模塊、丟包判斷模塊、數(shù)據(jù)組包模塊;
所述數(shù)據(jù)分配模塊,終端將數(shù)據(jù)分成N個(gè)數(shù)據(jù)包,并分別將每個(gè)數(shù)據(jù)包標(biāo)上序號(hào),該序號(hào)為1~N,N為正整數(shù),每個(gè)數(shù)據(jù)包的大小為1KB,假定N為9,則序號(hào)包括1、2、3、4、5、6、7、8、9 ;
所述數(shù)據(jù)發(fā)送模塊,終端將各數(shù)據(jù)包與其序號(hào)同時(shí)發(fā)送給服務(wù)器,不必等到第N包數(shù)據(jù)應(yīng)答成功之后再發(fā)送第N+1包數(shù)據(jù);
所述數(shù)據(jù)存儲(chǔ)模塊,服務(wù)器接收序號(hào)為1的數(shù)據(jù)包并存儲(chǔ)至緩存區(qū)中,將該數(shù)據(jù)包緩存5分鐘,在這5分鐘之內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則將該數(shù)據(jù)包的序號(hào)1記為本次成功接收的數(shù)據(jù)包序號(hào)i,i的范圍是1~9 ;
所述數(shù)據(jù)查找模塊,服務(wù)器從緩存區(qū)中查找第1包以外的最大數(shù)據(jù)包序號(hào)j,查找到緩存區(qū)中沒有已接收完的數(shù)據(jù)包,此時(shí)認(rèn)為已接收的除第1包外的數(shù)據(jù)包最大序號(hào)j為0,j的范圍是0~8 ;
所述應(yīng)答發(fā)送模塊,在1大于0的情況下,服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第1包外的數(shù)據(jù)包最大序號(hào)0和本次成功接收的數(shù)據(jù)包序號(hào)1 ;
所述丟包判斷模塊,終端根據(jù)應(yīng)答內(nèi)容的的本次成功接收的數(shù)據(jù)包序號(hào)1和已接收的除第1包外的數(shù)據(jù)包最大序號(hào)0的大小判斷數(shù)據(jù)是否丟包,此時(shí)1減去0的差值不大于1,則數(shù)據(jù)沒有出現(xiàn)丟包現(xiàn)象,不需要進(jìn)行補(bǔ)傳;
接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為2,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則查找到已接收的除第2包外的數(shù)據(jù)包最大序號(hào)1,此時(shí)序號(hào)2大于序號(hào)1,服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第2包外的數(shù)據(jù)包最大序號(hào)1和本次成功接收的數(shù)據(jù)包序號(hào)2 ;終端根據(jù)應(yīng)答的本次成功接收的數(shù)據(jù)包序號(hào)2和已接收的除第2包外的數(shù)據(jù)包最大序號(hào)1的大小判斷數(shù)據(jù)是否丟包,此時(shí)2減去1的差值不大于1,則數(shù)據(jù)沒有出現(xiàn)丟包現(xiàn)象,不需要進(jìn)行補(bǔ)傳;
接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為5,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則查找到已接收的除第5包外的數(shù)據(jù)包最大序號(hào)2,此時(shí)序號(hào)5大于序號(hào)2,服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第5包外的數(shù)據(jù)包最大序號(hào)2和本次成功接收的數(shù)據(jù)包序號(hào)5 ;終端根據(jù)應(yīng)答的本次成功接收的數(shù)據(jù)包序號(hào)5和已接收的除第5包外的數(shù)據(jù)包最大序號(hào)2的大小判斷數(shù)據(jù)是否丟包,此時(shí)5減去2的差值大于1,則數(shù)據(jù)出現(xiàn)丟包現(xiàn)象,終端對(duì)2至5之間的序號(hào)3和4中的數(shù)據(jù)包進(jìn)行補(bǔ)傳;
接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為3,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則查找到已接收的除第3包外的數(shù)據(jù)包最大序號(hào)5,此時(shí)序號(hào)3小于序號(hào)5,則序號(hào)為3的數(shù)據(jù)包為補(bǔ)傳的數(shù)據(jù),服務(wù)器不向終端發(fā)送應(yīng)答;
接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為4,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器沒有接收到其他數(shù)據(jù)包,則查找到已接收的除第4包外的數(shù)據(jù)包最大序號(hào)5,此時(shí)序號(hào)4小于序號(hào)5,則序號(hào)為4的數(shù)據(jù)包為補(bǔ)傳的數(shù)據(jù),服務(wù)器不向終端發(fā)送應(yīng)答;
接著對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ),假定下一成功接收的數(shù)據(jù)包的序號(hào)為9,將該數(shù)據(jù)包存儲(chǔ)至緩存區(qū)中,在緩存的5分鐘內(nèi)服務(wù)器有接收到第7包數(shù)據(jù),將第7包數(shù)據(jù)存儲(chǔ)至緩存區(qū)中緩存5分鐘,則此時(shí)本次成功接收的數(shù)據(jù)包序號(hào)i為7,查找到已接收的除第7包外的數(shù)據(jù)包最大序號(hào)j為9,此時(shí)序號(hào)7小于序號(hào)9,服務(wù)器不向終端發(fā)送應(yīng)答;
所述數(shù)據(jù)組包模塊,當(dāng)?shù)?包數(shù)據(jù)接收和判斷完之后,服務(wù)器判斷成功接收到的數(shù)據(jù)包的包數(shù)7與總數(shù)據(jù)包的數(shù)量9大小不一致,則查找出丟失的數(shù)據(jù)包序號(hào)6和序號(hào)8,并向終端發(fā)送補(bǔ)傳應(yīng)答,則終端將丟失的第6包數(shù)據(jù)與第8包數(shù)據(jù)重新發(fā)送給服務(wù)器。
[0014]分包調(diào)整的具體步驟有:數(shù)據(jù)包發(fā)送完畢后,服務(wù)器延時(shí)2s用于判斷數(shù)據(jù)是否丟包,若數(shù)據(jù)有丟包,則服務(wù)器計(jì)算出丟包序號(hào),然后根據(jù)公式:帶寬=網(wǎng)絡(luò)吞吐量/耗時(shí),計(jì)算當(dāng)前網(wǎng)絡(luò)實(shí)際的帶寬;接著根據(jù)P=w*0.3計(jì)算出分包大小P,然后通知終端調(diào)整數(shù)據(jù)包的大小為P。
[0015]雖然以上描述了本發(fā)明的【具體實(shí)施方式】,但是熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實(shí)施例只是說明性的,而不是用于對(duì)本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。
【權(quán)利要求】
1.一種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)姆椒ǎ涮卣髟谟?包括如下步驟: 步驟1、終端將數(shù)據(jù)分成N個(gè)數(shù)據(jù)包,并分別將每個(gè)數(shù)據(jù)包標(biāo)上序號(hào),該序號(hào)為1~N,N為正整數(shù); 步驟2、終端將各數(shù)據(jù)包與其序號(hào)同時(shí)發(fā)送給服務(wù)器; 步驟3、服務(wù)器接收某一數(shù)據(jù)包并存儲(chǔ)至緩存區(qū)中,將該數(shù)據(jù)包緩存一限定的時(shí)間,在該限定的時(shí)間內(nèi)若服務(wù)器沒有接收到其他數(shù)據(jù)包,則將該數(shù)據(jù)包的序號(hào)記為本次成功接收的數(shù)據(jù)包序號(hào)i ;若服務(wù)器有接收到其他數(shù)據(jù)包,每個(gè)接收到的數(shù)據(jù)包均存儲(chǔ)至緩存區(qū)中緩存一限定的時(shí)間,則將最后接收的數(shù)據(jù)包的序號(hào)記為本次成功接收的數(shù)據(jù)包序號(hào)i,i的范圍是1~N ; 步驟4、服務(wù)器從緩存區(qū)中查找已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j,j的范圍是0-N-1, j為O表示未成功接收數(shù)據(jù)包; 步驟5、服務(wù)器判斷i和j的大小,若i大于j,則服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j和本次成功接收的數(shù)據(jù)包序號(hào)i ;若i小于j,則服務(wù)器不向終端發(fā)送應(yīng)答;不出現(xiàn)i等于j的情況; 步驟6、終端根據(jù)應(yīng)答內(nèi)容中的已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j和本次成功接收的數(shù)據(jù)包序號(hào)i的大小判斷數(shù)據(jù)是否丟包,若i減去j的差值大于1,則數(shù)據(jù)出現(xiàn)丟包現(xiàn)象,終端對(duì)j至i之間的序號(hào)中的數(shù)據(jù)包進(jìn)行補(bǔ)傳;否則數(shù)據(jù)沒有出現(xiàn)丟包現(xiàn)象,不需要進(jìn)行補(bǔ)傳,接著再重復(fù)步驟3至步驟6對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ)與判斷,直到最后一數(shù)據(jù)包接收和判斷完畢; 步驟7、當(dāng)最后一數(shù)據(jù)包接收和判斷完之后,服務(wù)器判斷成功接收到的數(shù)據(jù)包的包數(shù)與N的大小是否一致,若一致時(shí),則進(jìn)行組包;若不一致時(shí),則查找出丟失的數(shù)據(jù)包序號(hào),并向終端發(fā)送補(bǔ)傳應(yīng)答,則終端將丟失的數(shù)據(jù)包重新發(fā)送給服務(wù)器。
2.—種低速網(wǎng)絡(luò)環(huán)境下的實(shí)時(shí)可靠數(shù)據(jù)傳輸?shù)南到y(tǒng),其特征在于:包括數(shù)據(jù)分配模塊、數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)查找模塊、應(yīng)答發(fā)送模塊、丟包判斷模塊、數(shù)據(jù)組包豐吳塊; 所述數(shù)據(jù)分配模塊,終端將數(shù)據(jù)分成N個(gè)數(shù)據(jù)包,并分別將每個(gè)數(shù)據(jù)包標(biāo)上序號(hào),該序號(hào)為1~N,N為正整數(shù); 所述數(shù)據(jù)發(fā)送模塊,終端將各數(shù)據(jù)包與其序號(hào)同時(shí)發(fā)送給服務(wù)器; 所述數(shù)據(jù)存儲(chǔ)模塊,服務(wù)器接收某一數(shù)據(jù)包并存儲(chǔ)至緩存區(qū)中,將該數(shù)據(jù)包緩存一限定的時(shí)間,在該限定的時(shí)間內(nèi)若服務(wù)器沒有接收到其他數(shù)據(jù)包,則將該數(shù)據(jù)包的序號(hào)記為本次成功接收的數(shù)據(jù)包序號(hào)i ;若服務(wù)器有接收到其他數(shù)據(jù)包,每個(gè)接收到數(shù)據(jù)包均存儲(chǔ)至緩存區(qū)中緩存一限定的時(shí)間,則將最后接收的數(shù)據(jù)包的序號(hào)記為i,i的范圍是1~N ; 所述數(shù)據(jù)查找模塊,服務(wù)器從緩存區(qū)中查找已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j,j的范圍是0~N-1,j為O表示未成功接收數(shù)據(jù)包; 所述應(yīng)答發(fā)送模塊,服務(wù)器判斷i和j的大小,若i大于j,則服務(wù)器向終端發(fā)送應(yīng)答,該應(yīng)答的內(nèi)容為已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j和本次成功接收的數(shù)據(jù)包序號(hào)i ;若i小于j,則序號(hào)為i的數(shù)據(jù)包為補(bǔ)傳的數(shù)據(jù),服務(wù)器不向終端發(fā)送應(yīng)答;不出現(xiàn)i等于j的情況; 所述丟包判斷模塊,終端根據(jù)應(yīng)答內(nèi)容中的已接收的除第i包外的數(shù)據(jù)包最大序號(hào)j和本次成功接收的數(shù)據(jù)包序號(hào)i的大小判斷數(shù)據(jù)是否丟包,若i減去j的差值大于1,則數(shù)據(jù)出現(xiàn)丟包現(xiàn)象,終端對(duì)j至i之間的序號(hào)中的數(shù)據(jù)包進(jìn)行補(bǔ)傳;否則數(shù)據(jù)沒有出現(xiàn)丟包現(xiàn)象,不需要進(jìn)行補(bǔ)傳,接著再重復(fù)步驟3至步驟6對(duì)下一成功接收的數(shù)據(jù)包進(jìn)行存儲(chǔ)與判斷,直到最后一數(shù)據(jù)包接收和判斷完畢; 所述數(shù)據(jù)組包模塊,當(dāng)最后一數(shù)據(jù)包接收和判斷完之后,服務(wù)器判斷成功接收到的數(shù)據(jù)包的包數(shù)與N的大小是否一致,若一致時(shí),則進(jìn)行組包;若不一致時(shí),則查找出丟失的數(shù)據(jù)包序號(hào),并向終端發(fā)送補(bǔ)傳應(yīng)答,則終端將丟失的數(shù)據(jù)包重新發(fā)送給服務(wù)器。
【文檔編號(hào)】H04L12/861GK104468061SQ201410684882
【公開日】2015年3月25日 申請(qǐng)日期:2014年11月25日 優(yōu)先權(quán)日:2014年11月25日
【發(fā)明者】黃家乾, 涂巖愷, 時(shí)宜, 季剛 申請(qǐng)人:廈門雅迅網(wǎng)絡(luò)股份有限公司