一種ip報(bào)文分片與重組方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其是涉及一種IP(Internet Protocol,網(wǎng)際協(xié)議)報(bào)文的分片與重組方法及裝置。
【背景技術(shù)】
[0002]通用的0SI(0pen System Interconnect1n,開(kāi)放系統(tǒng)互聯(lián))七層網(wǎng)絡(luò)協(xié)議模型共分七層,每層都可以有幾個(gè)子層,OSI的7層從上到下分別是應(yīng)用層、表示層、會(huì)話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層,其中應(yīng)用層、表示層、會(huì)話層和傳輸層定義了應(yīng)用程序的功能,而網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層則主要面向通過(guò)網(wǎng)絡(luò)的端到端的數(shù)據(jù)流。其中,應(yīng)用層主要是對(duì)應(yīng)應(yīng)用程序的通信服務(wù)的,是與其他計(jì)算機(jī)進(jìn)行通訊的一個(gè)應(yīng)用。表示層主要功能是定義數(shù)據(jù)格式和加密。會(huì)話層的主要功能是定義如何開(kāi)始、控制和結(jié)束一個(gè)會(huì)話,會(huì)話層對(duì)多個(gè)雙向消息進(jìn)行控制和管理,以便在只能完成連續(xù)消息的一部分時(shí)可以通知應(yīng)用,從而使表示層看到的數(shù)據(jù)是連續(xù)的,某些情況下,如果表示層收到了所有的數(shù)據(jù),則用數(shù)據(jù)代表表示層。傳輸層的主要功能是判斷是選擇了差錯(cuò)恢復(fù)協(xié)議還是無(wú)差錯(cuò)恢復(fù)協(xié)議,在同一主機(jī)上對(duì)不同應(yīng)用的數(shù)據(jù)流的輸入進(jìn)行復(fù)用,并對(duì)收到的順序不對(duì)的數(shù)據(jù)包進(jìn)行重新排序。網(wǎng)絡(luò)層主要功能是對(duì)端到端的包傳輸進(jìn)行定義,它定義了能夠標(biāo)識(shí)所有結(jié)點(diǎn)的邏輯地址,還定義了路由實(shí)現(xiàn)的方式和學(xué)習(xí)的方法。為了適應(yīng)最大傳輸單元長(zhǎng)度小于包長(zhǎng)度的傳輸介質(zhì),網(wǎng)絡(luò)層還定義了如何將一個(gè)包分解成更小的包的分段部分。數(shù)據(jù)鏈路層的主要功能是定義在單個(gè)鏈路上如何傳輸數(shù)據(jù)。物理層的OSI物理層規(guī)范是有關(guān)傳輸介質(zhì)的特性標(biāo)準(zhǔn),它包括連接頭、幀的使用、電流、編碼以及光調(diào)制等各種物理層規(guī)范的內(nèi)容。網(wǎng)絡(luò)層的數(shù)據(jù)報(bào)文是有最大最小長(zhǎng)度限制的,并不是任意長(zhǎng)度的數(shù)據(jù)包都能傳輸,網(wǎng)絡(luò)層的完整數(shù)據(jù)包長(zhǎng)度都在64到1518字節(jié)之間,而網(wǎng)絡(luò)層的下層數(shù)據(jù)并不都能滿足這個(gè)長(zhǎng)度要求,也就是說(shuō)當(dāng)下層協(xié)議層的數(shù)據(jù)到達(dá)網(wǎng)絡(luò)層時(shí),它的數(shù)據(jù)包長(zhǎng)度是不完全滿足網(wǎng)絡(luò)層對(duì)數(shù)據(jù)包長(zhǎng)度要求的。所以當(dāng)下層數(shù)據(jù)到達(dá)網(wǎng)絡(luò)層時(shí)要進(jìn)行分片,相應(yīng)的,當(dāng)網(wǎng)絡(luò)層要將分片的數(shù)據(jù)送到下層數(shù)據(jù)時(shí),也要將分片后的數(shù)據(jù)進(jìn)行重組,重組成一個(gè)完整的單元。本發(fā)明就是為解決這個(gè)問(wèn)題,提出自己的想法。
[0003]分片與重組一直都是IP最重要的機(jī)制之一。網(wǎng)絡(luò)層的網(wǎng)絡(luò)設(shè)備,能夠根據(jù)IP頭信息對(duì)報(bào)文進(jìn)行識(shí)別和處理。網(wǎng)絡(luò)層處理數(shù)據(jù),會(huì)有最大傳輸長(zhǎng)度的限制,即MTlKMaximumTransmiss1n Unit)。當(dāng)來(lái)自數(shù)據(jù)鏈路層中的MAC(Media Access Control,介質(zhì)訪問(wèn)控制)層的數(shù)據(jù)到達(dá)網(wǎng)絡(luò)層時(shí),報(bào)文長(zhǎng)度可能會(huì)遠(yuǎn)遠(yuǎn)大于網(wǎng)絡(luò)層能夠接受的最大長(zhǎng)度,這時(shí)候就要對(duì)來(lái)自傳輸層的數(shù)據(jù)包進(jìn)行分片處理。同樣的,當(dāng)網(wǎng)絡(luò)層的數(shù)據(jù)要到達(dá)數(shù)據(jù)鏈路層中的MAC層時(shí),也要將分片過(guò)的包進(jìn)行重組。
[0004]現(xiàn)有的分片重組機(jī)制需要在每一個(gè)分片報(bào)文前都添加報(bào)文頭部的信息。這樣需要浪費(fèi)大量的時(shí)間來(lái)拷貝和存儲(chǔ)報(bào)文頭部的信息,而拷貝過(guò)程耗時(shí)且占用網(wǎng)絡(luò)資源,造成了分片和重組的效率都不高。特別是在當(dāng)前網(wǎng)絡(luò)帶寬特別大的情況下,每個(gè)數(shù)據(jù)報(bào)文都需要攜帶一個(gè)數(shù)據(jù)報(bào)文的頭部信息,數(shù)據(jù)報(bào)文的頭部信息相比分片后的數(shù)據(jù)報(bào)文大小來(lái)說(shuō)已經(jīng)不算小了,甚至有時(shí)會(huì)出現(xiàn)數(shù)據(jù)報(bào)文載荷特別小而數(shù)據(jù)報(bào)文頭部信息占主體的情況。這樣,在帶寬特別大的網(wǎng)絡(luò)環(huán)境下,傳送的大部分都是重復(fù)的頭部信息,而有用的載荷只占了很小的一部分,這必然使得傳輸效率大打折扣。
[0005]由于分片后的數(shù)據(jù)報(bào)文信息已經(jīng)非常短小了,數(shù)據(jù)報(bào)文頭部信息的處理就顯得尤為重要。本申請(qǐng)所述的IP報(bào)文分片重組方法正是為了解決現(xiàn)有技術(shù)的缺陷而提出來(lái)的。本申請(qǐng)所提出的解決方法,有效地處理了數(shù)據(jù)報(bào)文的頭部信息,提高了對(duì)數(shù)據(jù)報(bào)文信息的處理效率,大大提高了數(shù)據(jù)報(bào)文的傳輸效率。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種IP報(bào)文的分片與重組方法。如上所述,現(xiàn)有技術(shù)的缺陷在于現(xiàn)有的分片重組機(jī)制會(huì)重復(fù)拷貝、存儲(chǔ)數(shù)據(jù)報(bào)文頭部信息,傳輸數(shù)據(jù)時(shí)會(huì)重復(fù)傳輸報(bào)文頭部信息。而之所以會(huì)重復(fù)傳輸數(shù)據(jù)報(bào)文頭部信息,則是因?yàn)楝F(xiàn)有技術(shù)將整體的數(shù)據(jù)報(bào)文分割成一個(gè)一個(gè)的小片傳輸時(shí)必須使用頭部信息進(jìn)行索引,這是不得已為之的。但如果能將這些一個(gè)一個(gè)的小分片統(tǒng)一存儲(chǔ)在一個(gè)全局的存儲(chǔ)空間上,就不必在每一個(gè)分片前都加上頭部信息,因而就能夠大大減小傳輸頭部信息的頻率。此外,為了保持?jǐn)?shù)據(jù)報(bào)文和數(shù)據(jù)報(bào)文頭部的聯(lián)系,需要將存儲(chǔ)空間的地址信息放到數(shù)據(jù)報(bào)文頭部的末尾。比起傳輸全部的數(shù)據(jù)報(bào)文信息,這樣的做法是十分合算的。這種方法解決了現(xiàn)有技術(shù)中由于重復(fù)傳輸數(shù)據(jù)報(bào)文頭部信息而導(dǎo)致的分片重組效率低的問(wèn)題,大大提高了數(shù)據(jù)報(bào)文的傳輸效率。
[0007]為解決以上技術(shù)問(wèn)題,本發(fā)明提供如下技術(shù)方案:
[0008]一種IP數(shù)據(jù)報(bào)文的分片方法,其特征在于,在接收來(lái)自MAC層的數(shù)據(jù)報(bào)文信息后,網(wǎng)絡(luò)層的處理步驟如下:
[0009]第一步,接收處理模塊在接收到來(lái)自MAC層的數(shù)據(jù)報(bào)文信息后,首先將數(shù)據(jù)報(bào)文信息進(jìn)行緩存,然后統(tǒng)計(jì)數(shù)據(jù)報(bào)文的信息,最后將數(shù)據(jù)報(bào)文信息傳送到格式調(diào)整模塊;其中所要統(tǒng)計(jì)的數(shù)據(jù)信息包括:版本、IHL(IP Header Length,數(shù)據(jù)報(bào)協(xié)議頭長(zhǎng)度)、服務(wù)類型、數(shù)據(jù)包長(zhǎng)度、標(biāo)識(shí)、標(biāo)志、片偏移量、生存時(shí)間、協(xié)議、包頭校驗(yàn)和、源地址以及目的地址等信息;
[0010]第二步,格式調(diào)整模塊在接收到來(lái)自接收處理模塊的數(shù)據(jù)報(bào)文信息后,對(duì)數(shù)據(jù)報(bào)文信息進(jìn)行格式調(diào)整,并去除數(shù)據(jù)報(bào)文信息中的前導(dǎo)碼和端口號(hào)的冗余信息,形成網(wǎng)絡(luò)數(shù)據(jù)報(bào)文,網(wǎng)絡(luò)數(shù)據(jù)報(bào)文傳輸至分片處理模塊;
[0011]第三步,分片處理模塊在接收到格式調(diào)整模塊發(fā)送來(lái)的網(wǎng)絡(luò)數(shù)據(jù)報(bào)文后,將網(wǎng)絡(luò)數(shù)據(jù)報(bào)文的數(shù)據(jù)部分按接收的先后順序分成編號(hào)從I至η的η個(gè)數(shù)據(jù)包,將這η個(gè)數(shù)據(jù)包按編號(hào)從小到大的順序連續(xù)地存儲(chǔ)在數(shù)據(jù)存儲(chǔ)單元RAMO中,同時(shí)記錄下每個(gè)數(shù)據(jù)包對(duì)應(yīng)的包頭位置 star t_addr [I]...start_addr [η]和每個(gè)數(shù)據(jù)包對(duì)應(yīng)的包尾位置 end_addr [I]...end_addr[n];
[0012]第四步,分片處理模塊將第三步中網(wǎng)絡(luò)數(shù)據(jù)報(bào)文對(duì)應(yīng)的頭部信息提取出來(lái)存放在第一存儲(chǔ)單元RAMl,然后順序地將第三步中記錄的η個(gè)數(shù)據(jù)包對(duì)應(yīng)的包頭位置和包尾位置的信息按照“start_addr[I],end_addr[l],start_addr[2],end_addr[2],start_addr[3],end_addr[3],...,start_addr[n],end_addr[n]”的順序,緊接在對(duì)應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)報(bào)文的頭部信息后存放在第一存儲(chǔ)單元RAMl中;
[0013]第五步,重復(fù)第一步至第四步,直至接收到的所有數(shù)據(jù)報(bào)文信息都完成分片。
[0014]上述的IP數(shù)據(jù)報(bào)文的分片方法,其特征在于,第一步中,接收處理模塊在緩存來(lái)自MAC層的數(shù)據(jù)報(bào)文信息時(shí),若接收速度超過(guò)50Mbps則放棄報(bào)文,停止接收;若接收速度未超過(guò)50Mbps則將數(shù)據(jù)報(bào)文信息進(jìn)行緩存并統(tǒng)計(jì)數(shù)據(jù)報(bào)文的信息。
[0015]由數(shù)據(jù)存儲(chǔ)單元RAMO和第一存儲(chǔ)單元RAMl共同組成的存儲(chǔ)模塊在本申請(qǐng)中發(fā)揮了最重要的作用,這也是對(duì)現(xiàn)有技術(shù)進(jìn)行革新的地方。
[0016]在上述IP報(bào)文的分片方法中,由于第二步的格式調(diào)整是針對(duì)MAC層的,而MAC層傳送過(guò)