CN101110871A - 一种e.164域名的解析方法以及域名服务器 - Google Patents
一种e.164域名的解析方法以及域名服务器 Download PDFInfo
- Publication number
- CN101110871A CN101110871A CNA2007101205047A CN200710120504A CN101110871A CN 101110871 A CN101110871 A CN 101110871A CN A2007101205047 A CNA2007101205047 A CN A2007101205047A CN 200710120504 A CN200710120504 A CN 200710120504A CN 101110871 A CN101110871 A CN 101110871A
- Authority
- CN
- China
- Prior art keywords
- domain name
- name part
- telephone number
- node
- format
- 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.)
- Pending
Links
Images
Abstract
本发明公开了一种E.164域名的解析方法,包括有:配置域名服务器所管辖的E.164电话号码的若干号码段信息;对E.164域名进行预处理,根据所配置的号码段信息,将E.164域名的电话号码域名部分解析成若干号码段域名部分,形成包含公共域名部分和若干号码段域名部分的内部域名格式;将E.164域名按照内部域名格式存储于搜索树的各层节点,以形成内部域名存储格式;接收到E.164域名查询后,根据内部域名格式和内部域名存储格式,将该要求查询E.164域名在搜索树上进行搜索和匹配。本发明还相应提供一种域名服务器。本发明降低了搜索树的高度和搜索复杂度,减轻了域名解析系统的工作量,提高了域名解析效率。
Description
技术领域
本发明涉及通信网络技术领域,尤其涉及一种在ENUM(tElephoneNUmber Mapping,电话号码映射)业务中E.164域名的解析方法以及域名服务器。
背景技术
随着信息产业的发展,电信网和互联网的融合成为趋势,通信手段的多样化使每个用户有许多的标识来表示自己的身份,比如:移动电话号码,固定电话号码、即时消息地址、电子邮件地址、个人网页等。目前,这些标识基本是不相关的,用户需要记忆的这些相互独立的标识信息的数量也越来越多。
基于此,互联网工程任务组(Internet Engineering Task Force,IETF)的电话号码映射工作组(tElephone NUmber Mapping working group)定义的协议RFC2916和RFC3761应运而生。该协议定义了将E.164电话号码映射为E.164域名的规则以及在互联网域名服务器(Domain Name Server,DNS)数据库中存储与该域名相关信息的方式。每个由E.164电话号码转化而成的E.164域名可以通过电话号码映射的域名服务器(ENUM DNS)解析为一系列的网络资源记录即统一资源标识(Uniform Resource Identifier,URI),从而使国际统一的E.164电话号码成为可以在互联网中使用的网络地址资源。
图1是ENUM DNS服务器在网络中的结构图。该ENUM DNS服务器100位于电信网络101和互联网络102之间。当位于电信网络101侧的终端A与位于互联网络102侧的终端B建立通信时,终端A通过电信网络101向ENUMDNS服务器100发出终端B域名查询请求,ENUM DNS服务器100解析终端B的域名,并将解析结果返回给终端A,由此终端A根据解析结果与终端B建立连接。
下面举例说明,通过RFC2916规定的协议,实现将一个E.164电话号码翻译为一个E.164域名:这里假设e164.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)将数字的顺序颠倒一下,如:4.3.2.1.9.8.7.6.5.2.6.8;
6)将“.e164.arpa”加到数字串的尾部,如:4.3.2.1.9.8.7.6.5.2.6.8.e164.arpa。
因此E.164电话号码86-25-67891234所对应的E.164域名为:4.3.2.1.9.8.7.6.5.2.6.8.e164.arpa。
传统的DNS仍然主要用于域名到相应IP地址的翻译,当用DNS完成更多内容时,比如完成ENUM到URI的解析时,需要制定新的资源类型,名字授权指针(Naming Authority Pointer,NAPTR)就是针对ENUM的新DNS资源记录(Resource Recorder,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.2.1.9.8.7.6.5.2.6.8.e164.arpa”,其在域名树中的存储方式如图1所示,在该域名树中,树的层次共有14层,其中,1到4层是ENUM顶级域名“Arpa”、固定域名“E164”和国家代码域名“86”;5到14层是电话号码域名相关部分“2567891234”此部分是ENUM DNS服务器具体解析这若干个地区的E.164域名映射到统一资源标识的主要依据。
当ENUM DNS服务器接收到域名解析请求的时候,它收到的域名的格式,如“4.3.2.1.9.8.7.6.5.2.6.8.e164.arpa”,于是,开始在图2所示的域名树中开始搜索匹配,第一步匹配到“Arpa”,第二步匹配到“E164”,第三步匹配到“8 ” ,第四步匹配到“6”,......依次类推,第14步匹配到“4”。
上述方法把电话号码的每个数字都当作域名中的一个子域,有利于简单有效的把电话号码格式转换成互联网域名格式,使电信网络和互联网络能相互沟通,但是对于域名解析系统,原先解析互联网域名,一个完整域名的层次一般都在4或5层,如“www.zte.com.cn”,其域名是4级;而E.164电话号码转换而来的一个完整域名,它的层次一般都在10层以上。域名层次的增大以及域名长度的增加,使域名解析系统工作量也大大增加。而且,如果还是按照传统的DNS解析方式来处理E.164电话号码转换而来的域名,把域名中的每个数字当作域名树的一个节点,这种处理方式耗时费力。
综上可知,现有E.164域名的解析技术,在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的第一目的在于提供一种E.164域名的解析方法,该方法可以降低搜索树的高度和搜索复杂度,减轻域名解析系统的工作量,提高域名解析效率。
本发明的第二目的在于提供一种电话号码映射的域名服务器(ENUMDNS),该域名服务器可以降低搜索树的高度和搜索复杂度,减轻域名解析系统的工作量,提高域名解析效率。
为了实现上述第一目的,本发明提供一种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是现有技术中ENUM DNS域名服务器的网络结构图;
图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固定域名部分,例如“e164.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负责解析的所有国家代码信息,如中国的国家代码是“86”。
域名服务器300负责解析的所有固定电话的归属地区代码信息,可以使用电信长途区号来标识某个区域,如“8625”是南京地区,“86512”是苏州地区等;以及负责解析的固定电话的号码段信息,如“86252222”、“86253333”、“86256789”等格式的固定号码段。
域名服务器300负责解析的所有移动电话的归属位置寄存器(HomeLocation 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固定域名部分“e164”为“arpa”的子节点,并且是“arpa”的唯一子节点,E.164国家代码域名部分“86”为“e164”的子节点,并且是“e164”的唯一子节点,由于该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固定域名部分“e164”为“arpa”的子节点,并且是“arpa”的唯一子节点,E.164域名的国家代码域名部分“86”为“e164”的子节点,并且是“e164”的唯一子节点,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域名的解析方法,用于电话号码映射的域名服务器(ENUM DNS),且所述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),//局号码(固定电话)
telcode char(8)//用户号码
}struct_example
那么,对于固定电话号码“862567891234”,其teltype的值是0,countrycode的值是“86”,areacode的值是“25”,officecode的值是“6789”,telcode的值是“1234”。对于移动电话号码“8613905181234”,其teltype的值是0,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固定域名部分“e164”;该E.164固定域名部分节点的子节点存储国家代码域名部分“86”;该国家代码域名部分节点的子节点存储区号码域名部分“25”;该区号码域名部分节点的子节点存储局号码域名部分“6789”;该局号码域名部分节点的子节点为静态数组结构头A,并且将用户号码域名部分“1234”转换为整数值,按照大小顺序一次排列存储于该静态数组结构中,其存储结构可参见图4。
通过该步骤,将搜索树变换压缩为6层。在搜索树中,靠近树根的5层节点是有限的(这5层是“9876.52.68.e164.arpa”),搜索到该域名的主要工作量在第6层(“4321”的这1层),因为这一层可能存储了“256789”这个号码段的所有的10000个号码(从“2567890000”开始到“2567899999”)。对于第6层,可以预先按照排序的顺序,存储这可能存在的10000个节点,当需要域名解析时且搜索到这一层时,使用二分法等简单搜索方法,就能很快匹配到所需要的节点。
步骤S704,ENUM DNS服务器收到“4.3.2.1.9.8.7.6.5.2.6.8.e164.arpa”域名查询请求。
步骤S705,判断“4.3.2.1.9.8.7.6.5.2.6.8.e164.arpa”域名是否为E.164域名格式的域名,若是则进行步骤S706;否则,退出预处理。
由关键词“e164.arpa”,判断出该域名为是E.164号码格式的域名,进行步骤S706。
步骤S706,截断“4.3.2.1.9.8.7.6.5.2.6.8.e164.arpa”的公共域名部分即“e164.arpa”,得到全数字的电话号码域名部分“4.3.2.1.9.8.7.6.5.2.6.8”。
步骤S707,对该电话号码域名部分进行去“.”符号处理,变换成“432198765268”,并将得到的电话号码“432198765268”的次序翻转,变换成“862567891234”。此时得到电话号码格式“862567891234”。
步骤S708,根据配置模块的数据配置,解析出国家代码域名部分“86”、区号码域名部分“25”、局号码域名部分“6789”和用户号码域名部分“1234”,并将其放在stuct_example类型的结构体中。
此处,teltype的值是0,countrycode的值是“86”,areacode的值是“25”,officecode的值是“6789”,telcode的值是“1234”。
步骤S709,根据内部域名格式和内部域名存储格式,在搜索树上进行搜索和匹配。
本发明的域名树中搜索,参见图4所示,根结点是“arpa”,忽略,直接下一个节点;搜索到“e164”节点,忽略,直接下一个节点;搜索到“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是搜索树的节点树,每个电话号码的其中一个数字就是一个节点。本明中的技术中,使用搜索树结构和数组结构相结合的方式,降低树的高度,降低了算法复杂度。因为,对于一个Tier 2级别的ENUM DNS服务器,从树的根结点到树的第5层节点(从“apra”到“区号码”或到“局号码”),树的节点总数是非常有限的,它的时间复杂度是O(n),空间复杂度也是O(n),此处的n是一个很有限的数值(它表示的就是号码段的个数,100到10000级别的),实际上以至于可以忽略不计。而搜索“号码”这一级别的工作量,实际上就是搜索静态数组的工作量,它的时间复杂度是O(1),空间复杂度是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.164固定域名部分“e164”;该E.164固定域名部分节点的子节点存储国家代码域名部分“86”;该国家代码域名部分节点的子节点存储归属位置寄存器前缀域名部分“1390518”;该归属位置寄存器前缀域名部分节点的子节点为静态数组结构头“B”,并且将用户号码域名部分“1234”转换为整数值,按照大小顺序一次排列存储于该静态数组结构中。其存储结构可参见图5。
通过本步骤,将搜索树变换压缩为5层。在搜索树中,靠近树根的4层节点是有限的(这4层是“8150931.68.e164.arpa”),搜索到该域名的主要工作量在第5层(“4321”这1层),因为这一层可能存储了“1390518”这个号码段的所有的10000个号码(从“13905180000”开始到“13905189999”)。对于第5层,可以预先按照排序的顺序,存储这可能存在的10000个节点,当需要域名解析时且搜索到这一层时,使用简单的搜索算法,就能很快匹配到所需要的节点。
步骤S804,ENUM DNS服务器收到“4.3.2.1.8.1.5.0.9.3.1.6.8.e164.arpa”域名查询请求。
步骤S805,判断“4.3.2.1.8.1.5.0.9.3.1.6.8.e164.arpa”域名是否为E.164域名格式的域名,是则进行步骤S706;否则,退出预处理。根据判断关键词“e164.arpa”,判断出该域名为是E.164域名,进行步骤S806。
步骤S806,截断“4.3.2.1.8.1.5.0.9.3.1.6.8.e164.arpa”的共用域名部分即“e164.arpa”,得到全数字的电话号码域名部分“4.3.2.1.8.1.5.0.9.3.1.6.8”。
步骤S807,对该电话号码域名部分进行去“.”符号处理,变换成“4321815093168”,并将得到的电话号码“4321815093168”的次序翻转,变换成“8613905181234”。此时得到电话号码格式“8613905181234”。
步骤S808,将根据配置模块的数据配置,解析出国家代码域名部分“86”、HLR前缀域名部分“1390518”和用户号码域名部分“1234”,并将其放在stuct_example类型的结构体中。
teltype的值是0,countrycode的值是“86”,areacode的值是“1390518”,officecode的值是“”(空值),telcode的值是“1234”。
步骤S809,根据内部域名格式和内部域名存储格式,在搜索树上进行搜索和匹配。
开始在本发明的搜索树中搜索,参见图4所示,根结点是“arpa”,忽略,直接下一个节点;搜索到“e164”节点,忽略,直接下一个节点;搜索到“86”节点。下一步将搜索“区号”节点。
在struct_example结构体中,areacode的值是“1390518”,则搜索树中“86”的子节点是“1390518”的节点。搜索到,进入下一步,搜索不到,则失败、退出。
在struct_example结构体中,teltype的值是“1”并且officecode的值是“”(空值),所以,不对officecode进行搜索。直接进入下一步。
在struct_example结构体中,telcode的值是“1234”,则搜索节点是“1390518”的子节点。本次搜索,进入静态数组结构。把“1234”转换为整数值,进行搜索。如果搜索到,则域名解析成功,如果搜索不到,则失败、退出。
综上所述,通过将所述E.164域名的电话号码域名部分解析成若干号码段域名部分,形成包含公共域名部分和若干号码段域名部分的内部域名格式;并将E.164域名按照所述内部域名格式存储于搜索树的各层节点,以形成内部域名存储格式,从而变换和压缩了搜索树的层次,改变了域名数据的存储方式,进而降低域名树的高度和搜索域名树的复杂度,减轻了域名解析系统的工作量,提高了解析效率。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (10)
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域名在所述搜索树上进行搜索和匹配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101205047A CN101110871A (zh) | 2007-08-20 | 2007-08-20 | 一种e.164域名的解析方法以及域名服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101205047A CN101110871A (zh) | 2007-08-20 | 2007-08-20 | 一种e.164域名的解析方法以及域名服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101110871A true CN101110871A (zh) | 2008-01-23 |
Family
ID=39042755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101205047A Pending CN101110871A (zh) | 2007-08-20 | 2007-08-20 | 一种e.164域名的解析方法以及域名服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101110871A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101984647A (zh) * | 2010-12-06 | 2011-03-09 | 广州钜讯网络科技有限公司 | 短信查找方法与装置 |
CN102611810A (zh) * | 2012-03-13 | 2012-07-25 | 中国联合网络通信集团有限公司 | 通信方法及应用平台、通信装置 |
CN103020060A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种基于树型结构的号码段匹配算法及其实现 |
CN103986795A (zh) * | 2013-02-08 | 2014-08-13 | 王正伟 | 电话号码映射方法 |
CN104079681A (zh) * | 2014-07-07 | 2014-10-01 | 中国人民解放军理工大学 | 一种别名解析方法 |
CN106776657A (zh) * | 2015-11-25 | 2017-05-31 | 阿里巴巴集团控股有限公司 | 一种域名检索方法及设备 |
CN110535719A (zh) * | 2019-08-19 | 2019-12-03 | 福建天晴在线互动科技有限公司 | 一种基于dns流量特征的游戏外挂行为监控方法 |
-
2007
- 2007-08-20 CN CNA2007101205047A patent/CN101110871A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101984647A (zh) * | 2010-12-06 | 2011-03-09 | 广州钜讯网络科技有限公司 | 短信查找方法与装置 |
CN101984647B (zh) * | 2010-12-06 | 2013-02-13 | 广州钜讯网络科技有限公司 | 短信查找方法与装置 |
CN103020060A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种基于树型结构的号码段匹配算法及其实现 |
CN102611810A (zh) * | 2012-03-13 | 2012-07-25 | 中国联合网络通信集团有限公司 | 通信方法及应用平台、通信装置 |
CN102611810B (zh) * | 2012-03-13 | 2013-12-18 | 中国联合网络通信集团有限公司 | 通信方法及应用平台、通信装置 |
CN103986795A (zh) * | 2013-02-08 | 2014-08-13 | 王正伟 | 电话号码映射方法 |
CN104079681A (zh) * | 2014-07-07 | 2014-10-01 | 中国人民解放军理工大学 | 一种别名解析方法 |
CN106776657A (zh) * | 2015-11-25 | 2017-05-31 | 阿里巴巴集团控股有限公司 | 一种域名检索方法及设备 |
CN106776657B (zh) * | 2015-11-25 | 2021-05-04 | 阿里巴巴集团控股有限公司 | 一种域名检索方法及设备 |
CN110535719A (zh) * | 2019-08-19 | 2019-12-03 | 福建天晴在线互动科技有限公司 | 一种基于dns流量特征的游戏外挂行为监控方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101175097B (zh) | 用于针对ims服务的灵活的地址机制的解析的方法和装置 | |
CN1640109B (zh) | 将名称或标识符映射到电信网络资源位置的方法 | |
CN101110871A (zh) | 一种e.164域名的解析方法以及域名服务器 | |
US6122258A (en) | Method for creating a numbering plan-independent directory structure for telecommunications applications | |
US20020052912A1 (en) | Numeric/voice name internet access architecture and methodology | |
CN100589644C (zh) | 一种呼叫处理系统及其方法 | |
CN113486051B (zh) | 工业互联网标识解析方法、系统、节点及存储介质 | |
CN100459593C (zh) | 利用即时消息系统实现问答业务的方法及系统 | |
US20070002778A1 (en) | Method for query of domain names of telephone numbers | |
CN103167444A (zh) | 网站获取用户手机号码的方法、系统、客户端及服务器 | |
CN103546593A (zh) | 基于ip与非ip的无线传感器网络节点标识符解析方法 | |
CN101499996A (zh) | 域名差异化解析方法和域名服务器 | |
JP4009591B2 (ja) | データベースにアクセスするためのドメインネーミングシステム(dns) | |
KR100452944B1 (ko) | Enum 서비스 시스템 및 이의 운용방법 | |
CN101661485A (zh) | 用于支持联系信息查询的方法和设备 | |
KR20030040291A (ko) | 이넘 네임 등록, 이넘 네임 해석, 이넘 네임 서버 관리 및재기동 방법, 프로그램, 매체, 장치 | |
CN101626628B (zh) | 数字号码与网址映射及推送系统 | |
US20020025031A1 (en) | Network address conversion method and apparatus | |
CN105530329A (zh) | 一种支持名字搜索的新型域名解析服务方法和装置 | |
CN107193851B (zh) | 数据查询方法及装置 | |
CN101640701A (zh) | 用于电话号码映射域名服务器Enumdns查询的方法 | |
KR100388610B1 (ko) | 아이피 폰 넘버 관리 시스템 및 방법 | |
CN1933461A (zh) | 实现多注册域实名/实号呼叫的通信系统和方法 | |
CN100477831C (zh) | 使用内容访问数字的无线互联网内容访问系统及其控制方法 | |
CN103986795A (zh) | 电话号码映射方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20080123 |