數(shù)據(jù)包、數(shù)據(jù)傳輸系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)通信技術(shù)領(lǐng)域,尤其是一種數(shù)據(jù)包、數(shù)據(jù)傳輸系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著Internet的普及,越來越多的設(shè)備被接入互聯(lián)網(wǎng),開始具有遠(yuǎn)程訪問能力。IP地址因此變成了一種稀缺資源。為解決IP地址耗盡問題,NAT(Network AddressTranslat1n,網(wǎng)絡(luò)地址轉(zhuǎn)換)被廣泛地使用。NAT雖然是解決IP地址緊缺的有效辦法,但也給通過網(wǎng)絡(luò)進(jìn)行通信帶來一些麻煩,尤其是當(dāng)通信的雙方都位于NAT之后的時候。
[0003]目前實(shí)現(xiàn)端到端可靠傳輸?shù)姆椒ㄒ蕾嘥CP(Transmiss1n Control Protocol傳輸控制協(xié)議)。然而TCP在通信的雙方都位于NAT之后而需要穿越NAT時,穿越的難度很大,而且成功率低。為此,位于NAT之后的通信雙方通常要借助服務(wù)器轉(zhuǎn)發(fā)的方式進(jìn)行通信。使用服務(wù)器轉(zhuǎn)發(fā),雖然能夠達(dá)成通信的目的,但會對服務(wù)器產(chǎn)生較高的要求,尤其是高帶寬的應(yīng)用,更可能會在服務(wù)器上產(chǎn)生處理瓶頸。通過服務(wù)器轉(zhuǎn)發(fā)還會增加端到端的通信延遲。另夕卜,從網(wǎng)絡(luò)的整體來看,經(jīng)過服務(wù)器轉(zhuǎn)發(fā)相比端到端的直接通信也必然消耗更多的網(wǎng)絡(luò)資源。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于提供一種數(shù)據(jù)包、數(shù)據(jù)傳輸系統(tǒng)及方法,以實(shí)現(xiàn)端到端的可靠傳輸,中間的路由節(jié)點(diǎn)自動為通信的流量選取最佳的路由,從而實(shí)現(xiàn)全網(wǎng)效率的最優(yōu)化。
[0005]為了達(dá)到上述目的,本發(fā)明提供了一種數(shù)據(jù)包,包括包頭和負(fù)載,所述包頭包括類型、順序號以及確認(rèn)號,其中,所述類型包括數(shù)據(jù)類型、確認(rèn)類型以及否定確認(rèn)類型;
[0006]當(dāng)所述包頭的類型為數(shù)據(jù)類型時,所述負(fù)載為應(yīng)用數(shù)據(jù),所述順序號為該數(shù)據(jù)包在傳輸?shù)臄?shù)據(jù)中的順序位置,所述確認(rèn)號為期望接收到的下一個數(shù)據(jù)包的順序號;
[0007]當(dāng)所述包頭的類型為確認(rèn)類型時,所述確認(rèn)號為期望收到的下一個數(shù)據(jù)包的順序號,所述順序號和負(fù)載為空;
[0008]當(dāng)所述包頭的類型為否定確認(rèn)類型時,所述順序號為期望收到而未收到的數(shù)據(jù)包的順序號,所述確認(rèn)號和負(fù)載為空。
[0009]優(yōu)選的,在上述的數(shù)據(jù)包中,所述包頭還包括標(biāo)識,以標(biāo)記所述數(shù)據(jù)包的結(jié)構(gòu)。
[0010]本發(fā)明還提供了一種數(shù)據(jù)傳輸系統(tǒng),包括第一數(shù)據(jù)端和第二數(shù)據(jù)端;所述第一數(shù)據(jù)端和第二數(shù)據(jù)端均基于UDP進(jìn)行NAT穿越;所述第一數(shù)據(jù)端和第二數(shù)據(jù)端傳輸?shù)臄?shù)據(jù)均以上述的數(shù)據(jù)包進(jìn)行傳輸。
[0011]優(yōu)選的,在上述的數(shù)據(jù)傳輸系統(tǒng)中,所述第一數(shù)據(jù)端設(shè)置一第一發(fā)送窗口,其容量決定所述第一數(shù)據(jù)端未收到確認(rèn)信息的數(shù)據(jù)包的數(shù)量的最大值;所述第二數(shù)據(jù)端設(shè)置一第一接收窗口,使得所述第二數(shù)據(jù)端在未接收到期望接收的數(shù)據(jù)包時接收多個數(shù)據(jù)包。
[0012]優(yōu)選的,在上述的數(shù)據(jù)傳輸系統(tǒng)中,所述第二數(shù)據(jù)端設(shè)置一第二發(fā)送窗口,其容量覺得所述第二數(shù)據(jù)端未收到確認(rèn)信息的數(shù)據(jù)包的數(shù)量的最大值;所述第一數(shù)據(jù)端設(shè)置一第二接收窗口,使得所述第一數(shù)據(jù)端在未接收到期望接收的數(shù)據(jù)包時接收多個數(shù)據(jù)包。
[0013]本發(fā)明更提供了一種數(shù)據(jù)傳輸方法,包括以下步驟:
[0014]第一數(shù)據(jù)端將需要發(fā)送的應(yīng)用數(shù)據(jù)分割成多個數(shù)據(jù)單元,并將每個數(shù)據(jù)單元作為負(fù)載以各自形成一第一數(shù)據(jù)包;
[0015]所述第一數(shù)據(jù)端將所述第一數(shù)據(jù)包發(fā)送至所述第二數(shù)據(jù)端;
[0016]所述第二數(shù)據(jù)端接收到所述第一數(shù)據(jù)包,并根據(jù)所述第一數(shù)據(jù)包中的順序號和確認(rèn)號對其進(jìn)行處理。
[0017]優(yōu)選的,在上述的數(shù)據(jù)傳輸方法中,所述第二數(shù)據(jù)端對所接收到的所述第一數(shù)據(jù)包進(jìn)行處理的步驟包括:
[0018]當(dāng)所述第一數(shù)據(jù)包的順序號落入所述第一接收窗口中時,對所述第一數(shù)據(jù)包進(jìn)行緩存;
[0019]當(dāng)所述第一數(shù)據(jù)包的順序號為所述第一接收窗口中最小的順序號時,所述第二數(shù)據(jù)端向第一數(shù)據(jù)端發(fā)送確認(rèn)類型的第二數(shù)據(jù)包,同時將所述第一數(shù)據(jù)包中的負(fù)載發(fā)送至應(yīng)用程序;否則,向所述第一數(shù)據(jù)端發(fā)送否定確認(rèn)類型的第三數(shù)據(jù)包;
[0020]當(dāng)所述第二數(shù)據(jù)端需要向所述第一數(shù)據(jù)端發(fā)送數(shù)據(jù)時,根據(jù)所述第一數(shù)據(jù)包中的確認(rèn)號發(fā)送數(shù)據(jù)包,否則,不發(fā)送數(shù)據(jù)包。
[0021 ]優(yōu)選的,在上述的數(shù)據(jù)傳輸方法中,當(dāng)所述第一數(shù)據(jù)端接收到所述第二數(shù)據(jù)包時,根據(jù)所述第二數(shù)據(jù)包中的確認(rèn)號滑動所述第一發(fā)送窗口。
[0022]優(yōu)選的,在上述的數(shù)據(jù)傳輸方法中,當(dāng)所述第一數(shù)據(jù)端接收到所述第三數(shù)據(jù)包時,立即重發(fā)所述第三數(shù)據(jù)包中的順序號對應(yīng)的數(shù)據(jù)包。
[0023]優(yōu)選的,在上述的數(shù)據(jù)傳輸方法中,所述第二數(shù)據(jù)端對所接收到的所述第一數(shù)據(jù)包進(jìn)行處理的步驟還包括:當(dāng)所述第一數(shù)據(jù)包的順序號落入所述第一接收窗口外時,丟棄所述第一數(shù)據(jù)包。
[0024]優(yōu)選的,在上述的數(shù)據(jù)傳輸方法中,所述第一數(shù)據(jù)端在發(fā)送第一數(shù)據(jù)包的同時設(shè)置一超時定時器,當(dāng)所述第一數(shù)據(jù)端在超出所述超時定時器設(shè)定的時間仍未收到確認(rèn)信息時,則重發(fā)所述第一數(shù)據(jù)包。
[0025]在本發(fā)明提供的數(shù)據(jù)包、數(shù)據(jù)傳輸系統(tǒng)及方法,第一數(shù)據(jù)端和第二數(shù)據(jù)端均基于UDP進(jìn)行NAT穿越,所述第一數(shù)據(jù)端在發(fā)送應(yīng)用數(shù)據(jù)之前,先將所述應(yīng)用數(shù)據(jù)劃分為多個數(shù)據(jù)單元,并根據(jù)每個數(shù)據(jù)單元作為負(fù)載以形成第一數(shù)據(jù)包,然后再將這些第一數(shù)據(jù)包逐個發(fā)送至第二數(shù)據(jù)端,所述第二數(shù)據(jù)端在接收到所述第一數(shù)據(jù)包后,根據(jù)所述第一數(shù)據(jù)包中的順序號和確認(rèn)號對其進(jìn)行處理。從而實(shí)現(xiàn)了端到端的可靠傳輸,而中間的路由節(jié)點(diǎn)自動為通信的流量選取最佳的路由,進(jìn)而實(shí)現(xiàn)全網(wǎng)效率的最優(yōu)化。
【附圖說明】
[0026]圖1為本發(fā)明實(shí)施例中數(shù)據(jù)包的示意圖;
[0027]圖2為本發(fā)明實(shí)施例中數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)示意圖;
[0028]圖3為本發(fā)明實(shí)施例中數(shù)據(jù)傳輸方法的流程圖;
[0029]圖4為圖3中步驟S4的流程圖。
【具體實(shí)施方式】
[0030]下面將結(jié)合示意圖對本發(fā)明的【具體實(shí)施方式】進(jìn)行更詳細(xì)的描述。根據(jù)下列描述和權(quán)利要求書,本發(fā)明的優(yōu)點(diǎn)和特征將更清楚。需說明的是,附圖均采用非常簡化的形式且均使用非精準(zhǔn)的比例,僅用以方便、明晰地輔助說明本發(fā)明實(shí)施例的目的。
[0031]本發(fā)明實(shí)施例提供了一種數(shù)據(jù)包,如圖1所示,數(shù)據(jù)包包括包頭和負(fù)載,所述包頭包括類型、順序號、確認(rèn)號以及標(biāo)識,所述類型包括數(shù)據(jù)類型、確認(rèn)類型以及否定確認(rèn)類型。具體的,當(dāng)所述類型為數(shù)據(jù)類型時,所述負(fù)載為應(yīng)用數(shù)據(jù),所述順序號為該數(shù)據(jù)包在傳輸?shù)臄?shù)據(jù)中的順序位置,所述確認(rèn)號為期望接收到的下一個數(shù)據(jù)包的順序號;當(dāng)所述類型為確認(rèn)類型時,所述確認(rèn)號為期望收到的下一個數(shù)據(jù)包的順序號,所述順序號和負(fù)載為空;當(dāng)所述類型為否定確認(rèn)類型時,所述順序號為期望收到而未收到的數(shù)據(jù)包的順序號,所述確認(rèn)號和負(fù)載為空。所述標(biāo)識用于標(biāo)記所述數(shù)據(jù)包的結(jié)構(gòu)。所述標(biāo)識的作用與現(xiàn)有技術(shù)中的TCP/IP協(xié)議中數(shù)據(jù)包的標(biāo)識的作用相同。
[0032]本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)傳輸系統(tǒng),如圖2所示,包括第一數(shù)據(jù)端101和第二數(shù)據(jù)端102,所述第一數(shù)據(jù)端101和第二數(shù)據(jù)端102均基于