CN101325580B - 基于nat-pt的ftp应用层网关的实现方法 - Google Patents

基于nat-pt的ftp应用层网关的实现方法 Download PDF

Info

Publication number
CN101325580B
CN101325580B CN2007100420455A CN200710042045A CN101325580B CN 101325580 B CN101325580 B CN 101325580B CN 2007100420455 A CN2007100420455 A CN 2007100420455A CN 200710042045 A CN200710042045 A CN 200710042045A CN 101325580 B CN101325580 B CN 101325580B
Authority
CN
China
Prior art keywords
address
order
ftp
port
ipv4
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2007100420455A
Other languages
English (en)
Other versions
CN101325580A (zh
Inventor
杨兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI YIREN COMMUNICATION TERMINAL CO Ltd
Infinite Shanghai Communication Terminals Ltd
Original Assignee
SHANGHAI YIREN COMMUNICATION TERMINAL CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SHANGHAI YIREN COMMUNICATION TERMINAL CO Ltd filed Critical SHANGHAI YIREN COMMUNICATION TERMINAL CO Ltd
Priority to CN2007100420455A priority Critical patent/CN101325580B/zh
Publication of CN101325580A publication Critical patent/CN101325580A/zh
Application granted granted Critical
Publication of CN101325580B publication Critical patent/CN101325580B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开一种基于NAT-PT的FTP应用层网关的实现方法,用于IPv4网络和IPv6网络之间FTP协议的转换,其包括以下步骤:a.接收FTP报文,判断其是否是数据包报文,如果是,则创建数据会话;如果不是数据包报文,则执行下列步骤:b.解析FTP命令以获悉该命令的类型;c.对FTP命令进行转换,其中当命令包含IP地址和/或端口时,同时对IP地址和/或端口进行转换;d.当FTP命令是PORT命令、EPRT命令、PASV命令、或者EPSV命令时,创建控制会话;以及e.当FTP命令是EPRT命令时,在创建控制会话的同时创建数据会话,而当命令是EPSV命令时,在创建控制会话的同时创建一数据临时会话。

Description

基于NAT-PT的FTP应用层网关的实现方法
技术领域
本发明涉及一种FTP应用层网关,尤其涉及基于NAT-PT的FTP应用层网关的实现方法。
背景技术
IPv4(TCP/IP)协议是当Internet上最重要的协议族,它是连接到Internet上的所有计算机都必须支持的协议。但是,随着Internet的发展,IPv4的一些缺点也逐渐暴露出来,其中最主要的缺点就是地址空间严重不足。由于历史原因,分配给我国的IPv4地址较少,地址枯竭问题就更加严重。
IPv6是设计用来替代现有IPv4(TCP/IP)协议,也被称作下一代互联网协议。IPv6是为了解决IPv4所存在的一些问题和不足而提出的,同时它还在许多方面提出了改进,例如路由方面、自动配置方面。IPv6协议包括IPv6基本协议和ICMPv6协议。
虽然IPv6的优越性无庸置疑,但要IPv4马上退出历史舞台显然是不可能的,所以在一段很长的时间内,V4节点和V6节点将共同存在。由于V4和V6节点必然要经常通信,所以必须要实现一种有效的转换机制,使得V4节点和V6节点能够无障碍的通信。为了解决这个难题,提出了网络地址转换-协议转换(NAT-PT)及网络地址端口转换-协议转换(NAPT-PT)。从而在网络层上实现了从IPv6节点主动向IPv4节点建立单向连接。
图1是NAT-PT应用示意图。当IPv6主机101要与IPv4主机121通信时,首先需要在IPv6网络100中标识IPv4主机,NAT-PT网关110向IPv6网络100中广播一个96位的地址前缀,用96位地址前缀加上32位IPv4主机地址作为对IPv4网络120中的主机的标识。IPv6主机101发给IPv4主机121的报文,通过96位前缀被路由到NAT-PT网关110处,NAT-PT网关对IPv6报文头进行转换,利用一IPv4地址池111分配临时IPv4地址标识IPv6源地址,报文转换为IPv4报文后发给IPv4目的主机。
由于全球公用的IPv4地址的获取困难,NAT-PT网关必须实现IPv4地址的共享。NAT-PT的地址共享是通过传输层标识(TCP/UDP端口或ICMP类型码)的跟踪与复用来实现的。这时,当内部网络主机向外建立连接时,NAT-PT网关必须动态分配对外的地址和传输层标识,记录每个连接会话(UDP/ICMP是伪连接)与外部地址的绑定关系,然后跟踪该连接的状态,当连接关闭后,NAT-PT网关必须自动释放先前分配的地址和传输层标识,以便后续连接使用。
通过传输层标识的复用及会话跟踪,NAT-PT网关能够使一个IPv4地址最多建立63K个TCP/UDP连接或ICMP应答。
考虑NAPT-PT的情况。同样假设内部V6主机主动向外部V4主机建立连接,从V6主机给V4主机发送一个V6报文,则
转换前:
源地址:FEDC:BA98::7654:3210
源TCP端口:3017
目的地址:PREFIX::132.146.243.30
目的TCP端口:23
转换后:
源地址:120.130.26.15
源TCP端口:1025
目的地址:132.146.243.30
目的TCP端口:23
但是涉及更高层协议的转换还必须在应用层添加应用层网关(ALG)才能实现。例如为了实现IPv4网络和IPv6网络之间FTP协议(文件传输协议)的转换,就需要FTP应用层网关。
发明内容
本发明所要解决的技术问题是提供一种基于NAT-PT的FTP应用层网关的实现方法。
本发明为解决上述技术问题而采用的技术方案是提供一种基于NAT-PT的FTP应用层网关的实现方法,用于IPv4网络和IPv6网络之间FTP协议的转换,其包括以下步骤:接收FTP报文,判断其是否是数据包报文,如果是,则创建数据会话;如果不是数据包报文,则执行下列步骤:首先,解析FTP命令以获悉该命令的类型;接着,对FTP命令进行转换,其中当命令包含IP地址和/或端口时,同时对IP地址和/或端口进行转换;之后,当FTP命令是PORT命令、EPRT命令、PASV命令、或者EPSV命令时,创建控制会话;以及当FTP命令是EPRT命令时,在创建控制会话的同时创建数据会话,而当命令是EPSV命令时,在创建控制会话的同时创建一数据临时会话。
上述的基于NAT-PT的FTP应用层网关的实现方法中,当FTP命令是PORT命令时,则对所述FTP命令进行转换的步骤包括:获取命令中的IPv4地址和端口;利用IPv4地址查找一地址映射表以获得映射的一IPv6地址,或者查找一地址前缀表以获得一地址前缀,该地址前缀可与IPv4地址组成一IPv6地址;以及将PORT命令转换为EPRT命令,将PORT命令中的IPv4地址相应转换为IPv6地址。
上述的基于NAT-PT的FTP应用层网关的实现方法中,当FTP命令是EPSV应答命令时,则在步骤c中,对FTP命令进行转换的步骤包括:获取EPSV命令发送端的IPv6地址和端口;利用IPv6地址查找一地址映射表和一地址前缀表以获得一IPv4地址;将EPSV应答命令转换为PASV应答命令,在PASV应答命令中加入该IPv4地址。
上述的基于NAT-PT的FTP应用层网关的实现方法中,当FTP命令是EPRT命令时,则对FTP命令进行转换的步骤包括:获取EPRT命令中的IPv6地址和端口;利用IPv6地址查找地址映射表和地址前缀表中是否有匹配的IPv4地址和端口,如果有,则将所述端口作为数据端口;如果没有,则从一FTP地址池中取出一IPv4地址和两个端口,其中一端口作为控制端口,另一端口作为数据端口,同时,建立该IPv4地址和Ipv6地址的地址映射关系表;以及将EPRT命令转换为PORT命令,将其中的IPv6地址转换成IPv4地址,而EPRT命令中的端口转换为所述数据端口。
上述的基于NAT-PT的FTP应用层网关的实现方法中,当FTP命令是PASV应答命令时,则对FTP命令进行转换的步骤包括:获取PASV应答命令中的IPv4地址和端口;查找一地址映射表和一地址前缀表;将该端口写入数据临时会话中;以及将PASV应答命令转换为EPSV应答命令。
上述的基于NAT-PT的FTP应用层网关的实现方法中,当FTP命令是EPRT命令时,则创建的数据会话与控制会话具有相同的客户端地址。
上述的基于NAT-PT的FTP应用层网关的实现方法中,当FTP命令是EPSV命令时,则创建控制会话的步骤包括:以客户端的IPv6地址查找地址映射表和地址前缀表,以获得一映射的IPv4地址和端口,其中该端口作为数据端口;如果没有映射的IPv4地址,则从一FTP地址池中分配一个IPv4地址和两个端口,建立该IPv4地址与IPv6地址的映射关系表,并将两个端口的其中一个端口作为客户端的控制端口,另一个端口作为客户端的数据端口;在控制会话中记录IPv4服务器的地址和控制端口,和IPv6客户端的地址和控制端口。
上述的基于NAT-PT的FTP应用层网关的实现方法中,当FTP命令是EPSV命令时,则创建数据临时会话的步骤包括:在数据临时会话中记录IPv4服务器的地址,以及为IPv6客户端分配的IPv4地址和数据端口。
本发明由于采用以上技术方案,使之与现有技术相比,具有如下显著优点:本发明的FTP应用层网关,可以在IPv4客户端与IPv6服务器之间,或者IPv6客户端与IPv4服务器之间翻译FTP报文,并进行控制会话和数据会话的建立,使IPv4网络与IPv6网络之间的FTP传输确实可以实现。
附图说明
为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明,其中:
图1是NAT-PT应用示意图。
图2是IPv4FTP客户端与IPv6FTP服务器之间的FTP命令传输示意图。
图3是本发明的FTP网关实现方法用于IPv4FTP客户端与IPv6FTP服务器的步骤流程图。
图4是IPv6FTP客户端与IPv4FTP服务器之间的FTP命令传输示意图。
图5是本发明的FTP网关实现方法用于IPv6FTP客户端与IPv4FTP服务器的步骤流程图。
图6是本发明的FTP网关实现方法的步骤流程图。
具体实施方式
为了更清楚地说明本发明的FTP网关实现方法,首先简单介绍一下在现有的IPv4协议中的FTP(File Transmission Protocol)协议。
文件传输是指将文件从一台计算机上发送到另一台计算机上,传输的文件可以包括电子报表、声音、编译后的程序以及字处理程序的文档文件。如果用户要将一个文件从自己的计算机上发送到另一台计算机上,就应使用FTP上载(upload)或(put)。而更多种的情况是用户使用FTP下载(download)或获取(get)文件及管理文件进行文件删除、更名、移动。
在FTP协议的内部实现中,主要具有主动连接(Port)和被动连接(Pasv)过程。
Port模式的连接过程是:在开始一个FTP的连接时,客户端程序首先会为自己随机分配一个TCP端口,它使用这个端口向服务器的FTP端口(默认为21)发出连接请求,服务器接受请求之后会建立一条控制链路,然后客户端程序发出Port命令,该命令中包含IP地址和端口,告诉服务器它的数据通道的端口打开了。当需要传送数据时,服务器便从数据端口(默认为20)向客户端告知的端口发送连接请求,请求被接受之后便开始传输数据,数据链路通道也就打开了。
Pasv模式的连接过程是:在开始一个FTP的连接时,客户端程序首先为自己随机分配一个TCP端口,它使用这个端口向服务器的FTP端口(默认为21)发出连接请求,服务器接受请求之后会建立一条控制链路,然后客户端程序发出PASV命令,代替Port模式中的PORT命令,以请求服务器告知它的数据连接端口,于是服务器便为自己随机分配一个数据通道端口,并回复一应答命令,将这个端口号告诉客户端程序。当需要传送数据时,客户端程序会从一随机分配的数据端口向服务器的数据通道端口发送连接请求,请求被接受之后便开始传输数据,数据链路通道也就打开了。
在IPv6协议中,连接过程与IPv4中类似,然而由于两者的地址和端口的不同,导致FTP命令格式也不同,因此两个网络之间的FTP命令需要进行一对一转换。
首先以表1说明IPv4协议与IPv6协议中的主要FTP命令的一一对应关系。
表1
PORT命令的格式为:
PORT h1,h2,h3,h4,p1,p2
表示客户机在IP地址为h1.h2.h3.h4上的端口p1*256+p2等待服务器连接。
EPRT的命令格式为:
EPRT<space><d><net-prt><d><net-addr><d><tcp-port><d>
其中net-prt表示网络类型(1为IPv4,2为IPv6),net-addr为客户端IP地址,tcp-port为客户端端口。
PASV命令的格式就是PASV。
EPSV的格式为EPSV<space><net-prt>,其中net-prt表示网络类型(1为IPv4,2为IPv6)。
PASV的应答格式为:
227Entering Passive Mode(h1,h2,h3,h4,p1,p2)
其含义就是服务器在IP地址为h1.h2.h3.h4的端口p1*256+p2上等待客户端的连接。
EPSV的应答格式为:
229Entering Extended Passive Mode(<d><d><d><tcp-port><d>)
其中tcp-port为服务器打开的端口号。
在IPv4网络与IPv6网络之间传输FTP命令存在两种情况,一种是在IPv4客户端与IPv6服务器之间传输FTP命令,另一种是在IPv6客户端与IPv4服务器之间传输FTP命令。这两种情况下,都需要NAT-PT网关300作为中转,在本实施例中,FTP应用层网关(图未示)是集成在NAT-PT网关中的。下面以图2~图5说明本发明对FTP命令的转换流程。
首先请参阅图2,图3所示,这是对应IPv4客户端200(IPv4Client)与IPv6服务器210(IPv6Server)的情形。首先,IPv4客户端200从随机分配的一TCP端口向IPv6服务器210的控制端口(21)发出连接请求,IPv6服务器210接受请求之后会建立一条控制链路。在此过程中,为了能够让IPv4客户端200主动向IPv6服务器210发起连接,IPv4客户端必须知晓IPv6服务器210所对应的IPv4地址。为此,NAT-PT网关300事先已经对IPv6服务器210做静态映射(即将IPv6服务器210的IPv6地址静态映射为一IPv4地址),或者由DNS应用层网关(DNS_ALG)建立动态映射,即在域名查询服务时,将IPv6服务器210的IPv6地址动态映射为一IPv4地址。这样,在NAT-PT网关中的地址映射表中已经保存了IPv6服务器的IPv6—IPv4地址的映射关系。
在主动(PORT)模式中,IPv4客户端200发出PORT命令,发送其IPv4地址和端口,以便告知IPv6服务器210,它的数据通道的端口打开了。此时,NAT-PT网关300接获含有该PORT命令的报文,在步骤301,判断该报文是否是数据包报文,在确定不是数据包报文后,进入步骤302,解析该命令,确认该命令为PORT命令后,进行下面的处理:在步骤310,获取PORT命令中的IPv4地址和端口p01,然后,在步骤311,以该IPv4地址查找地址映射表,以获得一映射后的IPv6地址,如果没有命中,则为该IPv4地添加一96位(bit)地址前缀,该地址前缀可和IPv4地址组合成IPv6地址。此后,在步骤312,即可将PORT命令转换为EPRT命令,将其中的IPv4地址转换成IPv6地址,而端口不变。最后,在步骤313,创建控制会话,该控制会话记录IPv4客户端200的地址和端口,以及IPv6服务器210的地址和端口(21),以便在后续处理中查找使用。
服务器210接收到EPRT命令后,回复一200EPRT的应答命令,此时,NAT-PT网关300接获含有该应答命令的报文,经过步骤301、302后,确认其是200EPRT命令,随之在步骤320进行命令转换,转换为200PORT命令。
当需要传送数据时,服务器210从数据端口(20)向客户端所告知的数据通道的端口p01发送连接请求,请求被接受之后发送数据包报文,NAT-PT网关300接获该数据包报文后,在步骤350创建数据会话,数据链路通道也就打开。其中该数据会话记录IPv4客户端200的地址和端口(p01),以及IPv6服务器210的地址和端口(20),以便在后续处理中查找使用。
请继续参阅图2,图3,在被动(PASV)模式中,IPv4客户端200经TCP端口发出PASV命令,以等待服务器应答。此时,NAT-PT网关300接获含有该PASV命令的报文,在步骤301,判断该报文是否是数据包报文,在确定不是数据包报文后,进入步骤302,解析该命令,确认该命令为PASV命令后,由于该命令中并不包含地址和端口,只需执行步骤330:转换为EPSV命令,以及步骤331:创建控制会话。该控制会话记录IPv4客户端200的地址和端口,以及IPv6服务器210的地址和端口(21),以便在后续处理中查找使用。
承上述,IPv6服务器210接收到经过NAT-PT网关300转换后的EPSV命令后,便为自己随机分配一个数据通道端口p03,并回复一包含这个端口号的EPSV应答命令,此时,NAT-PT网关300接获含有该EPSV应答命令的报文,经过步骤301、302,确认该命令为EPSV应答命令后,进行下述处理:在步骤340,获取IPv6服务器210的IPv6地址,以及EPSV应答命令中的端口p03,然后,在步骤341,以该IPv6地址查找地址映射表和地址前缀表,以获得映射的IPv4地址,此后在步骤342,可将EPSV应答命令转换为PASV应答命令,其中PASV应答命令包含服务器210的IPv4地址和端口p03。
当需要传送数据时,客户端200会由一随机分配的的数据端口p02向服务器210的数据端口p03发送连接请求,请求被接受之后发送数据包报文,NAT-PT网关300接获该数据包报文后,在步骤350创建数据会话,数据链路通道也就打开。其中该数据会话记录IPv4客户端200的地址和端口(p02),以及IPv6服务器210的地址和端口(p03),以便在后续处理中查找使用。
在上述在IPv4客户端200与IPv6服务器210之间传输的实施例中,由于FTP是支持分布式服务器的,所以当IPv6服务器210发起数据连接(PORT模式)的时候,其IPv6地址所映射的IPv4地址与控制连接时IPv6地址所映射的IPv4地址不一致并不会导致客户端不接受数据连接的数据。所以这种情况下,FTP应用层网关在转换控制连接载荷时,不用对数据连接附加任何动作。而在PASV模式中,控制连接和数据连接都有IPv4客户端200主动发起,对于IPv6服务器的IPv6地址如何被映射为IPv4地址,在两次连接中肯定是一致的,要么同时由静态映射决定,要么由DNS应用层网关建立的动态映射决定。所以这种情况下,FTP应用层网关在转换控制连接载荷时,不用对数据连接附加任何动作。
下面以图4、图5说明IPv4服务器220(IPv4Server)与IPv6客户端230(IPv6Client)的情形。首先,IPv6客户端230从随机分配的一TCP端口向IPv4服务器220的控制端口(21)发出连接请求,IPv4服务器220接受请求之后会建立一条控制链路。
在主动(EPRT)模式中,数据连接将由IPv4服务器220主动发起,但是由于预先并没有DNS应用层网关的干预将IPv6客户端230的IPv6地址映射为IPv4地址,所以我们只能在对控制连接的载荷进行解析时,预先将数据连接的数据会话(Session Entries)创建,其过程如下:
IPv6客户端230发出EPRT命令,发送其IPv6地址和端口p01’,以便告知IPv4服务器220,它的数据通道的端口打开了。此时,NAT-PT网关300接获含有该PORT命令的报文,在步骤401,判断该报文是否是数据包报文,在确定不是数据包报文后,进入步骤402,解析该命令,确认该命令为EPRT命令后,进行下面的处理:在步骤410,获取EPRT命令中的IPv6地址和端口p01’,然后,在步骤411,以该IPv6地址查找地址映射表和地址前缀中是否有匹配的IPv4地址和端口,如有则直接进入步骤413,此时该端口将作为数据端口p01”,如果没有,则进入步骤412,从一含有IPv4地址和端口的FTP地址池中取出一IPv4地址和两个端口,其中一端口作为控制端口,另一端口作为数据端口p01”。同时,步骤412还包括建立该IPv4地址和Ipv6地址的地址映射关系表,以便在后续的处理中查询。此后,在步骤413,即可将EPRT命令转换为PORT命令,将其中的IPv6地址转换成IPv4地址,而端口p01’转换为IPv4地址的数据端口p01”。接下来,在步骤414,创建控制会话,该控制会话记录IPv6客户端230的地址和控制端口,以及IPv4服务器220的地址和控制端口(21),以便在后续处理中查找使用。最后,在步骤415,预先创建数据会话,该数据会话记录IPv6客户端230的地址和数据端口(p01”),以及IPv4服务器220的地址和数据端口(20)。其中IPv6客户端230的地址和IPv4服务器220的地址与控制会话中所记录的地址是一致的。
服务器220接收到PORT命令后,回复一200PORT的应答命令,该命令可为IPv6客户端所识别,因此不必转换。
当需要传送数据时,IPv4服务器220从数据端口向IPv6客户端230的数据通道的端口p01’发送连接请求,请求被接受之后发送数据包报文,NAT-PT网关300接获该数据包报文后,找到已经建立的数据会话(步骤441),利用该数据会话记录的信息进行数据传送。
在被动(EPSV)模式中,控制连接和数据连接都有IPv6客户端230主动发起,而且必须保证两个连接的IPv6客户端230的IPv6地址被映射为同一个IPv4地址,否则IPv4服务器220将拒绝连接。但是在EPSV模式下,由于数据连接源端口(即客户端230的数据端口)的随机性,并不能像EPRT模式时那样预先建立数据连接的数据会话。为此本发明采用一种数据临时会话(AlgDataSession),在确定数据连接的首报文后,再转发至FTP应用层网关为这个连接建立相应的Session,并且保证其IPv6客户端230的IPv6地址映射和控制连接一致。具体过程如下:
请继续参阅图4,图5,IPv6客户端230发出EPSV命令,以等待服务器应答。此时,NAT-PT网关300接获含有该EPSV命令的报文,在步骤401,判断该报文是否是数据包报文,在确定不是数据包报文后,进入步骤402,解析该命令,确认该命令为EPSV命令后,由于该命令中并不包含地址和端口,因此直接在步骤420将该命令转换为PASV命令;随后,创建控制会话(步骤421),并且创建数据临时会话(步骤422)。在创建控制会话过程中,需要以客户端230的IPv6地址查找地址映射表和地址前缀表,以确认是否有映射的IPv4地址,如果没有,则从FTP地址池中取一个IPv4地址和两个端口,并建立与IPv6地址的映射关系表。其中,一个端口作为控制端口,另一个端口作为数据端口p02”。这样,控制会话中记录了IPv4服务器220的地址和控制端口(21),以及IPv6客户端230的地址和控制端口。而在创建数据临时会话(AlgDataSession)时,在其中记录了IPv4服务器220的地址,以及为IPv6客户端230分配的地址和数据端口(p02”),此时IPv4服务器220的数据端口还未获得。
承上述,IPv4服务器220接收到经过NAT-PT网关300转换后的EPSV命令后,便为自己随机分配一个数据通道端口p03’,并回复一包含自身地址和端口p03’的PASV应答命令,此时,NAT-PT网关300接获含有该PASV应答命令的报文,经过步骤401、402,确认该命令为PASV应答命令后,进行下述处理:在步骤440,获取PASV应答命令中的服务器220的IPv4地址和端口p03’,然后,在步骤441,查找一地址映射表和一地址前缀表,即根据IPv4地址查找地址映射表,获取转换到IPv6的地址。如果地址映射表里没有找到,则查找地址前缀表,根据前缀+IPv4地址组成IPv6地址。而后在步骤442,将端口p03’写入数据临时会话中,此后在步骤443,可将PASV应答命令转换为EPSV应答命令,将其中的IPv4地址转换成IPv6地址,而端口p03’转换为IPv6地址的数据端口。
当需要传送数据时,IPv6客户端230会由一随机分配的的数据端口p02’向服务器220的数据端口p03’发送连接请求,请求被接受之后发送数据包报文,NAT-PT网关300接获该数据包报文后,在步骤340正式创建数据会话,数据链路通道也就打开。其中该数据会话记录客户端230的IPv4地址和端口(p02”),以及服务器220的IPv6地址和端口(p03’),以便在后续处理中查找使用。
在上述实施例中,FTP地址池例如可以为现有的NAPT地址池的一个子集,比如256IPv4*1024Port(占用的port为1024~2047)。对于每个FTP连接,对应一个控制连接,并且其控制连接存在期间,可能会出现多个数据连接,但是我们注意到一个事实,多个数据连接是串行出现的,也就是同一时刻一个FTP连接只可能存在一个数据连接。所以在从地址池中取地址和端口时,只给每个FTP连接分配一个控制端口,用来映射IPv6FTP控制会话报文中的源端口;分配一个数据端口,用来映射IPv6FTP数据会话报文中的源端口,并且这个数据端口是一个复用的端口号,即每次建立数据连接,即采用这个数据端口。
基于上述,本发明的基于NAT-PT的FTP应用层网关的实现方法可概括为(请参阅图6):
首先,执行步骤601,接收FTP报文,判断其是否是数据包报文,如果是,则创建数据会话(步骤606)并结束(步骤607),如果不是数据包报文,则执行下列步骤:
步骤602,解析FTP命令以获悉该命令的类型;
步骤603,对该FTP命令进行转换,其中当FTP命令包含IP地址和/或端口时,同时对IP地址和/或端口进行转换;
步骤604,当FTP命令是PORT命令、EPRT命令、PASV命令、或者EPSV命令时,创建控制会话;以及
步骤605,当FTP命令是EPRT命令时,在创建控制会话的同时创建数据会话,而当命令是EPSV命令时,在创建控制会话的同时创建一数据临时会话。
其中,每一步骤中,对于各种命令的具体转换步骤请参照前述叙述和图2~图5所示,在此不再展开。
综上所述,本发明的FTP应用层网关,可以在IPv4客户端与IPv6服务器之间,或者IPv6客户端与IPv4服务器之间翻译FTP报文,并进行控制会话和数据会话的建立,使IPv4网络与IPv6网络之间的FTP传输确实可以实现。
以上的实施例说明仅为本发明的较佳实施例说明,本领域技术人员可依据本发明的上述实施例说明而作出其它种种等效的替换及修改。然而这些依据本发明实施例所作的种种等效替换及修改,属于本发明的发明精神及由权利要求所界定的专利范围内。

Claims (8)

1.一种基于NAT-PT的FTP应用层网关的实现方法,用于IPv4网络和IPv6网络之间FTP协议的转换,其特征在于,包括以下步骤:
a.接收FTP报文,判断其是否是数据包报文,如果是,则创建数据会话;如果不是数据包报文,则执行下列步骤:
b.解析FTP命令以获悉该FTP命令的类型;
c.对所述FTP命令进行转换,其中当所述FTP命令包含IP地址和/或端口时,同时对所述IP地址和/或端口进行转换;
d.当所述FTP命令是PORT命令、EPRT命令、PASV命令、或者EPSV命令时,创建控制会话;以及
e.当所述FTP命令是EPRT命令时,在创建所述控制会话的同时创建数据会话,而当所述FTP命令是EPSV命令时,在创建所述控制会话的同时创建一数据临时会话。
2.如权利要求1所述的基于NAT-PT的FTP应用层网关的实现方法,其特征在于,当所述FTP命令是PORT命令时,则在所述步骤c中,对所述FTP命令进行转换的步骤包括:
获取PORT命令中的IPv4地址和端口;
利用所述IPv4地址查找一地址映射表以获得映射的一IPv6地址,或者查找一地址前缀表以获得一地址前缀,该地址前缀可与IPv4地址组成一IPv6地址;以及
将PORT命令转换为EPRT命令,将PORT命令中的IPv4地址相应转换为IPv6地址。
3.如权利要求1所述的基于NAT-PT的FTP应用层网关的实现方法,其特征在于,当所述FTP命令是EPSV应答命令时,则在所述步骤c中,对所述FTP命令进行转换的步骤包括:
获取EPSV命令发送端的IPv6地址和端口;
利用所述IPv6地址查找一地址映射表和一地址前缀表以获得一IPv4地址;
将EPSV应答命令转换为PASV应答命令,在所述PASV应答命令中加入所述IPv4地址。
4.如权利要求1所述的基于NAT-PT的FTP应用层网关的实现方法,其特征在于,当所述FTP命令是EPRT命令时,则在所述步骤c中,对所述FTP命令进行转换的步骤包括:
获取EPRT命令中的IPv6地址和端口;
利用所述IPv6地址查找地址映射表和地址前缀表中是否有匹配的IPv4地址和端口,如果有,则将所述端口作为数据端口;如果没有,则从一FTP地址池中取出一IPv4地址和两个端口,其中一端口作为控制端口,另一端口作为数据端口,同时,建立该IPv4地址和Ipv6地址的地址映射关系表;以及
将EPRT命令转换为PORT命令,将其中的IPv6地址转换成IPv4地址,而EPRT命令中的端口转换为所述数据端口。
5.如权利要求1所述的基于NAT-PT的FTP应用层网关的实现方法,其特征在于,当所述FTP命令是PASV应答命令时,则在所述步骤c中,对所述FTP命令进行转换的步骤包括:
获取PASV应答命令中的IPv4地址和端口;
查找一地址映射表和一地址前缀表;
将所述端口写入所述数据临时会话中;以及
将所述PASV应答命令转换为EPSV应答命令。
6.如权利要求1所述的基于NAT-PT的FTP应用层网关的实现方法,其特征在于,在所述步骤e中,当所述FTP命令是EPRT命令时,所述创建的数据会话与所述控制会话具有相同的客户端地址。
7.如权利要求1所述的基于NAT-PT的FTP应用层网关的实现方法,其特征在于,当所述FTP命令是EPSV命令时,则所述步骤d中,创建控制会话的步骤包括:
以客户端的IPv6地址查找地址映射表和地址前缀表,以获得一映射的IPv4地址和端口,其中所述端口作为数据端口;
如果没有映射的IPv4地址,则从一FTP地址池中分配一个IPv4地址和两个端口,建立该IPv4地址与所述IPv6地址的映射关系表,并将所述两个端口的其中一个端口作为客户端的控制端口,另一个端口作为客户端的数据端口;
在控制会话中记录IPv4服务器的地址和控制端口,和IPv6客户端的地址和控制端口。
8.如权利要求7所述的基于NAT-PT的FTP应用层网关的实现方法,其特征在于,当所述FTP命令是EPSV命令时,则步骤e中,创建数据临时会话的步骤包括:在数据临时会话中记录IPv4服务器的地址,以及为IPv6客户端分配的所述IPv4地址和数据端口。
CN2007100420455A 2007-06-15 2007-06-15 基于nat-pt的ftp应用层网关的实现方法 Expired - Fee Related CN101325580B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007100420455A CN101325580B (zh) 2007-06-15 2007-06-15 基于nat-pt的ftp应用层网关的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007100420455A CN101325580B (zh) 2007-06-15 2007-06-15 基于nat-pt的ftp应用层网关的实现方法

Publications (2)

Publication Number Publication Date
CN101325580A CN101325580A (zh) 2008-12-17
CN101325580B true CN101325580B (zh) 2012-01-25

Family

ID=40188910

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007100420455A Expired - Fee Related CN101325580B (zh) 2007-06-15 2007-06-15 基于nat-pt的ftp应用层网关的实现方法

Country Status (1)

Country Link
CN (1) CN101325580B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102148845B (zh) * 2010-02-08 2015-06-10 中兴通讯股份有限公司 一种实现ftp数据传输的方法和系统
CN102035882B (zh) * 2010-11-29 2013-04-17 杭州思福迪信息技术有限公司 Ftp二次登陆系统及实现文件传输和过程监控的方法
CN102325016A (zh) * 2011-10-18 2012-01-18 深圳市融创天下科技股份有限公司 一种建立数据通道的请求和应答方法、系统和终端设备
CN104519029B (zh) * 2013-09-30 2018-10-02 中国电信股份有限公司 一种同步方法以及分布式协议翻译系统
CN104660453A (zh) * 2015-03-20 2015-05-27 上海斐讯数据通信技术有限公司 服务端端口号协商方法及系统
CN108023953B (zh) * 2017-12-04 2021-07-09 北京星选科技有限公司 Ftp服务的高可用实现方法和装置
CN111225015B (zh) * 2018-11-27 2021-12-14 大唐移动通信设备有限公司 一种远程ftp传输的实现方法及装置
CN113542450B (zh) * 2021-07-21 2023-06-06 北京威努特技术有限公司 一种工控防火墙支持ftp穿越nat的实现方法及系统
CN113938459A (zh) * 2021-09-06 2022-01-14 锐捷网络股份有限公司 一种IPv6配置方法及装置
CN114221929A (zh) * 2021-11-04 2022-03-22 招银云创信息技术有限公司 地址转换方法、装置、设备、介质和计算机程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004039014A1 (en) * 2002-10-22 2004-05-06 Cisco Technology, Inc. Shared port address translation on a router behaving as nat & nat-pt gateway
CN1529481A (zh) * 2003-10-14 2004-09-15 �й���ѧԺ�����о��� 网络处理器内部实现分布式应用层转换网关的方法
CN1697452A (zh) * 2005-06-17 2005-11-16 中兴通讯股份有限公司 一种基于IPSec穿越NAT的IP多媒体子系统接入安全保护方法
WO2005117375A2 (en) * 2004-05-17 2005-12-08 Cisco Technology, Inc. Method and apparatus for handling ipv4 dns ptr queries across ipv4 and ipv6 networks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004039014A1 (en) * 2002-10-22 2004-05-06 Cisco Technology, Inc. Shared port address translation on a router behaving as nat & nat-pt gateway
CN1529481A (zh) * 2003-10-14 2004-09-15 �й���ѧԺ�����о��� 网络处理器内部实现分布式应用层转换网关的方法
WO2005117375A2 (en) * 2004-05-17 2005-12-08 Cisco Technology, Inc. Method and apparatus for handling ipv4 dns ptr queries across ipv4 and ipv6 networks
CN1697452A (zh) * 2005-06-17 2005-11-16 中兴通讯股份有限公司 一种基于IPSec穿越NAT的IP多媒体子系统接入安全保护方法

Also Published As

Publication number Publication date
CN101325580A (zh) 2008-12-17

Similar Documents

Publication Publication Date Title
CN101325580B (zh) 基于nat-pt的ftp应用层网关的实现方法
US7302496B1 (en) Arrangement for discovering a localized IP address realm between two endpoints
US7639686B2 (en) Access network clusterhead for providing local mobility management of a roaming IPv4 node
US7411967B2 (en) Private network gateways interconnecting private networks via an access network
CN102347993B (zh) 一种网络通信的方法和设备
CN101795303B (zh) 能够连接到具有本地地址域的网络的方法及系统
US8942233B2 (en) Method and apparatus for performing network address translation
EP1614252B1 (en) Method and system for centrally allocating addresses and port numbers
US7443880B2 (en) Arrangement for reaching IPv4 public network nodes by a node in a IPv4 private network via an IPv6 access network
US8223780B2 (en) Method for forwarding data packet, system, and device
US8451845B2 (en) Method of receiving a data packet in an IPv6 domain, an associated device and an associated home gateway
JP5475763B2 (ja) IPv4ドメインからのデータパケットをIPv6ドメインで受信する方法、ならびに関連するデバイスおよびアクセス機器
US8458303B2 (en) Utilizing a gateway for the assignment of internet protocol addresses to client devices in a shared subset
CN102938735B (zh) 使用路由通告携带选项下发nat64地址前缀的方法
CN101321111A (zh) 通信方法和设备、服务器、及计算机可读记录介质
US7764686B1 (en) Migration to IPv6 using combination of globally significant and locally significant IPv4 addresses
US7356031B1 (en) Inter-v4 realm routing
CN103888554B (zh) IPv4与IPv6互通的域名解析方法和系统
Jayanthi et al. Transition and mobility management in the integrated IPv4 and IPv6 network-A systematic review
US20130282924A1 (en) Method for addressing messages in a computer network
KR101124635B1 (ko) IPv4/IPv6 연동 게이트웨이
Hamarsheh Deploying IPv4-only connectivity across local IPv6-only access networks
JP5054666B2 (ja) Vpn接続装置、パケット制御方法、及びプログラム
Ali et al. Hybrid approach for migration of IPv6 to IPv4 Network for enhancing security in Virtual Private Cloud.
CN114390021A (zh) 基于IPv6单栈的IDC服务提供系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120125

Termination date: 20150615

EXPY Termination of patent right or utility model