国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

      文檔序號:7655759閱讀:131來源:國知局
      專利名稱:數(shù)據(jù)的可靠傳輸方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及網(wǎng)絡(luò)通訊技術(shù)領(lǐng)域,特別是涉及一種數(shù)據(jù)的可靠傳輸方法和裝置。
      背景技術(shù)
      傳輸控制協(xié)議(TCP,TransmissionControl Protocol)和用戶數(shù)據(jù)報協(xié)議(UDP, User Datagram Protocol)是目前網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)某S猛ㄓ崊f(xié)議。TCP協(xié)議是一種面向連 接的、可靠的、基于字節(jié)流的運輸層通信協(xié)議,當數(shù)據(jù)成功發(fā)送到目標機器以后,TCP會要求 發(fā)送一個確認,以保證數(shù)據(jù)的可靠傳輸;TCP協(xié)議的工作原理是在需要交換數(shù)據(jù)的主機間 建立一個虛擬連接,以實現(xiàn)高可靠性的數(shù)據(jù)包交換。UDP協(xié)議是一種無連接的傳輸層協(xié)議, 提供面向操作的簡單不可靠信息傳輸服務(wù);UDP適用于不需要TCP可靠機制的情形,與TCP 相比,其傳輸數(shù)據(jù)的速度快、系統(tǒng)開銷少。但由于UDP傳輸數(shù)據(jù)的不可靠性,使得利用其共 享資源變得十分艱難。作為可靠的數(shù)據(jù)傳輸方案,TCP是首選的的數(shù)據(jù)傳輸協(xié)議,可是由于目前很多網(wǎng)絡(luò) 環(huán)境中設(shè)置了網(wǎng)絡(luò)防火墻和/或網(wǎng)絡(luò)地址轉(zhuǎn)換網(wǎng)關(guān)(NAT,Network Address Translation), 需要傳輸數(shù)據(jù)的兩臺主機之間有時候不能夠采用TCP協(xié)議進行數(shù)據(jù)交換;另外,TCP協(xié)議系 統(tǒng)開銷大,建立和釋放都有一定的限制。相比之下,UDP協(xié)議不僅傳輸效率較高,還能夠方 便地穿越網(wǎng)絡(luò)防火墻和NAT網(wǎng)關(guān)的限制,實現(xiàn)網(wǎng)絡(luò)防火墻和NAT網(wǎng)關(guān)內(nèi)外主機之間的數(shù)據(jù) 交換。但是,使用UDP協(xié)議傳輸數(shù)據(jù),也有其不可靠傳輸數(shù)據(jù)的弊端一方面,容易產(chǎn)生丟包 現(xiàn)象;另一方面,易發(fā)生數(shù)據(jù)包亂序到達的現(xiàn)象?,F(xiàn)有技術(shù)為解決上述問題,一般需要模仿 TCP協(xié)議建立握手、進行數(shù)據(jù)傳輸確認、協(xié)商關(guān)閉連接等操作,因此,該方法雖然有效的解決 了 UDP協(xié)議的一些弊端,可以實現(xiàn)可靠的數(shù)據(jù)傳輸,但由于每次傳輸數(shù)據(jù)都要三次握手操 作,數(shù)據(jù)傳輸效率低下。

      發(fā)明內(nèi)容
      本發(fā)明所要解決的技術(shù)問題是提供一種數(shù)據(jù)的可靠傳輸方法,可在保證高效傳輸 數(shù)據(jù)的基礎(chǔ)上,解決現(xiàn)有UDP協(xié)議不能可靠傳輸數(shù)據(jù)的問題。本發(fā)明還提供了一種數(shù)據(jù)的可靠傳輸裝置,以保證上述方法在實際中的應(yīng)用。為了解決上述問題,本發(fā)明公開了一種數(shù)據(jù)的可靠傳輸方法,包括數(shù)據(jù)發(fā)送端將 要發(fā)送的文件拆分成數(shù)據(jù)包,并為每個數(shù)據(jù)包設(shè)置序列號,作為數(shù)據(jù)接收端重新組包的依 據(jù);按預(yù)設(shè)的緩沖數(shù)據(jù)包格式將上述設(shè)置有序列號的數(shù)據(jù)包封裝成待發(fā)送數(shù)據(jù)包,并添加 至發(fā)送緩沖區(qū);按順序發(fā)送所述發(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包;刪除所述發(fā)送緩沖區(qū)中數(shù) 據(jù)接收端已經(jīng)確認的數(shù)據(jù)包;判斷所述發(fā)送緩沖區(qū)中數(shù)據(jù)包的停留時間是否超過預(yù)設(shè)的時 間閾值,若是,則將該數(shù)據(jù)包重置為待發(fā)送數(shù)據(jù)包,重復(fù)上述發(fā)送過程。優(yōu)選的,在發(fā)送所述發(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包之前,還包括按預(yù)設(shè)的協(xié)議頭 格式將待發(fā)送數(shù)據(jù)包封裝成發(fā)送數(shù)據(jù)包。優(yōu)選的,還包括當所述發(fā)送緩沖區(qū)的發(fā)送順序為按序列號從小到大遞增時,若所述數(shù)據(jù)接收端接收到的數(shù)據(jù)包為期望數(shù)據(jù)包,則將所述接收緩沖區(qū)中的數(shù)據(jù)包按序列號排 序,并將期望數(shù)據(jù)包序列號改為序列號連續(xù)的數(shù)據(jù)包的最大序列號加1,以及,按預(yù)設(shè)的協(xié) 議頭格式將該最大序列號封裝成響應(yīng)數(shù)據(jù)包發(fā)送出去;否則,將該接收到的數(shù)據(jù)包放入接 收緩沖區(qū);其中,所有小于或等于所述響應(yīng)數(shù)據(jù)包中序列號的數(shù)據(jù)包均為所述數(shù)據(jù)接收端 確認收到的數(shù)據(jù)包;當所述發(fā)送緩沖區(qū)的發(fā)送順序為按序列號從大到小遞減時,若所述數(shù)據(jù)接收端接 收到的數(shù)據(jù)包為期望數(shù)據(jù)包,則將所述接收緩沖區(qū)中的數(shù)據(jù)包按序列號排序,并將期望數(shù) 據(jù)包序列號改為序列號連續(xù)的數(shù)據(jù)包的最小序列號減1,以及,按預(yù)設(shè)的協(xié)議頭格式將該最 小序列號封裝成響應(yīng)數(shù)據(jù)包發(fā)送出去;否則,將該接收到的數(shù)據(jù)包放入接收緩沖區(qū);其中, 所有大于或等于所述響應(yīng)數(shù)據(jù)包中序列號的數(shù)據(jù)包均為所述數(shù)據(jù)接收端確認收到的數(shù)據(jù) 包。優(yōu)選的,還包括在將需要重傳的數(shù)據(jù)包重置為待發(fā)送數(shù)據(jù)包時,記錄其重傳次 數(shù);若所述發(fā)送緩沖區(qū)中重傳數(shù)據(jù)包的重傳次數(shù)均大于預(yù)設(shè)的重傳次數(shù)上限值,則為所述 預(yù)設(shè)的時間閾值增加一個固定值;若所述發(fā)送緩沖區(qū)中重傳數(shù)據(jù)包的重傳次數(shù)均小于預(yù)設(shè) 的重傳次數(shù)下限值,則為所述預(yù)設(shè)的時間閾值減少一個固定值。優(yōu)選的,所述預(yù)設(shè)的緩沖數(shù)據(jù)包的數(shù)據(jù)項包括要傳輸?shù)臄?shù)據(jù)、數(shù)據(jù)長度、發(fā)送數(shù) 據(jù)包的序列號、時間戳和重傳次數(shù)。優(yōu)選的,所述預(yù)設(shè)的協(xié)議頭的數(shù)據(jù)項包括包標識、上層協(xié)議的命令字、發(fā)送數(shù)據(jù) 包的序列號、應(yīng)答數(shù)據(jù)包的序列號、數(shù)據(jù)長度和要傳輸?shù)臄?shù)據(jù)。優(yōu)選的,在將所述待發(fā)送數(shù)據(jù)包添加至所述發(fā)送緩沖區(qū)之前還包括判斷所述發(fā) 送緩沖區(qū)是否已經(jīng)填滿,若是,則丟棄該待發(fā)送數(shù)據(jù)包。依據(jù)本發(fā)明的另一優(yōu)選實施例,還公開了一種數(shù)據(jù)的可靠傳輸裝置,包括數(shù)據(jù)發(fā) 送端和數(shù)據(jù)接收端,所述數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端通過網(wǎng)絡(luò)連接,所述數(shù)據(jù)發(fā)送端包括數(shù) 據(jù)拆分單元、緩沖數(shù)據(jù)包封裝單元、數(shù)據(jù)發(fā)送單元、響應(yīng)確認單元、數(shù)據(jù)包重置單元和發(fā)送 緩沖區(qū),其中所述數(shù)據(jù)拆分單元用于將要發(fā)送的文件拆分成數(shù)據(jù)包,并為每個數(shù)據(jù)包設(shè)置 序列號,作為所述數(shù)據(jù)接收端重新組包的依據(jù);所述緩沖數(shù)據(jù)封裝單元用于按預(yù)設(shè)的緩沖 數(shù)據(jù)包格式將所述數(shù)據(jù)拆分單元生成的設(shè)置有序列號的數(shù)據(jù)包封裝成待發(fā)送數(shù)據(jù)包,并添 加至所述發(fā)送緩沖區(qū);所述數(shù)據(jù)發(fā)送單元用于按順序?qū)⑺霭l(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包 通過所述網(wǎng)絡(luò)發(fā)送至所述數(shù)據(jù)接收端;所述響應(yīng)確認單元用于將所述數(shù)據(jù)接收端已經(jīng)確認 的數(shù)據(jù)包從所述發(fā)送緩沖區(qū)中刪除;所述數(shù)據(jù)包重置單元用于判斷所述發(fā)送緩沖區(qū)中數(shù)據(jù) 包的停留時間是否超過預(yù)設(shè)的時間閾值,若是,則將該數(shù)據(jù)包重置為待發(fā)送數(shù)據(jù)包;所述發(fā) 送緩沖區(qū)用于保存所述緩沖數(shù)據(jù)包封裝單元生成的待發(fā)送數(shù)據(jù)包,以及,所述數(shù)據(jù)發(fā)送單 元已經(jīng)發(fā)送、所述響應(yīng)確認單元還沒有刪除的數(shù)據(jù)包。優(yōu)選的,所述數(shù)據(jù)發(fā)送端還包括協(xié)議包封裝單元,用于為所述數(shù)據(jù)發(fā)送單元按預(yù) 設(shè)的協(xié)議頭格式將所述發(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包封裝成發(fā)送數(shù)據(jù)包。優(yōu)選的,所述數(shù)據(jù)接收端設(shè)置有接收緩沖區(qū)和數(shù)據(jù)接收處理單元,其中所述接收 緩沖區(qū)用于保存所述數(shù)據(jù)接收處理單元接收到的數(shù)據(jù)包;所述數(shù)據(jù)接收處理單元用于,當所述數(shù)據(jù)發(fā)送端的發(fā)送順序為按序列號從小到大 遞增時,判斷所述數(shù)據(jù)接收端接收到的數(shù)據(jù)包是否為期望數(shù)據(jù)包,若是,則將所述接收緩沖區(qū)中的數(shù)據(jù)包按序列號排序,并將期望數(shù)據(jù)包序列號改為序列號連續(xù)的數(shù)據(jù)包的最大序列 號加1,以及,按預(yù)設(shè)的協(xié)議頭格式將該最大序列號封裝成響應(yīng)數(shù)據(jù)包發(fā)送出去;否則,將 該接收到的數(shù)據(jù)包放入所述接收緩沖區(qū);其中,所有小于或等于所述響應(yīng)數(shù)據(jù)包中序列號 的數(shù)據(jù)包均為所述數(shù)據(jù)接收端確認收到的數(shù)據(jù)包;當所述數(shù)據(jù)發(fā)送端的發(fā)送順序為按序列號從大到小遞減時,判斷所述數(shù)據(jù)接收端 接收到的數(shù)據(jù)包是否為期望數(shù)據(jù)包,若是,則將所述接收緩沖區(qū)中的數(shù)據(jù)包按序列號排序, 并將期望數(shù)據(jù)包序列號改為序列號連續(xù)的數(shù)據(jù)包的最小序列號減1,以及,按預(yù)設(shè)的協(xié)議頭 格式將該最小序列號封裝成響應(yīng)數(shù)據(jù)包發(fā)送出去;否則,將該接收到的數(shù)據(jù)包放入接收緩 沖區(qū);其中,所有大于或等于所述響應(yīng)數(shù)據(jù)包中序列號的數(shù)據(jù)包均為所述數(shù)據(jù)接收端確認 收到的數(shù)據(jù)包。優(yōu)選的,所述數(shù)據(jù)發(fā)送端還包括參數(shù)調(diào)整單元,用于在所述數(shù)據(jù)包重置單元將需 要重傳的數(shù)據(jù)包重置為待發(fā)送數(shù)據(jù)包時,記錄其重傳次數(shù);以及,判斷所述發(fā)送緩沖區(qū)中重 傳數(shù)據(jù)包的重傳次數(shù)是否均大于預(yù)設(shè)的重傳次數(shù)上限值,若是,則為所述預(yù)設(shè)的時間閾值 增加一個固定值;并判斷所述發(fā)送緩沖區(qū)中重傳數(shù)據(jù)包的重傳次數(shù)是否均小于預(yù)設(shè)的重傳 次數(shù)下限值,若是,則為所述預(yù)設(shè)的時間閾值減少一個固定值。優(yōu)選的,所述數(shù)據(jù)發(fā)送端還包括發(fā)送緩沖區(qū)控制單元,用于為所述緩沖數(shù)據(jù)封裝 單元在將所述待發(fā)送數(shù)據(jù)包添加至所述發(fā)送緩沖區(qū)之前,判斷所述發(fā)送緩沖區(qū)是否已經(jīng)填 滿,若是,則丟棄該待發(fā)送數(shù)據(jù)包。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點本發(fā)明優(yōu)選實施例方案中,僅對數(shù)據(jù)發(fā)送端的數(shù)據(jù)格式和發(fā)送過程、以及數(shù)據(jù)接 收端是否確認收到數(shù)據(jù)包進行控制,數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端之間無需發(fā)送特殊的數(shù)據(jù)包 進行握手連接操作,在保持UDP協(xié)議系統(tǒng)開銷少、數(shù)據(jù)傳輸效率比TCP協(xié)議高的情況下,解 決了現(xiàn)有UDP協(xié)議傳輸機制中存在的易于產(chǎn)生丟包現(xiàn)象以及數(shù)據(jù)包亂序到達現(xiàn)象而造成 的不能可靠傳輸數(shù)據(jù)的問題。在本發(fā)明進一步的優(yōu)選實施例中,數(shù)據(jù)接收端無需對接收到的每個數(shù)據(jù)包都發(fā)送 響應(yīng)數(shù)據(jù)包,僅對期望數(shù)據(jù)包發(fā)送響應(yīng)數(shù)據(jù)包,數(shù)據(jù)發(fā)送端接收到該響應(yīng)數(shù)據(jù)包后,將不大 于(或不小于)該響應(yīng)數(shù)據(jù)包中序列號的所有發(fā)送數(shù)據(jù)包均從發(fā)送緩沖區(qū)刪除,可進一步 減少雙方的交互次數(shù)和通訊數(shù)據(jù)量,提高通訊效率。在本發(fā)明進一步的優(yōu)選實施例中,通過監(jiān)控數(shù)據(jù)包的重傳次數(shù)判斷網(wǎng)絡(luò)環(huán)境情 況,并依次自動調(diào)整數(shù)據(jù)包在緩沖區(qū)的停留時間,從而,可根據(jù)網(wǎng)絡(luò)環(huán)境情況進一步提高數(shù) 據(jù)發(fā)送端和數(shù)據(jù)接收端之間的數(shù)據(jù)傳輸效率。


      圖1是本發(fā)明數(shù)據(jù)的可靠傳輸方法第一實施例流程圖;圖2-1是本發(fā)明數(shù)據(jù)的可靠傳輸方法第二實施例數(shù)據(jù)發(fā)送流程圖;圖2-2是本發(fā)明數(shù)據(jù)的可靠傳輸方法第二實施例數(shù)據(jù)接收流程圖;圖3是本發(fā)明數(shù)據(jù)的可靠傳輸裝置一實施例的結(jié)構(gòu)框圖。
      具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實 施方式對本發(fā)明作進一步詳細的說明。方法實施例一 參照圖1,示出了本發(fā)明數(shù)據(jù)的可靠傳輸方法第一實施例的流程,具體包括以下步驟步驟SlOl 數(shù)據(jù)發(fā)送端將要發(fā)送的文件拆分成設(shè)置有序列號數(shù)據(jù)包;數(shù)據(jù)接收端收到所有數(shù)據(jù)包后,可以依據(jù)每個數(shù)據(jù)包的序列號重新組合成數(shù)據(jù)文 件。步驟S102 按預(yù)設(shè)的緩沖數(shù)據(jù)包格式將上述設(shè)置有序列號的數(shù)據(jù)包封裝成待發(fā) 送數(shù)據(jù)包,并添加至發(fā)送緩沖區(qū);在該預(yù)設(shè)的緩沖數(shù)據(jù)包格式中,至少應(yīng)該包括序列號(Sq_n0)和要傳輸?shù)臄?shù)據(jù) (data),若要傳輸?shù)臄?shù)據(jù)長度不固定,還應(yīng)該包括數(shù)據(jù)長度(Ien);另外,為方便判斷和記 錄數(shù)據(jù)包重傳情況,還可以包括時間戳(time)和重傳次數(shù)(times)。為防止發(fā)送緩沖區(qū)溢出,在將待發(fā)送數(shù)據(jù)包添加至發(fā)送緩沖區(qū)之前,還應(yīng)該判斷 發(fā)送緩沖區(qū)是否還有空余空間,若發(fā)送緩沖區(qū)已滿,可以選擇丟棄該待發(fā)送數(shù)據(jù)包。步驟S103 按順序?qū)l(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包發(fā)送出去;在本優(yōu)選實施例中,按序列號從小到大的順序發(fā)送待發(fā)送數(shù)據(jù)包。另外,在將發(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包發(fā)送出去之前,按雙方協(xié)定的協(xié)議頭格 式將待發(fā)送數(shù)據(jù)包封裝成發(fā)送數(shù)據(jù)包,該協(xié)議頭格式包括數(shù)據(jù)包標識符、數(shù)據(jù)長度、要傳輸 的數(shù)據(jù)等。步驟S104 刪除發(fā)送緩沖區(qū)中數(shù)據(jù)接收端已經(jīng)確認的數(shù)據(jù)包;為確保數(shù)據(jù)發(fā)送的可靠性,需要數(shù)據(jù)接收端回復(fù)確認應(yīng)答,只有確認地方收到、或 確認網(wǎng)絡(luò)不通的情況下,數(shù)據(jù)發(fā)送端才將發(fā)送緩沖區(qū)中的數(shù)據(jù)包刪除。在本優(yōu)選實施例中, 為減少雙方的交互次數(shù)和交互信息量,數(shù)據(jù)接收端僅對確認收到的序列號最大的數(shù)據(jù)包進 行應(yīng)答回復(fù),數(shù)據(jù)發(fā)送端收到該回復(fù)后,將發(fā)送緩沖區(qū)中的所有小于或等于該序列號的數(shù) 據(jù)包全部刪除。步驟S105 判斷發(fā)送緩沖區(qū)中數(shù)據(jù)包的停留時間是否超過預(yù)設(shè)的時間閾值,若 是,則轉(zhuǎn)步驟S106 ;否則,不作任何處理;本優(yōu)選實施例中,數(shù)據(jù)包在發(fā)送緩沖區(qū)中的停留時間閾值首先定為500毫秒。當 監(jiān)視線程發(fā)現(xiàn)某數(shù)據(jù)包的停留時間超過該閾值時,則對其進行重傳,并增加重傳次數(shù)的記 錄,當所有重傳數(shù)據(jù)包的累計重傳次數(shù)達到某一定值(如5次)時,說明網(wǎng)絡(luò)環(huán)境較差,可 選擇將停留時間閾值增加一固定值(如1000毫秒),隨著累計重傳次數(shù)的增加,停留時間最 大值也離散地增加,直到達到最大重傳次數(shù)的數(shù)據(jù)包達到一定值(如10次),則可認定為網(wǎng) 絡(luò)不通。當網(wǎng)絡(luò)環(huán)境較好的時候,重傳數(shù)據(jù)包的累計重傳次數(shù)減少,停留時間閾值也相應(yīng)地 離散減少,但最小不能小于500毫秒。步驟S106 將該數(shù)據(jù)包重置為待發(fā)送數(shù)據(jù)包,轉(zhuǎn)步驟S103重復(fù)上述發(fā)送過程;當一個數(shù)據(jù)包的重傳次數(shù)大于一定次數(shù)時(如5次),可認定為網(wǎng)絡(luò)不通,不再發(fā) 送數(shù)據(jù)包,可選擇將發(fā)送緩沖區(qū)清空;當再次接收到數(shù)據(jù)接收端的響應(yīng)包時,可認定為網(wǎng)絡(luò) 恢復(fù),重新恢復(fù)發(fā)送數(shù)據(jù)包的過程。
      方法實施例二 在本優(yōu)選實施例中,通訊雙方互為數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端,在發(fā)送數(shù)據(jù)的同時, 還可以接收來自對方的數(shù)據(jù),通訊雙方采用共同的協(xié)議頭,協(xié)議頭的格式如表1所示表1、協(xié)議頭的格式
      權(quán)利要求
      1.一種數(shù)據(jù)的可靠傳輸方法,其特征在于,包括數(shù)據(jù)發(fā)送端將要發(fā)送的文件拆分成數(shù)據(jù)包,并為每個數(shù)據(jù)包設(shè)置序列號,作為數(shù)據(jù)接 收端重新組包的依據(jù);按預(yù)設(shè)的緩沖數(shù)據(jù)包格式將上述設(shè)置有序列號的數(shù)據(jù)包封裝成待發(fā)送數(shù)據(jù)包,并添加 至發(fā)送緩沖區(qū);按順序發(fā)送所述發(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包;刪除所述發(fā)送緩沖區(qū)中數(shù)據(jù)接收端已經(jīng)確認的數(shù)據(jù)包;判斷所述發(fā)送緩沖區(qū)中數(shù)據(jù)包的停留時間是否超過預(yù)設(shè)的時間閾值,若是,則將該數(shù) 據(jù)包重置為待發(fā)送數(shù)據(jù)包,重復(fù)上述發(fā)送過程。
      2.如權(quán)利要求1所述的方法,其特征在于,在發(fā)送所述發(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包 之前,還包括按預(yù)設(shè)的協(xié)議頭格式將待發(fā)送數(shù)據(jù)包封裝成發(fā)送數(shù)據(jù)包。
      3.如權(quán)利要求1所述的方法,其特征在于,還包括當所述發(fā)送緩沖區(qū)的發(fā)送順序為按序列號從小到大遞增時,若所述數(shù)據(jù)接收端接收到 的數(shù)據(jù)包為期望數(shù)據(jù)包,則將所述接收緩沖區(qū)中的數(shù)據(jù)包按序列號排序,并將期望數(shù)據(jù)包 序列號改為序列號連續(xù)的數(shù)據(jù)包的最大序列號加1,以及,按預(yù)設(shè)的協(xié)議頭格式將該最大序 列號封裝成響應(yīng)數(shù)據(jù)包發(fā)送出去;否則,將該接收到的數(shù)據(jù)包放入接收緩沖區(qū);其中,所有 小于或等于所述響應(yīng)數(shù)據(jù)包中序列號的數(shù)據(jù)包均為所述數(shù)據(jù)接收端確認收到的數(shù)據(jù)包;當所述發(fā)送緩沖區(qū)的發(fā)送順序為按序列號從大到小遞減時,若所述數(shù)據(jù)接收端接收到 的數(shù)據(jù)包為期望數(shù)據(jù)包,則將所述接收緩沖區(qū)中的數(shù)據(jù)包按序列號排序,并將期望數(shù)據(jù)包 序列號改為序列號連續(xù)的數(shù)據(jù)包的最小序列號減1,以及,按預(yù)設(shè)的協(xié)議頭格式將該最小序 列號封裝成響應(yīng)數(shù)據(jù)包發(fā)送出去;否則,將該接收到的數(shù)據(jù)包放入接收緩沖區(qū);其中,所有 大于或等于所述響應(yīng)數(shù)據(jù)包中序列號的數(shù)據(jù)包均為所述數(shù)據(jù)接收端確認收到的數(shù)據(jù)包。
      4.如權(quán)利要求1所述的方法,其特征在于,還包括在將需要重傳的數(shù)據(jù)包重置為待發(fā)送數(shù)據(jù)包時,記錄其重傳次數(shù);若所述發(fā)送緩沖區(qū)中重傳數(shù)據(jù)包的重傳次數(shù)均大于預(yù)設(shè)的重傳次數(shù)上限值,則為所述 預(yù)設(shè)的時間閾值增加一個固定值;若所述發(fā)送緩沖區(qū)中重傳數(shù)據(jù)包的重傳次數(shù)均小于預(yù)設(shè) 的重傳次數(shù)下限值,則為所述預(yù)設(shè)的時間閾值減少一個固定值。
      5.如權(quán)利要求1所述的方法,其特征在于,所述預(yù)設(shè)的緩沖數(shù)據(jù)包的數(shù)據(jù)項包括要傳 輸?shù)臄?shù)據(jù)、數(shù)據(jù)長度、發(fā)送數(shù)據(jù)包的序列號、時間戳和重傳次數(shù)。
      6.如權(quán)利要求2或3所述的方法,其特征在于,所述預(yù)設(shè)的協(xié)議頭的數(shù)據(jù)項包括包標 識、上層協(xié)議的命令字、發(fā)送數(shù)據(jù)包的序列號、應(yīng)答數(shù)據(jù)包的序列號、數(shù)據(jù)長度和要傳輸?shù)?數(shù)據(jù)。
      7.如權(quán)利要求1所述的方法,其特征在于,在將所述待發(fā)送數(shù)據(jù)包添加至所述發(fā)送緩 沖區(qū)之前還包括判斷所述發(fā)送緩沖區(qū)是否已經(jīng)填滿,若是,則丟棄該待發(fā)送數(shù)據(jù)包。
      8.一種數(shù)據(jù)的可靠傳輸裝置,包括數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端,所述數(shù)據(jù)發(fā)送端和數(shù)據(jù) 接收端通過網(wǎng)絡(luò)連接,其特征在于,所述數(shù)據(jù)發(fā)送端包括數(shù)據(jù)拆分單元、緩沖數(shù)據(jù)包封裝單 元、數(shù)據(jù)發(fā)送單元、響應(yīng)確認單元、數(shù)據(jù)包重置單元和發(fā)送緩沖區(qū),其中所述數(shù)據(jù)拆分單元用于將要發(fā)送的文件拆分成數(shù)據(jù)包,并為每個數(shù)據(jù)包設(shè)置序列號, 作為所述數(shù)據(jù)接收端重新組包的依據(jù);所述緩沖數(shù)據(jù)封裝單元用于按預(yù)設(shè)的緩沖數(shù)據(jù)包格式將所述數(shù)據(jù)拆分單元生成的設(shè) 置有序列號的數(shù)據(jù)包封裝成待發(fā)送數(shù)據(jù)包,并添加至所述發(fā)送緩沖區(qū);所述數(shù)據(jù)發(fā)送單元用于按順序?qū)⑺霭l(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包通過所述網(wǎng)絡(luò)發(fā) 送至所述數(shù)據(jù)接收端;所述響應(yīng)確認單元用于將所述數(shù)據(jù)接收端已經(jīng)確認的數(shù)據(jù)包從所述發(fā)送緩沖區(qū)中刪除;所述數(shù)據(jù)包重置單元用于判斷所述發(fā)送緩沖區(qū)中數(shù)據(jù)包的停留時間是否超過預(yù)設(shè)的 時間閾值,若是,則將該數(shù)據(jù)包重置為待發(fā)送數(shù)據(jù)包;所述發(fā)送緩沖區(qū)用于保存所述緩沖數(shù)據(jù)包封裝單元生成的待發(fā)送數(shù)據(jù)包,以及,所述 數(shù)據(jù)發(fā)送單元已經(jīng)發(fā)送、所述響應(yīng)確認單元還沒有刪除的數(shù)據(jù)包。
      9.如權(quán)利要求8所述的裝置,其特征在于,所述數(shù)據(jù)發(fā)送端還包括協(xié)議包封裝單元,用 于為所述數(shù)據(jù)發(fā)送單元按預(yù)設(shè)的協(xié)議頭格式將所述發(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包封裝成 發(fā)送數(shù)據(jù)包。
      10.如權(quán)利要求8所述的裝置,其特征在于,所述數(shù)據(jù)接收端設(shè)置有接收緩沖區(qū)和數(shù)據(jù) 接收處理單元,其中所述接收緩沖區(qū)用于保存所述數(shù)據(jù)接收處理單元接收到的數(shù)據(jù)包;所述數(shù)據(jù)接收處理單元用于,當所述數(shù)據(jù)發(fā)送端的發(fā)送順序為按序列號從小到大遞增 時,判斷所述數(shù)據(jù)接收端接收到的數(shù)據(jù)包是否為期望數(shù)據(jù)包,若是,則將所述接收緩沖區(qū)中 的數(shù)據(jù)包按序列號排序,并將期望數(shù)據(jù)包序列號改為序列號連續(xù)的數(shù)據(jù)包的最大序列號加 1,以及,按預(yù)設(shè)的協(xié)議頭格式將該最大序列號封裝成響應(yīng)數(shù)據(jù)包發(fā)送出去;否則,將該接收 到的數(shù)據(jù)包放入所述接收緩沖區(qū);其中,所有小于或等于所述響應(yīng)數(shù)據(jù)包中序列號的數(shù)據(jù) 包均為所述數(shù)據(jù)接收端確認收到的數(shù)據(jù)包;當所述數(shù)據(jù)發(fā)送端的發(fā)送順序為按序列號從大到小遞減時,判斷所述數(shù)據(jù)接收端接收 到的數(shù)據(jù)包是否為期望數(shù)據(jù)包,若是,則將所述接收緩沖區(qū)中的數(shù)據(jù)包按序列號排序,并將 期望數(shù)據(jù)包序列號改為序列號連續(xù)的數(shù)據(jù)包的最小序列號減1,以及,按預(yù)設(shè)的協(xié)議頭格式 將該最小序列號封裝成響應(yīng)數(shù)據(jù)包發(fā)送出去;否則,將該接收到的數(shù)據(jù)包放入接收緩沖區(qū); 其中,所有大于或等于所述響應(yīng)數(shù)據(jù)包中序列號的數(shù)據(jù)包均為所述數(shù)據(jù)接收端確認收到的 數(shù)據(jù)包。
      11.如權(quán)利要求8所述的裝置,其特征在于,所述數(shù)據(jù)發(fā)送端還包括參數(shù)調(diào)整單元,用 于在所述數(shù)據(jù)包重置單元將需要重傳的數(shù)據(jù)包重置為待發(fā)送數(shù)據(jù)包時,記錄其重傳次數(shù); 以及,判斷所述發(fā)送緩沖區(qū)中重傳數(shù)據(jù)包的重傳次數(shù)是否均大于預(yù)設(shè)的重傳次數(shù)上限值, 若是,則為所述預(yù)設(shè)的時間閾值增加一個固定值;并判斷所述發(fā)送緩沖區(qū)中重傳數(shù)據(jù)包的 重傳次數(shù)是否均小于預(yù)設(shè)的重傳次數(shù)下限值,若是,則為所述預(yù)設(shè)的時間閾值減少一個固 定值。
      12.如權(quán)利要求8所述的裝置,其特征在于,所述數(shù)據(jù)發(fā)送端還包括發(fā)送緩沖區(qū)控制單 元,用于為所述緩沖數(shù)據(jù)封裝單元在將所述待發(fā)送數(shù)據(jù)包添加至所述發(fā)送緩沖區(qū)之前,判 斷所述發(fā)送緩沖區(qū)是否已經(jīng)填滿,若是,則丟棄該待發(fā)送數(shù)據(jù)包。
      全文摘要
      本發(fā)明提供了一種數(shù)據(jù)的可靠傳輸方法和裝置,所述方法包括數(shù)據(jù)發(fā)送端將要發(fā)送的文件拆分成設(shè)置有序列號的數(shù)據(jù)包;按預(yù)設(shè)的緩沖數(shù)據(jù)包格式將上述數(shù)據(jù)包封裝成待發(fā)送數(shù)據(jù)包添加至發(fā)送緩沖區(qū);按順序發(fā)送發(fā)送緩沖區(qū)中的待發(fā)送數(shù)據(jù)包;刪除發(fā)送緩沖區(qū)中數(shù)據(jù)接收端已經(jīng)確認的數(shù)據(jù)包;判斷發(fā)送緩沖區(qū)中數(shù)據(jù)包的停留時間是否超過預(yù)設(shè)的時間閾值,若是,則將該數(shù)據(jù)包重置為待發(fā)送數(shù)據(jù)包,重復(fù)上述發(fā)送過程。本發(fā)明方案僅對發(fā)送端的數(shù)據(jù)格式和發(fā)送過程以及接收端是否確認收到進行控制,發(fā)送端和接收端之間無需發(fā)送特殊的數(shù)據(jù)包進行握手連接操作,可在保持系統(tǒng)開銷少、數(shù)據(jù)傳輸效率高的情況下,解決了現(xiàn)有UDP協(xié)議不能可靠傳輸數(shù)據(jù)的問題。
      文檔編號H04L1/16GK102137027SQ201110112310
      公開日2011年7月27日 申請日期2011年5月3日 優(yōu)先權(quán)日2011年5月3日
      發(fā)明者吳鴻偉, 王超 申請人:廈門市美亞柏科信息股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1