專利名稱::網(wǎng)絡(luò)裝置及其切割封包處理方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)裝置及其切割封包處理方法。技術(shù)背景在網(wǎng)絡(luò)地址轉(zhuǎn)換(NetworkAddressTranslation,NAT)系統(tǒng)中,當(dāng)一個封包通過網(wǎng)絡(luò)層傳送時,如果其封包長度大于最大傳遞單元(Maxim咖TransmissionUnit,MTU),則必須經(jīng)過IP切割(Fragmentation)后才能通過網(wǎng)絡(luò)端口傳遞。切割后的封包是由特殊切割封包以及一般切割封包組成。特殊切割封包是具有不同的通信協(xié)議(如傳輸控制協(xié)議/用戶數(shù)據(jù)報協(xié)議(TCP/UDP/ICMP))頭部(Header)的特殊協(xié)議切割封包,也就是說,特殊切割封包的TCP/UDP頭部中記載有原封包的內(nèi)部IP地址以及內(nèi)部端口號(PortN咖ber),而一般切割封包只記載內(nèi)部IP地址而未記載端口號。在這種網(wǎng)絡(luò)結(jié)構(gòu)下,每一個被廣泛使用的協(xié)議都被分配一個特殊的端口號,而每一個使用該協(xié)議的需求封包都帶著這個端口號。例如超文本傳輸協(xié)議(HTTP)協(xié)議的端口號是80、文件傳輸協(xié)議(FTP)是的端口號是21等等。由于一般防火墻會針對端口號來拒絕某種協(xié)議的通信,當(dāng)一般切割封包被傳送時,會由于其沒有相應(yīng)的端口號而無法傳送。因此,當(dāng)封包被切割為特殊封包及若干個一般封包后,須對特殊封包及一般封包進行處理方可進行傳送。目前已知的處理方式如下。在現(xiàn)有的切割封包處理方法中,通常是將一次切割后的封包按照封包切割前的傳送順序重新組合(Reassemble)以構(gòu)成完整的封包,然后從重新組合后的封包的TCP/UDP頭部中記錄下相應(yīng)的端口號,并經(jīng)過NAT協(xié)議轉(zhuǎn)換重新組合后的封包的IP地址及其端口號,最后再次切割該封包,并根據(jù)經(jīng)過NAT協(xié)議轉(zhuǎn)換后的IP地址及端口號傳送該切割封包。然而,重新組合以及重新切割的過程,會增加處理切割封包的時間,并導(dǎo)致通信系統(tǒng)的運行效率降低。
發(fā)明內(nèi)容有鑒于此,需要提供一種網(wǎng)絡(luò)裝置,其可提高切割封包的處理速度,從而提升通信系統(tǒng)的運行效率。此外,還需要提供一種切割封包處理方法,其可提高切割封包的處理速度,從而提升通信系統(tǒng)的運行效率。一種網(wǎng)絡(luò)裝置,包括接收模塊、封包判斷模塊、轉(zhuǎn)換模塊、存儲模塊以及處理模塊。接收模塊用于接收切割封包。封包判斷模塊用于判斷切割封包的封包類型,其中封包類型包括特殊切割封包以及一般切割封包,特殊切割封包包括協(xié)議頭部字段。轉(zhuǎn)換模塊用于轉(zhuǎn)換特殊切割封包的網(wǎng)絡(luò)參數(shù)。存儲模塊用于存儲一般切割封包的緩存信息,以及該特殊切割封包的聯(lián)機信息和切割信息。處理模塊用于根據(jù)緩存信息、聯(lián)機信息和切割信息處理一般切割封包以及特殊切割封包。一種切割封包處理方法,應(yīng)用于網(wǎng)絡(luò)裝置中,該切割封包處理方法包括提供聯(lián)機列表;接收第一切割封包;判斷第一切割封包的封包類型是一般切割封包還是特殊切割封包;如果第一切割封包是一般切割封包,則存儲一般切割封包的緩存信息;接收及判斷隨后的切割封包是否是特殊切割封包;如果隨后的切割封包是特殊切割封包,則判斷特殊切割封包的聯(lián)機信息是否已經(jīng)記載于聯(lián)機列表中;如果特殊切割封包的聯(lián)機信息己經(jīng)記載于聯(lián)機列表中,則存儲特殊切割封包的切割信息;以及根據(jù)聯(lián)機信息和切割信息處理一般切割封包。上述地址轉(zhuǎn)換系統(tǒng)及其切割封包處理方法通過轉(zhuǎn)換模塊、存儲模塊以及處理模塊來處理切割封包,可提高切割封包的處理速度,從而提升通信系統(tǒng)的運行效率。圖l為本發(fā)明實施方式中網(wǎng)絡(luò)裝置的應(yīng)用環(huán)境示意圖。圖2為本發(fā)明實施方式中封包切割示意圖。圖3為本發(fā)明實施方式中網(wǎng)絡(luò)裝置的模塊圖。圖4為本發(fā)明實施方式中切割封包處理方法的流程圖。圖5為本發(fā)明切割封包處理方法中步驟S416的具體流程圖。圖6為本發(fā)明切割封包處理方法中步驟S420的具體流程圖。具體實施方式參閱圖l,所示為本發(fā)明實施方式中網(wǎng)絡(luò)裝置10的應(yīng)用環(huán)境示意圖。如圖1所示,網(wǎng)絡(luò)裝置10連接于客戶端20與網(wǎng)絡(luò)30之間,用于轉(zhuǎn)換聯(lián)機信息。該聯(lián)機信息包括端口號(PortNumber)及因特網(wǎng)協(xié)議(InternetProtocol,IP)地址。在本實施例中,網(wǎng)絡(luò)裝置10為網(wǎng)關(guān)路由器(GatewayRouter),客戶端20為個人計算機(PersonalComputer,PC),網(wǎng)絡(luò)30為因特網(wǎng)(Internet)。根據(jù)因特網(wǎng)協(xié)議(Internetprotocol,IP)規(guī)定,當(dāng)客戶端20發(fā)送的封包通過網(wǎng)絡(luò)層時,如果其封包長度大于最大傳輸單元(Maxi血咖TransmissionUnit,MTU),則該封包必須經(jīng)過切割(Fragmentation)后才可傳送。參閱圖2,所示為本發(fā)明實施方式中對原封包1000進行切割的示意圖。如圖2所示,原封包1000是客戶端20傳送的封包,經(jīng)過IP切割之后,原封包1000被切割為第一切割封包1001、第二切割封包1002,以及第三切割封包1003。在本實施例中,第一切割封包IOOI、第二切割封包1002、第三切割封包1003均包括IP頭部(Header)以及有效載荷(Payload),第二切割封包1002還包括如傳輸控制協(xié)議/用戶數(shù)據(jù)報協(xié)議等(TCP/UDP)頭部(應(yīng)注意的是,目前在網(wǎng)絡(luò)上被廣泛使用的協(xié)議,包括DNS、點對點協(xié)議(Point-to-PointProtocol,PPP)、串4亍線路互聯(lián)網(wǎng)協(xié)議(SerialLineInternetProtocol,SLIP)、互聯(lián)網(wǎng)消息訪問協(xié)議(InternetMessageAccessProtocol,ICMP)等,本發(fā)明不限定于TCP/UDP協(xié)議)。IP頭部用于記載第一切割封包1001、第二切割封包1002以及第三切割封包1003的內(nèi)部IP地址(IPAddress)以及識別號(Identification),TCP/UDP頭部用于記載第二切割封包1002的內(nèi)部IP地址及內(nèi)部端口號。對于同一個原封包1000而言,第一切割封包1001、第二切割封包1002以及第三切割封包1003的內(nèi)部IP地址以及識別號相同,并且每個原封包1000僅具有一個包括TCP/UDP頭部的切割封包。本發(fā)明包括TCP/UDP頭部的切割封包并不局限于第二切割封包1002,在其它實施方式中,TCP/UDP頭部也可能存在于第一切割封包1001或第三切割封包1003中。參閱圖3,所示為本發(fā)明實施方式中網(wǎng)絡(luò)裝置10的模塊圖。在本實施例中,網(wǎng)絡(luò)裝置10包括接收模塊110、封包判斷模塊120、轉(zhuǎn)換模塊130、存儲模塊140,以及處理模塊150。接收模塊110用于從客戶端20接收切割封包。在本實施例中,接收模塊110從客戶端20接收切割封包IOOI、1002以及1003。封包判斷模塊120用于判斷切割封包的封包類型。封包類型包括一般切割封包以及特殊切割封包,一般切割封包是指僅包括IP頭部及有效載荷的切割封包,而特殊切割封包是指包括如TCP/UDP等協(xié)議頭部、IP頭部及有效載荷的切割封包。在本實施例中,封包判斷模塊120通過査看切割封包的IP頭部中的切割位移(FragmentOffset,FO)字段,以及旗標(biāo)(Flag)字段中的"更多切割"(MoreFragments,MF)位(未示出)來判斷封包類型。如果切割位移字段記載的值為O,并且"更多切割"位記載的值為l,則表示該切割封包為特殊切割封包;如果切割位移字段記載的值不為O,則表示該切割封包為一般切割封包。轉(zhuǎn)換模塊130用于轉(zhuǎn)換特殊切割封包的網(wǎng)絡(luò)參數(shù)。在本實施例中,轉(zhuǎn)換模塊130根據(jù)網(wǎng)絡(luò)地址轉(zhuǎn)換(NetworkAddressTranslation,NAT)協(xié)議將第二切割封包1002的內(nèi)部IP地址以及內(nèi)部端口號分別轉(zhuǎn)換為外部IP地址以及外部端口號。存儲模塊140存儲有聯(lián)機列表、切割列表,以及緩存列表。在本實施例中,存儲模塊140為隨機存取存儲器(RandomAccessMemory,RAM)。請參閱表l,所示為本發(fā)明存儲于存儲模塊140的聯(lián)機列表。聯(lián)機列表用于記載特殊切割封包的聯(lián)機信息。聯(lián)機信息包括特殊切割封包的原始網(wǎng)絡(luò)參數(shù)以及經(jīng)轉(zhuǎn)換模塊130轉(zhuǎn)換后的網(wǎng)絡(luò)參數(shù)。在本實施例中,網(wǎng)絡(luò)參數(shù)包括IP地址以及端口號。其中,IP地址分為內(nèi)部IP地址及外部IP地址,端口號分為內(nèi)部端口號及外部端口號。表l<table>tableseeoriginaldocumentpage8</column></row><table>~~~在本實施例中,如果特殊切割封包在聯(lián)機列表中的序號為l,則說明該特殊切割封包f最先存儲于聯(lián)機列表中。IP=192.168.1.ll說明該特殊切割封包的內(nèi)部IP地址為192.168.1.11,內(nèi)部端口號=1000說明該特殊切割封包的內(nèi)部端口號為1000,外部IP地址=220.136.233.167說明經(jīng)轉(zhuǎn)換模塊130轉(zhuǎn)換后的外部IP地址為220.136.233.167,外部端口號=8080說明經(jīng)轉(zhuǎn)換模塊130轉(zhuǎn)換后的外部端口號為8080。請參閱表2,所示為本發(fā)明存儲于存儲模塊140的切割列表。切割列表用于記載特殊切割封包的切割信息。在本實施例中,切割信息包括特殊切割封包的內(nèi)部IP地址、識別號以及索引(Index),其中索引為該特殊切割封包在聯(lián)機列表中的序號。表2<table>tableseeoriginaldocumentpage8</column></row><table>在本實施例中,IP=192.168.1.11說明特殊切割封包的內(nèi)部IP地址為IP-192.168.1.11,識別號-10說明特殊切割封包的IP頭部中識別號字段記載的值為10,索引=1用于指向聯(lián)機列表中序號為l的條目。請參閱表3,所示為本發(fā)明存儲于存儲模塊140的緩存列表。緩存列表用于記載一般切割封包的緩存信息。在本實施例中,緩存信息包括內(nèi)部IP地址以及識別號。表3<table>tableseeoriginaldocumentpage9</column></row><table>'處理模塊150用于處理一般切割封包和特殊切割封包。在本實施例中,處理模塊150包括查詢子模塊1502、傳送子模塊1504以及判斷子模塊1506。査詢子模塊1502用于查詢緩存列表、切割列表以及聯(lián)機列表。在本實施例中,查詢子模塊1502從緩存列表(參見表3)確定一般切割封包的緩存信息、從切割列表(參見表2)確定特殊切割封包在聯(lián)機列表中的序號,以及從聯(lián)機列表(參見表l)確定特殊切割封包經(jīng)轉(zhuǎn)換模塊l30轉(zhuǎn)換后的外部IP地址及外部端口號。傳送子模塊1504用于根據(jù)轉(zhuǎn)換的網(wǎng)絡(luò)參數(shù)傳送切割封包。具體為,傳送子模塊1504根據(jù)外部IP地址以及外部端口號傳送特殊切割封包,并根據(jù)外部IP地址傳送一般切割封包。判斷子模塊1506用于判斷是否所有的切割封包均已傳送完畢。在本實施例中,判斷子模塊1506査看切割封包的IP頭部中旗標(biāo)字段的"更多切割(Morefragments,MF)"位,如果該位記載的值為O,則表示該切割封包是最后一個切割封包。如果該位記載的值為l,則表示該切割封包不是最后一個切割封包。參閱圖4,所示為本發(fā)明實施方式中切割封包處理方法的流程圖。在步驟S400中,接收模塊110接收切割封包。在本實施例中,接收模塊110接收到的切割封包可能是特殊切割封包或一般切割封包。在步驟S402中,封包判斷模塊120判斷切割封包的封包類型是一般切割封包還是特殊切割封包。特殊切割封包是指包括TCP/UDP頭部字段的切割封包,且對于每一個封包而言,經(jīng)IP切割后僅存在一個特殊切割封包。在本實施例中,封包判斷模塊120査看切割封包的IP頭部中的切割位移字段,以及旗標(biāo)字段中的"更多切割"位。如果切割位移字段記載的值為O,并且"更多切割"位記載的值為l,則表示該切割封包是特殊切割封包。如果封包判斷模塊120判斷切割封包是一般切割封包,則進入步驟S404。如果封包判斷模塊120判斷切割封包是特殊切割封包,則進入步驟S422。在步驟S404中,如果第一切割封包是一般切割封包,則存儲模塊140將切割封包的緩存信息存儲于存儲模塊140的緩存列表中。在步驟S406中,封包判斷模塊120判斷下一個切割封包是否為特殊切割封包。如果封包判斷模塊120判斷下一個切割封包不是特殊切割封包,則返回步驟S404。如果封包判斷模塊120判斷下一個切割封包是特殊切割封包,則進入步驟S408。在步驟S408中,存儲模塊140査找聯(lián)機列表,以便確定特殊切割封包是否已經(jīng)處于聯(lián)機列表中。如果特殊切割封包不處于聯(lián)機列表中,則進入步驟S410;如果特殊切割封包已經(jīng)處于聯(lián)機列表中,則進入步驟S414。在步驟S410中,轉(zhuǎn)換模塊130轉(zhuǎn)換特殊切割封包的網(wǎng)絡(luò)參數(shù)。在本實施例中,轉(zhuǎn)換模塊130根據(jù)NAT協(xié)議轉(zhuǎn)換特殊切割封包的網(wǎng)絡(luò)參數(shù),并且網(wǎng)絡(luò)參數(shù)包括IP地址以及端口號。在步驟S412中,存儲模塊140將特殊切割封包的聯(lián)機信息記載于聯(lián)機列表中。在本實施例中,聯(lián)機信息包括特殊切割封包的網(wǎng)絡(luò)參數(shù)以及轉(zhuǎn)換模塊l30轉(zhuǎn)換的網(wǎng)絡(luò)參數(shù)。在步驟S414中,存儲模塊140將特殊切割封包的切割信息記載于切割列表中。在本實施例中,切割信息包括切割封包的內(nèi)部IP地址及識別號,以及該特殊切割封包在上述聯(lián)機列表中的序號。在步驟S416中,處理模塊150依次處理存儲于緩存列表中的一般切割封包。在步驟S418中,處理模塊150處理特殊切割封包。具體為,處理模塊150根據(jù)聯(lián)機列表中記載的外部IP地址以及外部端口號傳送特殊切割封包。在步驟S420中,處理模塊150處理特殊切割封包之后的一般切割封包。在步驟S422中,若第一切割封包是特殊切割封包,則存儲模塊140査找聯(lián)機列表,以便確定特殊切割封包是否己經(jīng)處于聯(lián)機列表中。如果特殊切割封包不處于聯(lián)機列表中,則進入步驟S424;如果特殊切割封包已經(jīng)處于聯(lián)機列表中,則進入步驟S428。在步驟S424中,轉(zhuǎn)換模塊130轉(zhuǎn)換特殊切割封包的網(wǎng)絡(luò)參數(shù)。在本實施例中,轉(zhuǎn)換模塊130根據(jù)NAT協(xié)議轉(zhuǎn)換特殊切割封包的網(wǎng)絡(luò)參數(shù),并且網(wǎng)絡(luò)參數(shù)包括IP地址以及端口號。在步驟S426中,存儲模塊140將特殊切割封包的聯(lián)機信息記載于聯(lián)機列表中。在本實施例中,聯(lián)機信息包括特殊切割封包的網(wǎng)絡(luò)參數(shù)以及轉(zhuǎn)換模塊130轉(zhuǎn)換的網(wǎng)絡(luò)參數(shù)。在步驟S428中,存儲模塊140將特殊切割封包的切割信息記載于切割列表中。在本實施例中,切割信息包括切割封包的內(nèi)部IP地址和識別號,以及該特殊切割封包在上述聯(lián)機列表中的序號。參閱圖5,所示為本發(fā)明切割封包處理方法中步驟S416的具體流程圖。在步驟S4160中,接收模塊110暫停接收后續(xù)的一般切割封包。在步驟S4162中,査詢子模塊1502査詢緩存列表,以確定一般切割封包的緩存信息。在本實施例中,查詢子模塊1502査詢一般切割封包的IP頭部,以確定該切割封包的緩存信息。在步驟S4164中,査詢子模塊1502根據(jù)緩存信息査詢切割列表,以便確定該切割封包在聯(lián)機列表中的序號。在步驟S4166中,査詢子模塊1502根據(jù)査詢子模塊1502査詢到的序號査詢聯(lián)機列表,以確定外部IP地址。在步驟S4168中,傳送子模塊1504根據(jù)外部IP地址傳送該一般切割封包。在步驟S4170中,判斷子模塊1506判斷緩存列表中的所有切割封包是否均已傳送完畢。如果緩存列表中的所有切割封包均已傳送完畢,則進入步驟S416;否則返回步驟S4140。在本實施例中,判斷子模塊1506査看該切割封包的IP頭部中旗標(biāo)字段的"更多切割"(MoreFragments,MF)位,若該位為"0",則表示該切割封包是最后一個切割封包。參閱圖6,所示為本發(fā)明切割封包處理方法中步驟S420的具體流程圖。在步驟S4200中,接收模塊110繼續(xù)接收后續(xù)的一般切割封包。在步驟S4202中,査詢子模塊1502根據(jù)一般切割封包的內(nèi)部IP地址及識別號查詢切割列表,以確定該切割封包在聯(lián)機列表中的序號。在步驟S4204中,查詢子模塊1502根據(jù)該序號査詢聯(lián)機列表,以得到外部IP地址。在步驟S4206中,傳送子模塊l504根據(jù)外部IP地址傳送該切割封包。在步驟S4208中,判斷子模塊1506判斷是否所有切割封包均已傳送完畢。若所有切割封包均已傳送完畢,則結(jié)束;否則返回步驟S4200。本發(fā)明的地址轉(zhuǎn)換系統(tǒng)10及其切割封包處理方法通過轉(zhuǎn)換模塊130、存儲模塊140以及處理模塊150來處理切割封包,可提高切割封包的處理速度,從而提升通信系統(tǒng)的運行效率。權(quán)利要求1.一種網(wǎng)絡(luò)裝置,其特征在于,包括接收模塊,用于接收切割封包;封包判斷模塊,用于判斷所述切割封包的封包類型,所述封包類型包括特殊切割封包以及一般切割封包,所述特殊切割封包包括協(xié)議頭部字段;轉(zhuǎn)換模塊,用于轉(zhuǎn)換所述特殊切割封包的網(wǎng)絡(luò)參數(shù);存儲模塊,用于存儲所述一般切割封包的緩存信息,以及所述特殊切割封包的聯(lián)機信息及切割信息;以及處理模塊,用于根據(jù)所述緩存信息、所述聯(lián)機信息以及所述切割信息處理所述一般切割封包以及所述特殊切割封包。全文摘要一種切割封包處理方法,應(yīng)用于網(wǎng)絡(luò)裝置中,該切割封包處理方法包括接收第一切割封包;判斷第一切割封包的封包類型,封包類型包括一般切割封包以及特殊切割封包,特殊切割封包包括協(xié)議頭部字段;如果第一切割封包是一般切割封包,則存儲一般切割封包的緩存信息;判斷隨后的切割封包是否是特殊切割封包;如果隨后的切割封包是特殊切割封包,則轉(zhuǎn)換特殊切割封包的網(wǎng)絡(luò)參數(shù);存儲特殊切割封包的聯(lián)機信息以及切割信息;以及根據(jù)聯(lián)機信息以及切割信息處理該一般切割封包。本發(fā)明實施方式中還提供了一種網(wǎng)絡(luò)裝置。上述網(wǎng)絡(luò)裝置及其封包切割方法可提高切割封包的處理速度,從而提升通信系統(tǒng)的運行效率。文檔編號H04L12/56GK101132359SQ20061020081公開日2008年2月27日申請日期2006年8月18日優(yōu)先權(quán)日2006年8月18日發(fā)明者郭婉繡申請人:鴻富錦精密工業(yè)(深圳)有限公司;鴻海精密工業(yè)股份有限公司