中文字幕无码日韩视频无码三区

在pat模式下同時支持一對一和多對多的地址轉換方法

文(wen)檔序號(hao):7918392閱讀:938來源:國知局
專利名稱:在pat模式下同時支持一對一和多對多的地址轉換方法
技術領域
本發明涉及網絡系統中的地址轉換方法。
目前,互聯網地址分配組織規定以下的三類網絡地址保留用做私有地址從10.0.0.0到10.255.255.255、從172.16.0.0到172.31.255.255以及從192.168.0.0到192.168.255.255。在局域網內部,使用上述范圍的“私有地址”作為局域網內部的地址。通過地址轉換技術,可以使這個內部局域網的主機訪問Internet。所述的地址轉換技術需要用戶配置地址池和轉換方式。地址池是由一些外部地址,即合法的Internet地址組合而成,局域網內部的數據包通過地址轉換發往外部網絡時,將會選擇地址池中的某個地址作為轉換后的源地址。這樣,使局域網內部的主機不需要都擁有合法的公有IP地址就可以訪問Internet,大大節約了合法的IP地址。
地址轉換有NAT和端口地址轉換(PAT,port address tranlation)兩種方式。NAT方式即通常的一對一的地址轉換,在這種方式下,每一個內部主機要占用地址池中的一個IP地址,當地址池內的地址被用盡時,就不能允許其它主機訪問Internet。因此,NAT方式只允許若干個主機同時訪問Internet,其數目限于地址池的大小。PAT方式的地址轉換使用了TCP/UDP的端口信息,用“地址+端口”來區分局域網內部的主機對外發起的不同連接,即要轉換數據包中的源地址也要轉換端口信息,因此局域網內部的許多主機可以共享一個IP地址訪問Internet,這樣能允許更多的內部主機同時訪問Internet。顯然,PAT方式的地址轉換只適合TCP/UDP協議。
對于有些特殊的應用協議,如NetBios(NetBIOS over TCP/IP,基于TCP/IP的網絡基本輸入輸出系統)協議,要求在兩個主機之間只能建立一對一的連接,即在PAT轉換方式下,如果根據“地址+端口”來區分內部局域網的主機對外發起的不同連接將會導致訪問失敗。因此,在實際應用環境下,對于配置為PAT方式的地址轉換,同時又要求支持類似NetBios協議的一對一的地址轉換,這在現有的地址轉換方法中是無法實現的。
為達到上述目的,本發明提供的在PAT模式下同時支持一對一和多對多的地址轉換方法,包括步驟1確定地址轉換所支持的應用協議類型和該協議所對應的地址轉換應采用的散列(HASH)算法,;步驟2建立一個數組,將該數組分為兩部分,分別為一對一轉換部分和端口地址轉換(PAT)部分,其中,一對一地址轉換部分用于存儲指向一對一地址轉換單元的索引指針,端口地址轉換部分用于存儲指向端口地址轉換單元的索引指針;步驟3當對傳送的報文進行地址轉換時,如果報文對應的應用協議需要一對一的地址轉換,根據該報文應用協議所對應的散列算法在索引數組的一對一轉換部分找到指向地址轉換記錄的索引指針,從而完成一對一的地址轉換;如果報文對應的應用協議需要支持PAT方式的地址轉換,根據報文協議對應的散列算法在索引數組的端口地址轉換部分找到指向端口地址轉換單元的索引指針,從而完成IP地址和端口的轉換。
步驟2所述數組為二維數組,數組的一維下標為公網IP地址池的IP地址,另一維下標,對于數組的一對一轉換部分,為支持一對一轉換的協議類型;對于端口地址轉換部分,為與公網端口號有一一對應關系的標識。
所述步驟3還包括根據報文的IP協議號和端口號確定應用協議類型,再根據應用協議類型確定其對應的散列算法。
當報文由私網發往Internet時,地址轉換將私網IP地址轉換為公網IP地址,對此,步驟3所述完成一對一的地址轉換通過下述過程實現按照報文的協議類型在數組的一對一轉換部分確定數組的一維,在該維的公網IP地址中,采用協議對應的散列算法確定其中的一個地址為轉移后的地址。
當報文由私網發往Internet時,地址轉換將私網IP地址轉換為公網IP地址,對此,步驟3所述完成IP地址和端口的轉換通過下述過程實現在數組的端口地址轉換部分,采用協議對應的散列算法在數組的由公網IP地址標識的一維中,確定其中的一個地址為轉移后的地址,再利用該散列算法在數組的另一維中確定轉換后的新端口。
步驟3還包括當報文IP地址的轉換是首次從私網IP地址向公網IP地址的轉換時,建立該轉換對應的轉換單元,所述轉換單元用于存儲IP地址轉換信息,該信息包括報文的私網IP地址、私網端口號,轉換后的公網IP地址、公網端口號,報文的協議類型。
當報文IP地址的轉換是從公網IP地址向私網IP地址的轉換時,步驟3所述完成一對一的IP地址轉換,以及完成IP地址和端口的轉換通過下述過程實現根據報文采用的協議及其對應的散列算法,在數組中找到對應的數組元素,根據該數組元素存儲的索引指針,找到該指針指向的轉換單元,根據轉換單元找到轉換后的私網IP地址和私網端口號。
本發明提供的另一種在PAT模式下同時支持一對一和多對多的地址轉換方法,包括步驟A1確定地址轉換所支持的應用協議類型和該協議所對應的地址轉換應采用的散列(HASH)算法;步驟A2建立一對一轉換表和端口地址轉換(PAT)表,其中,一對一地址轉換表用于存儲指向一對一地址轉換單元的索引指針,端口地址轉換表用于存儲指向端口地址轉換單元的索引指針;步驟A3當對傳送的報文進行地址轉換時,如果報文對應的應用協議需要一對一的地址轉換,根據該報文應用協議所對應的散列算法在一對一轉換表找到指向地址轉換記錄的索引指針,從而完成一對一的地址轉換;如果報文對應的應用協議需要支持PAT方式的地址轉換,根據報文協議對應的散列算法在端口地址轉換表找到指向端口地址轉換單元的索引指針,從而完成IP地址和端口的轉換。
采用上述方案,與一對一IP地址轉換方式相比,其優點在于
(1)節約IP地址資源的效果好。如果某一個IP地址被分配用于一對一的地址轉換,則該地址不能再被復用;如果地址池資源被耗盡,由于沒有IP地址可用,不能進行后續報文的地址轉換。用本發明的方法,不同類型的協議的報文仍可復用該地址,即使這些協議需要一對一的地址轉換,仍可成功復用;如果某種協議報文需要一對一的地址轉換,地址池長度才限制該種協議的連接總數,可支持的最大連接數等于地址池長度;如果一種協議的連接總數已達到上限,并不影響其它協議的地址轉換。
(2)具有更好的安全性。如果采用一對一的IP地址轉換方式,某一個地址被專門分配用于一對一的地址轉換,由于不區分協議類型,那么各種協議的報文均可通過此地址從外部進入內部網絡。采用本發明的方法,由于不同的協議使用的散列算法各不相同,只有相應協議的報文根據其對應的散列算法才能查找到對應的地址轉換單元,使報文進入內部網絡。這樣,PAT方式的地址轉換具有更好的安全性。
(3)使用本發明的方法能適應不同協議的IP地址轉換要求。


圖1是本發明所述方法的實施例流程圖。圖1所述的方法采用與報文協議相關的散列算法,將PAT方式的地址轉換和一對一的轉換散列到同一個數據結構內使用了不同的散列算法,具體采用哪一種散列算法,取決于應用協議的類型。
按照圖1,首先在步驟1確定地址轉換所支持的協議類型和協議類型所對應的IP地址轉換采用的散列(HASH)算法,以及確定IP地址轉換使用的公網IP地址池和公網端口的集合;為實現步驟1,體現“應用協議的注冊性”,在步驟1的實現中,在路由器上創建應用協議注冊表,這是一個全局的表,其中每條記錄唯一標識了一種應用協議,同時在該記錄內記錄的信息還包括IP協議號、知名端口號,以便根據IP協議號和知名端口號可以識別應用協議的類型。同時,在每一條記錄內為每一種應用協議注冊一個散列算法的標識,以便在地址轉換過程中,根據協議內注冊的算法標識選用不同的散列算法,確保正確查找到該應用協議的轉換單元的索引指針。
在步驟2建立一個二維數組,將該數組分為兩部分,分別為一對一轉換部分和端口地址轉換(PAT)部分,所述端口地址轉換(PAT)部分即為多對多地址轉換部分;其中,一對一地址轉換部分用于存儲指向一對一地址轉換單元的索引指針,端口地址轉換部分用于存儲指向端口地址轉換單元的索引指針,參考圖2。圖2中,索引表的右半部分用于索引PAT方式地址轉換單元,左半部分用于索引一對一地址轉換單元。圖2中,數組的一維下標(行下標)為公網IP地址池的IP地址,另一維下標(列下標),對于數組的一對一轉換部分,為支持一對一轉換的協議類型;對于端口地址轉換部分,為與公網端口號有一一對應關系的標識,該標識在本例中直接采用公網端口號。實際中,對于端口地址轉換部分,上述另一維下標也可以為與公網端口號沒有一一對應關系的標識,這時,采用其它方式獲取公網端口號。
在PAT方式下進行一對一的地址轉換,使用數組的左半部分來存儲轉換單元的索引指針。由于一對一的地址轉換只區分地址,即只用到了索引數組的第一維Index1,而第二維Index2沒有變化,因此要在注冊散列算法時指定使用哪一列索引轉換單元。當有來自內部主機的訪問時,將在第對應的那一列內查找空的索引位置,如果找到,就創建地址轉換單元完成一對一的地址轉換;如果沒有空的索引位置,表明地址池中的地址已經分配完,不能繼續再進行一對一的地址轉換。
對“地址+端口”模式的PAT轉換,指向地址轉換單元的指針被散列到數組的右半部分,要使用PAT模式對應的散列算法來定位二維數組的Index1和Index2,然后根據Index1獲取轉換后的IP地址,根據Index2計算出轉換后的新端口。
在本實施例中,為一對一地址轉換預留了多列索引指針的存儲空間,由于一對一的地址轉換只需要索引數組內的一列來索引,這樣可以支持多種協議進行一對一轉換。換句話說,如果有另一種協議需要一對一轉換,只要為該協議再分配一列來容納該協議的指向轉換單元的指針就可以了。例如要支持ILS(Internet Locator Service,Internet定位服務)協議,那么可以把第二列分配給該協議用于索引散列表。
基于上述步驟,在步驟3當對傳送的報文進行IP地址轉換時,首先要根據報文的IP協議號和端口號確定協議類型,再根據協議類型確定其對應的散列算法。即,在收到IP報文后,根據報文的IP協議號和端口號在應用協議注冊表查找協議的類型,如果查找到是已注冊的協議,則從該協議對應記錄中取得對應的散列算法標識,用該標識對應的散列算法查找二維數組中的轉換單元指針;如果是未注冊的協議,則使用默認的散列算法進行查找。
如果報文采用的協議支持一對一轉換,在數組的一對一轉換部分根據報文協議對應的散列算法找到指向一對一地址轉換單元的索引指針,從而完成一對一的IP地址轉換;如果報文采用的協議支持端口地址轉換,在數組的端口地址轉換部分根據報文協議對應的散列算法找到指向端口地址轉換單元的索引指針,從而完成IP地址和端口的轉換。
在上述轉換過程中,當報文IP地址的轉換是從私網IP地址向公網IP地址的轉換時,完成一對一的IP地址轉換通過下述過程實現按照報文的協議類型在數組的一對一轉換部分確定數組的一維,在該維的公網IP地址中,采用協議對應的散列算法確定其中的一個地址為轉移后的地址。
當報文IP地址的轉換是從私網IP地址向公網IP地址的轉換時,完成IP地址和端口的轉換通過下述過程實現在數組的端口地址轉換部分,采用協議對應的散列算法在數組的由公網IP地址標識的一維中,確定其中的一個地址為轉移后的地址;再利用該散列算法在數組的另一維中確定轉換后的新端口。
本例中,無論是一對一模式的IP地址轉換,還是PAT模式的IP地址轉換,當報文IP地址的轉換是首次從私網IP地址向公網IP地址的轉換時,建立該轉換對應的轉換單元,所述轉換單元用于存儲IP地址轉換信息,該信息包括報文的私網IP地址、私網端口號,轉換后的公網IP地址、公網端口號,報文的協議類型、轉換時間等。
當報文IP地址的轉換是從公網IP地址向私網IP地址的轉換時,完成一對一的IP地址轉換,以及完成IP地址和端口的轉換通過下述過程實現根據報文采用的協議及其對應的散列算法,在數組中找到對應的數組元素,根據該數組元素存儲的索引指針,找到該指針指向的轉換單元,根據轉換單元找到轉換后的私網IP地址和私網端口號,從而完成轉換。
下面通過圖1所述實施例的具體地址轉換應用對本發明作進一步說明。假定NAT轉換WWW、TELNET、NetBios、ILS四種應用協議的報文,這四種應用協議使用的協議號和知名端口號如下WWWTCP協議,端口號80;TELNET;TCP協議,端口號23;NetBiosUDP協議,端口號137;ILSTCP協議,端口號389;通過分析這幾種協議,可以確定,WWW、TELNET可以使用PAT方式的地址轉換;NetBios、ILS由于協議的特殊性需要進行一對一的地址轉換,無法進行PAT方式的轉換(使用PAT方式的地址轉換沒有實際意義)。按照上述確定的內容,首先應完成下述三個步驟的工作(1)注冊應用協議。在路由器啟動時,創建“應用協議注冊表”,這是一個全局的表,其中每個注冊表項唯一標識了一種應用協議。在該表項內記錄了協議號、知名端口號及該協議使用的地址轉換散列算法(HASH算法);
(2)配置地址轉換。配置地址轉換將接入列表(access-list)與地址池相關聯,確定了有哪些合法的公網地址可供地址轉換使用,這時創建二維索引數組。
(3)對報文進行地址轉換。根據報文的轉發方向,地址轉換可分為從內部私網向外部公網轉發的流程和從外部公網向內部私網轉發的流程,這兩個地址轉換過程是對稱的。
當數據報文由私網向公網轉發時步驟21地址轉換模塊收到IP層轉來的報文后,根據訪問控制列表判斷是否要對該報文進行地址轉換,如果不需要轉換就直接轉發,如果需要轉換則進入步驟22;步驟22查找應用協議注冊表。對于內部主機訪問Internet服務器,只需要根據IP協議號和目的端口查找應用協議注冊表項。例如如果是WWW報文,取報文內的IP協議號和目的端口號(應為知名端口80),在協議注冊表內進行查找。
步驟23確定散列算法。在步驟22內查找到應用協議的注冊表項,該表項內記錄了此種協議應使用的散列算法標識。例如WWW協議的散列算法標識為PAT方式的地址轉換,而NetBios協議的散列算法標識為NAT NetBios(該散列算法標識指定了使用一對一方式的地址轉換,且定義了散列位置,假定指定二維數組中的第一列來存儲),ILS協議的散列算法標識為NAT_ILS(也指定了一對一方式的地址轉換,指定二維數組的第二列來存儲),如果沒有查找到協議注冊表項,使用默認的散列算法,實際使用了PAT散列。換句話說,可以不注冊WWW協議,最后使用的散列算法仍然是PAT方式。
步驟24查找轉換單元。取報文的源地址(端口)信息,根據步驟23中確定的散列算法標識去查找地址轉換單元,如果未找到,就根據配置的地址轉換創建一個新的地址轉換單元,創建時也使用了步驟23確定的散列算法標識。該地址轉換單元內記錄了私有的地址(端口)和合法的Internet地址(端口)信息。
步驟25根據地址轉換單元記錄的信息,將報文的源地址轉換為合法的Internet地址。
當數據報文由公網向私網轉發的流程時步驟31查找應用協議注冊表。由于報文是從Internet服務器發往內部主機的,報文的源端口應為知名端口,取報文IP協議號和源端口查找應用協議注冊表項。
步驟32確定散列算法。
步驟33取根據報文的目的地址、目的端口和上一步確定的地址轉換散列算法到地址轉換單元里面查找地址轉換記錄,如果沒有相應的地址轉換散列表,則不進行NAT轉換,將報文直接轉發。
步驟34如果查找到了相應的地址轉換單元,根據地址轉換單元記錄的信息,將報文的目的地址和端口轉換為私網地址。
需要說明的是,在本發明的具體實施中,所述二維數組也可以用兩張表代替,在基于上二表的在PAT模式下同時支持一對一和多對多的地址轉換方法中,其包括的內容為
首先確定地址轉換所支持的應用協議類型和該協議所對應的地址轉換應采用的散列(HASH)算法;然后建立一對一轉換表和端口地址轉換(PAT)表,其中,一對一地址轉換表用于存儲指向一對一地址轉換單元的索引指針,端口地址轉換表用于存儲指向端口地址轉換單元的索引指針;這樣,當對傳送的報文進行地址轉換時,根據報文的IP協議號和端口號確定應用協議類型,再根據應用協議類型確定其對應的散列算法,如果報文對應的應用協議需要一對一的地址轉換,根據該報文應用協議所對應的散列算法在一對一轉換表找到指向地址轉換記錄的索引指針,從而完成一對一的地址轉換;如果報文對應的應用協議需要支持PAT方式的地址轉換,根據報文協議對應的散列算法在端口地址轉換表找到指向端口地址轉換單元的索引指針,從而完成IP地址和端口的轉換。
對于上述一對一轉換表來說,該表的一維下標為公網IP地址池的IP地址,另一維下標,為支持一對一轉換的協議類型;對于端口地址轉換表,該表的一維下標為公網IP地址池的IP地址,另一維下標為公網端口號,當然也可以為與公網端口號有一一對應關系的標識或者其它與公網端口號沒有一一對應關系的標識,在該標識與公網端口號沒有關系時,采用其它的方法獲取公網端口號。
權利要求
1.在PAT模式下同時支持一對一和多對多的地址轉換方法,包括步驟1確定地址轉換所支持的應用協議類型和該協議所對應的地址轉換應采用的散列(HASH)算法;步驟2建立一個數組,將該數組分為兩部分,分別為一對一轉換部分和端口地址轉換(PAT)部分,其中,一對一地址轉換部分用于存儲指向一對一地址轉換單元的索引指針,端口地址轉換部分用于存儲指向端口地址轉換單元的索引指針;步驟3當對傳送的報文進行地址轉換時,如果報文對應的應用協議需要一對一的地址轉換,根據該報文應用協議所對應的散列算法在索引數組的一對一轉換部分找到指向地址轉換記錄的索引指針,從而完成一對一的地址轉換;如果報文對應的應用協議需要支持PAT方式的地址轉換,根據報文協議對應的散列算法在索引數組的端口地址轉換部分找到指向端口地址轉換單元的索引指針,從而完成IP地址和端口的轉換。
2.根據權利要求1所述的同時支持一對一和多對多的地址轉換方法,其特征在于步驟2所述數組為二維數組,數組的一維下標為公網IP地址池的IP地址,另一維下標,對于數組的一對一轉換部分,為支持一對一轉換的協議類型;對于端口地址轉換部分,為與公網端口號有一一對應關系的標識。
3.根據權利要求2所述的同時支持一對一和多對多的地址轉換方法,其特征在于所述步驟3還包括根據報文的IP協議號和端口號確定應用協議類型,再根據應用協議類型確定其對應的散列算法。
4.根據權利要求3所述的同時支持一對一和多對多的地址轉換方法,其特征在于,當報文由私網發往Internet時,地址轉換將私網IP地址轉換為公網IP地址,對此,步驟3所述完成一對一的地址轉換通過下述過程實現按照報文的協議類型在數組的一對一轉換部分確定數組的一維,在該維的公網IP地址中,采用協議對應的散列算法確定其中的一個地址為轉移后的地址。
5.根據權利要求3所述的同時支持一對一和多對多的地址轉換方法,其特征在于,當報文IP地址的轉換是從私網IP地址向公網IP地址的轉換時,步驟3所述完成IP地址和端口的轉換通過下述過程實現在數組的端口地址轉換部分,采用協議對應的散列算法在數組的由公網IP地址標識的一維中,確定其中的一個地址為轉換后的地址,再利用該散列算法在數組的另一維中確定轉換后的新端口。
6.根據權利要求4或5所述的同時支持一對一和多對多的地址轉換方法,其特征在于步驟3還包括當報文IP地址的轉換是首次從私網IP地址向公網IP地址的轉換時,建立該轉換對應的轉換單元,所述轉換單元用于存儲IP地址轉換信息,該信息包括報文的私網IP地址、私網端口號,轉換后的公網IP地址、公網端口號,報文的協議類型。
7.根據權利要求6所述的同時支持一對一和多對多的地址轉換方法,其特征在于,當報文IP地址的轉換是從公網IP地址向私網IP地址的轉換時,步驟3所述完成一對一的IP地址轉換,以及完成IP地址和端口的轉換通過下述過程實現根據報文采用的協議及其對應的散列算法,在數組中找到對應的數組元素,根據該數組元素存儲的索引指針,找到該指針指向的轉換單元,根據轉換單元找到轉換后的私網IP地址和私網端口號。
8.在PAT模式下同時支持一對一和多對多的地址轉換方法,包括步驟A1確定地址轉換所支持的應用協議類型和該協議所對應的地址轉換應采用的散列(HASH)算法;步驟A2建立一對一轉換表和端口地址轉換(PAT)表,其中,一對一地址轉換表用于存儲指向一對一地址轉換單元的索引指針,端口地址轉換表用于存儲指向端口地址轉換單元的索引指針;步驟A3當對傳送的報文進行地址轉換時,如果報文對應的應用協議需要一對一的地址轉換,根據該報文應用協議所對應的散列算法在一對一轉換表找到指向地址轉換記錄的索引指針,從而完成一對一的地址轉換;如果報文對應的應用協議需要支持PAT方式的地址轉換,根據報文協議對應的散列算法在端口地址轉換表找到指向端口地址轉換單元的索引指針,從而完成IP地址和端口的轉換。
9.根據權利要求8所述的同時支持一對一和多對多的地址轉換方法,其特征在于對于一對一轉換表,該表的一維下標為公網IP地址池的IP地址,另一維下標,為支持一對一轉換的協議類型;對于端口地址轉換表,該表的一維下標為公網IP地址池的IP地址,為與公網端口號有一一對應關系的標識。
10.根據權利要求9所述的同時支持一對一和多對多的地址轉換方法,其特征在于所述步驟A3還包括根據報文的IP協議號和端口號確定應用協議類型,再根據應用協議類型確定其對應的散列算法。
全文摘要
本發明公開了一種在PAT模式下同時支持一對一和多對多的地址轉換方法,該方法首先確定IP地址轉換所支持的協議類型及其對應的IP地址轉換采用的散列算法,以及確定IP地址轉換使用的公網IP地址池和公網端口的集合;其次,建立一個用于存儲分別指向一對一地址轉換單元和端口地址轉換單元的索引指針的二維數組,這樣,當對傳送的報文進行IP地址轉換時,根據報文采用的協議對應的散列算法在上述數組中找到指向相應地址轉換單元的索引指針,從而完成IP地址轉換;上述方案能適應不同協議的地址轉換要求。
文檔編號H04L12/28GK1477825SQ02128928
公開日2004年2月25日 申請日期2002年8月21日 優先權日2002年8月21日
發明者王寧, 瞿祥明, 于光輝, 李健, 王 寧 申請人:華為技術有限公司
網(wang)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1