一種數(shù)據(jù)傳輸方法和裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及網(wǎng)絡通訊領域,尤其涉及一種數(shù)據(jù)傳輸方法和裝置。
【背景技術】
[0002]對于非對稱信道來說,用戶的上行帶寬遠小于用戶的下行帶寬。例如下載的情況,當用戶下載時,下載的速度遠大于上傳的速度。使用TCP協(xié)議下載時,用戶接收到每兩個下載的報文段后,就向服務器發(fā)送確認報文,這樣就會有很多的確認報文。在弱網(wǎng)的情況下,當確認報文多了之后就會發(fā)生上行網(wǎng)絡擁塞導致確認報文丟包。當確認報文丟包時,上行的帶寬已經(jīng)發(fā)生了網(wǎng)絡擁塞,而下行的帶寬可能并沒有得到充分的利用,如下行帶寬為6M,當發(fā)生丟包時只用了 4M,另外2M并沒有得到利用。另外,當很多確認報文丟失后,用戶還需要再次發(fā)送確認報文,浪費了帶寬。
【發(fā)明內(nèi)容】
[0003]為了解決上述非對稱信道數(shù)據(jù)傳輸過程中浪費帶寬的問題,本發(fā)明提出了一種數(shù)據(jù)傳輸方法和裝置。
[0004]本發(fā)明提供了一種數(shù)據(jù)傳輸方法,所述方法包括以下步驟:
[0005]發(fā)送方把將要發(fā)送的數(shù)據(jù)分成一個或者多個數(shù)據(jù)塊,并對每一個數(shù)據(jù)塊進行序號標識表示數(shù)據(jù)塊的序號,對每一個數(shù)據(jù)塊設置第一發(fā)送狀態(tài)標識用于表示數(shù)據(jù)塊處于未發(fā)送狀態(tài);
[0006]發(fā)送方建立發(fā)送位圖表,發(fā)送位圖表中包括所述每一個數(shù)據(jù)塊的序號標識、所述每一個數(shù)據(jù)塊對應的第一發(fā)送狀態(tài)標識;
[0007]發(fā)送方將所述發(fā)送位圖表中對應的每一個數(shù)據(jù)塊發(fā)送出去并保存,并更改每一個數(shù)據(jù)塊對應的第一發(fā)送狀態(tài)標識為第二發(fā)送狀態(tài)標識,用于表示該數(shù)據(jù)塊已發(fā)送;
[0008]發(fā)送方判斷所述數(shù)據(jù)塊是否全部發(fā)送;
[0009]如果所述數(shù)據(jù)塊全部發(fā)送,發(fā)送方發(fā)送詢問數(shù)據(jù)包詢問接收方是否接收到發(fā)送的每一個數(shù)據(jù)塊;
[0010]發(fā)送方接收由接收方發(fā)送的應答數(shù)據(jù)包,所述應答數(shù)據(jù)包告訴發(fā)送方需要發(fā)送的數(shù)據(jù)塊的信息,所述數(shù)據(jù)塊的信息至少包括一個數(shù)據(jù)快的序號標識;
[0011]根據(jù)需要發(fā)送的數(shù)據(jù)塊的信息判斷是否有需要發(fā)送的數(shù)據(jù)塊;
[0012]如果沒有需要發(fā)送的數(shù)據(jù)塊,發(fā)送方刪除保存的數(shù)據(jù)塊。
[0013]優(yōu)選地,根據(jù)需要發(fā)送的數(shù)據(jù)塊的信息判斷,如果有需要發(fā)送的數(shù)據(jù)塊,則發(fā)送方發(fā)送應答數(shù)據(jù)包中表示的需要發(fā)送的數(shù)據(jù)塊。
[0014]優(yōu)選地,所述方法還包括如下步驟:
[0015]接收方建立接收位圖表,接收位圖表包括每一個數(shù)據(jù)塊的序號標識用于表示數(shù)據(jù)塊的序號,每一個數(shù)據(jù)塊對應的第一接收狀態(tài)標識用于表示數(shù)據(jù)塊處于未接收狀態(tài);
[0016]接收方接收發(fā)送方發(fā)送的數(shù)據(jù)塊,并更改相應數(shù)據(jù)塊的第一接收狀態(tài)標識為第二接收狀態(tài)標識,用于表示該數(shù)據(jù)塊已經(jīng)接收到;
[0017]接收方判斷是否接收到詢問數(shù)據(jù)包;
[0018]如果接收方接收到詢問數(shù)據(jù)包,判斷接收位圖表中是否有保持第一接收狀態(tài)標識的數(shù)據(jù)塊;
[0019]如果沒有保持第一接收狀態(tài)標識的數(shù)據(jù)塊,則接收方發(fā)送應答數(shù)據(jù)包,所述應答數(shù)據(jù)包包括表示接收方已全部接收到數(shù)據(jù)塊的信息。
[0020]優(yōu)選地,接收位圖表中如果有保持第一接收狀態(tài)標識的數(shù)據(jù)塊,則接收方發(fā)送應答數(shù)據(jù)包給發(fā)送方,所述應答數(shù)據(jù)包包括保持第一接收狀態(tài)標識的數(shù)據(jù)塊的序號標識。
[0021]優(yōu)選地,所述詢問數(shù)據(jù)包和所述應答數(shù)據(jù)包同時發(fā)送多份。
[0022]本發(fā)明還提供了一種數(shù)據(jù)傳輸裝置,所述裝置包括發(fā)送方,所述發(fā)送方包括:數(shù)據(jù)分塊模塊,用于把將要發(fā)送的數(shù)據(jù)分成一個或者多個數(shù)據(jù)塊,并對每一個數(shù)據(jù)塊進行序號標識表示數(shù)據(jù)塊的序號,對每一個數(shù)據(jù)塊設置第一發(fā)送狀態(tài)標識用于表示數(shù)據(jù)塊處于未發(fā)送狀態(tài);
[0023]發(fā)送位圖表模塊,用于建立發(fā)送位圖表,發(fā)送位圖表中包括所述每一個數(shù)據(jù)塊的序號標識、所述每一個數(shù)據(jù)塊對應的第一發(fā)送狀態(tài)標識;
[0024]數(shù)據(jù)發(fā)送保存模塊,用于將所述發(fā)送位圖表中對應的每一個數(shù)據(jù)塊發(fā)送出去并保存,并更改每一個數(shù)據(jù)塊對應的第一發(fā)送狀態(tài)標識為第二發(fā)送狀態(tài)標識,用于表示該數(shù)據(jù)塊已發(fā)送;
[0025]第一判斷模塊,用于判斷所述數(shù)據(jù)塊是否全部發(fā)送;
[0026]詢問模塊,用于如果所述數(shù)據(jù)塊全部發(fā)送,發(fā)送方發(fā)送詢問數(shù)據(jù)包詢問接收方是否接收到發(fā)送的每一個數(shù)據(jù)塊;
[0027]接收模塊,用于接收由接收方發(fā)送的應答數(shù)據(jù)包,所述應答數(shù)據(jù)包告訴發(fā)送方,需要發(fā)送的數(shù)據(jù)塊的信息,所述數(shù)據(jù)塊的信息至少包括一個數(shù)據(jù)快的序號標識;
[0028]第二判斷模塊,用于根據(jù)需要發(fā)送的數(shù)據(jù)塊的信息判斷是否有需要發(fā)送的數(shù)據(jù)塊;
[0029]數(shù)據(jù)刪除模塊,用于如果沒有需要發(fā)送的數(shù)據(jù)塊,發(fā)送方刪除保存的數(shù)據(jù)塊。
[0030]優(yōu)選地,所述數(shù)據(jù)發(fā)送保存模塊,還用于根據(jù)需要發(fā)送的數(shù)據(jù)塊的信息判斷如果有需要發(fā)送的數(shù)據(jù)塊,則發(fā)送方發(fā)送應答數(shù)據(jù)包中表示的需要發(fā)送的數(shù)據(jù)塊。
[0031]優(yōu)選地,所述裝置包括接收方,所述接收方包括:
[0032]接收位圖表模塊,用于建立接收位圖表,接收位圖表包括每一個數(shù)據(jù)塊的序號標識用于表示數(shù)據(jù)塊的序號,每一個數(shù)據(jù)塊對應的第一接收狀態(tài)標識用于表示數(shù)據(jù)塊處于未接收狀態(tài);
[0033]數(shù)據(jù)接收模塊,用于接收發(fā)送方發(fā)送的數(shù)據(jù)塊,并更改相應數(shù)據(jù)塊的第一接收狀態(tài)標識為第二接收狀態(tài)標識,用于表示該數(shù)據(jù)塊已經(jīng)接收到;
[0034]第一判斷模塊,用于判斷是否接收到詢問數(shù)據(jù)包;
[0035]第二判斷模塊,用于如果接收方接收到詢問數(shù)據(jù)包,判斷接收位圖表中是否有保持第一接收狀態(tài)標識的數(shù)據(jù)塊;
[0036]數(shù)據(jù)發(fā)送模塊,還用于如果接收位圖表中沒有保持第一接收狀態(tài)標識的數(shù)據(jù)塊,則接收方發(fā)送應答數(shù)據(jù)包,所述應答數(shù)據(jù)包包括表示接收方已全部接收到數(shù)據(jù)塊的信息。
[0037]優(yōu)選地,收位圖表中如果有保持第一接收狀態(tài)標識的數(shù)據(jù)塊,則接收方發(fā)送應答數(shù)據(jù)包給發(fā)送方,所述應答數(shù)據(jù)包包括保持第一接收狀態(tài)標識的數(shù)據(jù)塊的序號標識。
[0038]優(yōu)選地,所述詢問數(shù)據(jù)包和所述應答數(shù)據(jù)包同時發(fā)送多份。
[0039]本發(fā)明通過以上方法和裝置,避免了在非對稱信道中上行網(wǎng)絡發(fā)生擁塞而下行網(wǎng)絡帶寬還沒有充分利用的情況。尤其是用戶從服務器上下載數(shù)據(jù)時,通過本發(fā)明的數(shù)據(jù)傳輸方案,用戶只需要在接收到服務器發(fā)送的詢問數(shù)據(jù)包后發(fā)送少量的應答數(shù)據(jù)包給服務器即可,充分利用了下行網(wǎng)絡帶寬,提高了網(wǎng)絡的利用率。
【附圖說明】
[0040]為了更清楚的說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0041]圖1為一種數(shù)據(jù)傳輸方法發(fā)送方的發(fā)送流程圖。
[0042]圖2為一種數(shù)據(jù)傳輸方法接收方的接收流程圖。
[0043]圖3為數(shù)據(jù)傳輸過程中發(fā)送位圖表和接收位圖表的狀態(tài)圖。
[0044]圖4為發(fā)送方發(fā)送裝置的功能模塊圖。
[0045]圖5為接收方接收裝置的功能模塊圖。
【具體實施方式】
[0046]為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明的【具體實施方式】作進一步的詳細描述。
[0047]圖1為一種數(shù)據(jù)傳輸方法發(fā)送方的發(fā)送流程圖。所述方法包括以下步驟:
[0048]步驟SI I,發(fā)送方把將要發(fā)送的數(shù)據(jù)分成一個或者多個數(shù)據(jù)塊,并對每一個數(shù)據(jù)塊進行序號標識表示該數(shù)據(jù)塊的序號,設置每一個數(shù)據(jù)塊對應的第一發(fā)送狀態(tài)標識用于表示該數(shù)據(jù)塊處于未發(fā)送狀態(tài)。
[0049]當將要發(fā)送的數(shù)據(jù)很小不足以分成多塊或者當將要發(fā)送的數(shù)據(jù)分成多塊反而浪費網(wǎng)絡帶寬時,則把將要發(fā)送的數(shù)據(jù)當成一個數(shù)據(jù)塊發(fā)送;當將要