E.164号码域名存储和查询方法

文档序号:6621642阅读:1554来源:国知局
专利名称:E.164号码域名存储和查询方法
技术领域
本发明涉及电话号码到统一资源标识映射的域名系统(ENUM DNS),尤指E.164号码转换成对应域名后的存储和查询方法。
背景技术
ENUM(Electronic Numbers to URI Mapping,电话号码到统一资源标识映射)是IETF的电话号码映射工作组定义的一个协议-RFC2916,RFC2916的题目为“E.164号码和域名系统(E.164 Number and DNS)”。它定义了将E.164号码转换为域名形式放在DNS服务器的数据库中的方法,每个由E.164号码转化而成的域名可以对应一系列的统一资源标识(Uniform Resource Identifier,URI),从而使国际统一的E.164电话号码成为可以在互联网中使用的网络地址资源。ENUM DNS可以利用电话号码来查找注册人(Registrant)电子邮件、IP电话号码、统一消息、IP传真或个人网页等多种信息。E.164号码是传统电信网络中使用的重要资源,DNS系统是互联网的重要基础,ENUM将两者结合起来,有益于传统电信服务向基于IP包交换的方向发展,ENUM是对促进两网最终融合具有重要意义的技术。
ENUM定义了如下过程,将电话号码映射为DNS系统中的记录一个E.164号码由以下几个部分组成,不同部分之间可以用“-”、“.”或空格等连接+国家码(1~3位数字)-地区码(n位数字)-电话号码(15-n位数字)。例如北京的一个电话号码写成标准的E.164格式应是+86-10-62618501。将电话号码转换成DNS系统中的域名步骤为第一步,将一个电话号码处理成一个标准的E.164号码的格式,如+86-10-62618501;第二步,去掉除了最左端的“+”外的所有连接符,变成+861062618501;第三步,去掉“+”号,并将号码翻转变成105816260168;第四步,在每个数字之间加上域名分割符“.”,变成1.0.8.1.6.2.6.0.1.6.8;第五步,在上面的数字串末尾加上公共域名“.e164.tld”,变成1.0.5.8.1.6.2.6.0.1.6.8.e164.tld。
这样一个电话号码变成了DNS中的域名形式。
目前互联网的DNS系统实现了域名向IP地址的转换,如将域名www.dongfang.com转换为192.172.250.27。现有技术中的域名解析系统存放域名信息时,是以“.”作为分隔符,拆分成多个节点按搜索二叉树的规则进行存放的,例如www.dongfang.com和www.163.com的存放方式如图1所示。对于“dongfang”和“163”这样的平行节点,以“dongfang”和“163”作为输入字符串,按系统设定的规则生成HASH值,对HASH值对应节点的位置信息存储在系统中的一个哈希表中,用于域名对应节点的查询。
现有技术中,ENUM DNS系统沿用了互联网中DNS系统相同的存储和查询方法,例如电话号码为8613512511125,其对应的域名形式为5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs,其存放方式如图2所示,也是以“.”作为分隔符,拆分成多个节点进行存放。由图可见,采用这种存放方式,搜索树的高度很高(每一位电话号码对应一级平行节点,电话号码越长,搜索树的高度越高)。当系统查询E.164号码域名时,需要查询多级平行节点,查询时间较长;且各节点的长度为1,只可能是数字0-9,这样最多只能生成10种哈希(HASH)值,在系统存储数据量大的情况下,冲突非常严重,查询效率极低。

发明内容
本发明提供E.164号码域名的存储和查询方法,用以解决现有技术中查询E.164号码域名效率低的问题。
本发明提供的E.164号码域名的存储和查询方法,在电话号码到统一资源标识映射的域名系统(ENUM DNS)中,将E.164号码域名分成公共域名部分和数字域名部分;将公共域名部分中用分隔符隔开的公共域名信息以及数字域名部分中各数字依设定顺序排列后的数据按搜索树的存放规则顺序存放到搜索树的节点中;ENUM DNS系统接收到E.164号码域名查询后,获取域名中的公共域名信息,并按照所述搜索树的查找规则查找出搜索树的相应节点;获取域名中用分隔符隔开的各数字,并按系统设定顺序排列成数据后查找出所述搜索树的下一级节点。
根据本发明的上述方法,还包括系统采用设定的哈希算法分别计算出所述公共域名信息和数据的哈希值,存储哈希值对应节点的位置信息;在域名查询过程中,若按照搜索树的查找规则对应节点查找失败,则采用系统设定的哈希算法计算出被查询的公共域名信息或数据的哈希值,根据计算出的哈希值确定出搜索树的对应节点。
所述哈希值对应节点的位置信息存储在一个哈希表中;所述根据计算出的哈希值确定出搜索树的对应节点,具体方法为用计算出的哈希值作为索引,查找存储的哈希表,获取对应节点位置信息。
所述数字域名部分中各数字依设定顺序排列包括将域名中用分隔符隔开的数字按从左到右或从右到左的顺序排列成数据。
根据本发明的上述方法,公共域名部分中用分隔符隔开的公共域名信息按从右到左的顺序分别存储到所述搜索树的根节点和下一级子节点中。
根据本发明的上述方法,公共域名部分中用分隔符隔开的公共域名信息按设定顺序合并在一起,存放到所述搜索树的根节点中。
根据本发明的上述方法,将公共域名部分中用分隔符隔开的公共域名信息按从左到右或从右到左的顺序合并在一起。
根据本发明的上述方法,所述搜索树为二叉搜索树。
本发明有益效果如下(1)采用本发明方法能减少域名存放时的节点数,降低存储域名的搜索树的高度,从而提高域名查询效率;(2)采用本发明方法提高了平行节点生成HASH值的散列度,在系统存储数据量大的情况下,有效降低了冲突的可能性,使得缓存数据量的变化对系统查询效率的影响非常小。


图1为互联网DNS系统中用二叉搜索树存放域名的节点示意图;图2为现有技术在ENUM DNS系统中用搜索树存放E.164号码域名的节点示意图;图3为本发明在ENUM DNS系统中用搜索树存放E.164号码域名的节点示意图之一;图4为本发明在ENUM DNS系统中用搜索树存放E.164号码域名的节点示意图之二;图5为本发明在ENUM DNS系统中用搜索树存放E.164号码域名的节点示意图之三;图6为本发明在ENUM DNS系统中用搜索树存放E.164号码域名的节点示意图之四;图7为本发明在ENUM DNS系统中用搜索树存放E.164号码域名的节点示意图之五;图8为本发明在ENUM DNS系统中用搜索树存放E.164号码域名的节点示意图之六。
具体实施例方式
本发明提供E.164号码域名的存储和查询方法,包括
在电话号码到统一资源标识映射的域名系统(ENUM DNS)中,将E.164号码域名分成公共域名部分和数字域名部分;将公共域名部分中用分隔符隔开的公共域名信息以及数字域名部分中各数字依设定顺序排列后的数据按搜索树的存放规则顺序存放到搜索树的节点中;ENUM DNS系统接收到E.164号码域名查询后,获取域名中的公共域名信息,并按照所述搜索树的查找规则查找出搜索树的相应节点;获取域名中用分隔符隔开的各数字,并按系统设定顺序排列成数据后查找出所述搜索树的下一级节点。
为了进一步提高系统查询效率,本发明方法还采用设定的哈希算法分别计算出所述公共域名信息和数据的哈希值,存储哈希值对应节点的位置信息;在域名查询过程中,若按照搜索树的查找规则对应节点查找失败,则采用系统设定的哈希算法计算出被查询的公共域名信息或数据的哈希值,根据计算出的哈希值确定出搜索树的对应节点。
所述哈希值对应节点的位置信息存储在一个哈希表中;所述根据计算出的哈希值确定出搜索树的对应节点具体方法为用计算出的哈希值作为索引,查找存储的哈希表,获取对应节点位置信息。
下面例举两种具体实施方式
对本发明方法分别加以描述。
实施方式一公共域名部分中用分隔符隔开的公共域名信息按从右到左的顺序分别存储到所述搜索树的根节点和下一级子节点中。
以电话号码为8613512511125为例,根据E.164号码域名转换规则转换成的域名形式为5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs;基中e164.gprs为系统添加的公共域名(公共域名可以在系统中由用户设定,系统会根据设定好的公共域名在电话号码转换后的域名中自动加上公共域名部分)。在ENUM DNS系统中,将E.164号码转换后的域名采用搜索树的存放规则进行存放,但搜索树中各节点对应的存放信息不是采用现有技术中以“.”作为分隔符,将每一个数字存入一个节点中,而是将转换后的域名分为两大部分即公共域名部分和数字域名部分分别加以存放。具体为将公共域名信息以“.”作为分隔符,依照搜索树的存放规则存放到搜索树的根节点中和子节点中,如图3、图4所示。此处的搜索树可以采用二叉搜索树或别的搜索树。
系统按照预先设定的哈希算法计算出公共域名信息中以“.”作为分隔符的各域名信息(e164和gprs)对应的哈希值,并将对应节点的位置信息存储到一个哈希表中;系统将其余用分隔符“.”隔开的各个数字,接照设定的顺序排列成数据后按照搜索树的存放规则存放到上述搜索树的相应子节点中,如图3、图4所示;具体如何排列各个数字,是可以通过系统进行设定的,为简单方便,可以选择从左到右按序排列,或从右到左按序排列;如上例,按照从左到右的顺序排列成的数据为5211152153168(参见图3);按照从右到左的顺序排列成的数据为8613512511125(参见图4);获得排列好的数据后,系统按照预先设定的哈希算法计算出该数据的哈希值,并将对应节点的位置信息存储到上述哈希表中。
ENUM DNS系统接收到E.164号码域名查询后,例如,用户输入5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs的域名,系统获取域名中的公共域名信息e164.gprs,将公共域名信息中用分隔符隔开的各部分域名(e164和gprs)按照搜索树的查找规则分别查找出搜索树的根节点gprs和子节点e164;再获取域名中用分隔符隔开的各数字,并按系统设定顺序排列成数据5211152153168或8613512511125,查找出搜索树的下一级节点。若按照搜索树的查找规则对应节点查找失败,例如,查找数据5211152153168对应节点失败,则系统依照设定的哈希算法计算出数据5211152153168的哈希值,以计算出的哈希值作为索引,查找存储的哈希表,得到对应的节点位置信息。
实施方式二将公共域名部分中用分隔符隔开的公共域名信息按设定顺序合并在一起,存放到所述搜索树的根节点中。
以5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs域名为例,存储到搜索树时,将公共域名e164.gprs进行合并,存储到搜索树的根节点中;例如,按从左到右的顺序合并为e164gprs进行存储(参见图5和图6),或按从右到左的顺序合并为gprse164进行存储(参见图7和图8)。数据部分的存储方式与上述方法一相同,即可以按照从左到右的顺序排列为5211152153168,或按从右到左的顺序排列为8613512511125。这样,根据公共域名的合并和数字的排列顺序可以有如下四种组合存储方式组合存储方式一公共域名按从左到右的顺序合并,各数字按从左到右的顺序排列,如图5所示;组合存储方式二公共域名按从左到右的顺序合并,各数字按从右到左的顺序排列,如图6所示;组合存储方式三公共域名按从右到左的顺序合并,各数字按从左到右的顺序排列,如图7所示;组合存储方式四公共域名按从右到左的顺序合并,各数字按从右到左的顺序排列,如图8所示。
ENUM DNS系统接收到E.164号码域名查询后,例如,用户输入5.2.1.1.1.5.2.1.5.3.1.6.8.e164.gprs的域名,系统获取域名中的公共域名信息e164.gprs,将公共域名信息中用分隔符隔开的各部分域名(e164和gprs)按照系统设定的合并方式进行合并,例如按从左到右的顺序合并为e164gprs,或按从右到左的顺序合并为gprse164,按搜索树的查找规则查找出搜索树的根节点;再获取域名中用分隔符隔开的各数字,并按系统设定顺序排列成数据5211152153168或8613512511125,查找出搜索树的下一级节点。若按照搜索树的查找规则对应节点查找失败,例如,查找数据5211152153168对应节点失败,则系统依照设定的哈希算法计算出数据5211152153168的哈希值,以计算出的哈希值作为索引,查找存储的哈希表,得到对应的节点位置信息。
采用本发明的上述方法,大大降低了搜索树的高度,能明显减少域名查询时节点匹配的次数,提高查询效率;另外,节点中的多位数据与电话号码有关,这样,不同的电话号码会组成不同的数据,使得由该数据生成相同哈希值的可能性大大降低,即提高了生成的哈希值的散列度,即使在系统缓存有大数据量的情况下,查询节点时的冲突几率小,解决了现有技术中系统查询效率随着缓存数据量的增加迅速下降的问题。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种E.164号码域名的存储和查询方法,包括在电话号码到统一资源标识映射的域名系统(ENUM DNS)中,将E.164号码域名分成公共域名部分和数字域名部分;将公共域名部分中用分隔符隔开的公共域名信息以及数字域名部分中各数字依设定顺序排列后的数据按搜索树的存放规则顺序存放到搜索树的节点中;ENUM DNS系统接收到E.164号码域名查询后,获取域名中的公共域名信息,并按照所述搜索树的查找规则查找出搜索树的相应节点;获取域名中用分隔符隔开的各数字,并按系统设定顺序排列成数据后查找出所述搜索树的下一级节点。
2.如权利要求1所述的方法,其特征在于,还包括系统采用设定的哈希算法分别计算出所述公共域名信息和数据的哈希值,存储哈希值对应节点的位置信息;在域名查询过程中,若按照搜索树的查找规则对应节点查找失败,则采用系统设定的哈希算法计算出被查询的公共域名信息或数据的哈希值,根据计算出的哈希值确定出搜索树的对应节点。
3.如权利要求2所述的方法,其特征在于,所述哈希值对应节点的位置信息存储在一个哈希表中;所述根据计算出的哈希值确定出搜索树的对应节点,具体方法为用计算出的哈希值作为索引,查找存储的哈希表,获取对应节点位置信息。
4.如权利要求1所述的方法,其特征在于,所述数字域名部分中各数字依设定顺序排列包括将域名中用分隔符隔开的数字按从左到右或从右到左的顺序排列成数据。
5.如权利要求1所述的方法,其特征在于,公共域名部分中用分隔符隔开的公共域名信息按从右到左的顺序分别存储到所述搜索树的根节点和下一级子节点中。
6.如权利要求1所述的方法,其特征在于,公共域名部分中用分隔符隔开的公共域名信息按设定顺序合并在一起,存放到所述搜索树的根节点中。
7.如权利要求6所述的方法,其特征在于,将公共域名部分中用分隔符隔开的公共域名信息按从左到右或从右到左的顺序合并在一起。
8.如权利要求1所述的方法,其特征在于,所述搜索树为二叉搜索树。
全文摘要
本发明公开了E.164号码域名的存储和查询方法,包括在电话号码到统一资源标识映射的域名系统(ENUM DNS)中,将E.164号码域名分成公共域名部分和数字域名部分;将公共域名部分中用分隔符隔开的公共域名信息以及数字域名部分中各数字依设定顺序排列后的数据按搜索树的存放规则顺序存放到搜索树的节点中;ENUM DNS系统接收到E.164号码域名查询后,获取域名中的公共域名信息,并按照所述搜索树的查找规则查找出搜索树的相应节点;获取域名中用分隔符隔开的各数字,并按系统设定顺序排列成数据后查找出所述搜索树的下一级节点。采用本发明方法能有效降低搜索树的高度,提高节点生成哈希值的散列度,减少冲突,提高系统查询效率。
文档编号G06F17/30GK1878164SQ200510075078
公开日2006年12月13日 申请日期2005年6月8日 优先权日2005年6月8日
发明者石磊, 望远闻, 罗志坚, 杨素娟 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1