輸入,并將數(shù)據(jù)變換為各自具有預(yù)定大小的包。如此被封包的數(shù)據(jù)存儲于數(shù)據(jù)發(fā)送器I1的傳送緩沖器113。數(shù)據(jù)發(fā)送器110的包傳送單元115將存儲于傳送緩沖器113中的數(shù)據(jù)包傳送給數(shù)據(jù)接收器120。
[0071]將數(shù)據(jù)接收器120的包接收單元121構(gòu)成為接收由數(shù)據(jù)發(fā)送器110的包傳送單元115傳送的數(shù)據(jù)包。接收的數(shù)據(jù)包存儲于數(shù)據(jù)接收器120的接收緩沖器123。由存儲于接收緩沖器123中的數(shù)據(jù)包重新構(gòu)成原來傳送的數(shù)據(jù)。
[0072]在示例性實施例中,數(shù)據(jù)包中包括頭(header)以及數(shù)據(jù)凈荷(data payload)。例如,在數(shù)據(jù)發(fā)送器110的封包單元111中以將頭附加于作為待傳送數(shù)據(jù)的一部分的數(shù)據(jù)凈荷的方式生成數(shù)據(jù)包。當由數(shù)據(jù)接收器120接收到數(shù)據(jù)包時,包含于接收的數(shù)據(jù)包的頭中的信息可被利用于數(shù)據(jù)接收器120管理該數(shù)據(jù)包。例如,數(shù)據(jù)包的頭可包括賦予給該數(shù)據(jù)包的序列號。
[0073]以下參照圖2而對由數(shù)據(jù)發(fā)送器110傳送的數(shù)據(jù)包的示例性結(jié)構(gòu)進行更為詳細的論述。如圖2所示,示例性的數(shù)據(jù)包220包括(n-7)字節(jié)的數(shù)據(jù)凈荷以及數(shù)據(jù)凈荷之前的7字節(jié)的頭。數(shù)據(jù)包220的長度η可變。數(shù)據(jù)包220的7字節(jié)的頭所表示的信息用于以圖2所示的X個數(shù)據(jù)包的塊(以下簡稱數(shù)據(jù)塊)210為單位管理存儲于接收緩沖器123中的數(shù)據(jù)包。包含于數(shù)據(jù)塊210中的包的個數(shù)X可變。
[0074]在數(shù)據(jù)包220的頭中,第一個字節(jié)(字節(jié)O)表示數(shù)據(jù)包220的消息類型,隨后的兩個字節(jié)(字節(jié)I和字節(jié)2)表示數(shù)據(jù)包220所屬數(shù)據(jù)塊210的索引(Ind ex),隨后的兩個字節(jié)(字節(jié)3和字節(jié)4)表示數(shù)據(jù)包220在該數(shù)據(jù)塊210中具有的索引(例如i),隨后的兩個字節(jié)(字節(jié)5和字節(jié)6)表示包含于該數(shù)據(jù)塊210中的數(shù)據(jù)包的個數(shù)(例如X)。因此,當數(shù)據(jù)接收器120的包接收單元121接收到數(shù)據(jù)包220時,可以從數(shù)據(jù)包220的頭中導(dǎo)出數(shù)據(jù)包220將存儲于接收緩沖器123的位置。
[0075]再來參照圖1,以下對用于重新傳送已傳送的數(shù)據(jù)包中的丟失的數(shù)據(jù)包的過程進行說明。
[0076]數(shù)據(jù)接收器120的包丟失確認單元125用于構(gòu)成并管理包接收與否信息,該信息表示是否已經(jīng)從數(shù)據(jù)發(fā)送器I1接收到存儲于接收緩沖器123中的預(yù)定個數(shù)的數(shù)據(jù)包的集合(set)內(nèi)的各數(shù)據(jù)包。例如,該信息可包含多個指示符(indicator),各指示符可表示是否已經(jīng)從數(shù)據(jù)發(fā)送器110接收到數(shù)據(jù)包集合內(nèi)的多個數(shù)據(jù)包中的對應(yīng)的數(shù)據(jù)包。各指示符可以是所述的信息內(nèi)的一個標志(Flag)或位(Bit)??蓪邮张c否信息更新,以便每當在數(shù)據(jù)接收器120中接收到一個數(shù)據(jù)包時能夠表示該數(shù)據(jù)包已由數(shù)據(jù)接收器120接收。
[0077]圖3表示根據(jù)本發(fā)明的實施例而構(gòu)成的用于表示是否接收到數(shù)據(jù)包集合內(nèi)的各數(shù)據(jù)包的信息的結(jié)構(gòu)。在示例性實施例中,為了表示是否接收到包含于圖2所示數(shù)據(jù)塊210的預(yù)定的子塊(sub-block)中的各數(shù)據(jù)包,包丟失確認單元125維持圖3所示64位塊切片(Block Slice)結(jié)構(gòu)310。在塊切片結(jié)構(gòu)310中,從位14到位63的50位為分別表示是否接收到包含于子塊中的數(shù)據(jù)包的標志。每當接收到包含于子塊中的數(shù)據(jù)包時,包丟失確認單元125將對應(yīng)于該數(shù)據(jù)包的標志位設(shè)定為I。即,針對50個數(shù)據(jù)包的集合,一個塊切片包含表示其中的各數(shù)據(jù)包是否已由數(shù)據(jù)接收器120接收的信息。
[0078]在塊切片結(jié)構(gòu)310中,從位O到位4的5位表示在數(shù)據(jù)塊210中子塊所具有的索弓I。例如,如果該5位的子塊的索引為0,則50位的包接收與否標志表示是否接收到從數(shù)據(jù)塊210的包O到包49的50個數(shù)據(jù)包,而如果子塊的索引為1,則包接收與否標志表示是否接收到從數(shù)據(jù)塊210的包50到包99的50個數(shù)據(jù)包。
[0079]塊切片結(jié)構(gòu)310的位5在接收到所有包的情況下被設(shè)定為1,否則被設(shè)定為0,而位6在丟失了所有包的情況下被設(shè)定為1,否則被設(shè)定為O。塊切片結(jié)構(gòu)310的位7是一個對目前正在接收中的子塊被設(shè)定為1、否則被設(shè)定為O的片段(f ragment)位,而位8至位13的6位表示子塊當中目前為止已經(jīng)接收的數(shù)據(jù)包所具有的索引(例如,包220的包索引)中最大的索引。這一表示接收包的最大索引的6位在每當接收到數(shù)據(jù)包時便與所接收的數(shù)據(jù)包的索引經(jīng)過對比,并根據(jù)其比較結(jié)果而得到更新。
[0080]再來參照圖1,對包丟失確認單元125的操作進行進一步的說明。
[0081]基于包含分別表示是否接收到數(shù)據(jù)包集合內(nèi)的多個數(shù)據(jù)包中的對應(yīng)的數(shù)據(jù)包的多個指示符的信息,包丟失確認單元125判定數(shù)據(jù)包集合內(nèi)的數(shù)據(jù)包中是否存在丟失的數(shù)據(jù)包。另外,可以基于表示多個數(shù)據(jù)包中之前丟失的數(shù)據(jù)包的丟失信息以及多個數(shù)據(jù)包中之前接收的數(shù)據(jù)包的序列號中最大的序列號(例如,塊切片結(jié)構(gòu)310中的接收包的最大索弓I)而判定是否存在丟失的數(shù)據(jù)包。進而,包丟失確認單元125可基于前述的包接收與否信息而識別出數(shù)據(jù)包集合內(nèi)的數(shù)據(jù)包中丟失的數(shù)據(jù)包的個數(shù)為多少和/或丟失的數(shù)據(jù)包是什么。
[0082]包丟失確認單元125判定數(shù)據(jù)包集合內(nèi)的數(shù)據(jù)包中是否存在丟失的數(shù)據(jù)包的操作可以包括對包接收與否信息內(nèi)的指示符執(zhí)行邏輯運算的操作。例如,包丟失確認單元125可利用圖4所示位運算(bit operat1n)而判定是否存在丟失的包。圖4作為一例,表示由數(shù)據(jù)接收器120依次接收到包O、包1、包3、以及包7時判定是否存在丟失的包的過程。為了方便,圖4表示了針對8個位的位運算。不難理解,并不是要具體限定公開的實施例中記載的作為位運算的運算對象的位個數(shù)。
[0083]進而,前述的邏輯運算可通過對包接收與否信息內(nèi)的每一個指示符分別進行與其他指示符無關(guān)的處理的方式執(zhí)行。在預(yù)定的實施例中,該邏輯運算可以是按位(bitwise)運算(例如,按位NOT運算、按位AND運算、按位XOR運算、按位OR運算等)。
[0084]這種邏輯運算可包括將所述的指示符取為一個運算對象(operand)的至少一個一元運算(unary operat1n)。與此同時(或者作為替代方案),所述的邏輯運算可包括至少一個二元運算(dyadic operat1n),所述至少一個二元運算將表示判定數(shù)據(jù)包集合內(nèi)的數(shù)據(jù)包中是否存在丟失的數(shù)據(jù)包之前由所述多個數(shù)據(jù)包中丟失的包的丟失信息、或表示數(shù)據(jù)包集合內(nèi)的接收的數(shù)據(jù)包的序列號中最大的序列號的信息與所述多個指示符一同取為兩個運算對象。例如,圖4所示的位運算包括:對表示目前為止接收到的包的位(以下也會統(tǒng)稱為“A”)執(zhí)行按位NOT運算;對表示這樣的NOT運算的結(jié)果(以下也會統(tǒng)稱為“B”)以及之前丟失的包的位(以下也會統(tǒng)稱為“C”)執(zhí)行按位XOR運算;對根據(jù)接收的包的最大索引(例如,塊切片結(jié)構(gòu)310內(nèi)的接收包的最大索引)的屏蔽位(以下也會統(tǒng)稱為“MASK”)以及這樣的XOR運算的結(jié)果(以下也會統(tǒng)稱為“D”)執(zhí)行按位AND運算。如果所述的AND運算的結(jié)果(以下也會統(tǒng)稱為“Y”)大于0,則判定存在丟失的包。這種位運算可將判定是否發(fā)生包丟失所需的時間復(fù)雜度降低為O (I)水平。
[0085]參照圖4,以判定是否發(fā)生包丟失的過程為例進行說明。在圖4所示的例中,A、B、C、D、Y、以及MASK各自的位從右側(cè)到左側(cè)分別對應(yīng)于O到8。當接收到包I時,由于目前為止接收的數(shù)據(jù)包為包O及包I,因此A為00000011,并由于不存在之前丟失的包,因此C為00000000O因此,D為11111100。根據(jù)接收的數(shù)據(jù)包的索引(即,O和I)中最大的索引(gp
I)而將MASK設(shè)定為00000011 (在MASK的位中從包O開始最大的索引的包所對應(yīng)的位被設(shè)定為I)。結(jié)果,Y為00000000,即判定為沒有發(fā)生數(shù)據(jù)包的丟失。接著,如果接收到包3,則由于目前為止接收到的數(shù)據(jù)包為包O、包1、以及包3,因此A為00001011,并由于不存在之前丟失的數(shù)據(jù)包,因此C為00000000。因此,D為11110100。由于接收的數(shù)據(jù)包的索引中最大的索引為3,因此MASK為00001111。結(jié)果,Y為00000100,即判定為發(fā)生了數(shù)據(jù)包的丟失。然后,包丟失確認單元125可利用漢明重量(Hamming Weight)算法及查找第一位(Find First B it)算法等而識別出丟失了幾個數(shù)據(jù)包以及丟失了第幾個數(shù)據(jù)包。
[0086]再來參照圖1,對丟失的數(shù)據(jù)包的重復(fù)傳送過程繼續(xù)說明。
[0087]數(shù)據(jù)接收器120的確認響應(yīng)消息傳送單元127在判定出存在丟失的數(shù)據(jù)包的情況下將預(yù)定的確認響應(yīng)消息發(fā)送給數(shù)據(jù)發(fā)送器110。確認響應(yīng)消息包括由包丟失確認單元125構(gòu)成/更新的包接收與否信息。例如,確認響應(yīng)消息傳送單元127可響應(yīng)于已發(fā)生數(shù)據(jù)包丟失的判定而將包含有64位塊切片結(jié)構(gòu)310的確認響應(yīng)消息發(fā)送給數(shù)據(jù)發(fā)送器110,而此時塊切片結(jié)構(gòu)310的片段位被設(shè)定為I。此外,確認響應(yīng)消息傳送單元127在丟失了包