專(zhuān)利名稱(chēng):一種支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,尤其涉及一種通過(guò)查找應(yīng)用網(wǎng)關(guān)注冊(cè)表的方式支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法。
因特網(wǎng)地址分配組織規(guī)定以下的三類(lèi)網(wǎng)絡(luò)地址保留用做私有地址10.0.0.0-10.255.255.255172.16.0.0 -172.31.255.255192.168.0.0 -192.168.255.255如
圖1所示,內(nèi)部網(wǎng)絡(luò)就是使用了一個(gè)上述的“私有地址”的內(nèi)部局域網(wǎng)。通過(guò)地址轉(zhuǎn)換技術(shù),可以使這個(gè)內(nèi)部局域網(wǎng)的所有主機(jī)(或者部分主機(jī))都可以訪問(wèn)Internet。
地址轉(zhuǎn)換有一對(duì)一和PAT(port address tranlation)兩種方式。一對(duì)一方式的地址轉(zhuǎn)換,只對(duì)報(bào)文中的IP地址信息進(jìn)行轉(zhuǎn)換,在這種方式下,每一個(gè)內(nèi)部主機(jī)要占用地址池中的一個(gè)IP地址,當(dāng)?shù)刂烦貎?nèi)的地址被用盡時(shí),就不能允許其它主機(jī)訪問(wèn)Internet。因此,NAT方式只允許若干個(gè)主機(jī)同時(shí)訪問(wèn)Internet,可以同時(shí)訪問(wèn)Internet的主機(jī)數(shù)目受合法地址的多少的局限。
PAT方式的地址轉(zhuǎn)換使用了TCP/UDP的端口信息,用“地址+端口”來(lái)區(qū)分內(nèi)部局域網(wǎng)的主機(jī)對(duì)外發(fā)起的不同連接,即要轉(zhuǎn)換數(shù)據(jù)包中的源地址也要轉(zhuǎn)換端口信息,因此內(nèi)部局域網(wǎng)的許多主機(jī)可以共享一個(gè)IP地址訪問(wèn)Internet,這樣能允許更多的內(nèi)部主機(jī)同時(shí)訪問(wèn)Internet。在實(shí)際使用的過(guò)程中,PAT方式是最主要的地址轉(zhuǎn)換方式。
地址轉(zhuǎn)換改變了IP數(shù)據(jù)包頭的IP地址信息,可以隱藏內(nèi)部局域網(wǎng)的真實(shí)IP地址,因此具有一定的安全保護(hù)作用,但由此會(huì)導(dǎo)致許多對(duì)地址轉(zhuǎn)換敏感的應(yīng)用協(xié)議無(wú)法正常工作。
所謂對(duì)NAT敏感的協(xié)議是指該協(xié)議的某些報(bào)文的有效載荷中攜帶地址信息,需要NAT進(jìn)行特殊處理,除了改變1P包頭的地址信息以外還需要改變數(shù)據(jù)報(bào)文載荷中的地址信息。如果不按照地址轉(zhuǎn)換規(guī)則對(duì)這些IP地址和端口號(hào)進(jìn)行轉(zhuǎn)換處理,將會(huì)嚴(yán)重影響后繼的協(xié)議交互的一類(lèi)協(xié)議。一個(gè)非常典型的應(yīng)用就是FTP協(xié)議,下面以FTP為例說(shuō)明。
在FTP中包含兩種連接控制連接(會(huì)話(huà))、數(shù)據(jù)連接(傳輸)。其中控制連接是用大家都熟悉的21端口的TCP連接。數(shù)據(jù)連接是由客戶(hù)端通過(guò)控制連接“通知”服務(wù)器它已經(jīng)初始化好的地址和端口,然后FTP服務(wù)器通過(guò)20端口(默認(rèn)情況)將數(shù)據(jù)傳送到客戶(hù)端。當(dāng)客戶(hù)端通知服務(wù)器的時(shí)候,會(huì)用到“PORT命令”,其中在這次TCP連接的數(shù)據(jù)中是這樣的“PORT 10,110,1,2,13,23\D\A”(表示端口=13<<8+23,地址=10.110.1.2,其中地址就是內(nèi)部網(wǎng)絡(luò)中客戶(hù)端的IP地址),于是服務(wù)器就可以知道客戶(hù)端的數(shù)據(jù)連接的地址和端口了。很明顯,在地址轉(zhuǎn)換的過(guò)程中,對(duì)于PORT命令,我們除了改變IP地址以及端口信息,同時(shí)必須改變相應(yīng)TCP中的數(shù)據(jù),這樣才可以保證使FTP服務(wù)器端可以把數(shù)據(jù)發(fā)送到正確的客戶(hù)端。
隨著Internet的發(fā)展,地址轉(zhuǎn)換需要支持的應(yīng)用協(xié)議越來(lái)越多,必須對(duì)其進(jìn)行針對(duì)每一個(gè)對(duì)NAT敏感的協(xié)議進(jìn)行特殊處理,也就是需要實(shí)現(xiàn)這些協(xié)議的地址轉(zhuǎn)換應(yīng)用級(jí)網(wǎng)關(guān)。隨著應(yīng)用的增加,要求地址轉(zhuǎn)換能夠便捷地支持新的應(yīng)用網(wǎng)關(guān),在流程上具有良好的可擴(kuò)充性。
發(fā)明內(nèi)容
本發(fā)明就是針對(duì)現(xiàn)有技術(shù)的缺點(diǎn),提出一種通過(guò)注冊(cè)方式支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,以解決地址轉(zhuǎn)換后對(duì)協(xié)議的支持。
一種支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于在路由器上創(chuàng)建地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)注冊(cè)表,每個(gè)注冊(cè)表項(xiàng)標(biāo)識(shí)一種的應(yīng)用協(xié)議;在網(wǎng)絡(luò)地址轉(zhuǎn)換模塊中(NAT)定義一個(gè)處理回調(diào)函數(shù)的接口,如果NAT需要支持一種新的應(yīng)用協(xié)議,按照上述特殊處理回調(diào)函數(shù)接口,針對(duì)這種協(xié)議的報(bào)文載荷中需要處理的地址信息建立相應(yīng)的應(yīng)用協(xié)議處理函數(shù),并注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表;在通信過(guò)程中,當(dāng)有新的協(xié)議出現(xiàn)時(shí),通過(guò)查找應(yīng)用網(wǎng)關(guān)注冊(cè)表識(shí)別該應(yīng)用協(xié)議,通過(guò)注冊(cè)的應(yīng)用協(xié)議回調(diào)函數(shù)來(lái)實(shí)現(xiàn)應(yīng)用網(wǎng)關(guān)的地址轉(zhuǎn)換。
所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,還包括將該應(yīng)用協(xié)議對(duì)應(yīng)的IP協(xié)議號(hào)、知名端口號(hào)和應(yīng)用協(xié)議的處理回調(diào)函數(shù)指針作為注冊(cè)參數(shù)。
所述的應(yīng)用協(xié)議處理函數(shù),只對(duì)該協(xié)議報(bào)文載荷中的私有地址轉(zhuǎn)換為合法的公有地址。
所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,還包括一個(gè)設(shè)置訪問(wèn)控制列表步驟,該列表是依據(jù)IP數(shù)據(jù)包報(bào)頭以及其所承載的上層協(xié)議數(shù)據(jù)包頭的格式定義的規(guī)則,由該規(guī)則判斷是否對(duì)數(shù)據(jù)報(bào)文進(jìn)行地址轉(zhuǎn)換。
所述的應(yīng)用協(xié)議報(bào)文向位于公網(wǎng)上的服務(wù)器轉(zhuǎn)發(fā),與向私網(wǎng)內(nèi)的服務(wù)器轉(zhuǎn)發(fā)時(shí)需要進(jìn)行不同的特殊處理,應(yīng)用網(wǎng)關(guān)需要為不同位置的服務(wù)器分別提供特殊處理的應(yīng)用協(xié)議處理函數(shù),這些處理函數(shù)均被注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng)內(nèi),地址轉(zhuǎn)換流程根據(jù)報(bào)文的轉(zhuǎn)發(fā)目的服務(wù)器所在位置決定調(diào)用哪一個(gè)回調(diào)函數(shù)。
所述的應(yīng)用協(xié)議報(bào)文由私網(wǎng)向公網(wǎng)轉(zhuǎn)發(fā),與從公網(wǎng)向私網(wǎng)轉(zhuǎn)發(fā)時(shí)需要進(jìn)行不同的特殊處理,應(yīng)用網(wǎng)關(guān)需要為轉(zhuǎn)換方向和還原方向分別提供特殊處理的應(yīng)用協(xié)議處理函數(shù),這些處理函數(shù)均被注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng)內(nèi),地址轉(zhuǎn)換流程根據(jù)報(bào)文的轉(zhuǎn)發(fā)方向決定調(diào)用哪一個(gè)回調(diào)函數(shù)。
所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,數(shù)據(jù)報(bào)文由私網(wǎng)向公網(wǎng)轉(zhuǎn)發(fā)的流程為a、地址轉(zhuǎn)換模塊收到IP層轉(zhuǎn)來(lái)的報(bào)文后,根據(jù)訪問(wèn)控制列表判斷是否要對(duì)該報(bào)文進(jìn)行地址轉(zhuǎn)換,如果不需要轉(zhuǎn)換就直接轉(zhuǎn)發(fā),如果需要轉(zhuǎn)換則進(jìn)入步驟b;b、取報(bào)文的源地址信息查找地址轉(zhuǎn)換散列表,如果未找到,就根據(jù)配置的地址轉(zhuǎn)換創(chuàng)建一個(gè)新的地址轉(zhuǎn)換散列表,該地址轉(zhuǎn)換散列表內(nèi)記錄了私有的地址和合法的Internet地址信息;c、根據(jù)地址轉(zhuǎn)換散列表記錄的信息,將報(bào)文的源地址轉(zhuǎn)換為合法的Internet地址;d、查找應(yīng)用網(wǎng)關(guān)注冊(cè)表,根據(jù)查找結(jié)果確定對(duì)該報(bào)文是否需要應(yīng)用網(wǎng)關(guān)的特殊處理,如果不需要,即只需要轉(zhuǎn)換報(bào)文頭內(nèi)的地址信息,地址轉(zhuǎn)換結(jié)束,否則進(jìn)入步驟e;e、通過(guò)調(diào)用此協(xié)議特殊處理的應(yīng)用協(xié)議處理函數(shù),轉(zhuǎn)換報(bào)文載荷內(nèi)的地址信息。
所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,步驟d中,對(duì)于內(nèi)部主機(jī)訪問(wèn)Internet服務(wù)器,只需要根據(jù)IP協(xié)議號(hào)和目的端口查找應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng)。
所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,步驟c中的轉(zhuǎn)換過(guò)程由NAT完成,只轉(zhuǎn)換了報(bào)文頭內(nèi)的IP地址。
所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,當(dāng)數(shù)據(jù)報(bào)文由公網(wǎng)向私網(wǎng)轉(zhuǎn)發(fā)的流程為a、地址轉(zhuǎn)換模塊收到IP層轉(zhuǎn)來(lái)的報(bào)文后,根據(jù)報(bào)文的目的地址、目的端口到地址轉(zhuǎn)換散列表里面查找地址轉(zhuǎn)換記錄,如果沒(méi)有相應(yīng)的地址轉(zhuǎn)換散列表,則不進(jìn)行NAT轉(zhuǎn)換,將報(bào)文直接轉(zhuǎn)發(fā),如果查找到了相應(yīng)的地址轉(zhuǎn)換散列表,則進(jìn)入步驟b;b、根據(jù)散列表內(nèi)記錄的地址轉(zhuǎn)換信息,地址轉(zhuǎn)換模塊將報(bào)文頭內(nèi)的目的地址信息轉(zhuǎn)換成私網(wǎng)用戶(hù)的地址;c、查找應(yīng)用網(wǎng)關(guān)注冊(cè)表,根據(jù)查找結(jié)果確定對(duì)該報(bào)文是否需要應(yīng)用網(wǎng)關(guān)的特殊處理,如果不需要,地址還原流程已結(jié)束,如果需要,進(jìn)入步驟d;d、調(diào)用還原方向的應(yīng)用協(xié)議處理函數(shù),轉(zhuǎn)換報(bào)文載荷內(nèi)的地址信息。所述的步驟b中,只轉(zhuǎn)換了報(bào)文頭內(nèi)的IP地址。
本發(fā)明在實(shí)現(xiàn)一般的地址轉(zhuǎn)換功能的基礎(chǔ)上,通過(guò)特殊協(xié)議注冊(cè)的方式提供了完善的地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)擴(kuò)充機(jī)制。如果要地址轉(zhuǎn)換支持一種新的應(yīng)用協(xié)議,只需開(kāi)發(fā)該協(xié)議的地址轉(zhuǎn)換應(yīng)用級(jí)網(wǎng)關(guān),借助本方法的應(yīng)用網(wǎng)關(guān)注冊(cè)手段將其注冊(cè),就可以使得NAT技術(shù)支持該協(xié)議,而不需要改變NAT流程及其它已經(jīng)支持的協(xié)議。本發(fā)明在流程上便于支持新的應(yīng)用協(xié)議,很好地解決了地址轉(zhuǎn)換需要不斷支持新的應(yīng)用協(xié)議的問(wèn)題。
本發(fā)明的核心思想,是通過(guò)注冊(cè)的方式擴(kuò)充N(xiāo)AT支持新的應(yīng)用網(wǎng)關(guān),通過(guò)查找應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng)識(shí)別應(yīng)用協(xié)議,再通過(guò)注冊(cè)的回調(diào)函數(shù)來(lái)實(shí)現(xiàn)應(yīng)用網(wǎng)關(guān)的地址轉(zhuǎn)換流程。
本發(fā)明要先在路由器上創(chuàng)建一個(gè)地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)注冊(cè)表,該表中包括應(yīng)用網(wǎng)關(guān)的特殊處理回調(diào)函數(shù)指針,還包括該協(xié)議對(duì)應(yīng)的IP協(xié)議號(hào)、知名端口號(hào),這樣,每個(gè)注冊(cè)表項(xiàng)就標(biāo)識(shí)了一種特殊的應(yīng)用協(xié)議;在NAT定義一個(gè)特殊處理回調(diào)函數(shù)接口,該接口的定義方式可能根據(jù)不同的開(kāi)發(fā)者有不同的定義,但主要功能都是一個(gè)函數(shù)指針的作用。當(dāng)NAT需要支持一種新的應(yīng)用協(xié)議時(shí),由開(kāi)發(fā)人員按照上述的特殊處理回調(diào)函數(shù)接口,針對(duì)這種協(xié)議的報(bào)文載荷中需要處理的地址信息開(kāi)發(fā)相應(yīng)的應(yīng)用協(xié)議處理函數(shù),并將該函數(shù)作為注冊(cè)參數(shù)注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表中。該應(yīng)用協(xié)議處理函數(shù)只需將該協(xié)議報(bào)文載荷中的私有地址轉(zhuǎn)換為合法的公有地址,而不必對(duì)報(bào)文頭內(nèi)的地址信息進(jìn)行處理。
由于應(yīng)用協(xié)議報(bào)文從私網(wǎng)向公網(wǎng)轉(zhuǎn)發(fā)與從公網(wǎng)向私網(wǎng)轉(zhuǎn)發(fā),有可能需要不同的處理方式,所以開(kāi)發(fā)的應(yīng)用協(xié)議處理函數(shù)可能相同,也可能不相同,因此可以開(kāi)發(fā)不同的應(yīng)用協(xié)議處理函數(shù),分為轉(zhuǎn)換方向和還原方向的應(yīng)用協(xié)議處理函數(shù),這要根據(jù)實(shí)際情況來(lái)確定。
同樣,由于應(yīng)用協(xié)議報(bào)文向位于公網(wǎng)上的服務(wù)器轉(zhuǎn)發(fā),與向私網(wǎng)內(nèi)的服務(wù)器轉(zhuǎn)發(fā)時(shí)需要進(jìn)行不同的特殊處理,應(yīng)用網(wǎng)關(guān)需要為不同位置的服務(wù)器分別提供特殊處理的應(yīng)用協(xié)議處理函數(shù),這些處理函數(shù)均被注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng)內(nèi),地址轉(zhuǎn)換流程根據(jù)報(bào)文的轉(zhuǎn)發(fā)目的服務(wù)器所在位置決定調(diào)用哪一個(gè)回調(diào)函數(shù)。
最后,將該應(yīng)用協(xié)議對(duì)應(yīng)的IP協(xié)議號(hào)、知名端口號(hào)、應(yīng)用協(xié)議的處理回調(diào)函數(shù)指針作為注冊(cè)參數(shù),創(chuàng)建新的應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng),將該表項(xiàng)添加到前面形成的應(yīng)用網(wǎng)關(guān)注冊(cè)表中。實(shí)現(xiàn)新的應(yīng)用網(wǎng)關(guān),借助了NAT基本功能模塊的注冊(cè)手段,而不需要對(duì)NAT基本功能模塊及其它應(yīng)用網(wǎng)關(guān)進(jìn)行任何修改。
當(dāng)有新的協(xié)議出現(xiàn),通過(guò)查找上面形成的應(yīng)用網(wǎng)關(guān)注冊(cè)表識(shí)別該應(yīng)用協(xié)議,通過(guò)注冊(cè)的應(yīng)用協(xié)議處理函數(shù)來(lái)實(shí)現(xiàn)應(yīng)用網(wǎng)關(guān)的地址轉(zhuǎn)換。
在使用時(shí),可以設(shè)置訪問(wèn)控制列表,該列表實(shí)際上是一個(gè)判斷規(guī)則,是依據(jù)IP數(shù)據(jù)包報(bào)頭以及它承載的上層協(xié)議數(shù)據(jù)包頭的格式定義了規(guī)則,可以表示允許或者是禁止具有某些特征(包頭數(shù)據(jù)可以描述的)的數(shù)據(jù)包,由該規(guī)則判斷是否對(duì)往來(lái)的數(shù)據(jù)報(bào)文進(jìn)行地址轉(zhuǎn)換。如果需要進(jìn)行地址轉(zhuǎn)換,則通過(guò)查找應(yīng)用網(wǎng)關(guān)注冊(cè)表識(shí)別該應(yīng)用協(xié)議,通過(guò)注冊(cè)的應(yīng)用協(xié)議處理函數(shù)來(lái)實(shí)現(xiàn)應(yīng)用網(wǎng)關(guān)的地址轉(zhuǎn)換。
如圖2所示,是在本發(fā)明中,一個(gè)數(shù)據(jù)報(bào)文由私網(wǎng)向公網(wǎng)轉(zhuǎn)發(fā)的流程,具體包括如下步驟a、地址轉(zhuǎn)換模塊收到IP層轉(zhuǎn)來(lái)的報(bào)文后,根據(jù)定義的訪問(wèn)控制列表判斷是否要對(duì)該報(bào)文進(jìn)行地址轉(zhuǎn)換,如果不需要轉(zhuǎn)換就直接轉(zhuǎn)發(fā);如果需要轉(zhuǎn)換,繼續(xù)步驟b;b、取報(bào)文的源地址(端口)信息查找地址轉(zhuǎn)換散列表,如果未找到,就根據(jù)配置的地址轉(zhuǎn)換創(chuàng)建一個(gè)新的散列表,該散列表內(nèi)記錄了私有的地址(端口)和合法的Internet地址(端口)信息,散列表內(nèi)記錄了每一個(gè)NAT轉(zhuǎn)換的源地址、源端口、協(xié)議、時(shí)間、轉(zhuǎn)換后的地址和端口等信息,各個(gè)開(kāi)發(fā)者實(shí)現(xiàn)的方式可能會(huì)因?yàn)樗惴ú煌兴煌籧、根據(jù)地址轉(zhuǎn)換散列表記錄的信息,將報(bào)文的源地址轉(zhuǎn)換為合法的Internet地址;上述轉(zhuǎn)換過(guò)程由NAT基本功能完成,實(shí)際上只轉(zhuǎn)換了報(bào)文頭內(nèi)的IP地址(端口),所有需要地址轉(zhuǎn)換的報(bào)文都需要經(jīng)過(guò)以上轉(zhuǎn)換過(guò)程,而不管該報(bào)文是否屬于特殊的應(yīng)用協(xié)議,以上的步驟實(shí)際上是現(xiàn)有的NAT地址轉(zhuǎn)換一致。
d、通過(guò)地址轉(zhuǎn)換流程查找應(yīng)用網(wǎng)關(guān)注冊(cè)表對(duì)于內(nèi)部主機(jī)訪問(wèn)Internet服務(wù)器的應(yīng)用,因?yàn)樵撃康亩丝跒橹丝?,只需要根?jù)IP協(xié)議號(hào)和目的端口查找應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng);地址轉(zhuǎn)換流程根據(jù)查找結(jié)果確定對(duì)該報(bào)文是否需要應(yīng)用網(wǎng)關(guān)的特殊處理,如果不需要,即只需要轉(zhuǎn)換報(bào)文頭內(nèi)的地址(端口)信息,地址轉(zhuǎn)換已結(jié)束;如果需要對(duì)報(bào)文進(jìn)行特殊處理,則進(jìn)入步驟e;e、地址轉(zhuǎn)換流程通過(guò)特殊處理回調(diào)函數(shù)指針直接調(diào)用此協(xié)議的應(yīng)用協(xié)議處理函數(shù),轉(zhuǎn)換報(bào)文載荷內(nèi)的地址信息。由于在應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng)內(nèi)已經(jīng)事先注冊(cè)了該特殊處理回調(diào)函數(shù)的指針,因此地址轉(zhuǎn)換流程可以通過(guò)函數(shù)指針直接調(diào)用此回調(diào)函數(shù),轉(zhuǎn)換報(bào)文載荷內(nèi)的地址信息。
經(jīng)過(guò)步驟d、e后,已經(jīng)將報(bào)文載荷內(nèi)的私有地址轉(zhuǎn)換成為合法的Internet地址,使應(yīng)用協(xié)議的后續(xù)交互過(guò)程能夠正常完成。
如圖3所示,是本發(fā)明IP報(bào)文由Internet發(fā)往的內(nèi)部私網(wǎng)地址轉(zhuǎn)換流程圖,從圖中可以看到,報(bào)文由Internet發(fā)往內(nèi)部私網(wǎng),地址轉(zhuǎn)換還原的流程與此相似,不同的是,地址還原過(guò)程只查找已經(jīng)存在的散列表,將報(bào)文的目的地址信息轉(zhuǎn)換為內(nèi)部私網(wǎng)的地址信息,過(guò)程如下a、地址轉(zhuǎn)換模塊收到IP層轉(zhuǎn)來(lái)的報(bào)文后,根據(jù)報(bào)文的目的地址、目的端口到地址轉(zhuǎn)換散列表里面查找地址轉(zhuǎn)換記錄,如果沒(méi)有相應(yīng)的地址轉(zhuǎn)換散列表,則不進(jìn)行NAT轉(zhuǎn)換,將報(bào)文直接轉(zhuǎn)發(fā),如果查找到了相應(yīng)的地址轉(zhuǎn)換散列表,則進(jìn)入步驟b;b、根據(jù)散列表內(nèi)記錄的地址轉(zhuǎn)換信息,地址轉(zhuǎn)換模塊將報(bào)文頭內(nèi)的目的地址(端口)信息轉(zhuǎn)換成私網(wǎng)用戶(hù)的地址;上述轉(zhuǎn)換過(guò)程也是由NAT基本功能完成,實(shí)際上只轉(zhuǎn)換了報(bào)文頭內(nèi)的IP地址。
c、地址還原流程查找應(yīng)用網(wǎng)關(guān)注冊(cè)表,根據(jù)查找結(jié)果確定對(duì)該報(bào)文是否需要應(yīng)用網(wǎng)關(guān)的特殊處理,如果不需要,地址還原流程已結(jié)束,如果需要,進(jìn)入步驟d;d、地址還原流程調(diào)用還原方向的應(yīng)用協(xié)議處理函數(shù),轉(zhuǎn)換報(bào)文載荷內(nèi)的地址信息。
本發(fā)明在實(shí)現(xiàn)一般的地址轉(zhuǎn)換功能的基礎(chǔ)上,通過(guò)特殊協(xié)議注冊(cè)的方式提供了完善的地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)擴(kuò)充機(jī)制。如果要地址轉(zhuǎn)換支持一種新的應(yīng)用協(xié)議,只需開(kāi)發(fā)該協(xié)議的地址轉(zhuǎn)換應(yīng)用級(jí)網(wǎng)關(guān),借助本方法的應(yīng)用網(wǎng)關(guān)注冊(cè)手段將其注冊(cè),就可以使得NAT技術(shù)支持該協(xié)議,而不需要改變NAT流程及其它已經(jīng)支持的協(xié)議。本發(fā)明在流程上便于支持新的應(yīng)用協(xié)議,很好地解決了地址轉(zhuǎn)換需要不斷支持新的應(yīng)用協(xié)議的問(wèn)題。
我們以前面所述的FTP協(xié)議為例來(lái)說(shuō)明。
要使NAT能夠支持FTP協(xié)議,允許內(nèi)部私網(wǎng)的用戶(hù)訪問(wèn)Internet上的FTP站點(diǎn),必須確定要對(duì)FTP哪些報(bào)文進(jìn)行特殊轉(zhuǎn)換,需要進(jìn)行什么樣的處理。當(dāng)私網(wǎng)的用戶(hù)GET文件或執(zhí)行LIST命令時(shí),會(huì)在FTP控制報(bào)文內(nèi)發(fā)送命令“PORT 10,110,1,2,13,23\D\A”(表示端口=13<<8+23,地址=10.110.1.2),其中的地址是用戶(hù)的私網(wǎng)IP地址,Internet上的FTP服務(wù)器會(huì)向PORT命令指定的端口發(fā)送數(shù)據(jù)連接。顯然,如果不對(duì)PORT命令進(jìn)行特殊處理,建立數(shù)據(jù)連接會(huì)失敗,必須將PORT命令攜帶的私有地址轉(zhuǎn)換為合法的Internet地址,并根據(jù)數(shù)據(jù)連接使用的地址和端口創(chuàng)建一個(gè)地址轉(zhuǎn)換散列表,以允許FTP服務(wù)器能主動(dòng)向私網(wǎng)用戶(hù)的主機(jī)發(fā)起數(shù)據(jù)連接。
開(kāi)發(fā)人員按照NAT定義的特殊處理回調(diào)函數(shù)接口開(kāi)發(fā)相應(yīng)的FTP協(xié)議處理函數(shù)。該處理函數(shù)負(fù)責(zé)把FTP PORT命令攜帶的私有地址轉(zhuǎn)換成合法的Internet地址,并根據(jù)PORT命令指定的端口和地址創(chuàng)建一個(gè)地址轉(zhuǎn)換散列表,這樣才能允許FTP服務(wù)器主動(dòng)向私網(wǎng)用戶(hù)主機(jī)發(fā)起FTP數(shù)據(jù)連接。該處理函數(shù)只需處理FTP控制報(bào)文載荷的內(nèi)容,而不必轉(zhuǎn)換報(bào)文IP頭內(nèi)的地址和TCP頭內(nèi)的端口號(hào),IP頭內(nèi)的地址和TCP頭內(nèi)的端口號(hào)由NAT基本功能模塊負(fù)責(zé)轉(zhuǎn)換為公有地址。
最后,將FTP PORT命令的處理函數(shù)注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表中。FTP的控制連接使用知名的TCP 21端口,只需要將TCP協(xié)議、知名端口21、FTP PORT命令處理函數(shù)作為注冊(cè)參數(shù)創(chuàng)建一個(gè)應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng),在路由器啟動(dòng)時(shí),調(diào)用相應(yīng)的注冊(cè)函數(shù)添加到應(yīng)用網(wǎng)關(guān)注冊(cè)表中。這樣便能使NAT能支持FTP協(xié)議了。
NAT轉(zhuǎn)換FTP PORT報(bào)文的詳細(xì)過(guò)程前面已經(jīng)敘述過(guò),在此不再描述。
以上舉例可以看出,要支持新的應(yīng)用網(wǎng)關(guān)借助了NAT基本功能模塊的注冊(cè)手段,只需要開(kāi)發(fā)對(duì)應(yīng)的應(yīng)用協(xié)議特殊處理函數(shù)并進(jìn)行注冊(cè),而不需要對(duì)NAT基本功能模塊及其它應(yīng)用網(wǎng)關(guān)進(jìn)行任何修改。
從上面的實(shí)施例不難看出,本發(fā)明實(shí)現(xiàn)簡(jiǎn)單,不需增添新的硬件設(shè)備,而且對(duì)已有的智能網(wǎng)系統(tǒng)沒(méi)有任何限制,但卻能大大方便用戶(hù)。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書(shū)的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于在路由器上創(chuàng)建地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)注冊(cè)表,每個(gè)注冊(cè)表項(xiàng)標(biāo)識(shí)一種應(yīng)用協(xié)議;在網(wǎng)絡(luò)地址轉(zhuǎn)換模塊中(NAT)定義一個(gè)處理回調(diào)函數(shù)的接口,如果NAT需要支持一種新的應(yīng)用協(xié)議,按照上述特殊處理回調(diào)函數(shù)接口,針對(duì)這種協(xié)議的報(bào)文載荷中需要處理的地址信息建立相應(yīng)的應(yīng)用協(xié)議處理函數(shù),并注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表;在通信過(guò)程中,當(dāng)有新的協(xié)議出現(xiàn)時(shí),通過(guò)查找應(yīng)用網(wǎng)關(guān)注冊(cè)表識(shí)別該應(yīng)用協(xié)議,通過(guò)注冊(cè)的應(yīng)用協(xié)議回調(diào)函數(shù)來(lái)實(shí)現(xiàn)應(yīng)用網(wǎng)關(guān)的地址轉(zhuǎn)換。
2.如權(quán)利要求1所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于還包括將該應(yīng)用協(xié)議對(duì)應(yīng)的IP協(xié)議號(hào)、知名端口號(hào)和應(yīng)用協(xié)議的處理回調(diào)函數(shù)指針作為注冊(cè)參數(shù)。
3.如權(quán)利要求2所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于所述的應(yīng)用協(xié)議處理函數(shù),只對(duì)該協(xié)議報(bào)文載荷中的私有地址轉(zhuǎn)換為合法的公有地址。
4.如權(quán)利要求3所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于還包括一個(gè)設(shè)置訪問(wèn)控制列表步驟,該列表是依據(jù)IP數(shù)據(jù)包報(bào)頭以及其所承載的上層協(xié)議數(shù)據(jù)包頭的格式定義的規(guī)則,由該規(guī)則判斷是否對(duì)數(shù)據(jù)報(bào)文進(jìn)行地址轉(zhuǎn)換。
5.如權(quán)利要求4所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于所述的應(yīng)用協(xié)議報(bào)文向位于公網(wǎng)上的服務(wù)器轉(zhuǎn)發(fā),與向私網(wǎng)內(nèi)的服務(wù)器轉(zhuǎn)發(fā)時(shí)需要進(jìn)行不同的特殊處理,應(yīng)用網(wǎng)關(guān)需要為不同位置的服務(wù)器分別提供特殊處理的應(yīng)用協(xié)議處理函數(shù),這些處理函數(shù)均被注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng)內(nèi),地址轉(zhuǎn)換流程根據(jù)報(bào)文的轉(zhuǎn)發(fā)目的服務(wù)器所在位置決定調(diào)用哪一個(gè)回調(diào)函數(shù)。
6.如權(quán)利要求5所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于所述的應(yīng)用協(xié)議報(bào)文由私網(wǎng)向公網(wǎng)轉(zhuǎn)發(fā),與從公網(wǎng)向私網(wǎng)轉(zhuǎn)發(fā)時(shí)需要進(jìn)行不同的特殊處理,應(yīng)用網(wǎng)關(guān)需要為轉(zhuǎn)換方向和還原方向分別提供特殊處理的應(yīng)用協(xié)議處理函數(shù),這些處理函數(shù)均被注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng)內(nèi),地址轉(zhuǎn)換流程根據(jù)報(bào)文的轉(zhuǎn)發(fā)方向決定調(diào)用哪一個(gè)回調(diào)函數(shù)。
7.如權(quán)利要求6所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于數(shù)據(jù)報(bào)文由私網(wǎng)向公網(wǎng)轉(zhuǎn)發(fā)的流程為a、地址轉(zhuǎn)換模塊收到IP層轉(zhuǎn)來(lái)的報(bào)文后,根據(jù)訪問(wèn)控制列表判斷是否要對(duì)該報(bào)文進(jìn)行地址轉(zhuǎn)換,如果不需要轉(zhuǎn)換就直接轉(zhuǎn)發(fā),如果需要轉(zhuǎn)換則進(jìn)入步驟b;b、取報(bào)文的源地址信息查找地址轉(zhuǎn)換散列表,如果未找到,就根據(jù)配置的地址轉(zhuǎn)換創(chuàng)建一個(gè)新的地址轉(zhuǎn)換散列表,該地址轉(zhuǎn)換散列表內(nèi)記錄了私有的地址和合法的Internet地址信息;c、根據(jù)地址轉(zhuǎn)換散列表記錄的信息,將報(bào)文的源地址轉(zhuǎn)換為合法的Internet地址;d、查找應(yīng)用網(wǎng)關(guān)注冊(cè)表,根據(jù)查找結(jié)果確定對(duì)該報(bào)文是否需要應(yīng)用網(wǎng)關(guān)的特殊處理,如果不需要,即只需要轉(zhuǎn)換報(bào)文頭內(nèi)的地址信息,地址轉(zhuǎn)換結(jié)束,否則進(jìn)入步驟e;e、通過(guò)調(diào)用此協(xié)議特殊處理的應(yīng)用協(xié)議處理函數(shù),轉(zhuǎn)換報(bào)文載荷內(nèi)的地址信息。
8.如權(quán)利要求7所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于步驟d中,對(duì)于內(nèi)部主機(jī)訪問(wèn)Internet服務(wù)器,只需要根據(jù)IP協(xié)議號(hào)和目的端口查找應(yīng)用網(wǎng)關(guān)注冊(cè)表項(xiàng)。
9.如權(quán)利要求7所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于步驟c中的轉(zhuǎn)換過(guò)程由NAT完成,只轉(zhuǎn)換了報(bào)文頭內(nèi)的IP地址。
10.如權(quán)利要求6所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于當(dāng)數(shù)據(jù)報(bào)文由公網(wǎng)向私網(wǎng)轉(zhuǎn)發(fā)的流程為a、地址轉(zhuǎn)換模塊收到IP層轉(zhuǎn)來(lái)的報(bào)文后,根據(jù)報(bào)文的目的地址、目的端口到地址轉(zhuǎn)換散列表里面查找地址轉(zhuǎn)換記錄,如果沒(méi)有相應(yīng)的地址轉(zhuǎn)換散列表,則不進(jìn)行NAT轉(zhuǎn)換,將報(bào)文直接轉(zhuǎn)發(fā),如果查找到了相應(yīng)的地址轉(zhuǎn)換散列表,則進(jìn)入步驟b;b、根據(jù)散列表內(nèi)記錄的地址轉(zhuǎn)換信息,地址轉(zhuǎn)換模塊將報(bào)文頭內(nèi)的目的地址信息轉(zhuǎn)換成私網(wǎng)用戶(hù)的地址;c、查找應(yīng)用網(wǎng)關(guān)注冊(cè)表,根據(jù)查找結(jié)果確定對(duì)該報(bào)文是否需要應(yīng)用網(wǎng)關(guān)的特殊處理,如果不需要,地址還原流程已結(jié)束,如果需要,進(jìn)入步驟d;d、調(diào)用還原方向的應(yīng)用協(xié)議處理函數(shù),轉(zhuǎn)換報(bào)文載荷內(nèi)的地址信息。
11.如權(quán)利要求10所述的支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法,其特征在于所述的步驟b中,只轉(zhuǎn)換了報(bào)文頭內(nèi)的IP地址。
全文摘要
本發(fā)明涉及一種支持地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)的方法。包括在路由器上創(chuàng)建地址轉(zhuǎn)換應(yīng)用網(wǎng)關(guān)注冊(cè)表,每個(gè)注冊(cè)表項(xiàng)標(biāo)識(shí)一種的應(yīng)用協(xié)議;在網(wǎng)絡(luò)地址轉(zhuǎn)換模塊中(NAT)定義一個(gè)處理回調(diào)函數(shù)的接口,如果NAT需要支持一種新的應(yīng)用協(xié)議,按照上述特殊處理回調(diào)函數(shù)接口,針對(duì)這種協(xié)議的報(bào)文載荷中需要處理的地址信息建立相應(yīng)的應(yīng)用協(xié)議處理函數(shù),并注冊(cè)到應(yīng)用網(wǎng)關(guān)注冊(cè)表;在通信過(guò)程中,當(dāng)有新的協(xié)議出現(xiàn)時(shí),通過(guò)查找應(yīng)用網(wǎng)關(guān)注冊(cè)表識(shí)別該應(yīng)用協(xié)議,通過(guò)注冊(cè)的應(yīng)用協(xié)議回調(diào)函數(shù)來(lái)實(shí)現(xiàn)應(yīng)用網(wǎng)關(guān)的地址轉(zhuǎn)換。本發(fā)明很好地解決了地址轉(zhuǎn)換需要不斷支持新的應(yīng)用協(xié)議的問(wèn)題。
文檔編號(hào)H04L12/66GK1476208SQ02125708
公開(kāi)日2004年2月18日 申請(qǐng)日期2002年8月13日 優(yōu)先權(quán)日2002年8月13日
發(fā)明者李健, 李 健 申請(qǐng)人:華為技術(shù)有限公司