欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)的傳輸方法和裝置的制作方法

文檔序號:7965109閱讀:177來源:國知局
專利名稱:一種數(shù)據(jù)的傳輸方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)傳輸領(lǐng)域,特別涉及一種數(shù)據(jù)傳輸?shù)姆椒ê脱b置。
背景技術(shù)
在高速信息化的今天,人們越來越多的通過網(wǎng)絡(luò)來進行數(shù)據(jù)的傳輸。尤其是大數(shù)據(jù)的傳輸日益增加,使得網(wǎng)絡(luò)設(shè)備承受了比較大的負(fù)荷。如何實現(xiàn)大數(shù)據(jù)高速、準(zhǔn)確的傳輸對提高工作效率有著積極的意義。
目前現(xiàn)有技術(shù)是采用TCP的滑動窗口協(xié)議來完成數(shù)據(jù)的傳輸。TCP滑動窗口技術(shù)是通過動態(tài)改變窗口大小來調(diào)節(jié)兩個實體之間的數(shù)據(jù)傳輸。TCP中采用滑動窗口來進行傳輸控制,滑動窗口的大小意味著接收方還有多大的緩沖區(qū)可以用于接收數(shù)據(jù)。發(fā)送方可以通過滑動窗口的大小來確定應(yīng)該發(fā)送多少字節(jié)的數(shù)據(jù)。當(dāng)滑動窗口為0時,發(fā)送方一般不能再發(fā)送數(shù)據(jù)包。但有兩種情況除外;一種情況是可以發(fā)送緊急數(shù)據(jù)。例如,允許用戶終止在遠(yuǎn)端機上的運行進程。另一種情況是可以發(fā)送一個1字節(jié)的數(shù)據(jù)包來通知接收方重新聲明它希望接收的下一字節(jié)及發(fā)送方滑動窗口的大小。假定發(fā)送方設(shè)備以每一次三個數(shù)據(jù)包的方式發(fā)送數(shù)據(jù),也就是說,窗口大小為3。發(fā)送方發(fā)送序列號為1、2、3的三個數(shù)據(jù)包,接收方設(shè)備成功接收數(shù)據(jù)包,用序列號4確認(rèn)。發(fā)送方設(shè)備收到確認(rèn),繼續(xù)以窗口大小3發(fā)送數(shù)據(jù)。當(dāng)接受方設(shè)備要求降低或者增大網(wǎng)絡(luò)流量時,可以對窗口大小進行減小或者增加。本例降低窗口大小為2,則每一次發(fā)送兩個數(shù)據(jù)包。當(dāng)接收方設(shè)備要求窗口大小為0,表明接收方已經(jīng)接收了全部數(shù)據(jù),或者接收方應(yīng)用程序沒有時間讀取數(shù)據(jù),要求暫停發(fā)送。發(fā)送方接收到攜帶窗口號為0的確認(rèn),停止這一方向的數(shù)據(jù)發(fā)送。
網(wǎng)管產(chǎn)品要求將網(wǎng)元設(shè)備收集的大量性能數(shù)據(jù)傳送到性能數(shù)據(jù)服務(wù)器(PerformanceData Server PDS),進行性能數(shù)據(jù)的統(tǒng)一分析處理。對于大數(shù)據(jù)的傳輸,目前現(xiàn)有技術(shù)存在以下缺點1.現(xiàn)有技術(shù)中的大數(shù)據(jù)傳輸方法需要利用TCP/IP協(xié)議,而網(wǎng)管產(chǎn)品在單板上可能沒有TCP/IP協(xié)議棧,如果要實現(xiàn)標(biāo)準(zhǔn)的TCP協(xié)議也需要增加成本,并占用較多的資源,而且標(biāo)準(zhǔn)TCP協(xié)議無法滿足通信系統(tǒng)對TCP/IP協(xié)議棧的嚴(yán)格需求,如可擴展性等;
2.網(wǎng)管產(chǎn)品對性能采集數(shù)據(jù)記錄(Performance Collection Data Record PCDR)進行高效的數(shù)據(jù)傳輸過程中,由于PCDR的大小不一,有的只幾十字節(jié),有的大到幾十千字節(jié),如果直接使用TCP協(xié)議,那么對于大于MTU(最大傳輸單元,一般系統(tǒng)默認(rèn)的TCP/IP數(shù)據(jù)包最大值為1500)字節(jié)的PCDR就會在IP層自動進行分片處理,從而增加了大數(shù)據(jù)的處理過程,使得大數(shù)據(jù)的傳輸效率降低;3.TCP協(xié)議中的滑動窗口協(xié)議方法在確認(rèn)和寫操作問題上有兩種機制一種是先發(fā)送確認(rèn)后進行寫,如果發(fā)送確認(rèn)后,未完成寫操作時系統(tǒng)發(fā)生崩潰,這時會丟失數(shù)據(jù)單元;另一種是先進行寫后發(fā)送確認(rèn),如果完成了寫操作,未發(fā)送確認(rèn)時系統(tǒng)崩潰,數(shù)據(jù)會重傳造成重復(fù)數(shù)據(jù)單元,顯然這樣的崩潰恢復(fù)機制是不可靠的;4.TCP協(xié)議中的滑動窗口協(xié)議由于是標(biāo)準(zhǔn)協(xié)議的實現(xiàn)方法,通信行業(yè)對標(biāo)準(zhǔn)協(xié)議有嚴(yán)格統(tǒng)一的規(guī)范,不可能對它進行一些更改,這也造成了TCP的滑動窗口協(xié)議方法在控制接口的擴展能力方面比較弱。

發(fā)明內(nèi)容
為了克服現(xiàn)有技術(shù)中TCP滑動窗口協(xié)議實現(xiàn)復(fù)雜、對大數(shù)據(jù)包要在IP層進行分片處理的缺點,本發(fā)明提出了一種數(shù)據(jù)的傳輸方法和裝置。
所述技術(shù)方案如下首先使用控制命令幀在數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端建立塊傳輸通道,然后所述數(shù)據(jù)發(fā)送端以固定大小滑動窗口的方式發(fā)送數(shù)據(jù)幀到所述數(shù)據(jù)接收端,所述數(shù)據(jù)接收端定期掃描當(dāng)前滑動窗口內(nèi)容,并且根據(jù)掃描結(jié)果發(fā)送所述數(shù)據(jù)幀的應(yīng)答幀到所述數(shù)據(jù)發(fā)送端,所述數(shù)據(jù)發(fā)送端發(fā)送所述數(shù)據(jù)接收端請求的數(shù)據(jù)幀,一直到所述數(shù)據(jù)接收端收到了全部的數(shù)據(jù)幀,最后使用控制命令幀關(guān)閉所述塊傳輸通道。
在數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端的緩沖區(qū)分別設(shè)立大小相同且固定的滑動窗口,將數(shù)據(jù)打包成塊數(shù)據(jù),并將塊內(nèi)數(shù)據(jù)分解成大小相同的數(shù)據(jù)幀,并執(zhí)行以下步驟步驟A建立數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端之間的塊傳輸通道;步驟B所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送所述滑動窗口中包含的數(shù)據(jù)幀;步驟C所述數(shù)據(jù)接收端接收到所述數(shù)據(jù)幀后,并定期掃描當(dāng)前滑動窗口的數(shù)據(jù)幀的接收情況,根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口,向所述數(shù)據(jù)發(fā)送端發(fā)送所述數(shù)據(jù)幀的應(yīng)答,所述應(yīng)答的內(nèi)容包括請求發(fā)送的開始幀號和幀的數(shù)量;步驟D所述數(shù)據(jù)發(fā)送端收到所述數(shù)據(jù)幀的應(yīng)答后,根據(jù)收到的所述數(shù)據(jù)幀的應(yīng)答內(nèi)容進行后續(xù)數(shù)據(jù)幀的發(fā)送,并執(zhí)行步驟C,直至所述塊數(shù)據(jù)中的數(shù)據(jù)幀全部發(fā)送完畢;
步驟E關(guān)閉所述數(shù)據(jù)發(fā)送端和所述數(shù)據(jù)接收端之間的塊傳輸通道;步驟F重復(fù)執(zhí)行步驟A至E,直到所述數(shù)據(jù)接收端收到所述數(shù)據(jù)發(fā)送端發(fā)送的全部所述塊數(shù)據(jù)。
所述步驟A具體包括步驟A1所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送建立塊傳輸通道的請求,所述請求的內(nèi)容包括所述數(shù)據(jù)發(fā)送端發(fā)送的塊數(shù)據(jù)的編號;步驟A2所述數(shù)據(jù)接收端收到所述請求后,向所述數(shù)據(jù)發(fā)送端發(fā)送建立塊傳輸通道的應(yīng)答,所述應(yīng)答的內(nèi)容包括所述數(shù)據(jù)接收端的塊數(shù)據(jù)的編號;步驟A3檢查是否是新啟動,如果是,所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,否則比較所述數(shù)據(jù)發(fā)送端當(dāng)前的塊數(shù)據(jù)編號和所述數(shù)據(jù)接收端的塊數(shù)據(jù)編號是否一致,如果一致則塊傳輸通道建立成功,否則所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求。
所述步驟C中根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口的步驟具體包括當(dāng)所述數(shù)據(jù)接收端收到所述數(shù)據(jù)發(fā)送端發(fā)送的全部數(shù)據(jù)時,所述數(shù)據(jù)接收端的當(dāng)前滑動窗口向數(shù)據(jù)尾幀方向滑動一個滿窗口,并要求所述數(shù)據(jù)發(fā)送端向數(shù)據(jù)尾幀方向滑動一滿窗口發(fā)送其窗口內(nèi)的數(shù)據(jù)。
所述步驟C中根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口的步驟具體包括當(dāng)所述數(shù)據(jù)接收端沒有收到所述數(shù)據(jù)發(fā)送端發(fā)送的全部數(shù)據(jù)時,所述數(shù)據(jù)接收端的當(dāng)前滑動窗口滑動到第一個丟幀處,并要求所述數(shù)據(jù)發(fā)送端從丟幀處重新發(fā)送數(shù)據(jù)。
所述步驟D具體包括所述數(shù)據(jù)發(fā)送端收到所述數(shù)據(jù)幀的應(yīng)答后,如果所述請求發(fā)送的開始幀號落在當(dāng)前滑動窗口的范圍內(nèi),則根據(jù)收到的所述數(shù)據(jù)幀的應(yīng)答內(nèi)容進行后續(xù)數(shù)據(jù)幀的發(fā)送,如果所述請求發(fā)送的開始幀號連續(xù)多次落在當(dāng)前滑動窗口的范圍外,則向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,重新發(fā)送所述塊數(shù)據(jù),直至所述塊數(shù)據(jù)中的數(shù)據(jù)幀全部發(fā)送完畢。
所述步驟E具體包括步驟E1所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送關(guān)閉所述塊傳輸通道的請求,所述請求的內(nèi)容包括該塊的編號和該塊的總校驗和;步驟E2所述數(shù)據(jù)接收端收到關(guān)閉所述塊通道的請求后,將所述數(shù)據(jù)接收端收到的所述塊數(shù)據(jù)進行保存,向所述數(shù)據(jù)發(fā)送端發(fā)送關(guān)閉所述塊傳輸通道的應(yīng)答,所述應(yīng)答的內(nèi)容包括所述數(shù)據(jù)接收端的塊編號和所述塊的保存應(yīng)答;
步驟E3所述數(shù)據(jù)發(fā)送端收到所述應(yīng)答后,檢查所述塊的保存是否成功,如果是則所述數(shù)據(jù)接收端將其狀態(tài)進行持久化,所述持久化的信息為成功保存的所述塊數(shù)據(jù)的編號,完成所述塊數(shù)據(jù)的發(fā)送,否則所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求。
所述將數(shù)據(jù)打包成塊數(shù)據(jù)之前還包括將所述數(shù)據(jù)壓縮的步驟。
本發(fā)明還提供了一種數(shù)據(jù)傳輸裝置,所述裝置包括數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端,所述數(shù)據(jù)發(fā)送端包括塊通道建立請求發(fā)送模塊、數(shù)據(jù)幀發(fā)送模塊、塊通道關(guān)閉請求模塊,所述數(shù)據(jù)接收端包括塊通道建立請求應(yīng)答模塊、定期掃描模塊、數(shù)據(jù)幀接收模塊、塊通道關(guān)閉請求應(yīng)答模塊;所述塊通道建立請求發(fā)送模塊用于所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送建立塊傳輸通道的請求,所述請求的內(nèi)容包括所述數(shù)據(jù)發(fā)送端發(fā)送的塊數(shù)據(jù)的編號;所述數(shù)據(jù)幀發(fā)送模塊用于所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送所述滑動窗口中包含的數(shù)據(jù)幀和根據(jù)接收到的所述數(shù)據(jù)幀的應(yīng)答進行所述數(shù)據(jù)幀的發(fā)送;所述塊通道關(guān)閉請求發(fā)送模塊用于所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送關(guān)閉所述塊傳輸通道的請求,所述請求的內(nèi)容包括該塊的編號和該塊的總校驗和;所述塊通道建立請求應(yīng)答模塊用于所述數(shù)據(jù)接收端收到所述請求后,向所述數(shù)據(jù)發(fā)送端發(fā)送建立塊傳輸通道的應(yīng)答,所述應(yīng)答的內(nèi)容包括所述數(shù)據(jù)接收端的塊數(shù)據(jù)的編號;所述定期掃描模塊用于所述數(shù)據(jù)接收端接收到所述數(shù)據(jù)幀后,并定期掃描當(dāng)前滑動窗口的數(shù)據(jù)幀的接收情況,根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口,向所述數(shù)據(jù)發(fā)送端發(fā)送所述數(shù)據(jù)幀的應(yīng)答,所述應(yīng)答的內(nèi)容包括請求發(fā)送的開始幀號和幀的數(shù)量;所述數(shù)據(jù)幀接收模塊用于接收所述數(shù)據(jù)發(fā)送端發(fā)送的數(shù)據(jù)幀;所述塊通道關(guān)閉請求應(yīng)答模塊用于向所述數(shù)據(jù)發(fā)送端發(fā)送關(guān)閉所述塊傳輸通道的應(yīng)答,所述應(yīng)答的內(nèi)容包括所述數(shù)據(jù)接收端的塊編號和所述塊的保存應(yīng)答。
所述裝置進一步包括檢查模塊,所述檢查模塊用于檢查是否是新啟動,如果是,所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,否則比較所述數(shù)據(jù)發(fā)送端當(dāng)前的塊數(shù)據(jù)編號和所述數(shù)據(jù)接收端的塊數(shù)據(jù)編號是否一致,如果一致則塊傳輸通道建立成功,否則所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求。
所述定期掃描模塊包括數(shù)據(jù)幀檢查單元,所述數(shù)據(jù)幀檢查單元用于檢查所述數(shù)據(jù)接收端的數(shù)據(jù)幀的接收情況,如果檢查到所述數(shù)據(jù)接收端收到全部數(shù)據(jù),所述數(shù)據(jù)接收端的當(dāng)前滑動窗口向數(shù)據(jù)尾幀方向滑動一個滿窗口,并要求所述數(shù)據(jù)發(fā)送端向數(shù)據(jù)尾幀方向滑動一滿口發(fā)送其窗口內(nèi)的數(shù)據(jù);如果檢查到所述數(shù)據(jù)接收端沒有收到全部數(shù)據(jù),所述數(shù)據(jù)接收端的當(dāng)前滑動窗口滑動到第一個丟幀處,并要求所述數(shù)據(jù)發(fā)送端從丟幀處重新發(fā)送數(shù)據(jù)。
所述數(shù)據(jù)幀發(fā)送模塊包括幀號檢查單元,所述幀號檢查單元用于檢查請求發(fā)送的開始幀號是否落在當(dāng)前滑動窗口的范圍內(nèi),如果落在當(dāng)前滑動窗口范圍內(nèi),則根據(jù)收到的所述數(shù)據(jù)幀的應(yīng)答內(nèi)容進行后續(xù)數(shù)據(jù)幀的發(fā)送,如果所述請求發(fā)送的開始幀號連續(xù)多次落在當(dāng)前滑動窗口的范圍外,則向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,重新發(fā)送所述塊數(shù)據(jù),直至所述塊數(shù)據(jù)中的數(shù)據(jù)幀全部發(fā)送完畢。
所述塊通道關(guān)閉請求應(yīng)答模塊包括塊數(shù)據(jù)保存單元、塊數(shù)據(jù)保存檢查單元、狀態(tài)持久化單元;所述塊數(shù)據(jù)保存單元用于將所述數(shù)據(jù)接收端收到的所述塊數(shù)據(jù)進行保存;所述塊數(shù)據(jù)保存檢查單元用于檢查所述塊數(shù)據(jù)的保存是否成功,如果成功則所述數(shù)據(jù)接收端將其狀態(tài)進行持久化,完成所述塊數(shù)據(jù)的發(fā)送,否則所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求;所述狀態(tài)持久化單元用于將所述數(shù)據(jù)接收端的所述塊數(shù)據(jù)的成功保存狀態(tài)信息進行持久化。
采用本發(fā)明所述方法與現(xiàn)有技術(shù)相比的有益效果是1.本發(fā)明所述方法由于引入了滑動窗口協(xié)議的上層控制命令,使得大數(shù)據(jù)的傳輸不要求協(xié)議棧底層存在TCP/IP協(xié)議棧,這樣大大地提高了適用性;2.本發(fā)明所述方法對要發(fā)送的數(shù)據(jù)進行壓縮打包并分幀發(fā)送(幀大小控制在小于MTU范圍內(nèi)),有效地克服了大數(shù)據(jù)在傳輸過程中在IP層自動進行分片處理地問題,提高了傳輸效率;3.本發(fā)明所述方法在數(shù)據(jù)接收端引入了狀態(tài)持久化機制,使得崩潰恢復(fù)機制得以可靠的實現(xiàn);4.本發(fā)明所述方法可以不需要TCP/IP協(xié)議棧,這樣就解除了標(biāo)準(zhǔn)TCP協(xié)議的種種限制,從而大大地提高了控制接口的擴展能力,使得大數(shù)據(jù)的傳輸?shù)靡院唵位?br>

圖1是本發(fā)明所述FSSWTP協(xié)議棧層次圖;圖2是本發(fā)明所述數(shù)據(jù)發(fā)送端窗口示意緩沖圖;
圖3是本發(fā)明所述數(shù)據(jù)接收端窗口示意緩沖圖;圖4是本發(fā)明所述固定大小滑動窗口協(xié)議的控制方法流程圖;圖5是本發(fā)明所述大數(shù)據(jù)傳輸?shù)难b置結(jié)構(gòu)圖。
具體實施例方式
下面結(jié)合附圖和具體實施例對本發(fā)明作進一步說明,但不作為對本發(fā)明的限定。
為了解決大的PCDR在IP層自動進行分片處理的問題,本發(fā)明將多個PCDR數(shù)據(jù)打包成塊數(shù)據(jù),并將塊內(nèi)數(shù)據(jù)分解成大小相同的數(shù)據(jù)幀,數(shù)據(jù)發(fā)送時以塊為控制單位,以幀(FRAME)為數(shù)據(jù)傳輸單元,幀的大小取1024字節(jié)或其它保證不會被IP分片的大小,并以固定窗口大小的滑動窗口方法來控制數(shù)據(jù)幀進行有效傳輸,在控制命令幀和數(shù)據(jù)傳輸幀中輔以數(shù)據(jù)校驗來保證其有效性和安全性,在數(shù)據(jù)接收端引入狀態(tài)持久化機制來實現(xiàn)崩潰恢復(fù)的可靠性。本發(fā)明還可以先將多個PCDR壓縮后打包成塊數(shù)據(jù),這樣可以進一步地提高數(shù)據(jù)的傳輸效率,而且本發(fā)明所述方法不僅適用于大數(shù)據(jù)的傳輸,對于一般數(shù)據(jù)的傳輸也有著同樣的意義。
本發(fā)明所述的技術(shù)方案中,首先提出了固定大小滑動窗口傳輸協(xié)議(FSSWTP)。FSSWTP是個單邊控制協(xié)議,由數(shù)據(jù)發(fā)送端(DST-Data Send Termination)發(fā)起控制命令,數(shù)據(jù)接收端(DRT-Data Receive Termination)根據(jù)控制命令產(chǎn)生應(yīng)答。其協(xié)議棧可分為四層,如圖1所示,從底到上分別是底層(LL-Lower Layer),協(xié)議不指定、IP層或兼容性IP層(和IETF RFC 791兼容)、TCP/UDP層或兼容性TCP/UDP層(和IETF RFC 793/768兼容)及FSSWTP層,其中IP層及TCP/UDP層可以缺失,F(xiàn)SSWTP直接通過LL層進行通訊及數(shù)據(jù)傳輸,其上為使用大數(shù)據(jù)滑動窗口傳輸方法的應(yīng)用層。
下面首先描述FSSWTP的控制命令幀和數(shù)據(jù)傳輸幀的結(jié)構(gòu)。FSSWTP控制命令幀和數(shù)據(jù)傳輸幀中的項如表1所示。

表1
在上述幀結(jié)構(gòu)中,“Version”表示協(xié)議版本號;“Instantation Identity”表示滑動窗口實例的唯一標(biāo)識?!癈ommand Code”表示控制命令幀和數(shù)據(jù)傳輸幀的幀命令碼?!癉ata Length”表示Application Data項中數(shù)據(jù)的長度。“Check Sum”表示整個幀的校驗和。“Application Data”表示幀的應(yīng)用數(shù)據(jù),在Application Data項之前的各項構(gòu)成控制命令幀和數(shù)據(jù)傳輸幀的頭部。
控制命令幀和數(shù)據(jù)傳輸幀的幀命令碼包括如下三對命令碼BLOCK_REQUEST_SEND請求發(fā)送塊幀BLOCK_REQUESTSEND_ACK 請求發(fā)送塊幀的應(yīng)答幀BLOCK_END 塊結(jié)束幀BLOCK_END_ACK 塊結(jié)束幀的應(yīng)答幀F(xiàn)RAME_SEND數(shù)據(jù)幀F(xiàn)RAME_SEND_ACK數(shù)據(jù)幀的應(yīng)答幀下面詳細(xì)敘述FSSWTP的控制命令幀和數(shù)據(jù)傳輸幀的具體結(jié)構(gòu)1)請求發(fā)送塊幀和請求發(fā)送塊幀的應(yīng)答幀這一對命令用來打開一個塊的傳輸通道。
請求發(fā)送塊幀BLOCK_REQUEST_SEND幀結(jié)構(gòu)如表2所示

表2上述幀結(jié)構(gòu)的具體說明如下Block Identity該塊的編號。
Block Data Length該塊的數(shù)據(jù)總長度。
Start Data Frame Number該塊的數(shù)據(jù)幀的起始幀號。
Data Frame Amount該塊的數(shù)據(jù)幀的總幀數(shù)。
Force Flag當(dāng)表示非強制時DRT接收后要同步數(shù)據(jù)幀幀號;當(dāng)表示強制時DRT接收后要同時同步塊編號與數(shù)據(jù)幀幀號并清空緩沖區(qū)。
Compression Identity該塊所使用的壓縮算法的標(biāo)識。
請求發(fā)送塊幀的應(yīng)答幀BLOCK_REQUESTSEND ACK幀結(jié)構(gòu)如表3所示

表3上述幀結(jié)構(gòu)的具體說明如下Block Identity of DRTDRT的塊的編號。
Data Frame Number of SW HeaderDRT滑動窗口頭的幀號。
2)塊結(jié)束幀和塊結(jié)束幀的應(yīng)答幀這一對命令用來關(guān)閉一個數(shù)據(jù)已被完全接收的塊傳輸通道。
塊結(jié)束幀BLOCK END幀結(jié)構(gòu)如表4所示

表4
上述幀結(jié)構(gòu)的具體說明如下Block Identity該塊的編號。
Total Check Sum該塊的總校驗和。
結(jié)束幀的應(yīng)答幀BLOCK_END_ACK幀結(jié)構(gòu)如表5所示

表5上述幀結(jié)構(gòu)的具體說明如下Block Identity of DRTDRT的塊的編號。
Save ResultDRT的塊的保存應(yīng)答,如果保存失敗,DST將重發(fā)該塊的數(shù)據(jù)。
3)數(shù)據(jù)幀和數(shù)據(jù)幀的應(yīng)答幀該對命令用于幀數(shù)據(jù)的傳輸和控制。數(shù)據(jù)幀F(xiàn)RAME_SEND幀結(jié)構(gòu)如表6所示

表6上述幀結(jié)構(gòu)的具體說明如下Frame Number該數(shù)據(jù)幀的幀號。
Frame Data該塊具體分配到這一數(shù)據(jù)幀的數(shù)據(jù)。
數(shù)據(jù)幀的應(yīng)答幀F(xiàn)RAME_SEND_ACK幀結(jié)構(gòu)如表7所示

表7上述幀結(jié)構(gòu)的具體說明如下Request Begin Frame Number請求發(fā)送的數(shù)據(jù)幀的開始幀號。
Request Frame Count請求發(fā)送的從Request Begin Frame Number開始的數(shù)據(jù)幀數(shù)量。
參見圖2和圖3,DST和DRT都維持一個存儲數(shù)據(jù)的緩沖區(qū),在緩沖區(qū)中引入固定大小滑動窗口。滑動窗口由窗口頭和窗口尾之間的緩沖區(qū)組成,該滑動窗口之間的區(qū)域為固定的大小。DST和DRT分別使用一個合適的大小相同的滑動窗口。數(shù)據(jù)幀的應(yīng)答幀驅(qū)動DST和DRT緩沖區(qū)中的窗口頭幀號和窗口尾幀號保持同步,DST保證數(shù)據(jù)幀號在一個塊范圍內(nèi)不會翻轉(zhuǎn)。在DRT,當(dāng)前滑動窗口范圍內(nèi)的幀對應(yīng)允許接收的幀,窗口頭以前的幀是已收到且已發(fā)回確認(rèn)的幀,不允許接收,窗口尾后的幀要等待滑動窗口滑動才能接收。如果數(shù)據(jù)幀的應(yīng)答幀中請求開始的數(shù)據(jù)幀號落在DST當(dāng)前滑動窗口范圍內(nèi),DST就滑動窗口繼續(xù)發(fā)送DRT請求的數(shù)據(jù)幀;如果數(shù)據(jù)幀的應(yīng)答幀中請求開始的數(shù)據(jù)幀號連續(xù)多次(連續(xù)3次以上)落在DST當(dāng)前滑動窗口范圍外,DST向DRT發(fā)送表示強制的請求發(fā)送塊幀,準(zhǔn)備重發(fā)當(dāng)前塊的數(shù)據(jù)。
為了加快數(shù)據(jù)傳輸速度,需要選擇一個合適的發(fā)送滑動窗口大小,可參考如下的計算公式假設(shè)網(wǎng)絡(luò)往返時延RTT是T1(s),網(wǎng)絡(luò)帶寬B(Mbps),傳輸?shù)臄?shù)據(jù)幀大小N(KB),DRT滑窗掃描間隔T2(s),DST處理延時T3(s),DRT處理延時T4(s)。則每秒最大可傳輸數(shù)據(jù)幀幀數(shù)是MAXSENDSIZE=(1-(T1+T3+T4)*(1/T2))*B*1024/8/N。DST最大滑窗大小MAXSWSIZE=(T2-T1-T3-T4)*B*1024/8/N。
本發(fā)明所述大數(shù)據(jù)的傳輸方法是分幀后的塊數(shù)據(jù)的傳輸控制方法。FSSWTP的控制是以塊為單位進行數(shù)據(jù)的發(fā)送,參見圖4,塊數(shù)據(jù)的傳輸過程包括如下步驟步驟A數(shù)據(jù)發(fā)送端向數(shù)據(jù)接收端發(fā)送建立塊傳輸通道的請求,數(shù)據(jù)接收端向數(shù)據(jù)發(fā)送端發(fā)送應(yīng)答,建立塊傳輸通道。具體包括以下步驟步驟l01DST向DRT發(fā)送請求發(fā)送塊幀,即建立塊傳輸通道的請求,該幀的內(nèi)容包括該塊的編號、該塊的數(shù)據(jù)總長度、該塊的數(shù)據(jù)幀的起始幀號、該塊的數(shù)據(jù)幀的總幀數(shù)、該請求發(fā)送塊幀為非強制、以及該塊所使用的壓縮算法的標(biāo)識。
步驟102DRT收到DST的請求發(fā)送塊幀后,向DST發(fā)送請求發(fā)送塊幀的應(yīng)答幀,該幀的內(nèi)容包括DRT的塊編號和DRT滑動窗口頭的幀號。
步驟103檢查是否新啟動,是執(zhí)行步驟104,否則執(zhí)行步驟105;步驟104DST向DRT重新發(fā)送強制的請求發(fā)送塊幀,即重新建立塊傳輸通道的請求,該幀的內(nèi)容包括該塊的編號、該塊的數(shù)據(jù)總長度、該塊的數(shù)據(jù)幀的起始幀號、該塊的數(shù)據(jù)幀的總幀數(shù)、該請求發(fā)送塊幀為強制、以及該塊所使用的壓縮算法的標(biāo)識;DRT收到DST的請求后,向DST發(fā)送應(yīng)答,并執(zhí)行步驟106。
步驟105比較DST發(fā)送請求的塊編號和收到應(yīng)答的塊編號是否一致,一致執(zhí)行步驟106,否則執(zhí)行步驟104。
至此,塊通道建立成功,將進行數(shù)據(jù)幀的發(fā)送和接收。
步驟B數(shù)據(jù)發(fā)送端向數(shù)據(jù)接收端發(fā)送滑動窗口中包含的數(shù)據(jù)幀。具體包括以下步驟步驟106DST以固定大小滑動窗口的方式向DRT發(fā)送滑動窗口中包含的數(shù)據(jù)幀,數(shù)據(jù)幀的內(nèi)容包括該數(shù)據(jù)幀的幀號和分配到該數(shù)據(jù)幀的數(shù)據(jù)。
步驟C數(shù)據(jù)接收端接收到所述數(shù)據(jù)幀后,并定期掃描當(dāng)前滑動窗口的數(shù)據(jù)幀的接收情況,根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口,向數(shù)據(jù)發(fā)送端發(fā)送數(shù)據(jù)幀的應(yīng)答,應(yīng)答的內(nèi)容包括請求發(fā)送的開始幀號和幀的數(shù)量。具體包括以下步驟步驟107DRT接收到第一個數(shù)據(jù)幀后,啟動定時器,以后定期掃描以檢查當(dāng)前滑動窗口內(nèi)數(shù)據(jù)幀的接收情況,并按掃描結(jié)果滑動當(dāng)前滑動窗口,以及向DST發(fā)送數(shù)據(jù)幀的應(yīng)答幀,應(yīng)答幀的內(nèi)容包括請求發(fā)送的開始幀號和幀的數(shù)量。由于本步驟的具體內(nèi)容比較復(fù)雜,將在后面進行詳細(xì)敘述。
步驟D數(shù)據(jù)發(fā)送端收到數(shù)據(jù)幀的應(yīng)答后,根據(jù)收到的數(shù)據(jù)幀的應(yīng)答內(nèi)容進行后續(xù)數(shù)據(jù)幀的發(fā)送,并執(zhí)行步驟C,直至塊數(shù)據(jù)中的數(shù)據(jù)幀全部發(fā)送完畢;步驟108DST收到DRT的應(yīng)答幀后,檢查請求發(fā)送的開始幀號是否落在DST當(dāng)前滑動窗口范圍內(nèi),如果是,說明請求發(fā)送的開始幀號以前的數(shù)據(jù)幀已經(jīng)接收到,DST滑動當(dāng)前滑動窗口,發(fā)送請求的數(shù)據(jù)幀,執(zhí)行步驟109,如果多次落在當(dāng)前滑動窗口范圍外,說明DRT當(dāng)前滑動窗口位置出現(xiàn)異常,執(zhí)行步驟104;步驟109掃描DRT當(dāng)前滑動窗口的數(shù)據(jù)幀,查看是否收到所有數(shù)據(jù)幀,如果是執(zhí)行步驟110,否則執(zhí)行步驟106;步驟E關(guān)閉數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端之間的塊傳輸通道。具體包括以下步驟步驟110DST向DRT發(fā)送塊結(jié)束幀,即關(guān)閉塊傳輸通道的請求,該幀的內(nèi)容包括該塊的編號和該塊的總校驗和;步驟111DRT收到DST的塊結(jié)束幀后,將塊數(shù)據(jù)進行保存,向DST發(fā)送塊結(jié)束幀的應(yīng)答幀,應(yīng)答幀的內(nèi)容包括DRT的塊的編號和DRT的塊的保存應(yīng)答;步驟112DST收到塊結(jié)束幀的應(yīng)答幀后,檢查塊的保存是否成功,如果是則數(shù)據(jù)接收端將其狀態(tài)進行持久化,持久化的信息為成功保存的塊數(shù)據(jù)的編號,執(zhí)行步驟113,否則執(zhí)行步驟104;步驟113完成塊數(shù)據(jù)的發(fā)送。
步驟F重復(fù)執(zhí)行步驟A至E,直到數(shù)據(jù)接收端收到數(shù)據(jù)發(fā)送端發(fā)送的全部塊數(shù)據(jù)。具體包括以下步驟步驟114數(shù)據(jù)接收端檢查是否收到了數(shù)據(jù)發(fā)送端發(fā)送的全部的塊數(shù)據(jù),如果收到了全部的塊數(shù)據(jù),數(shù)據(jù)發(fā)送端就結(jié)束數(shù)據(jù)的發(fā)送,否則執(zhí)行步驟115;步驟115數(shù)據(jù)發(fā)送端繼續(xù)向數(shù)據(jù)接收端發(fā)送下一個塊數(shù)據(jù),執(zhí)行步驟101。
在DST,所有發(fā)送的幀(命令幀和數(shù)據(jù)幀)響應(yīng)超時都會重發(fā),但幀的內(nèi)容不變。
所有幀都有校驗和(Check Sum),接收后都要檢驗正確與否,不正確則直接丟棄。
步驟107具體處理過程如下本發(fā)明在DRT引入定期掃描來查看數(shù)據(jù)幀的接收情況。首先定期掃描DRT的當(dāng)前滑動窗口內(nèi)容,然后根據(jù)掃描結(jié)果DRT的當(dāng)前滑動窗口進行滑動,最后向DST發(fā)送數(shù)據(jù)幀的應(yīng)答幀。掃描結(jié)果大致分為以下兩種情況1.正常情況DRT收到DST發(fā)送的全部數(shù)據(jù)幀。DRT的當(dāng)前滑動窗口先滑動,然后發(fā)送Request Begin Frame Number和Request Frame Count,取值分別為當(dāng)前滑動窗口尾幀號+1的幀號和0XFFFF的FRAME_SEND_ACK;DST收到該FRAME_SEND_ACK后,根據(jù)FRAME_SEND_ACK的Request Frame Count的值為0XFFFF,發(fā)送從Request BeginFrame Number開始的一滿窗口的數(shù)據(jù);2.非正常情況DRT沒有收到DST發(fā)送的全部數(shù)據(jù)幀,即丟幀。在丟幀情況下,DRT會要求DST從丟幀處重新開始發(fā)送。
丟幀如果是數(shù)據(jù)接收端當(dāng)前滑動窗口頭數(shù)據(jù)楨,則數(shù)據(jù)接收端的當(dāng)前滑動窗口先不滑動,向數(shù)據(jù)發(fā)送端發(fā)送請求開始幀號為當(dāng)前滑動窗口的首窗口號,請求發(fā)送的幀的數(shù)量為1的數(shù)據(jù)幀的應(yīng)答幀。
丟幀如果是包含數(shù)據(jù)接收端窗口頭數(shù)據(jù)幀的連續(xù)的數(shù)據(jù)幀,則數(shù)據(jù)接收端的當(dāng)前滑動窗口先不滑動,向數(shù)據(jù)發(fā)送端發(fā)送請求開始幀號為當(dāng)前滑動窗口的首窗口號,請求發(fā)送的幀的數(shù)量為丟幀個數(shù)的數(shù)據(jù)幀的應(yīng)答幀。
丟幀如果是任意一個非數(shù)據(jù)接收端窗口頭數(shù)據(jù)幀或任意多個非連續(xù)的非數(shù)據(jù)接收端窗口頭數(shù)據(jù)幀,則數(shù)據(jù)接收端的當(dāng)前滑動窗口向前滑動到丟幀開始處,向數(shù)據(jù)發(fā)送端發(fā)送請求開始幀號為所述丟幀的幀號,請求發(fā)送的幀的數(shù)量為1的數(shù)據(jù)幀的應(yīng)答幀。
丟幀如果是連續(xù)的數(shù)據(jù)接收端非窗口頭數(shù)據(jù)幀,則數(shù)據(jù)接收端的當(dāng)前滑動窗口向前滑動到第一個丟幀處,向數(shù)據(jù)發(fā)送端發(fā)送請求開始幀號為第一個丟幀的幀號,請求發(fā)送的幀的數(shù)量為丟幀個數(shù)的數(shù)據(jù)幀的應(yīng)答幀。
丟幀如果是數(shù)據(jù)接收端窗口尾數(shù)據(jù)幀,則數(shù)據(jù)接收端的當(dāng)前滑動窗口向前滑動到窗口尾,向數(shù)據(jù)發(fā)送端發(fā)送請求開始幀號為當(dāng)前滑動窗口的尾窗口號,請求發(fā)送的幀的數(shù)量為0XFFFF的數(shù)據(jù)幀的應(yīng)答幀。
丟幀如果是包含數(shù)據(jù)接收端窗口尾數(shù)據(jù)幀的連續(xù)數(shù)據(jù)幀,則數(shù)據(jù)接收端的當(dāng)前滑動窗口向前滑動到第一個丟幀處,向數(shù)據(jù)發(fā)送端發(fā)送請求開始幀號為第一個丟幀的幀號,請求發(fā)送的幀的數(shù)量為0XFFFF的數(shù)據(jù)幀的應(yīng)答幀。
下面以一個具體的例子來詳細(xì)的說明上述過程例設(shè)窗口大小為10,DST及DRT當(dāng)前的窗口號為10~19,DST首先發(fā)送一個窗口共10幀的數(shù)據(jù),其幀號為10~19,當(dāng)DRT定期掃描時發(fā)現(xiàn)其接收到如下窗口號的數(shù)據(jù);a)12,13,14,15,16,17,19(其中缺少了10,11,18)DRT先不滑動窗口,發(fā)送Request Begin Frame Number和Request Frame Count取值分別為10和2的FRAME_SEND_ACK;DST收到該FRAME_SEND_ACK后,先對FRAME_SEND_ACK的Request BeginFrame Number進行判斷,如果其為DST端當(dāng)前窗口的首窗口號且Request Frame Count不為0XFFFF則發(fā)送其所要求的幀號為10和11的數(shù)據(jù)幀;DRT定期掃描后,發(fā)現(xiàn)缺少18號幀,DRT先窗口滑動8幀,發(fā)送Request Begin FrameNumber和Request Frame Count取值分別為18和1的FRAME_SEND_ACK給DST;
DST收到該FRAME_SEND_ACK后,先對FRAME_SEND_ACK的Request BeginFrame Number進行判斷,因為18號幀不為DST端當(dāng)前窗口的首窗口號,則將當(dāng)前窗口向前滑動8幀,并發(fā)送幀號為20-27的數(shù)據(jù)幀,這樣處理主要是防止幀號為18的幀滯后到達,減少發(fā)送重幀的數(shù)量;DRT定期掃描后,發(fā)現(xiàn)缺少18號幀,因為是窗口頭數(shù)據(jù)幀,DRT先不滑動窗口,發(fā)送Request Begin Frame Number和Request Frame Count取值分別為18和1的FRAME_SEND_ACK給DST;DST收到該FRAME_SEND_ACK后,先對FRAME_SEND_ACK的Request BeginFrame Number進行判斷,因為18號幀為DST端當(dāng)前窗口的首窗口號,且Request FrameCount不為0XFFFF,則發(fā)送所要求的幀號為18的數(shù)據(jù)幀;至此缺少的幀號為10、11、18的數(shù)據(jù)幀DRT全部收到。
b)10,11,12,13,16,17(其中缺少14,15,18,19)DRT先窗口滑動4幀,發(fā)送Request Begin Frame Number和Request Frame Count取值分別為14和2的FRAME_SEND_ACK;DST收到該FRAME_SEND_ACK后,先對FRAME_SEND_ACK的Request BeginFrame Number進行判斷,因為不為DST端當(dāng)前窗口的首窗口號則將當(dāng)前窗口向前滑動4幀,并發(fā)送幀號為20、21、22、23的數(shù)據(jù)幀,這樣處理主要是防止幀號為14、15的幀滯后到達,減少發(fā)送重幀的數(shù)量;DRT定期掃描后,發(fā)現(xiàn)缺少幀號為14、15、18、19的數(shù)據(jù)幀,因為是窗口頭數(shù)據(jù)幀,DRT先不滑動窗口,發(fā)送Request Begin Frame Number和Request Frame Count取值分別為14和2的FRAME_SEND_ACK給DST;DST收到該FRAME_SEND_ACK后,先對FRAME_SEND_ACK的Request BeginFrame Number進行判斷,因為14號幀為DST端當(dāng)前窗口的首窗口號,且Request FrameCount不為0XFFFF,則發(fā)送所要求的幀號為14、15的數(shù)據(jù)幀;DRT定期掃描后,發(fā)現(xiàn)缺少幀號為18、19的數(shù)據(jù)幀,DRT向前滑動窗口4幀,發(fā)送Request Begin Frame Number和Request Frame Count取值分別為18和2的FRAME_SEND_ACK給DST;DST收到該FRAME_SEND_ACK后,先對FRAME_SEND_ACK的Request BeginFrame Number進行判斷,因為18號幀不為DST端當(dāng)前窗口的首窗口號則將當(dāng)前窗口向前滑動4幀,并發(fā)送幀號為24、25、26、27的數(shù)據(jù)幀;
DRT定期掃描后,發(fā)現(xiàn)缺少幀號為18、19的數(shù)據(jù)幀,因為是窗口頭數(shù)據(jù)幀,DRT先不滑動窗口,發(fā)送Request Begin Frame Number和Request Frame Count取值分別為18和2的FRAME_SEND_ACK給DST;DST收到該FRAME_SEND_ACK后,先對FRAME_SEND_ACK的Request BeginFrame Number進行判斷,因為18號幀為DST端當(dāng)前窗口的首窗口號,且Request FrameCount不為0XFFFF,則發(fā)送所要求的幀號為18、19的數(shù)據(jù)幀;至此幀號為14、15、18、19的數(shù)據(jù)幀DRT全部收到。
c)10,11,12,13,14,15,16,17(其中少18,19)DRT先窗口滑動8幀,發(fā)送Request Begin Frame Number和Request Frame Count取值分別為18和0XFFFF的FRAME_SEND_ACK;DST收到該FRAME_SEND_ACK后,先對FRAME_SEND_ACK的Request BeginFrame Number進行判斷,因為其不為DST端當(dāng)前窗口的首窗口號則將當(dāng)前窗口向前滑動8幀,并發(fā)送一滿窗口的數(shù)據(jù),即發(fā)送幀號為18~27的數(shù)據(jù)幀,這樣處理主要是減少處理的復(fù)雜度。
至此幀號為18、19的數(shù)據(jù)幀DRT全部收到。
d)10,11,12,13,14,15,16,17,18,19(都接收到)DRT先窗口滑動10幀,發(fā)送Request Begin Frame Number和Request Frame Count取值分別為20和0XFFFF的FRAME_SEND_ACK;DST收到該FRAME_SEND_ACK后,根據(jù)FRAME_SEND_ACK的Request FrameCount的值為0XFFFF,發(fā)送從Request Begin Frame Number開始的一滿窗口的數(shù)據(jù),即發(fā)送幀號為20~29的數(shù)據(jù)幀。
參見圖5,本發(fā)明還提供了一種數(shù)據(jù)傳輸裝置,裝置包括數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端,數(shù)據(jù)發(fā)送端包括塊通道建立請求發(fā)送模塊、數(shù)據(jù)幀發(fā)送模塊、塊通道關(guān)閉請求發(fā)送模塊,數(shù)據(jù)接收端包括塊通道建立請求應(yīng)答模塊、定期掃描模塊、數(shù)據(jù)幀接收模塊、塊通道關(guān)閉請求應(yīng)答模塊;塊通道建立請求發(fā)送模塊用于數(shù)據(jù)發(fā)送端向數(shù)據(jù)接收端發(fā)送建立塊傳輸通道的請求,請求的內(nèi)容包括數(shù)據(jù)發(fā)送端發(fā)送的塊數(shù)據(jù)的編號;數(shù)據(jù)幀發(fā)送模塊用于數(shù)據(jù)發(fā)送端向數(shù)據(jù)接收端發(fā)送滑動窗口中包含的數(shù)據(jù)幀和根據(jù)接收到的數(shù)據(jù)幀的應(yīng)答進行數(shù)據(jù)幀的發(fā)送;塊通道關(guān)閉請求發(fā)送模塊用于數(shù)據(jù)發(fā)送端向數(shù)據(jù)接收端發(fā)送關(guān)閉塊傳輸通道的請求,請求的內(nèi)容包括該塊的編號和該塊的總校驗和;塊通道建立請求應(yīng)答模塊用于數(shù)據(jù)接收端收到請求后,向數(shù)據(jù)發(fā)送端發(fā)送建立塊傳輸通道的應(yīng)答,應(yīng)答的內(nèi)容包括數(shù)據(jù)接收端的塊數(shù)據(jù)的編號;定期掃描模塊用于數(shù)據(jù)接收端接收到數(shù)據(jù)幀后,并定期掃描當(dāng)前滑動窗口的數(shù)據(jù)幀的接收情況,根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口,向數(shù)據(jù)發(fā)送端發(fā)送數(shù)據(jù)幀的應(yīng)答,應(yīng)答的內(nèi)容包括請求發(fā)送的開始幀號和幀的數(shù)量;數(shù)據(jù)幀接收模塊用于接收數(shù)據(jù)發(fā)送端發(fā)送的數(shù)據(jù)幀;塊通道關(guān)閉請求應(yīng)答模塊用于向數(shù)據(jù)發(fā)送端發(fā)送關(guān)閉塊傳輸通道的應(yīng)答,應(yīng)答的內(nèi)容包括數(shù)據(jù)接收端的塊編號和塊的保存應(yīng)答;裝置進一步包括檢查模塊,檢查模塊可以位于數(shù)據(jù)發(fā)送端或數(shù)據(jù)接收端,檢查模塊用于檢查是否是新啟動,如果是,數(shù)據(jù)發(fā)送端向數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,否則比較數(shù)據(jù)發(fā)送端當(dāng)前的塊數(shù)據(jù)編號和數(shù)據(jù)接收端的塊數(shù)據(jù)編號是否一致,如果一致則塊傳輸通道建立成功,否則數(shù)據(jù)發(fā)送端向數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求;定期掃描模塊包括數(shù)據(jù)幀檢查單元,數(shù)據(jù)幀檢查單元用于檢查數(shù)據(jù)接收端的數(shù)據(jù)幀的接收情況,如果檢查到數(shù)據(jù)接收端收到全部數(shù)據(jù),數(shù)據(jù)接收端的當(dāng)前滑動窗口向數(shù)據(jù)尾幀方向滑動一個滿窗口,并要求數(shù)據(jù)發(fā)送端向數(shù)據(jù)尾幀方向滑動一滿口發(fā)送其窗口內(nèi)的數(shù)據(jù);如果檢查到數(shù)據(jù)接收端沒有收到全部數(shù)據(jù),數(shù)據(jù)接收端的當(dāng)前滑動窗口滑動到第一個丟幀處,并要求數(shù)據(jù)發(fā)送端從丟幀處重新發(fā)送數(shù)據(jù);數(shù)據(jù)幀發(fā)送模塊包括幀號檢查單元,幀號檢查單元用于檢查請求發(fā)送的開始幀號是否落在當(dāng)前滑動窗口的范圍內(nèi),如果落在當(dāng)前滑動窗口范圍內(nèi).則根據(jù)收到的數(shù)據(jù)幀的應(yīng)答內(nèi)容進行后續(xù)數(shù)據(jù)幀的發(fā)送,如果請求發(fā)送的開始幀號連續(xù)多次落在當(dāng)前滑動窗口的范圍外,則向數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,重新發(fā)送塊數(shù)據(jù),直至塊數(shù)據(jù)中的數(shù)據(jù)幀全部發(fā)送完畢;塊通道關(guān)閉請求應(yīng)答模塊包括塊數(shù)據(jù)保存單元、塊數(shù)據(jù)保存檢查單元、狀態(tài)持久化單元;塊數(shù)據(jù)保存單元用于將數(shù)據(jù)接收端收到的塊數(shù)據(jù)進行保存;塊數(shù)據(jù)保存檢查單元用于檢查塊數(shù)據(jù)的保存是否成功,如果成功則數(shù)據(jù)接收端將其狀態(tài)進行持久化,完成塊數(shù)據(jù)的發(fā)送,否則數(shù)據(jù)發(fā)送端向數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求;
狀態(tài)持久化單元用于將數(shù)據(jù)接收端的塊數(shù)據(jù)的成功保存狀態(tài)信息進行持久化。
以上所述的實施例只是本發(fā)明較優(yōu)選的具體實施方式
的一種,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進行的通常變化和替換都應(yīng)包含在本發(fā)明的保護范圍內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)傳輸方法,其特征在于,在數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端的緩沖區(qū)分別設(shè)立大小相同且固定的滑動窗口,將數(shù)據(jù)打包成塊數(shù)據(jù),并將塊內(nèi)數(shù)據(jù)分解成大小相同的數(shù)據(jù)幀,并執(zhí)行以下步驟步驟A建立數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端之間的塊傳輸通道;步驟B所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送所述滑動窗口中包含的數(shù)據(jù)幀;步驟C所述數(shù)據(jù)接收端接收到所述數(shù)據(jù)幀后,并定期掃描當(dāng)前滑動窗口的數(shù)據(jù)幀的接收情況,根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口,向所述數(shù)據(jù)發(fā)送端發(fā)送所述數(shù)據(jù)幀的應(yīng)答,所述應(yīng)答的內(nèi)容包括請求發(fā)送的開始幀號和幀的數(shù)量;步驟D所述數(shù)據(jù)發(fā)送端收到所述數(shù)據(jù)幀的應(yīng)答后,根據(jù)收到的所述數(shù)據(jù)幀的應(yīng)答內(nèi)容進行后續(xù)數(shù)據(jù)幀的發(fā)送,并執(zhí)行步驟C,直至所述塊數(shù)據(jù)中的數(shù)據(jù)幀全部發(fā)送完畢;步驟E關(guān)閉所述數(shù)據(jù)發(fā)送端和所述數(shù)據(jù)接收端之間的塊傳輸通道;步驟F重復(fù)執(zhí)行步驟A至E,直到所述數(shù)據(jù)接收端收到所述數(shù)據(jù)發(fā)送端發(fā)送的全部所述塊數(shù)據(jù)。
2.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,所述步驟A具體包括步驟A1所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送建立塊傳輸通道的請求,所述請求的內(nèi)容包括所述數(shù)據(jù)發(fā)送端發(fā)送的塊數(shù)據(jù)的編號;步驟A2所述數(shù)據(jù)接收端收到所述請求后,向所述數(shù)據(jù)發(fā)送端發(fā)送建立塊傳輸通道的應(yīng)答,所述應(yīng)答的內(nèi)容包括所述數(shù)據(jù)接收端的塊數(shù)據(jù)的編號;步驟A3檢查是否是新啟動,如果是,所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,否則比較所述數(shù)據(jù)發(fā)送端當(dāng)前的塊數(shù)據(jù)編號和所述數(shù)據(jù)接收端的塊數(shù)據(jù)編號是否一致,如果一致則塊傳輸通道建立成功,否則所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求。
3.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,所述步驟C中根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口的步驟具體包括當(dāng)所述數(shù)據(jù)接收端收到所述數(shù)據(jù)發(fā)送端發(fā)送的全部數(shù)據(jù)時,所述數(shù)據(jù)接收端的當(dāng)前滑動窗口向數(shù)據(jù)尾幀方向滑動一個滿窗口,并要求所述數(shù)據(jù)發(fā)送端向數(shù)據(jù)尾幀方向滑動一滿窗口發(fā)送其窗口內(nèi)的數(shù)據(jù)。
4.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,所述步驟C中根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口的步驟具體包括當(dāng)所述數(shù)據(jù)接收端沒有收到所述數(shù)據(jù)發(fā)送端發(fā)送的全部數(shù)據(jù)時,所述數(shù)據(jù)接收端的當(dāng)前滑動窗口滑動到第一個丟幀處,并要求所述數(shù)據(jù)發(fā)送端從丟幀處重新發(fā)送數(shù)據(jù)。
5.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,所述步驟D具體包括所述數(shù)據(jù)發(fā)送端收到所述數(shù)據(jù)幀的應(yīng)答后,如果所述請求發(fā)送的開始幀號落在當(dāng)前滑動窗口的范圍內(nèi),則根據(jù)收到的所述數(shù)據(jù)幀的應(yīng)答內(nèi)容進行后續(xù)數(shù)據(jù)幀的發(fā)送,如果所述請求發(fā)送的開始幀號連續(xù)多次落在當(dāng)前滑動窗口的范圍外,則向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,重新發(fā)送所述塊數(shù)據(jù),直至所述塊數(shù)據(jù)中的數(shù)據(jù)幀全部發(fā)送完畢。
6.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,所述步驟E具體包括步驟E1所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送關(guān)閉所述塊傳輸通道的請求,所述請求的內(nèi)容包括該塊的編號和該塊的總校驗和;步驟E2所述數(shù)據(jù)接收端收到關(guān)閉所述塊通道的請求后,將所述數(shù)據(jù)接收端收到的所述塊數(shù)據(jù)進行保存,向所述數(shù)據(jù)發(fā)送端發(fā)送關(guān)閉所述塊傳輸通道的應(yīng)答,所述應(yīng)答的內(nèi)容包括所述數(shù)據(jù)接收端的塊編號和所述塊的保存應(yīng)答;步驟E3所述數(shù)據(jù)發(fā)送端收到所述應(yīng)答后,檢查所述塊的保存是否成功,如果是,則所述數(shù)據(jù)接收端將其狀態(tài)進行持久化,所述持久化的信息為成功保存的所述塊數(shù)據(jù)的編號,完成所述塊數(shù)據(jù)的發(fā)送,否則所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求。
7.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,所述將數(shù)據(jù)打包成塊數(shù)據(jù)之前還包括將所述數(shù)據(jù)壓縮的步驟。
8.一種數(shù)據(jù)傳輸裝置,其特征在于,所述裝置包括數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端,所述數(shù)據(jù)發(fā)送端包括塊通道建立請求發(fā)送模塊、數(shù)據(jù)幀發(fā)送模塊、塊通道關(guān)閉請求發(fā)送模塊,所述數(shù)據(jù)接收端包括塊通道建立請求應(yīng)答模塊、定期掃描模塊、數(shù)據(jù)幀接收模塊、塊通道關(guān)閉請求應(yīng)答模塊;所述塊通道建立請求發(fā)送模塊用于所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送建立塊傳輸通道的請求,所述請求的內(nèi)容包括所述數(shù)據(jù)發(fā)送端發(fā)送的塊數(shù)據(jù)的編號;所述數(shù)據(jù)幀發(fā)送模塊用于所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送所述滑動窗口中包含的數(shù)據(jù)幀和根據(jù)接收到的所述數(shù)據(jù)幀的應(yīng)答進行所述數(shù)據(jù)幀的發(fā)送;所述塊通道關(guān)閉請求發(fā)送模塊用于所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送關(guān)閉所述塊傳輸通道的請求,所述請求的內(nèi)容包括該塊的編號和該塊的總校驗和;所述塊通道建立請求應(yīng)答模塊用于所述數(shù)據(jù)接收端收到所述請求后,向所述數(shù)據(jù)發(fā)送端發(fā)送建立塊傳輸通道的應(yīng)答,所述應(yīng)答的內(nèi)容包括所述數(shù)據(jù)接收端的塊數(shù)據(jù)的編號;所述定期掃描模塊用于所述數(shù)據(jù)接收端接收到所述數(shù)據(jù)幀后,并定期掃描當(dāng)前滑動窗口的數(shù)據(jù)幀的接收情況,根據(jù)掃描結(jié)果滑動當(dāng)前滑動窗口,向所述數(shù)據(jù)發(fā)送端發(fā)送所述數(shù)據(jù)幀的應(yīng)答,所述應(yīng)答的內(nèi)容包括請求發(fā)送的開始幀號和幀的數(shù)量;所述數(shù)據(jù)幀接收模塊用于接收所述數(shù)據(jù)發(fā)送端發(fā)送的數(shù)據(jù)幀;所述塊通道關(guān)閉請求應(yīng)答模塊用于向所述數(shù)據(jù)發(fā)送端發(fā)送關(guān)閉所述塊傳輸通道的應(yīng)答,所述應(yīng)答的內(nèi)容包括所述數(shù)據(jù)接收端的塊編號和所述塊的保存應(yīng)答。
9.如權(quán)利要求8所述的數(shù)據(jù)傳輸裝置,其特征在于,所述裝置進一步包括檢查模塊,所述檢查模塊用于檢查是否是新啟動,如果是,所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,否則比較所述數(shù)據(jù)發(fā)送端當(dāng)前的塊數(shù)據(jù)編號和所述數(shù)據(jù)接收端的塊數(shù)據(jù)編號是否一致,如果一致則塊傳輸通道建立成功,否則所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求。
10.如權(quán)利要求8所述的數(shù)據(jù)傳輸裝置,其特征在于,所述定期掃描模塊包括數(shù)據(jù)幀檢查單元,所述數(shù)據(jù)幀檢查單元用于檢查所述數(shù)據(jù)接收端的數(shù)據(jù)幀的接收情況,如果檢查到所述數(shù)據(jù)接收端收到全部數(shù)據(jù),所述數(shù)據(jù)接收端的當(dāng)前滑動窗口向數(shù)據(jù)尾幀方向滑動一個滿窗口,并要求所述數(shù)據(jù)發(fā)送端向數(shù)據(jù)尾幀方向滑動一滿口發(fā)送其窗口內(nèi)的數(shù)據(jù);如果檢查到所述數(shù)據(jù)接收端沒有收到全部數(shù)據(jù),所述數(shù)據(jù)接收端的當(dāng)前滑動窗口滑動到第一個丟幀處,并要求所述數(shù)據(jù)發(fā)送端從丟幀處重新發(fā)送數(shù)據(jù)。
11.如權(quán)利要求8所述的數(shù)據(jù)傳輸裝置,其特征在于,所述數(shù)據(jù)幀發(fā)送模塊包括幀號檢查單元,所述幀號檢查單元用于檢查請求發(fā)送的開始幀號是否落在當(dāng)前滑動窗口的范圍內(nèi),如果落在當(dāng)前滑動窗口范圍內(nèi),則根據(jù)收到的所述數(shù)據(jù)幀的應(yīng)答內(nèi)容進行后續(xù)數(shù)據(jù)幀的發(fā)送,如果所述請求發(fā)送的開始幀號連續(xù)多次落在當(dāng)前滑動窗口的范圍外,則向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求,重新發(fā)送所述塊數(shù)據(jù),直至所述塊數(shù)據(jù)中的數(shù)據(jù)幀全部發(fā)送完畢。
12.如權(quán)利要求8所述的數(shù)據(jù)傳輸裝置,其特征在于,所述塊通道關(guān)閉請求應(yīng)答模塊包括塊數(shù)據(jù)保存單元、塊數(shù)據(jù)保存檢查單元、狀態(tài)持久化單元;所述塊數(shù)據(jù)保存單元用于將所述數(shù)據(jù)接收端收到的所述塊數(shù)據(jù)進行保存;所述塊數(shù)據(jù)保存檢查單元用于檢查所述塊數(shù)據(jù)的保存是否成功,如果成功則所述數(shù)據(jù)接收端將其狀態(tài)進行持久化,完成所述塊數(shù)據(jù)的發(fā)送,否則所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送強制建立塊傳輸通道的請求;所述狀態(tài)持久化單元用于將所述數(shù)據(jù)接收端的所述塊數(shù)據(jù)的成功保存狀態(tài)信息進行持久化。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)的傳輸方法和裝置,屬于數(shù)據(jù)傳輸領(lǐng)域。為了克服現(xiàn)有技術(shù)中TCP滑動窗口協(xié)議實現(xiàn)復(fù)雜、對大數(shù)據(jù)包要在IP層進行分片處理的缺點,本發(fā)明提出了一種利用固定大小滑動窗口傳輸協(xié)議進行大數(shù)據(jù)傳輸?shù)姆椒ㄊ紫仁褂脡K命令控制幀建立塊傳輸通道,然后通過此塊通道,以固定大小滑動窗口的方式進行塊數(shù)據(jù)的傳輸,最后關(guān)閉塊傳輸通道完成塊數(shù)據(jù)的傳輸。本發(fā)明提供了一種數(shù)據(jù)的傳輸裝置,用于完成大數(shù)據(jù)的傳輸。本發(fā)明還引入了定期掃描機制,簡單實用滿足了大數(shù)據(jù)快速準(zhǔn)確的傳輸要求,而且還引入了滑動窗口協(xié)議的上層控制命令及數(shù)據(jù)接收端的狀態(tài)持久化機制,使得崩潰恢復(fù)機制、壓縮機制得以實現(xiàn)。
文檔編號H04L1/00GK1889529SQ200610103680
公開日2007年1月3日 申請日期2006年7月28日 優(yōu)先權(quán)日2006年7月28日
發(fā)明者王 鋒, 陳宇杰, 張烽, 左克群, 干志良, 聶更亮, 吳越 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
长寿区| 忻城县| 徐州市| 韩城市| 宾阳县| 固原市| 新田县| 图木舒克市| 洛隆县| 长治市| 巴彦淖尔市| 雷山县| 衡阳县| 中方县| 吴江市| 常熟市| 连南| 商洛市| 南乐县| 蒙城县| 交城县| 年辖:市辖区| 抚松县| 太康县| 仁布县| 繁峙县| 天台县| 邵阳市| 吉水县| 浦县| 通山县| 疏勒县| 永善县| 胶州市| 历史| 偃师市| 神农架林区| 察隅县| 澄城县| 定边县| 巫山县|