快速處理報文的裝置及方法
2023-06-22 06:41:51 2
專利名稱:快速處理報文的裝置及方法
技術領域:
本發明涉及數據通信技術,尤其是一種快速處理報文的裝置及方法。
背景技術:
在網聯網通信技術中,必須藉助於各種網絡協議來傳輸數據,其中,TCP(Transimission Control Protocol,傳輸控制協議)/IP(Internet Protocol,網際網路協議)協議是網際網路的基礎協議,而在TCP/IP協議中,TCP與UDP(UserDatagram Protocol,用戶數據報協議)為兩個具有代表性的傳輸層協議。由於UDP協議是無連接的通信,所以無論何時都能夠發送數據,並且,由於它對數據的處理比較簡單,所以能夠對數據進行高速的處理,因此,與TCP協議相比,UDP協議在以下幾個方面的應用呈現出無可比擬的優越性(1)總包數比較少的通信;(2)動畫和聲音的多媒體通信;(3)限定在LAN等特定的計算機網絡中的應用通信;(4)需要同步進行的通信如廣播通信與多播通信。
TCP/IP協議棧通常包含傳輸層、網絡層、鏈路層與物理層,各自具有不同的通信功能,依次對接收到的數據進行處理。數據被送入TCP/IP協議棧中後,當應用程式使用UDP協議傳送數據時,TCP/IP協議棧中的傳輸層、網絡層、鏈路層與應用層依次對被傳送的數據增加報文首部信息即報文頭信息以構造可在網絡中正常傳輸的IP報文。例如在乙太網中利用UDP協議傳送數據時,TCP/IP協議棧中的傳輸層、網絡層、鏈路層與物理層依次在該數據的頭部增加了APP首部、UDP首部、IP首部及乙太網首部信息。TCP/IP協議棧發送數據的過程也就是傳輸層、網絡層、鏈路層與物理層依次填寫各個欄位的過程,應用程式每次使用UDP協議發送數據時,都必須依次填寫UDP首部信息,IP首部信息和鏈路層首部信息。以乙太網為例,TCP/IP協議棧每發送一組數據,從傳輸到應用,需要填寫的報文頭總長度為42個字節,其中UDP頭為8位元組,IP頭為20位元組,以太頭為14位元組。
在實際應用中,通常需要在兩個固定的應用程式間採用UDP通信,通信過程中需要發送大量的報文,這些報文的共同特徵是其五元組即源IP位址、目的IP位址、源埠號、目的埠號與協議類型(如UDP)都相同,因此被稱為報文流。報文流中的報文頭基本相同,也就是說TCP/IP協議棧為這些數據填寫的報文頭欄位基本相同,只有極少數欄位不同。參見圖1,圖1所示為報文流的報文頭結構示意圖,圖1中粗斜體字表示不同報文流的報文頭中的不同部分。可見,不同報文流中只有IP報文總長度、IP報文標識、IP首部校驗和、UDP長度以及UDP校驗和不同,這些不同部分的字節數僅佔報文頭總長度28%左右,而相同部分則佔報文頭總長度的72%,由於兩個固定的應用程式間發送的報文量龐大,對於這些數量龐大的報文流,TCP/IP協議棧都需要逐一計算與填寫報文頭,而在這些計算與填寫工作中,72%的工作都為重複工作,這些重複工作的工作量大,且需要的時間長,嚴重影響了報文的發送速度。
發明內容
本發明所要解決的技術問題在於,針對現有技術中TCP/IP協議棧重複計算與填寫報文流中的報文頭的缺陷,提供一種快速處理報文的裝置及方法,可保存報文流中首次計算與添加的報文頭,並將該報文頭添加在後續的報文中,僅進行簡單更新即可,不需要重複計算與填寫報文頭,從而提高報文的發送速度。
本發明提供的一種快速處理報文的裝置,包括依次連接的傳輸層信息處理模塊、網絡層信息處理模塊與鏈路層信息處理模塊,還包括
報文頭信息處理模塊,與所述鏈路層信息處理模塊連接,用於提取報文的報文頭信息以及發送報文;報文頭信息存儲模塊,與所述報文頭信息處理模塊連接,用於存儲所述報文頭信息;連接模塊,分別與所述傳輸層信息處理模塊、報文頭信息處理模塊及所述報文頭信息存儲模塊連接,用於添加所述報文頭信息,從而生成報文。
該快速處理報文的裝置中,連接模塊具體可以是一個套接口(SOCKET)模塊。
所述報文頭信息處理模塊包括依次連接的報文接收單元、報文解析單元與報文發送單元,所述報文接收單元與所述鏈路層信息處理模塊連接,所述報文解析單元與所述報文頭信息存儲模塊連接。
另外,上述快速處理報文的裝置還包括用於發送用戶數據報協議報文的物理層信息處理模塊,與所述報文頭信息處理模塊連接,具體是與所述報文發送單元連接。
本發明提供的一種快速處理報文的方法,執行以下步驟步驟1、接收報文數據,查詢報文頭信息存儲模塊中是否存在對應於同一套接口標識、且與所述報文數據具有相同的五元組信息,若不存在,執行步驟2;若存在,跳轉執行步驟3;步驟2、將所述報文數據封裝成可發送的報文,並存儲該可發送的報文的報文頭信息,然後執行步驟4;步驟3、將所述五元組信息對應的報文頭信息添加在所述報文數據中,並更新添加在該報文數據中的報文頭信息形成可發送的報文;步驟4、發送所述可發送的報文。
上述快速處理報文的方法尤其適用於處理UDP報文,另外,也適用於處理其它報文,如TCP報文。針對UDP報文,步驟2包括步驟21、對所述報文數據設置套接口標識後將該攜帶了套接口標識的報文數據依次進行用戶數據報協議封裝、網際網路協議封裝與鏈路層封裝,形成可發送的用戶數據報協議報文;步驟22、存儲從所述可發送的用戶數據報協議報文中提取的套接口標識、五元組與報文頭信息。
其中,所述步驟22包括向報文解析單元發送所述可發送的用戶數據報協議報文以及從該可發送的用戶數據報協議報文中提取報文頭信息的指示信息;報文解析單元對所述可發送的用戶數據報協議報文進行解析,提取套接口標識、五元組與報文頭信息並存儲在報文頭信息存儲模塊中,同時該可發送的用戶數據報協議報文轉發給報文發送單元。
所述步驟3具體為將所述五元組信息對應的報文頭信息添加在所述報文數據中,並更新添加在該報文數據中的報文頭信息形成可發送的用戶數據報協議報文。該操作具體包括步驟31、獲取與所述報文數據的五元組相同的報文頭信息,並將該報文頭信息添加到所述報文數據中;步驟32、更新所述報文頭信息,然後將報文頭信息被更新後的數據封裝成可發送的用戶數據報協議報文。
所述步驟32中對所述報文頭信息進行更新具體為對所述報文頭信息中的UDP長度、用戶數據報協議校驗和、IP首部校驗和、IP標識與IP總長度信息進行更新。
所述步驟4具體為發送所述可發送的用戶數據報協議報文。該步驟包括將所述可發送的報文發送給物理層信息處理模塊;發送所述可發送的報文。
所述步驟3與所述步驟4之間還執行對所述報文頭信息進行循環冗餘碼檢驗的操作。該操作具體為
檢驗所述報文頭信息是否正確,若正確,執行步驟4;否則,將所述可發送的報文發送給所述套接口模塊,然後執行步驟3。
由上述技術方案可知,本發明提供了一種快速處理報文的裝置及利用該裝置快速處理報文的方法,裝置中設有報文頭信息處理模塊、報文頭信息存儲模塊與連接模塊,可以從報文中提取報文頭並存儲在報文頭信息存儲模塊中,當以後需要對接收到的報文數據添加報文頭信息時,從報文頭信息存儲模塊中提取並將其直接添加在報文數據中,然後對添加的報文頭進行簡單的更新,與現有技術重新計算與添加72%的內容都相同的報文頭的方法相比,避免了重複計算與填寫報文頭的繁瑣工作,因此,縮短了處理報文數據的時間,節省了因重複計算與填寫報文頭所用的資源,因此提高了報文發送速度,同時降低了出錯率。
下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。
圖1為報文流的報文頭結構示意圖;圖2為本發明快速處理報文的裝置的一結構示意圖;圖3為本發明快速處理報文的裝置的另一結構示意圖;圖4為本發明快速處理報文的裝置的又一結構示意圖;圖5為本發明快速處理報文的裝置的再一結構示意圖;圖6為本發明快速處理報文的方法的流程圖;圖7為本發明的生成報文並存儲報文頭信息的方法的流程圖;圖8為本發明的提取、添加與更新報文頭信息的方法的流程圖。
具體實施例方式
參見圖2,圖2所示為本發明快速處理報文的裝置的一結構示意圖,該裝置由依次連接的連接模塊1、傳輸層信息處理模塊2、網絡層信息處理模塊3、鏈路層信息處理模塊4、報文頭信息處理模塊5與報文頭信息存儲模塊6構成。其中,報文頭信息處理模塊5用於提取依次經過傳輸層信息處理模塊2、網絡層信息處理模塊3與鏈路層信息處理模塊4封裝後形成的報文中的報文頭信息,並將該報文頭信息保存在報文頭信息存儲模塊6中;連接模塊1還與傳輸層信息處理模塊2、報文頭信息處理模塊5及報文頭信息存儲模塊6連接,除了將第一應用模塊發送的報文數據轉發給傳輸層信息處理模塊2外,還可以從報文頭信息存儲模塊6中提取與接收到的報文數據的五元組相同的報文頭信息,將其添加在報文數據中並進行更新,形成完整的可發送的報文,然後通過報文頭信息處理模塊5發送給第二應用模塊。
在上述實施例中,具體如圖3所示,連接模塊1具體可以是一個SOCKET模塊11。另外,報文頭信息處理模塊5具體可由依次連接的報文接收單元51、報文解析單元52與報文發送單元53構成,其中報文接收單元51與鏈路層信息處理模塊4連接,用於將接收到的報文轉發給報文解析單元52,報文解析單元52與報文頭信息存儲模塊6連接,對接收到的報文進行解析,獲取報文頭信息並將其存儲在報文頭信息存儲模塊6中,同時將該報文轉發給報文發送單元53以發送給第二應用模塊,報文發送單元53還與SOCKET模塊11連接。
報文頭信息處理模塊5可以從首次處理的報文中提取報文頭並存儲在報文頭信息存儲模塊6中,當以後需要對接收到的報文數據添加報文頭信息時,連接模塊1直接從報文頭信息存儲模塊6中提取並將其添加在報文數據中,然後對添加的報文頭進行簡單的更新,與現有技術重新計算與添加72%的內容都相同的報文頭的方法相比,避免了重複計算與填寫報文頭的繁瑣工作,因此,縮短了處理數據的時間,節省了因重複計算與填寫報文頭使用的資源,因此提高了報文發送速度,同時降低了出錯率。
圖4所示為本發明快速處理報文的裝置的又一結構示意圖,該裝置還包括物理層信息處理模塊7,該物理層信息處理模塊7與報文頭信息處理模塊5連接,用於將接收到的報文發送出去。
圖5所示為本發明快速處理報文的裝置的再一結構示意圖,該實施例中,報文頭信息處理模塊5包括依次連接的報文接收單元51、報文解析單元52與報文發送單元53,其中,報文發送單元53與物理層信息處理模塊7連接。
圖6為本發明的快速處理報文的方法的一具體流程,其執行以下步驟步驟1、SOCKET模塊11接收報文數據,查詢報文頭信息存儲模塊6中是否存在對應於同一SOCKET標識(簡稱SOCKET ID)、且與該報文數據的相同的五元組信息,若不存在,執行步驟2;若存在,跳轉執行步驟3;例如接收到的數據的源IP位址為10.2.2.2,目的IP位址為10.1.1.1,源埠號為80,目的埠號為3000,協議類型為UDP,則查詢報文頭信息存儲模塊6中是否存在源IP位址為10.2.2.2、目的IP位址為10.1.1.1、源埠號為80、目的埠號為3000、協議類型為UDP的信息,若不存在,執行步驟2;若存在,進一步判斷源IP位址為10.2.2.2、目的IP位址為10.1.1.1、源埠號為80、目的埠號為3000、協議類型為UDP的信息是否對應於同一SOCKET ID(例如SOCKET ID均為1),即源IP位址為10.2.2.2、目的IP位址為10.1.1.1、源埠號為80、目的埠號為3000、協議類型為UDP的報文頭信息所對應的報文數據是否由同一應用模塊發送,是,則執行步驟3;否則,執行步驟2;下表1為報文頭信息存儲模塊6的存儲內容一個具體實例,其存儲有SOCKET ID、源IP位址、目的IP位址、源埠號、目的埠號、協議類型(UDP)與報文頭信息。
表1
步驟2、將接收到的報文數據封裝成可發送的報文,提取該可發送的報文中的報文頭信息並將其存儲在報文頭信息存儲模塊6中,然後執行步驟4;步驟3、從報文頭信息存儲模塊6中提取與接收到的報文數據的相同的五元組所對應的報文頭信息,並將該報文頭信息添加在報文數據中,然後更新添加的報文頭信息,形成可發送的報文;步驟4、發送可發送的報文。
圖6所示的方法尤其適用於處理UDP報文,另外,也適用於處理其它報文,如TCP報文。下面以UDP報文為例,對該方法作具體說明,處理其他報文的方法相同,不再贅述。
在上述方法的步驟2中,生成報文並存儲報文頭信息的方法的具體操作可通過圖7所示的流程實現,參見圖7,其具體執行以下步驟步驟201、SOCKET模塊11對接收到的報文數據增加SOCKET ID,例如1,然後將該報文數據發送給傳輸層信息處理模塊2;步驟202、傳輸層信息處理模塊2、網絡層信息處理模塊3與鏈路層信息處理模塊4依次對攜帶了SOCKET ID的報文數據進行UDP封裝、IP封裝與鏈路層封裝,即增加相應的首部信息;步驟203、鏈路層信息處理模塊4將封裝完成後形成的UDP報文發送給報文頭信息處理模塊5;步驟204、報文頭信息處理模塊5從UDP報文中提取SOCKET ID、五元組與UDP報文頭信息並存儲在報文頭信息存儲模塊6中。
在該實施例中,步驟203中,鏈路層信息處理模塊4具體是將UDP報文發送給報文頭信息處理模塊5中的報文接收單元51;相應的,步驟204的操作具體為報文接收單元51將接收到的UDP報文轉發給報文解析單元52,同時發送對該UDP報文進行解析並提取報文頭信息的指示信息;報文解析單元52對UDP報文進行解析,提取SOCKET ID、五元組與UDP報文頭信息並存儲在報文頭信息存儲模塊6中,同時將UDP報文轉發給報文發送單元53。
在圖6所示實施例的步驟3中,提取、添加與更新報文頭信息的方法的具體操作可通過圖6所示的流程實現,參見圖8,其具體執行以下步驟步驟301、SOCKET模塊11從報文頭信息存儲模塊6中獲取與接收到的報文數據的五元組相同、且對應於同一SOCKET ID的報文頭信息,並將該報文頭信息添加到接收到的報文數據中;步驟302、SOCKET模塊11根據接收到的報文數據的屬性信息以及快速發送報文的裝置中的報文發送情況信息,重新計算添加到報文數據中的報文頭信息中需要變化的欄位,包括UDP長度、UDP校驗和、IP首部校驗和、IP標識與IP總長度信息,然後利用計算結果數據對添加到報文數據中的報文頭信息進行更新,並將該報文數據封裝成UDP報文發送給報文頭信息處理模塊5或報文頭信息處理模塊5中的報文發送單元53。
圖6所示實施例的步驟4中,可以由報文頭信息處理模塊5或報文頭信息處理模塊5中的報文發送單元53直接將UDP報文發送給具體的應用模塊,也可以將UDP報文發送給物理層信息處理模塊7,由物理層信息處理模塊7發送給具體的應用模塊。其中,由物理層信息處理模塊7發送UDP報文的一具體流程為步驟401、報文頭信息處理模塊5將UDP報文發送給物理層信息處理模塊7;步驟402、物理層信息處理模塊7將UDP報文發送給具體的應用模塊。
具體地,步驟401中可由報文頭信息處理模塊5中的報文發送單元53將UDP報文發送給物理層信息處理模塊7。另外,為了確保UDP報文中報文頭信息的準確性,在步驟302與步驟401之間,報文頭信息處理模塊5還可以對UDP報文頭信息做循環冗餘碼(Cyclic Redundancy Code)檢驗,判斷UDP報文中的首部信息是否正確,若正確,執行步驟401;否則,將該UDP報文發送給SOCKET模塊11,重新計算與更新報文頭信息,即執行步驟302。
總的有益效果基於上述技術方案,本發明可以從UDP報文中提取報文頭並存儲在報文頭信息存儲模塊中,當以後需要對接收到的數據添加報文頭信息時,從報文頭信息存儲模塊中提取並將其直接添加在數據中,然後對添加的報文頭進行簡單的更新,與現有技術重新計算與添加72%的內容都相同的報文頭的方法相比,避免了重複計算與填寫報文頭的繁瑣工作,因此,縮短了TCP/IP協議棧處理數據的時間,節省了TCP/IP協議棧的資源,因此提高了報文發送速度,同時降低了出錯率。
最後所應說明的是,以上實施例僅用以說明本發明的技術方案而非限制,儘管參照較佳實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,可以對本發明的技術方案進行修改或者等同替換,而不脫離本發明技術方案的精神和範圍。
權利要求
1.一種快速處理報文的裝置,包括依次連接的傳輸層信息處理模塊、網絡層信息處理模塊與鏈路層信息處理模塊,其特徵在於,還包括報文頭信息處理模塊,與所述鏈路層信息處理模塊連接,用於提取報文的報文頭信息以及發送報文;報文頭信息存儲模塊,與所述報文頭信息處理模塊連接,用於存儲所述報文頭信息;連接模塊,分別與所述傳輸層信息處理模塊、報文頭信息處理模塊及所述報文頭信息存儲模塊連接,用於添加所述報文頭信息,從而生成報文。
2.根據權利要求1所述的裝置,其特徵在於,所述報文頭信息處理模塊包括依次連接的報文接收單元、報文解析單元與報文發送單元,所述報文接收單元與所述鏈路層信息處理模塊連接,所述報文解析單元與所述報文頭信息存儲模塊連接。
3.根據權利要求1所述的裝置,其特徵在於,所述連接模塊為一套接口模塊。
4.根據權利要求1至3任意一項所述的裝置,其特徵在於,還包括用於發送用戶數據報協議報文的物理層信息處理模塊,與所述報文頭信息處理模塊連接。
5.根據權利要求4所述的裝置,其特徵在於,所述物理層信息處理模塊與所述報文發送單元連接。
6.一種快速處理報文的方法,其中,執行以下步驟步驟1、接收報文數據,查詢報文頭信息存儲模塊中是否存在對應於同一套接口標識、且與所述報文數據具有相同的五元組信息,若不存在,執行步驟2;若存在,跳轉執行步驟3;步驟2、將所述報文數據封裝成可發送的報文,並存儲該可發送的報文的報文頭信息,然後執行步驟4;步驟3、將所述五元組信息對應的報文頭信息添加在所述報文數據中,並更新添加在該報文數據中的報文頭信息形成可發送的報文;步驟4、發送所述可發送的報文。
7.根據權利要求6所述的方法,其中,所述步驟2具體為將所述數據封裝成可發送的用戶數據報協議報文,並存儲該可發送的用戶數據報協議報文的報文頭信息,然後執行步驟4。
8.根據權利要求7所述的方法,其中,所述步驟2具體包括步驟步驟21、對所述報文數據設置套接口標識後將該攜帶了套接口標識的報文數據依次進行用戶數據報協議封裝、網際網路協議封裝與鏈路層封裝,形成可發送的用戶數據報協議報文;步驟22、存儲從所述可發送的用戶數據報協議報文中提取的套接口標識、五元組與報文頭信息。
9.根據權利要求8所述的方法,其中,所述步驟22包括向報文解析單元發送所述可發送的用戶數據報協議報文以及從該可發送的用戶數據報協議報文中提取報文頭信息的指示信息;報文解析單元對所述可發送的用戶數據報協議報文進行解析,提取套接口標識、五元組與報文頭信息並存儲在報文頭信息存儲模塊中,同時該可發送的用戶數據報協議報文轉發給報文發送單元。
10.根據權利要求6所述的方法,其中,所述步驟3具體為將所述五元組信息對應的報文頭信息添加在所述報文數據中,並更新添加在該報文數據中的報文頭信息形成可發送的用戶數據報協議報文。
11.根據權利要10所述的方法,其中,所述步驟3包括步驟31、獲取與所述報文數據的五元組相同的報文頭信息,並將該報文頭信息添加到所述報文數據中;步驟32、更新所述報文頭信息,然後將報文頭信息被更新後的數據封裝成可發送的用戶數據報協議報文。
12.根據權利要求11所述的方法,其中,所述步驟32中對所述報文頭信息進行更新具體為更新所述報文頭信息中的用戶數據報協議長度、用戶數據報協議校驗和、網際網路協議首部校驗和、網際網路協議標識與網際網路協議總長度信息。
13.根據權利要求12所述的方法,其中,所述步驟3與所述步驟4之間還執行對所述報文頭信息進行循環冗餘碼檢驗的操作。
14.根據權利要求13所述的方法,其中,對所述報文頭信息進行循環冗餘碼檢驗具體為檢驗所述報文頭信息是否正確,若正確,執行步驟4;否則,將所述可發送的報文發送給所述套接口模塊,然後執行步驟3。
15.根據權利要求7至14任意一項所述的方法,其中,所述步驟4具體為發送所述可發送的用戶數據報協議報文。
16.根據權利要求6至14任意一項所述的方法,其中,所述步驟4具體包括步驟將所述可發送的報文發送給物理層信息處理模塊;發送所述可發送的報文。
全文摘要
本發明提供了一種快速處理報文的方法,方法包括步驟1、接收報文數據,查詢報文頭信息存儲模塊中是否存在對應於同一套接口標識,且與所述報文數據具有相同的五元組信息,若不存在,執行步驟2;若存在,跳轉執行步驟3;步驟2、將所述報文數據封裝成可發送的報文,並存儲該可發送的報文的報文頭信息,然後執行步驟4;步驟3、將所述五元組信息對應的報文頭信息添加在所述報文數據中,並更新所述報文頭信息形成可發送的報文;步驟4、發送所述可發送的報文。本發明還提供了一種快速處理報文的裝置。利用本發明提供的裝置與方法,可以提高報文的發送速度,同時降低出錯率。
文檔編號H04L12/56GK101047620SQ20061007278
公開日2007年10月3日 申請日期2006年4月7日 優先權日2006年4月7日
發明者張鴻雁, 易安 申請人:華為技術有限公司