本發明涉及通訊
技術領域:
,特別涉及一種數據傳送系統及方法。
背景技術:
:信號在物理信道中傳輸時,線路本身電器特性造成的隨機噪聲、信號幅度的衰減、頻率和相位的畸變以及各種外界因素(如大氣中閃電、電源波動等)都會造成信號的失真。在數據通信中,將會使接收端接收到的二進制數字和發送端實際發送的二進制數字不一致,從而造成由“0”變成“1”或者由“1”變成“0”的錯誤。自動重傳請求(AutomaticRepeatreQuest,ARQ)是通信中用于處理信道數據傳輸錯誤的最常用的差錯控制方法。在ARQ方法中,通過接收端請求發送端重傳出錯的數據報文來恢復出錯的報文。傳統的ARQ分成為三種:停等式ARQ、回退N幀ARQ及選擇性重傳ARQ。然而這三種方法的通信信道利用率均不高,信道還遠遠沒有被數據填滿。技術實現要素:鑒于以上內容,有必要提出一種數據傳送系統,能夠有效提高信道利用率。另外,還有必要提出一種數據傳送方法,能夠有效提高信道利用率。一種數據傳送系統,運行于發送端中,所述發送端與接收端通訊,所述發送端包括:信道編碼單元,用于將待發送的一組信息碼分成前半段信息碼及后半段信息碼,在該組信息碼中加入所述前半段信息碼及后半段信息碼的校驗碼得到數據包,將所述數據包進行編碼得到數據幀;第一發送單元,用于將所述數據幀發送給所述接收端,使得所述接收端對接收的數據幀進行譯碼得到接收的數據幀中的數據包,校驗該接收的數據幀中的數據包是否正確; 及第一接收單元,用于接收所述發送端返回的指明接收的數據幀中的數據包正確或者包含錯誤位置的錯誤的應答消息,根據所述接收的錯誤的應答消息確定所述錯誤位置對應的各段信息碼,以重傳所述錯誤位置對應的各段信息碼。一種數據傳送系統,運行于接收端中,所述接收端與發送端通訊,所述接收端包括:第二接收單元,用于接收來自于所述發送端的數據幀,所述發送端將待發送的一組信息碼分成前半段信息碼及后半段信息碼,在該組信息碼中加入所述前半段信息碼及后半段信息碼的校驗碼得到數據包,將所述數據包進行編碼得到所述數據幀;信道譯碼單元,用于對接收的數據幀進行譯碼,得到接收的數據幀中的數據包,校驗接收的數據幀中的數據包是否正確并根據校驗碼確定錯誤位置;及第二發送單元,用于將指明接收的數據幀中的數據包正確或者包含錯誤位置的錯誤的錯誤的應答消息發送給所述發送端,使得所述發送端根據所述錯誤的應答消息確定所述錯誤位置對應的各段信息碼,以重傳所述錯誤位置對應的各段信息碼。一種數據包重傳方法,應用于相互通訊的發送端及接收端,該方法包括:所述發送端將待發送的一組信息碼分成前半段信息碼及后半段信息碼,在該組信息碼中加入所述前半段信息碼及后半段信息碼的校驗碼得到數據包,將所述數據包進行編碼得到數據幀發送給接收端;所述接收端接收來自于所述發送端的數據幀,對接收的數據幀進行譯碼,得到接收的數據幀中的數據包,校驗接收的數據幀中的數據包是否正確并根據校驗碼確定錯誤位置;及所述接收端接收所述發送端返回的指明接收的數據幀中的數據包正確或者包含錯誤位置的錯誤的應答消息,根據所述接收的錯誤的應答消息確定所述錯誤位置對應的各段信息碼,以重傳所述錯誤位置對應的各段信息碼。相對于現有技術,本發明所述的數據傳送系統及方法將數據包中的信息碼分成前半段和后半段,當數據傳輸錯誤需要請求發送端重傳時,只需要重傳數據包中有錯誤的那一段。本發明可應用在現有的網絡裝置上,不需要增加任何硬件成本。本發明利用原先已傳送的數據包來減少重傳數據包的數據量,不僅降低了數據重傳所占用的網絡資源,在信道質量不佳的環境中,還能有效提升信道利用率。附圖說明圖1是本發明數據傳送系統較佳實施方式的系統架構圖。圖2是本發明傳輸的信息碼及數據包分段較佳實施方式的示意圖。圖3是本發明傳輸的信息碼及數據包分段實施例。圖4是本發明數據傳送方法較佳實施方式的流程圖。圖5是本發明數據傳送方法第一實施例的數據流圖。圖6是本發明數據傳送方法第二實施例的數據流圖。主要元件符號說明發送端1信道編碼單元11第一發送單元12第一接收單元13接收端2第二接收單元21信道譯碼單元22第二發送單元23存儲單元24數據傳送系統3雙向信道30如下具體實施方式將結合上述附圖進一步說明本發明。具體實施方式參閱圖1所示,是本發明數據傳送系統較佳實施方式的系統架構圖。在本實施例中,數據傳送系統3包括發送端1、接收端2以及雙向信道30。所述發送端1及接收端2可以為網絡裝置,例如路由器、交換機。所述發送端1包括,但不僅限于,信道編碼單元11、第一發送單元12及第一接收單元13。所述信道編碼單元11,用于在待發送的一組信息碼中加入校驗碼得到該組信息碼的數據包,對該數據包編碼得到該組信息碼的數據幀,以保證傳輸過程的可靠性。在本實施例中,所述數據幀包括接收端2的鏈路地址、發送端1的鏈路地址、數據類型、數據包及校驗序列。圖2是一組信息碼及在該組信息碼中加入校驗碼的示意圖,所述信道編碼單元11將待發送的一組信息碼分成前半段信息碼及后半段信息碼,使得前半段信息碼及后半段信息碼的位數相同,前半段信息碼編號為Freg#1,后半段信息碼編號為Freg#2。利用奇偶校驗(paritycheck,PC)方法為前半段信息碼及后半段信息碼分別生成一個校驗碼(例如PC1為前半段信息碼的校驗碼,PC2為后半段信息碼的校驗碼)附加在后半段信息碼的后面,得到該組信息碼的數據包。本實施例中僅以奇偶校驗來具體說明如何為信息碼生成校驗碼,所述奇偶校驗分為奇校驗和偶校驗。奇校驗的原理是:校驗碼占1位,使數據包中每段信息碼與對應校驗碼的“1”的個數為奇數;偶校驗的原理是:校驗碼占1位,使數據包中每段信息碼與對應校驗碼的“1”的個數為偶數。圖3為一組具體的信息碼及利用偶校驗為該組信息碼加入校驗碼的示意圖。圖3所示的信息碼為110100101011,所述信道編碼單元11將該組信息碼分成前半段信息碼110100及后半段信息碼101011,利用偶校驗為前半段信息碼110100生成校驗碼1,為后半段信息碼101011生成校驗碼0,得到該組信息碼的數據包11010010101110。所述數據包編號為#1,所述前半段信息碼編號為Freg#1,所述后半段信息碼編號為Freg#2。所述信道編碼單元11對該組信息碼的數據包加入接收端2的鏈路地址、發送端1的鏈路地址、數據類型及校驗序列等信息并進行編碼,得到該組信息碼的數據幀。所述第一發送單元12,用于將所述經過信道編碼單元11編碼得到的該組信息碼的數據幀發送給所述接收端2。所述第一接收單元13,用于接收所述接收端2返回的指明接收的數據幀中的數據包正確的應答消息或者包含錯誤位置的錯誤的應答消息,根據所述錯誤的應答消息確定所述錯誤位置對應的各段信息碼,以重傳所述錯誤位置 對應的各段信息碼。在本實施例中,所述發送端1將每段需要重傳的信息碼作為一組新的信息碼發送給所述接收端2。也就是說,對于每段需要重傳的信息碼(例如所述前半段信息碼),所述信道編碼單元11將該段信息碼分成前半子段信息碼及后半子段信息碼,在該段信息碼中加入前半子段信息碼及后半子段信息碼的校驗碼得到新的數據包,將所述新的數據包進行編碼得到新的數據幀。所述第一發送單元12將該新的數據包發送給所述接收端2。所述接收端2包括,但不僅限于,第二接收單元21、信道譯碼單元22、第二發送單元23及存儲單元24。所述第二接收單元21,用于接收所述發送端1發送的數據幀。所述信道譯碼單元22,用于對接收的數據幀進行譯碼,得到接收的數據幀中的數據包。所述信道譯碼單元22還校驗接收的數據幀中的數據包是否正確。所述第二接收單元21接收的數據幀包括接收端2的鏈路地址、發送端1的鏈路地址、數據類型、數據包及校驗序列。所述信道譯碼單元22根據數據幀中的校驗序列對數據幀進行校驗。所述校驗序列可以是循環冗余校驗碼。如果校驗接收的數據幀中的數據包正確,所述信道譯碼單元22產生數據包正確的應答消息;如果校驗接收的數據幀中的數據包不正確,所述信道譯碼單元22進一步校驗該數據包中的信息碼發生錯誤的位置,即校驗該數據包中是前半段信息碼發生錯誤還是后半段信息碼發生錯誤或者是前半段信息碼及后半段信息碼均發生錯誤,產生包含錯誤位置的數據包錯誤的應答消息。所述信道譯碼單元22可以在所述數據包錯誤的應答消息中攜帶前半段信息碼及/或后半段信息碼的編號,例如Freg#1及/或Freg#2,以指明是前半段信息碼錯誤及/或后半段信息碼錯誤。所述信道譯碼單元21可以利用奇校驗或者偶校驗來校驗譯碼出的數據包是否正確。所述第二發送單元23,用于將所述信道譯碼單元21產生的數據包正確的應答消息或者包含錯誤位置的數據包錯誤的應答消息發送給所述發送端1。所述存儲單元24,用于存儲所述接收的數據幀中的信息碼。存儲單元24可以是接收端2本身的內存,也可以是安全數字卡、快閃存儲裝置或只讀存 儲裝置等外部存儲裝置。所述雙向信道30,用于發送端1和接收端2進行通訊,可以分為有線信道和無線信道。所述有線信道可以是雙絞線、同軸電纜、光纖等。所述無線信道可以利用電磁波在空間傳播來傳輸信號。參閱圖4所示,是本發明數據包重傳方法較佳實施例的流程圖。步驟41,所述發送端1的信道編碼單元11將待發送的一組信息碼分成前半段和后半段,為前半段信息碼和后半段信息碼分別生成一個校驗碼,將所述校驗碼附加到所述信息碼中得到該組信息碼的數據包,并將該組信息碼的數據包編碼成第一數據幀,所述發送端1的第一發送單元12將所述第一數據幀發送給所述接收端2。例如,所述信道編碼單元11將所述信息碼的前半段信息碼編號為Freg#1,所述信息碼的后半段信息碼編號為Freg#2。所述第一數據幀包括接收端2的鏈路地址、發送端1的鏈路地址、數據類型、數據包及校驗序列。所述校驗碼可以附加在后半段信息碼之后。所述校驗碼可以是利用奇偶校驗方法生成的。步驟42,所述接收端2的第二接收單元21接收所述第一數據幀,所述信道譯碼單元22對接收到的第一數據幀進行譯碼,得到接收的第一數據幀中的數據包,校驗該接收的第一數據幀中的數據包是否正確并確定錯誤位置,所述第二發送單元23將指明接收的第一數據幀中的數據包正確的應答消息或者包含錯誤位置的錯誤的應答消息發送給發送端1。所述信道譯碼單元22可以利用循環冗余校驗碼校驗接收的第一數據幀中的數據包是否正確。如果接收的第一數據幀中的數據包正確,產生數據包正確的應答消息;如果接收的第一數據幀中的數據包不正確,進一步校驗接收的第一數據幀中的數據包中的信息碼發生錯誤的位置,即校驗數據包中是前半段信息碼發生錯誤還是后半段信息碼發生錯誤或者是前半段信息碼和后半段信息碼均發生錯誤,產生包含錯誤位置的數據包錯誤的應答消息。所述信道譯碼單元22可以根據奇偶校驗方法校驗所述接收的第一數據幀中的數據包中的信息碼發生錯誤的位置。所述錯誤位置可以用編號表示,例如產生包含Freg#1的數據包錯誤的應 答消息表明是前半段信息碼發生錯誤,產生包含Freg#2的數據包錯誤的應答消息表明是后半段信息碼發生錯誤,產生包含Freg#1及Freg#2的數據包錯誤的應答消息表明是前半段信息碼及后半段信息碼均發生錯誤。舉例來說,所述信道譯碼單元22采用偶校驗方法校驗前半段信息碼和對應的校驗碼中的“1”的個數是不是偶數,若是偶數,則前半段信息碼正確,若不是偶數,則前半段信息碼發生錯誤,產生包含Freg#1的數據包錯誤的應答消息。用偶校驗檢查后半段信息碼和對應的校驗碼中的“1”的個數是不是偶數,若是偶數,則后半段信息碼正確,若不是偶數,則后半段信息碼錯誤,產生包含Freg#2的數據包錯誤的應答消息。步驟43,所述發送端1的第一接收單元13接收接收端2返回的指明接收的第一數據幀中的數據包正確的應答消息或者包含錯誤位置的錯誤的應答消息,根據所述錯誤的應答消息確定所述錯誤位置對應的各段信息碼以重傳所述錯誤位置對應的各段信息碼。當發送端1接收到數據包正確的應答消息時,所述第一接收單元13確定不需要重傳所述前半段信息碼及/或后半段信息碼;當發送端1接收到數據包錯誤的應答消息時,所述第一接收單元13確定需要重傳所述前半段信息碼及/或后半段信息碼。在本實施例中,所述發送端1將每段需要重傳的信息碼作為新的一組信息碼發送給所述接收端2。對于每段需要重傳的信息碼,所述信道編碼單元11將該段信息碼分成前半子段和后半子段,為前半子段信息碼和后半子段信息碼分別生成校驗碼,將所述校驗碼附加到該段信息碼中得到該段信息碼的數據包,并將該段信息碼的數據包編碼成第二數據幀。如果接收端2接收的第二數據幀中的數據包正確,產生一個數據包正確的應答消息發送給所述接收端1。如果接收端2接收的第二數據幀中的數據包的前半段信息碼及/或后半段信息碼發生錯誤,產生一個包含錯誤位置的數據包錯誤的應答消息發送給所述接收端1,以請求發送端1再次重傳該錯誤位置對應的信息碼。如此重復上述步驟,直到發送端1發送的數據幀的最小單位長度為64字節(byte)。圖5是本發明數據包重傳方法第一實施例的數據流圖。所述第一實施例中發送端1發送的前半段信息碼或后半段信息碼發生傳輸錯誤。S51,發送端1的第一發送單元12將信道編碼單元11生成的第一數據幀發送給接收端2。在本實施例中,所述信道編碼單元11將待發送的信息碼110100101011分成前半段110100和后半段101011,為前半段信息碼編號為Freg#1及生成校驗碼1,為后半段信息碼Freg#2及生成校驗碼0。將校驗碼1及0附加到所述后半段信息碼后得到該待發送的信息碼的數據包11010010101110(編號為#1),在數據包#1中加入接收端2的鏈路地址、發送端1的鏈路地址、數據類型及校驗序列并編碼成第一數據幀。S52,接收端2的第二發送單元23將數據包錯誤的應答消息發送給所述發送端1。接收端2的第二接收單元21接收所述第一數據幀。接收端2的信道譯碼單元22對接收到的該第一數據幀進行譯碼,得到接收的第一數據幀中的數據包為11000010101110。所述信道譯碼單元22利用循環冗余校驗碼校驗出接收的第一數據幀中的數據包不正確,進一步利用偶校驗方法校驗出接收的第一數據幀中的數據包的前半段信息碼Freg#1發送錯誤。第二發送單元23發送一個數據包錯誤的應答消息給所述發送端1,以請求重傳前半段信息碼。同時,所述信道譯碼單元22將接收的第一數據幀中的信息碼緩存在所述存儲單元24中。在圖5中,所述數據包錯誤的應答消息記為NACK(#1,Freg#1),表明接收端2接收的數據包#1中前半段信息碼發生錯誤,請求發送端1重傳數據包#1中的前半段信息碼。S53,發送端1的第一發送單元12將信道編碼單元11根據所述數據包錯誤的應答消息生成的第二數據幀發送給所述接收端2。第一接收單元13接收來自于接收端2的所述數據包錯誤的應答消息,該數據包錯誤的應答消息請求發送端1重傳第一數據幀中的數據包的前半段信息碼。所述信道編碼單元12將第一數據幀中的數據包的前半段信息碼110100分成前半子段信息碼110及后半子段信息碼100。利用偶校驗為前半子段信息碼110生成校驗碼0,為后半子段信息碼100生成校驗碼1,得到前半段信息碼的數據包11010001,將該前半段信息碼的數據包11010001編碼得到第二數據幀。第一發送單元12將所述第二數據幀發送給所述接收端2。S54,接收端2的第二發送單元23將數據包正確的應答消息發送給所述發送端1。接收端2的第二接收單元21接收所述第二數據幀。接收端2的信道譯碼單元22對接收到的第二數據幀進行譯碼,得到接收的第二數據幀中的數據包,并利用循環冗余校驗碼校驗接收的第二數據幀中的數據包正確,產生一個數據包正確的應答消息。第二發送單元23將該數據包正確的應答消息發送給所述發送端1。在圖5中,所述數據包正確的應答消息記為ACK(#1,Freg#1),表明接收端2已經正確接收第二數據幀中的數據包,即正確接收第一數據幀中的數據包的前半段信息碼。接收端2的存儲單元24以該接收到的第二個數據幀中數據包的信息碼替換或者直接覆蓋)第一個數據幀中的數據包的前半段信息碼。參閱圖6所示,是本發明數據包重傳方法第二實施例的數據流圖。所述第二實施例中發送端1發送的前半段信息碼及后半段信息碼均發生傳輸錯誤。S61,發送端1的第一發送單元12將信道編碼單元11生成的第三數據幀發送給接收端2。在本實施例中,所述信道編碼單元11將待發送的信息碼110100101011,分成前半段110100和后半段101011,為前半段信息碼編號為Freg#1及生成校驗碼1,為后半段信息碼Freg#2及生成校驗碼0。將校驗碼1及0附加到所述后半段信息碼后得到該待發送的信息碼的數據包11010010101110(編號為#3),在數據包#3中加入接收端2的鏈路地址、發送端1的鏈路地址、數據類型及校驗序列將編號為#3的數據包編碼成第三數據幀。第一發送單元12將所述第三數據幀發送給所述接收端2。S62,接收端2的第二發送單元23將數據包錯誤的應答消息發送給所述發送端1。接收端2的第二接收單元21接收所述第三數據幀。接收端2的信道譯碼單元22對接收到的該第三數據幀進行譯碼,得到接收的第三數據幀中的數據包為11000010111110。所述信道譯碼單元22利用循環冗余校驗碼校驗出接收的第三數據幀中的數據包不正確,進一步利用偶校驗方法校驗出接收的第三 數據幀中的數據包是前半段信息碼Freg#1及后半段信息碼Freg#2均發送錯誤。第二發送單元23發送兩個數據包錯誤的應答消息給所述發送端1,以請求重傳前半段信息碼及后半段信息碼。同時所述信道譯碼單元22將接收的第三數據幀中的信息碼緩存在所述存儲單元24中。在圖6中,所述數據包錯誤的應答消息記為為NACK(#3,Freg#1,Freg#2),表明接收端2接收的數據包#3前半段信息碼及后半段信息碼均發生錯誤,請求發送端1重傳數據包#3的前半段信息碼及后半段信息碼。S63,發送端1的第一發送單元12將信道編碼單元11根據所述數據包錯誤的應答消息生成的第四數據幀及第五數據幀發送給所述接收端2。第一接收單元13接收來自于接收端2的所述數據包錯誤的應答消息,該數據包錯誤的應答消息請求發送端1重傳第三數據幀中的數據包的前半段信息碼及后半段信息碼。所述信道編碼單元12將第三數據幀中的數據包的前半段信息碼110100分成前半子段信息碼110及后半子段信息碼100。利用偶校驗為前半子段信息碼110生成校驗碼0,為后半子段信息碼100生成校驗碼1,得到前半段信息碼的數據包11010001,將該前半段信息碼的數據包11010001編碼得到第四數據幀。第一發送單元12將所述第四數據幀發送給所述接收端2。同時,所述信道編碼單元12將第三數據幀中的數據包的后半段信息碼101011分成前半子段信息碼101及后半子段信息碼011。利用偶校驗為前半子段信息碼101生成校驗碼0,為后半子段信息碼011生成校驗碼0,得到后半段信息碼的數據包10101100,將該后半段信息碼的數據包10101100編碼得到第五數據幀。第一發送單元12將所述第五數據幀發送給所述接收端2。S64,接收端2的第二發送單元23將數據包正確的應答消息發送給所述發送端1。接收端2的第二接收單元21接收所述第四數據幀及第五數據幀。接收端2的信道譯碼單元22分別對接收的第四數據幀及第五數據幀進行譯碼,得到接收的第四數據幀中的數據包和第五數據幀中的數據包,并利用循環冗余校驗碼校驗接收的第四數據幀及第五數據幀的數據包均正確,產生兩個數據包正確的應答消息。第二發送單元23將該數據包正確的應答消息發送給所述發送端1。在圖6中,所述兩個數據包正確的應答消息分別記為ACK(#3,Freg#1) 及ACK(#3,Freg#2)。ACK(#3,Freg#1)表明接收端2已經正確接收第四數據幀中的數據包,即正確接收第三數據幀中的數據包的前半段信息碼。ACK(#3,Freg#2)表明接收端2已經正確接收第五數據幀中的數據包,即正確接收第三數據幀中的數據包的后半段信息碼。接收端2的存儲單元24以該接收到的第四數據幀中的數據包的信息碼直接替換掉(或者直接覆蓋掉)第三個數據幀中的數據包的前半段信息碼,以該接收到的第五數據幀中的數據包的信息碼直接替換掉(或者直接覆蓋掉)第三數據幀中的數據包的后半段信息碼。應當說明的是,以上實施例僅用以說明本發明的技術方案而非限制,盡管參照以上較佳實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明的技術方案進行修改或等同替換,而不脫離本發明技術方案的精神和范圍。當前第1頁1 2 3