具体实施方式
如图1所示,是本发明提供的客户终端设备的运行环境示意图。该客户终端设备200与至少一个本地端设备100相连接,以建立该本地端设备100与网络300之间的通讯连接。该本地端设备100可使用该客户终端设备200并通过网络300访问远端设备400(如网站服务器等),从而与远端设备400进行通讯。本实施例中,本地端设备100以及远端设备400可以是仅支持IPv4或IPv6的单栈主机设备(Single Stack host)也可以是同时支持IPv4和IPv6的双栈主机设备(Dual Stack Host)。
本实施例中,所述客户终端设备200可通过线缆、蓝牙或红外连接等方式与所述本地端设备100建立连接。该客户终端设备200可以是,但不限于,网关、路由器、交换机等。所述网络300为IPv4网络或IPv6网络。
如图2所示,是所述客户终端设备200的功能模块架构图。该客户终端设备200包括网络地址转换系统10、存储设备11、处理器12。该网络地址转换系统10包括列表建立模块101、封包处理模块102、判断模块103、地址转换模块104以及通讯建立模块105。本实施例中,上述各功能模块可以软件程序段或固件(firmware)的形式存储在所述存储设备11中,并由所述处理器12控制各功能模块的执行。
所述列表建立模块101用于建立一双栈主机列表,用于记录支持IPv4和IPv6的双栈主机设备及其IPv4地址和IPv6地址。本实施例中,当与客户终端设备200连接的任意本地端设备100发出DNS(Domain Name System,域名系统)查询请求时,该列表建立模块101根据该DNS查询请求的类别判断该本地端设备100是否为双栈主机设备,若为双栈主机设备,则将该本地端设备100及其IPv4地址和IPv6地址记录在该双栈主机列表中。具体地,若所述DNS查询请求仅包含A类请求或AAAA类请求时,该本地端设备100则不是双栈主机设备。若所述DNS查询请求同时包含A类请求以及AAAA类请求时,该本地端设备100则是双栈主机设备。
该列表建立模块101还用于建立一动态地址映射表,用于记录为网络300上的节点设备建立的IPv4地址和IPv6地址之间的映射关系。本实施例中,连接到所述网络300上的任意通讯设备即为该网络300中的一个节点,因此被称为节点设备,如本地端设备100,以及远端设备400都被称为节点设备。
所述封包处理模块102用于接收本地端设备100发出的请求访问远端设备400的请求封包,并根据该请求封包得到该本地端设备100的IP地址以及远端设备400的IP地址。其中,该本地端设备100的IP地址通过解析该请求封包直接得到。远端设备400的IP地址由设立在网络300中的DNS服务器收到所述请求封包时,根据该请求封包中包括的远端设备400的域名进行解析而得到,然后返回给客户终端设备200。
所述判断模块103用于查询所述双栈主机列表,判断该本地端设备100是否为双栈主机设备,并且当该本地端设备100不是双栈主机设备时,进一步根据该本地端设备100的IP地址以及远端设备400的IP地址判断是否需要对远端设备的IP地址作协议转换。具体地,若该本地端设备100与远端设备400为使用相同协议IP地址的单栈主机设备或者该远端设备400为双栈主机设备(DNS服务器返回给客户终端设备200的IP地址包括IPv4地址以及IPv6地址)时,该判断模块103则判断无需对远端设备400的IP地址作协议转换。若该本地端设备100与远端设备400为使用不同协议IP地址的单栈主机设备,则需要对远端设备400的IP地址作协议转换。
所述地址转换模块104用于当判断需要对远端设备400的IP地址作协议转换时,对该远端设备400的IP地址作协议转换,将该远端设备400的IP地址转换为与本地端设备100使用相同协议的IP地址。在本实施例中,地址转换模块104可使用兼容地址或映射地址的方法对远端设备400的IP地址做协议转换。具体转换方法如下。
首先,若采用兼容地址的方法,远端设备400或本地端设备100的IPv6地址需为包括一特定前缀以及一内嵌IPv4地址的格式。具体地,分以下情况进行说明。第一,若远端设备400使用IPv6地址(也即本地端设备100使用IPv4地址),如为64:ff9b::192.168.1.1,地址转换模块104则直接去掉该IPv6地址的96位前缀,取其后32位内嵌的IPv4地址(192.168.1.1)作为该远端设备400转换后的IP地址。第二,若远端设备400使用IPv4地址(也即本地端设备100使用IPv6地址),如为10.1.1.1,地址转换模块104则直接在该IPv4地址前加入特定的96位前缀形成一IPv6地址,作为该远端设备400转换后的IP地址。
另外,若采用映射地址的方法。首先,地址转换模块104查询所述动态地址映射表中是否记录有远端设备400的IP地址,若记录有该远端设备400的IP地址,则直接根据该动态地址映射表中记录的与该远端设备400的IP地址具有映射关系的地址作为该远端设备400转换后的IP地址。若该动态地址映射表中没有记录该远端设备400的IP地址,该地址转换模块104直接从网络中的IP地址池中请求分配一个与本地端设备100的IP地址使用相同协议的IP地址作为远端设备400转换后的IP地址。然后,该地址转换模块104将该分配的IP地址与远端设备400的IP地址进行绑定,并记录在所述动态地址映射表中,建立该远端设备400的IP地址与该分配的IP地址之间的映射关系,以用作后续查询。
此外,在对远端设备400的IP地址作协议转换时,若所述DNS服务器返回的该远端设备400的IP地址为多个时,例如当本地端访问的一网站的域名有多个IPv4地址或者多个IPv6地址对应的端口时,该地址转换模块104依据远端设备400的IP地址的响应时间,选择响应时间最短的IP地址进行协议转换。
所述通讯建立模块105用于根据上述转换后的IP地址建立本地端设备100与远端设备400之间的通讯连接。此外,当该本地端设备100为双栈主机设备时,或者判断模块103判断不需要对远端设备的IP地址作协议转换时,该通讯建立模块105根据远端设备400的IP地址以及该本地端设备100的IP地址直接建立远端设备400与本地端设备100之间的通讯连接。
如图3所示,是本发明网络地址转换方法较佳实施例的流程图。
步骤S01,所述列表建立模块101建立一双栈主机列表,用于记录支持IPv4和IPv6的双栈主机设备及其IPv4地址和IPv6地址。
步骤S02,所述封包处理模块102接收本地端设备100发出的请求访问远端设备400的请求封包,并根据该请求封包得到该本地端设备100的IP地址以及远端设备400的IP地址。其中,该本地端设备100的IP地址通过解析该请求封包直接得到。远端设备400的IP地址由设置在网络300中的的DNS服务器收到所述请求封包时,根据该请求封包中包括的远端设备400的域名进行解析而得到,然后返回给客户终端设备200。
步骤S03,所述判断模块103查询所述双栈主机列表,判断该本地端设备100是否为双栈主机设备。若为双栈主机设备,则执行步骤S06。若不是双栈主机设备,则执行步骤S04。
步骤S04,所述判断模块103进一步根据该本地端设备100的IP地址以及远端设备400的IP地址判断是否需要对远端设备的IP地址作协议转换。若需要作协议转换,执行步骤S05。若不需要作协议转换,执行步骤S06。
步骤S05,所述地址转换模块104将远端设备400的IP地址作协议转换,并由通讯建立模块105根据转换后的IP地址建立本地端设备100与远端设备400之间的通讯连接,结束流程。具体的地址转换方法见上述对地址转换模块104的详细描述。
步骤S06,所述通讯建立模块105根据远端设备400的IP地址以及该本地端设备100的IP地址建立远端设备400与本地端设备100之间的通讯连接。
以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。