一种e.164域名的解析方法以及域名服务器的制作方法

文档序号:7655881阅读:293来源:国知局
专利名称:一种e.164域名的解析方法以及域名服务器的制作方法
技术领域
本发明涉及通信网络技术领域,尤其涉及一种在ENUM (tElephone NUmber Mapping,电话号码映射)业务中E.164域名的解析方法以及域名服 务器。
背景技术
随着信息产业的发展,电信网和互联网的融合成为趋势,通信手段的多样
化使每个用户有许多的标识来表示自己的身份,比如移动电话号码,固定电 话号码、即时消息地址、电子邮件地址、个人网页等。目前,这些标识基本是 不相关的,用户需要记忆的这些相互独立的标识信息的数量也越来越多。
基于此,互联网丁程任务组(Internet Engineering Task Force , IETF)的电 话号码映射工作组(tElephone NUmber Mapping working group)定义的协议 RFC2916和RFC3761应运而生。该协议定义了将E.164电话号码映射为E.164 域名的规则以及在互联网域名服务器(DomainName Server, DNS)数据库中 存储与该域名相关信息的方式。每个由E.164电话号码转化而成的E.164域名 可以通过电话号码映射的域名服务器(ENUM DNS)解析为一系列的网络资 源记录即统一资源标识(Uniform Resource Identifier, URI),从而使国际统一 的E.164电话号码成为可以在互联网中使用的网络地址资源。
图1是ENUMDNS服务器在网络中的结构图。该ENUM DNS服务器100 位于电信网络101和互联网络102之间。当位于电信网络101侧的终端A与 位于互联网络102侧的终端B建立通信时,终端A通过电信网络101向ENUM DNS服务器100发出终端B域名査询请求,ENUM DNS服务器100解析终端 B的域名,并将解析结果返回给终端A,由此终端A根据解析结果与终端B 建立连接。
下面举例说明,通过RFC2916规定的协议,实现将一个E.164电话号码 翻译为一个E.164域名这里假设el64.arpa将用于提供存储E.164电话号码
的DNS框架。为了实现分布式的操作,该域又被分成若干个子域。E.164电话 号码的拥有者如果想要将号码列入DNS中,需要与相应区域的管理者接洽。 为了找到一个规定的E.164电话号码所对应的DNS名称,需要遵循以下步骤:
1) 将E.164电话号码写成完整的格式,要包含国家码,如 +86-25-67891234;
2) 将所有的非数字的字符去掉,"+"、"-"号除外,如+862567891234;
3) 将数字以外的所有字符去掉,如862567891234;
4) 在每个数字之间加上"."。如8.6.2.5.6.7.8.9.1.2.3.4;
5) 将数字的J顿序颠倒一下,如4.3.2丄9.8.7.6.5.2.6.8;
6) 将".el64.arpa"加到数字串的尾部,如4.3.2丄9.8.7.6.5.2.6.8.el64.arpa。 因此E.164电话号码86-25-67891234所对应的E.164域名为
4.3.2.1.9.8.7.6.5.2.6.8.el64.arpa。
传统的DNS仍然主要用于域名到相应IP地址的翻译,当用DNS完成更 多内容时,比如完成ENUM到URI的解析时,需要制定新的资源类型,名字 授权指针(Naming Authority Pointer, NAPTR)就是针对ENUM的新DNS资 源记录(ResourceRecorder, RR)。当客户端应用程序根据预处理流程,生成 域名形式的字符串,DNS解析器将处理后的字符串按DNS协议发出解析,从 DNS Server得到与此ENUM相应的URI集合,然后,应用程序根据它自身的
应用需求选择相应的URI继续执行相应的协议,完成预期的操作。
E.164域名包括公共域名部分和电话号码域名部分。在ENUM DNS服务 器上,实现数字字符串形式的E.164电话号码域名到URI的映射过程, 一般采 用传统的DNS服务的解析方式,构造红黑树结构,对每个节点进行遍历,最 终匹配到电话域名对应的统一资源标识。
具体而言,就是将E.164域名以树的形式存储,以"."为分隔符,把E.164 电话号码转换成的域名分为多个节点存储,每个节点是E.164电话号码的其中 一个数字。以E.164电话号码"862567891234"为例,其转换成域名之后是 "4.3.2J.9.8.7.6.5.2.6.8.el64.arpa",其在域名树中的存储方式如图1所示,在该 域名树中,树的层次共有14层,其中,1到4层是ENUM顶级域名"Arpa"、 固定域名"E164"和国家代码域名"86" ; 5到14层是电话号码域名相关部 分"2567891234"此部分是ENUM DNS服务器具体解析这若干个地区的E.164
域名映射到统一资源标识的主要依据。
当ENUMDNS服务器接收到域名解析请求的时候,它收到的域名的格式, 女口"4.3.2丄9.8.7.6.5.2.6.8.el64.arpa",于是,开始在图2所示的域名树中开始搜 索匹配,第一步匹配到"Arpa",第二步匹配到"E164",第三步匹配到"8", 第四步匹配到"6",......依次类推,第14步匹配到"4"。
上述方法把电话号码的每个数字都当作域名中的一个子域,有利于简单有 效的把电话号码格式转换成互联网域名格式,使电信网络和互联网络能相互沟 通,但是对于域名解析系统,原先解析互联网域名, 一个完整域名的层次一般 都在4或5层,如"www.zte.com.cn",其域名是4级;而E.164电话号码转换 而来的一个完整域名,它的层次一般都在IO层以上。域名层次的增大以及域 名长度的增加,使域名解析系统工作量也大大增加。而且,如果还是按照传统 的DNS解析方式来处理E.164电话号码转换而来的域名,把域名中的每个数 字当作域名树的一个节点,这种处理方式耗时费力。
综上可知,现有E.164域名的解析技术,在实际使用上显然存在不便与缺 陷,所以有必要加以改进。

发明内容
针对上述的缺陷,本发明的第一目的在于提供一种E.164域名的解析方法, 该方法可以降低搜索树的高度和搜索复杂度,减轻域名解析系统的工作量,提 高域名解析效率。
本发明的第二目的在于提供一种电话号码映射的域名服务器(ENUM DNS),该域名服务器可以降低搜索树的高度和搜索复杂度,减轻域名解析系
统的工作量,提高域名解析效率。
为了实现上述第一目的,本发明提供一种E.164域名的解析方法,应用于
电话号码映射的域名服务器,所述E.164域名包括公共域名部分和电话号码域
名部分,该方法包括如下步骤
配置步骤,配置域名服务器所管辖的E.164电话号码的若干号码段信息; 预处理步骤,对E.164域名进行预处理,根据所配置的号码段信息,将
E.164域名的电话号码域名部分解析成若干号码段域名部分,形成包含公共域
名部分和若千号码段域名部分的内部域名格式;
存储步骤,将E. 164域名按照所述内部域名格式存储于搜索树的各层节点,
以形成内部域名存储格式;
搜索和匹配歩骤,接收到E.164域名查询后,根据所述内部域名格式和内 部域名存储格式,将该要求査询E.164域名在所述搜索树上进行搜索和匹配。
根据本发明的方法,所述配置步骤中,配置域名服务器管辖区域的所有 E.164电话号码的国家代码信息、地区代码信息和用户号码信息;
所述预处理步骤中,根据配置步骤的配置结果,将E.164域名的电话号码 域名部分解析成国家代码域名部分、地区代码域名部分和用户号码域名部分, 以形成包含公共域名部分、国家代码域名部分、地区代码域名部分和用户号码 域名部分的内部域名格式;
所述存储步骤中,将E.164域名的公共域名部分、国家代码域名部分、地 区代码域名部分和用户号码域名部份分别存储于搜索树的各层节点,以形成内 部域名存储格式。
根据本发明的方法,在所述存储步骤中将公共域名部分、国家代码域名部 分、地区代码域名部分分别存储于搜索树的各层节点;并将用户号码域名部分 存储于静态数组结构中,而该静态数组结构头为搜索树的一个节点。
根据本发明的方法,所述E.164电话号码为固定电话号码,且所述公共域 名部分包括ENUM即电话号码映射顶级域名部分、E.164固定域名部分,
所述配置步骤中配置的E.164电话号码的地区代码信息,包括区号码信息 和局号码信息;
所述预处理步骤中,将E.164域名的电话号码域名部分解析成国家代码域 名部分、区号码域名部分、局号码域名部分和用户号码域名部分,以形成包含 ENUM顶级域名部分、E.164固定域名部分、国家代码域名部分、区号码域名 部分、局号码域名部分和用户号码域名部分的内部域名格式。
根据本发明的方法,所述存储歩骤中搜索树的根节点存储ENUM顶级域 名部分;该根节点的子节点存储E.164固定域名部分;该E.164固定域名部分 节点的子节点存储国家代码域名部分;该国家代码域名部分节点的子节点存储 区号码域名部分;该区号码域名部分节点的子节点存储局号码域名部分;该局 号码域名部分节点的子节点为静态数组结构头,并且将用户号码域名部分转换 为整数值,按照大小顺序依次排列存储于该静态数组结构中。
根据本发明的方法,所述E.164电话号码为移动电话号码,且所述公共域
名部分包括ENUM顶级域名部分、E.164固定域名部分,
所述配置步骤中配置的E.164电话号码的地区代码信息,为归属位置寄存 器前缀信息;
所述预处理步骤中,将E. 164域名的电话号码域名部分解析成国家代码域 名部分、归属位置寄存器前缀域名部分和用户号码域名部分,以形成包含 ENUM顶级域名部分、E.164固定域名部分、国家代码域名部分、归属位置寄 存器前缀域名部分和用户号码域名部分的内部域名格式。
根据本发明的方法,所述存储步骤中搜索树的根节点存储ENUM顶级域 名部分;该根节点的子节点存储E.164固定域名部分;该E.164固定域名部分 节点的子节点存储国家代码域名部分;该国家代码域名部分节点的子节点存储 归属位置寄存器前缀域名部分;该归属位置寄存器前缀域名部分节点的子节点 为静态数组结构头,并且将用户号码域名部分转换为整数值,按照大小顺序一 次排列存储于该静态数组结构中。
根据本发明的方法,所述预处理步骤还包括
在域名服务器初始化时,对域名服务器管辖的全部E. 164域名进行预处理, 预处理之后的数据存放在内存或者数据库中;和/或
在域名服务器收到E.164域名査询时,对所査询的E.164域名进行预处理, 并将预处理后的数据放在结构体中。
根据本发明的方法,当域名服务器收到域名查询时,所述预处理步骤包括 判断该域名是否为E.164域名,若是,则将E.164域名的公共域名部分截断, 得到全数字的电话号码域名部分,并将该电话号码域名部分进行去"."处理, 并将得到的电话号码的次序反转;否则,退出预处理。
为了实现上述第二目的,本发明提供一种电话号码映射的域名服务器,其 供解析的E.164域名包括公共域名部分和电话号码域名部分,包括
配置模块,用于配置域名服务器所管辖的E.164电话号码的若干号码段信自.
预处理模块,用于对E.164域名进行预处理,根据所配置的号码段信息, 将E.164域名的电话号码域名部分解析成若干号码段域名部分,形成包含公共 域名部分和若干号码段域名部分的内部域名格式;
存储模块,用于将E.164域名按照所述内部域名格式存储于搜索树的各层
节点,以形成内部域名存储格式;
搜索和匹配模块,用于接收E.164域名査询,并根据所述内部域名格式和
内部域名存储格式,将该要求查询E. 164域名在所述搜索树上进行搜索和匹配。 本发明通过将所述E.164域名的电话号码域名部分解析成若干号码段域名
部分,形成包含公共域名部分和若干号码段域名部分的内部域名格式;并将 E.164域名按照所述内部域名格式存储于搜索树的各层节点,以形成内部域名 存储格式,从而变换和压缩了搜索树的层次,改变了域名数据的存储方式,进 而降低搜索树的高度和搜索复杂度,减轻了域名解析系统的工作量,提高了域 名解析效率。


图1是现有技术中ENUMDNS域名服务器的网络结构图2现有技术中E.164域名的存储结构图3是本发明提供的域名服务器的结构框架图4是本发明提供的第一实施例中E.164域名的存储结构图5是本发明提供的第二实施例中E.164域名的存储结构图6是本发明提供的E.164域名的解析方法流程图7是本发明提供的第一实施例中E.164域名解析的方法流程图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用于限定本发明。
本发明的基本思想是将所述E.164域名的电话号码域名部分解析成若干 号码段域名部分,形成包含公共域名部分和若干号码段域名部分的内部域名格 式;并将E.164域名按照所述内部域名格式存储于搜索树的各层节点,形成内 部域名存储格式,进而降低搜索树的高度和搜索复杂度。
E.164域名包括公共域名部分和电话号码域名部分。其中,公共域名部分 主要包括ENUM顶级域名部分和E.164固定域名部分,例如"el64.arpa"; 而电话号码域名部分包括三个特征
1、 E.164电话号码域名部分由国家代码、地区代码、用户号码等部分组成。
以"862567891234"为例,国家代码为"86",地区代码为"25",用户号码 为"67891234"。
2、 E.164电话号码域名部分是固定的,除了少数的特殊码以及其他的不规 则短号码,如"110" , "120"等。
3、 E.164电话号码域名部分在各个国家内是分区域的,其本身携带地区信 息,如"861390518wxyz",其为移动电话号码,其前缀"1390518"归属南
京地区。
根据所述E.164电话号码域名部分的特征,本发明提供一种电话号码映射 的域名服务器(ENUM DNS) 300,所述域名服务器300可位于ENUM体系 结构的底层(Tier 2),负责真正将E.164电话号码解析到相应的资源记录。 所述域名服务器300,如图3所示,还包括配置模块301、预处理模块302、 存储模块303以及搜索和匹配模块304。其中,
配置模块301,用于配置域名服务器300所管辖的E.164电话号码的若干 号码段信息,优选的是配置域名服务器300所管辖区域中所有E.164电话号码 的国家代码信息、地区代码信息和用户号码信息。
具体而言,该配置模块301主要负责的若干号码段信息包括
域名服务器300负责解析的所有国家代码信息,如中国的国家代码是
域名服务器300负责解析的所有固定电话的归属地区代码信息,可以使用 电信长途区号来标识某个区域,如"8625"是南京地区,"86512"是苏州地 区等;以及负责解析的固定电话的号码段信息,如"86252222"、 "86253333" 、 "86256789"等格式的固定号码段。
域名服务器300负责解析的所有移动电话的归属位置寄存器(Home Location Register, HLR)前缀信息,如"861390518",以这样前缀开头的移 动电话号码归属南京地区。
域名服务器300负责解析的特殊号码以及其他的不规则短号码,如 "110" , "120"等。
预处理模块302,用于对E.164域名进行预处理,根据配置模块301所配
置的号码段信息,将E. 164域名的电话号码域名部分解析成若干号码段域名部 分,形成包含公共域名部分和若干号码段域名部分的内部域名格式。
具体而言,预处理模块302是用于将E.164域名的电话号码域名部分解析 成国家代码域名部分、地区代码域名部分和用户号码域名部分,以形成包含公 共域名部分、国家代码域名部分、地区代码域名部分和用户号码域名部分的内 部域名格式。
存储模块303,用于将E.164域名按照预处理模块302预处理后的所述内 部域名格式存储于搜索树的各层节点,以形成内部域名存储格式。
具体而言,存储模块303是用于将E.164域名的公共域名部分、国家代码 域名部分、地区代码域名部分和用户号码域名部分分别存储于搜索树的各层节 点,以形成内部域名存储格式。
图4是本发明第一实施例中将E.164域名按照预处理模块302预处理后的 内部域名格式,存储于搜索树的各层节点的存储结构图,该E.164域名的电话 号码域名部分为固定电话号码,其公共域名部分包括ENUM顶级域名部分 和E.164固定域名部分。
在搜索树结构中,E.164域名的ENUM顶级域名部分"arpa"为树的根节 点,E.164固定域名部分"el64"为"arpa"的子节点,并且是"arpa"的唯一 子节点,E.164国家代码域名部分"86"为"el64"的子节点,并且是"el64" 的唯一子节点,由于该E.164域名的电话号码域名部分为固定电话号码,其地 区代码域名部分包括区号码域名部分和局号码域名部分。E.164区号码域名部 分"25"是"86"的子节点,E.164局号码域名部分"6789"为区号码域名部 分"25"的子节点。用户号码域名部分"1234" 、 "1235" 、 "1236"等为局 号码域名部分"6789"的子节点,但"1234" 、 "1235" 、 "1236"不直接处 于"6789"节点的子节点上,而是存储于一个静态数组结构,此静态数组结构 的头A,作为搜索树的一个子节点,即是局号码域名部分"6789"节点的子节 点,并且为"6789"节点的唯一子节点。在此静态数组结构的存储中,把号码 转换为整数值,按照大小顺序一次排列,如,第一个元素是"1234",第二个 是"1235",第三个是"1237",……第N个是"1999"。第一个元素的整 数值最小,最后一个元素的整数值最大。可以用公知技术预先对静态数组结构 进行排序。借此,本发明不仅把普通树结构的存储方式扁平化处理,而且用树结构和静态数组结构相结合的存储方式,降低了搜索树的高度和搜索复杂度。
一个固定电话号码中,如"67891234",其局号码长度和用户号码长度是 可以配置的,如果局号码长度4,那么局号码部分就是"6789",用户号码就 是"1234",如果局号码长度是3,那么局号码部分就是"678",而用户号 码则是"91234"。
作为本发明的第二实施例,E.164电话号码为移动电话号码,其在搜索树 结构和静态数组结构的存储结构如图5所示,由于该E.164域名的电话号码为 移动电话号码,其地区代码为归属位置寄存器(Home Location Regester, HLR) 前缀,且公共域名部分包括ENUM顶级域名部分和E.164固定域名部分。本 实施例中,其ENUM顶级域名部分"arpa"为树的根节点,E.164固定域名 部分"el64"为"arpa"的子节点,并且是"arpa"的唯一子节点,E.164域 名的国家代码域名部分"86"为"el64"的子节点,并且是"el64"的唯一 子节点,E.164的HLR前缀"1390518"是"86"的子节点。用户号码域名部 分"1234"、 "1235"、 "1236"等为HLR前缀"1390518"的子节点,但"1234"、
"1235" 、 "1236"不直接处于前缀"1390518"的子节点上,而是存储于一 个静态数组结构,此静态数组结构的头B,作为搜索树的一个子节点,即是
"1390518"节点的子节点,并且为"1390518"节点的唯一子节点。在此静 态数组结构的存储中,把号码转换为整数值,按照大小顺序一次排列,如,第 一个元素是"1234",第二个是"1235",第三个是"1237" , 第N个
是"1999"。第一个元素的整数值最小,最后一个元素的整数值最大。同样可 以用公知技术预先对静态数组结构进行排序。
搜索和匹配模块304,用于接收E.164域名查询,并根据内部域名格式和 内部域名存储格式,将要求査询E.164域名在所述存储模块303的搜索树上进 行搜索和匹配。
图6是本发明提供的E.164域名的解析方法,用于电话号码映射的域名服 务器(ENUMDNS),且所述E.164域名包括公共域名部分和电话号码域名部 分,具体的解析步骤包括如下
步骤S601,配置步骤,配置域名服务器所管辖区域的E.164电话号码的 若干号码段信息。所述若干号码段信息包括所有E.164电话号码的国家代码 信息、地区代码信息和用户号码信息。
步骤S602,预处理步骤,将E.164域名进行预处理,根据所配置的号码 段信息,将E.164域名的电话号码域名部分解析成若干号码段域名部分,形成 包含公共域名部分和若干号码段域名部分的内部域名格式。
具体而言,根据配置步骤的配置结果,将E.164域名的电话号码域名部分 解析成国家代码域名部分、地区代码域名部分和用户号码域名部分,以形成包 含公共域名部分、国家代码域名部分、地区代码域名部分和用户号码域名部分 的内部域名格式。
所述预处理步骤包括有两种处理方式
第一种方式,在域名服务器初始化时,例如域名服务器正常启动、重新启 动等情况下,对域名服务器管辖的全部E.164域名进行预处理,预处理之后的 数据存放在内存或者数据库中。该预处理工作是一次性的,不会增加实际解析 过程的时间。
第二种方式,在域名服务器收到E.164域名査询时,对所查询的E.164域 名进行预处理,并将预处理后的数据放在结构体中。 假设该结构体为struct—example,其定义格式如下 typedef sturct
{teltype int, 〃0固定电话,1移动电话 countrycode char(4), 〃国家代码
areacode char(4), 〃区号码(固定电话)或者HLR前缀(移动电话) officecode char(8), 〃局号码(固定电话) tdcode char(8) 〃用户号码 } struct—example
那么,对于固定电话号码"862567891234",其teltype的值是0, countrycode的值是"86" ,areacode的值是"25" ,officecode的值是"6789", tdcode的值是"1234"。对于移动电话号码"8613905181234",其teltype的 值是O, countrycode的值是"86" , areacode的值是"1390518" , telcode的 值是"1234"。
步骤S603,存储步骤,将E.164域名按照所述内部域名格式存储于搜索 树的各层节点,以形成内部域名存储格式。
具体而言,是将E.164域名的公共域名部分、国家代码域名部分、地区代
码域名部分和用户号码域名部份分别存储于搜索树的各层节点,以形成内部域 名存储格式。
优选地,存储步骤中将公共域名部分、国家代码域名部分、地区代码域名 部分分别存储于搜索树的各层节点;并将用户号码域名部分存储于静态数组结 构中,而该静态数组结构头为搜索树的一个节点。
步骤S604,搜索和匹配步骤,接收到E.164域名查询后,根据所述内部 域名格式和内部域名存储格式,将该E. 164域名在所述搜索树上进行搜索和匹 配。
结合图4所示,解析一个电话号码域名部分为固定电话号码 "862567891234",且公共域名部分包括ENUM顶级域名部分和E.164固定 域名部分的E.164域名,具体过程如图7所示,包括如下
步骤S701,配置域名服务器所管辖的E.164电话号码的若干号码段信息。 其国家代码为"86"、区号码"25"、局号码长度为"4"。
步骤S702,根据配置步骤的配置结果,对E.164域名进行预处理,将E.164 域名的电话号码域名部分"862567891234"解析成国家代码域名部分"86"、 区号码域名部分"25 "、局号码域名部分"6789"和用户号码域名部分"1234", 以形成内部域名格式。
步骤S703,将E.164域名按照所述内部域名格式存储于搜索树的各层节 点,以形成内部域名存储格式。
具体过程如下在搜索树的根节点存储ENUM顶级域名部分"arpa"; 该根节点的子节点存储E.164固定域名部分"el64";该E.164固定域名部分 节点的子节点存储国家代码域名部分"86";该国家代码域名部分节点的子节 点存储区号码域名部分"25";该区号码域名部分节点的子节点存储局号码域 名部分"6789";该局号码域名部分节点的子节点为静态数组结构头A,并且 将用户号码域名部分"1234"转换为整数值,按照大小顺序一次排列存储于该 静态数组结构中,其存储结构可参见图4。
通过该步骤,将搜索树变换压縮为6层。在搜索树中,靠近树根的5层节 点是有限的(这5层是"9876.52.68.el64.arpa"),搜索到该域名的主要工作 量在第6层("4321"的这l层),因为这一层可能存储了 "256789"这个号 码段的所有的10000个号码(从"2567890000"开始到"2567899999")。
对于第6层,可以预先按照排序的顺序,存储这可能存在的10000个节点,当 需要域名解析时且搜索到这一层时,使用二分法等简单搜索方法,就能很快匹 配到所需要的节点。
步骤S704, ENUM DNS服务器收到 "4.3.2.1.9.8.7.6.5.2.6.8.el64.arpa"
域名查询请求。
歩骤S705,判断"4.3.2丄9.8.7.6.5.2.6.8.el64.arpa"域名是否为E.164域名 格式的域名,若是则进行步骤S706;否则,退出预处理。
由关键词"el64.arpa",判断出该域名为是E.164号码格式的域名,进行 步骤S706。
步骤S706,截断"4.3.2丄9.8.7.6.5.2.6.8.el64.arpa"的公共域名部分即 "el64.arpa",得到全数字的电话号码域名部分"4.3.2丄9.8.7.6.5.2.6.8"。
步骤S707,对该电话号码域名部分进行去"."符号处理,变换成 "432198765268",并将得到的电话号码"432198765268"的次序翻转,变换 成"862567891234"。此时得到电话号码格式"862567891234"。
步骤S708,根据配置模块的数据配置,解析出国家代码域名部分"86"、 区号码域名部分"25"、局号码域名部分"6789"和用户号码域名部分"1234", 并将其放在stuct—example类型的结构体中。
此处,teltype的值是O,countrycode的值是"86" ,areacode的值是"25", officecode的值是"6789" , telcode的值是"1234"。
步骤S709,根据内部域名格式和内部域名存储格式,在搜索树上进行搜 索和匹配。
本发明的域名树中搜索,参见图4所示,根结点是"arpa",忽略,直接 下一个节点;搜索到"el64"节点,忽略,直接下一个节点;搜索到"86"节 点。下一步将搜索"区号码"节点。
在struct—example结构体中,areacode的值是"25",则搜索树中"86" 的子节点是"25"的节点。搜索到,进入下一步,搜索不到,则失败、退出。
在struct—example结构体中,teltype的值是"0"并且officecode的值是 "6789",则搜索树中"25"的子节点是"6789"的节点。搜索到,进入下一
步,搜索不到,则失败、退出。
在struct—example结构体中,telcode的值是"1234",则搜索节点是"6789"的子节点。本次搜索,进入静态数组结构。把"1234"转换为整数值,
进行搜索。如果搜索到,则域名解析成功,如果搜索不到,则失败、退出。
现有技术中对搜索树的遍历,时间复杂度是O(n),空间复杂度也是O(n), n是搜索树的节点树,每个电话号码的其中一个数字就是一个节点。本明中的 技术中,使用搜索树结构和数组结构相结合的方式,降低树的高度,降低了算 法复杂度。因为,对于一个Tier2级别的ENUMDNS服务器,从树的根结点 到树的第5层节点(从"apra"到"区号码"或到"局号码"),树的节点总 数是非常有限的,它的时间复杂度是O(n),空间复杂度也是O(n),此处的n 是一个很有限的数值(它表示的就是号码段的个数,100到10000级别的), 实际上以至于可以忽略不计。而搜索"号码"这一级别的工作量,实际上就是 搜索静态数组的工作量,它的时间复杂度是O(l),空间复杂度是O(n),此处 的n是的数值大小,决定于该服务器实际负责解析的某个号码段的所有号码的 数量。
结合图5所示,存储和査询一个电话号码域名部分为移动电话号码 "8613905181234",且公共域名部分包括ENUM顶级域名部分和E.164固定 域名部分的E.164域名,其解析过程与图7类似,具体包括如下
步骤S801 ,配置域名服务器所管辖的E.164电话号码的若干号码段信息。 其国家代码为"86" 、 HLR前缀长度为"7"。
步骤S802,根据配置歩骤的配置结果,对E.164域名进行预处理,将E.164 域名的电话号码域名部分"8613905181234"解析成国家代码域名部分、地区 代码域名部分和用户号码域名部分。
由于E.164电话号码为移动电话号码,其地区代码为HLR前缀。由此, 解析出的国家代码域名部分为"86" 、 HLR前缀域名部分"1390518"和用户 号码域名部分"1234"。
步骤S803,将E.164域名按照所述内部域名格式存储于搜索树的各层节 点,以形成内部域名存储格式。
本步骤的具体过程如下在搜索树的根节点存储ENUM顶级域名部分 "arpa";该根节点的子节点存储E.I64固定域名部分"el64";该E.164固 定域名部分节点的子节点存储国家代码域名部分"86";该国家代码域名部分 节点的子节点存储归属位置寄存器前缀域名部分"1390518";该归属位置寄
存器前缀域名部分节点的子节点为静态数组结构头"B",并且将用户号码域 名部分"1234"转换为整数值,按照大小顺序一次排列存储于该静态数组结构
中。其存储结构可参见图5。
通过本步骤,将搜索树变换压縮为5层。在搜索树中,靠近树根的4层节 点是有限的(这4层是"8150931.68.el64.arpa"),搜索到该域名的主要工作 量在第5层("4321"这1层),因为这一层可能存储了 "1390518"这个号 码段的所有的10000个号码(从"13905180000" 开始到"13905189999")。 对于第5层,可以预先按照排序的顺序,存储这可能存在的10000个节点,当 需要域名解析时且搜索到这一层时,使用简单的搜索算法,就能很快匹配到所 需要的节点。
步骤S804, ENUMDNS服务器收到"4.3.2.1.8.1.5.0.9.3丄6.8.el64.arpa"
域名查询请求。
步骤S805,判断"4.3.2丄8丄5.0.9.3丄6.8.el64.arpa"域名是否为E.164域 名格式的域名,是则进行步骤S706;否则,退出预处理。根据判断关键词 "el64.arpa",判断出该域名为是E.164域名,进行步骤S806。
步骤S806,截断"4.3.2丄8丄5.0.9.3丄6.8.el64.arpa"的共用域名部分即 "el64早",得到全数字的电话号码域名部分"4.3.2丄8丄5.0.9.3丄6.8"。
步骤S807,对该电话号码域名部分进行去"."符号处理,变换成 "4321815093168",并将得到的电话号码"4321815093168"的次序翻转,变 换成"8613905181234"。此时得到电话号码格式"8613905181234"。
步骤S808,将根据配置模块的数据配置,解析出国家代码域名部分"86"、 HLR前缀域名部分"1390518"和用户号码域名部分"1234",并将其放在 stuct一example类型的结构体中。
teltype的值是O,countrycode的值是"86" ,areacode的值是"1390518", officecode的值是""(空值),telcode的值是"1234"。
步骤S809,根据内部域名格式和内部域名存储格式,在搜索树上进行搜 索和匹配。
开始在本发明的搜索树中搜索,参见图4所示,根结点是"arpa",忽略, 直接下一个节点;搜索到"el64"节点,忽略,直接下一个节点;搜索到"86" 节点。下一步将搜索"区号"节
在struct—example结构体中,areacode的值是"1390518",则搜索树中 "86"的子节点是"1390518"的节点。搜索到,进入下一步,搜索不到,则 失败、退出。
在struct—example结构体中,teltype的值是"1"并且officecode的值是 ""(空值),所以,不对o伍cecode进行搜索。直接进入下一步。
在struct—example结构体中,telcode的值是"1234",则搜索节点是 "1390518"的子节点。本次搜索,进入静态数组结构。把"1234"转换为整 数值,进行搜索。如果搜索到,则域名解析成功,如果搜索不到,则失败、退 出。
综上所述,通过将所述E.164域名的电话号码域名部分解析成若干号码段 域名部分,形成包含公共域名部分和若干号码段域名部分的内部域名格式;并 将E.164域名按照所述内部域名格式存储于搜索树的各层节点,以形成内部域 名存储格式,从而变换和压缩了搜索树的层次,改变了域名数据的存储方式, 进而降低域名树的高度和搜索域名树的复杂度,减轻了域名解析系统的工作 量,提高了解析效率。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情 况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但 这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1、一种E.164域名的解析方法,应用于电话号码映射的域名服务器,所述E.164域名包括公共域名部分和电话号码域名部分,其特征在于,该方法包括如下步骤配置步骤,配置域名服务器所管辖的E.164电话号码的若干号码段信息;预处理步骤,对E.164域名进行预处理,根据所配置的号码段信息,将E.164域名的电话号码域名部分解析成若干号码段域名部分,形成包含公共域名部分和若干号码段域名部分的内部域名格式;存储步骤,将E.164域名按照所述内部域名格式存储于搜索树的各层节点,以形成内部域名存储格式;搜索和匹配步骤,接收到E.164域名查询后,根据所述内部域名格式和内部域名存储格式,将该要求查询E.164域名在所述搜索树上进行搜索和匹配。
2、 根据权利要求1所述的方法,其特征在于,所述配置步骤中,配置域 名服务器管辖区域的所有E.164电话号码的国家代码信息、地区代码信息和用 户号码信息;所述预处理步骤中,根据配置步骤的配置结果,将E.164域名的电话号码 域名部分解析成国家代码域名部分、地区代码域名部分和用户号码域名部分, 以形成包含公共域名部分、国家代码域名部分、地区代码域名部分和用户号码 域名部分的内部域名格式;所述存储步骤中,将E.164域名的公共域名部分、国家代码域名部分、地 区代码域名部分和用户号码域名部份分别存储于搜索树的各层节点,以形成内 部域名存储格式。
3、 根据权利要求2所述的方法,其特征在于,在所述存储步骤中将公共 域名部分、国家代码域名部分、地区代码域名部分分别存储于搜索树的各层节 点;并将用户号码域名部分存储于静态数组结构中,而该静态数组结构头为搜 索树的一个节点。
4、 根据权利要求3所述的方法,其特征在于,所述E.164电话号码为固 定电话号码,且所述公共域名部分包括ENUM即电话号码映射顶级域名部分、 E.164固定域名部分,所述配置步骤中配置的E.164电话号码的地区代码信息,包括区号码信息和局号码信息;所述预处理步骤中,将E.164域名的电话号码域名部分解析成国家代码域 名部分、区号码域名部分、局号码域名部分和用户号码域名部分,以形成包含 ENUM顶级域名部分、E.164固定域名部分、国家代码域名部分、区号码域名 部分、局号码域名部分和用户号码域名部分的内部域名格式。
5、 根据权利要求4所述的方法,其特征在于,所述存储步骤中搜索树的 根节点存储ENUM顶级域名部分;该根节点的子节点存储E.164固定域名部 分;该E.164固定域名部分节点的子节点存储国家代码域名部分;该国家代码 域名部分节点的子节点存储区号码域名部分;该区号码域名部分节点的子节点 存储局号码域名部分;该局号码域名部分节点的子节点为静态数组结构头,并 且将用户号码域名部分转换为整数值,按照大小顺序依次排列存储于该静态数 组结构中。
6、 根据权利要求3所述的方法,其特征在于,所述E.164电话号码为移 动电话号码,且所述公共域名部分包括ENUM顶级域名部分、E.164固定域名 部分,所述配置步骤中配置的E.164电话号码的地区代码信息,为归属位置寄存 器前缀信息;所述预处理步骤中,将E.164域名的电话号码域名部分解析成国家代码域 名部分、归属位置寄存器前缀域名部分和用户号码域名部分,以形成包含 ENUM顶级域名部分、E.164固定域名部分、国家代码域名部分、归属位置寄 存器前缀域名部分和用户号码域名部分的内部域名格式。
7、 根据权利要求6所述的方法,其特征在于,所述存储歩骤中搜索树的 根节点存储ENUM顶级域名部分;该根节点的子节点存储E.164固定域名部 分;该E.164固定域名部分节点的子节点存储国家代码域名部分;该国家代码 域名部分节点的子节点存储归属位置寄存器前缀域名部分;该归属位置寄存器 前缀域名部分节点的子节点为静态数组结构头,并且将用户号码域名部分转换 为整数值,按照大小顺序一次排列存储于该静态数组结构中。
8、 根据权利要求1所述的方法,其特征在于,所述预处理步骤还包括 在域名服务器初始化时,对域名服务器管辖的全部E.164域名进行预处理, 预处理之后的数据存放在内存或者数据库中;和/或在域名服务器收到E.164域名查询时,对所查询的E.164域名进行预处理, 并将预处理后的数据放在结构体中。
9、 根据权利要求8所述的方法,其特征在于,当域名服务器收到域名査 询时,所述预处理步骤包括判断该域名是否为E.164域名,若是,则将E.164 域名的公共域名部分截断,得到全数字的电话号码域名部分,并将该电话号码 域名部分进行去"."处理,并将得到的电话号码的次序反转;否则,退出预 处理。
10、 一种实现如权利要求1 9任一项所述方法的电话号码映射的域名服 务器,其供解析的E.164域名包括公共域名部分和电话号码域名部分,其特征 在于,包括配置模块,用于配置域名服务器所管辖的E.164电话号码的若干号码段信息;预处理模块,用于对E.164域名进行预处理,根据所配置的号码段信息, 将E.164域名的电话号码域名部分解析成若干号码段域名部分,形成包含公共 域名部分和若干号码段域名部分的内部域名格式;存储模块,用于将E.164域名按照所述内部域名格式存储于搜索树的各层 节点,以形成内部域名存储格式;搜索和匹配模块,用于接收E.164域名查询,并根据所述内部域名格式和 内部域名存储格式,将该要求査询E. 164域名在所述搜索树上进行搜索和匹配。
全文摘要
本发明公开了一种E.164域名的解析方法,包括有配置域名服务器所管辖的E.164电话号码的若干号码段信息;对E.164域名进行预处理,根据所配置的号码段信息,将E.164域名的电话号码域名部分解析成若干号码段域名部分,形成包含公共域名部分和若干号码段域名部分的内部域名格式;将E.164域名按照内部域名格式存储于搜索树的各层节点,以形成内部域名存储格式;接收到E.164域名查询后,根据内部域名格式和内部域名存储格式,将该要求查询E.164域名在搜索树上进行搜索和匹配。本发明还相应提供一种域名服务器。本发明降低了搜索树的高度和搜索复杂度,减轻了域名解析系统的工作量,提高了域名解析效率。
文档编号H04L29/06GK101110871SQ20071012050
公开日2008年1月23日 申请日期2007年8月20日 优先权日2007年8月20日
发明者景伟东 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1