地理位置信息索引的建立及信息查询方法、电子设备转让专利

申请号 : CN202010434222.X

文献号 : CN111797180A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈良龙邹宁勇

申请人 : 网宿科技股份有限公司

摘要 :

本发明实施例涉及信息处理技术领域,公开了一种地理位置信息索引的建立及信息查询方法、电子设备,地理位置信息索引的建立方法包括:根据选定的多个参考前缀长度,获取IP地址地理信息文件中的各IP地址范围对应的虚拟网络段范围;根据各参考前缀长度对应的虚拟网络段范围,从多个参考前缀长度中选取与IP地址地理信息文件匹配的目标前缀长度;对于目标前缀长度对应的每个虚拟网络段范围,设定虚拟网络段范围中的各网络段的存储位置,并建立存储位置与网络段的对应关系。本发明中,在进行IP地址查询时,仅需从该IP地址所属的虚拟网络段所在存储位置中进行查询,减小了IP地址的查询范围,提升了地理位置信息的查询速度。

权利要求 :

1.一种地理位置信息索引的建立方法,其特征在于,包括:

根据选定的多个参考前缀长度,获取IP地址地理信息文件中的各IP地址范围对应的虚拟网络段范围;

根据各所述参考前缀长度对应的虚拟网络段范围,从所述多个参考前缀长度中选取与IP地址地理信息文件匹配的目标前缀长度;

对于所述目标前缀长度对应的每个虚拟网络段范围,设定所述虚拟网络段范围中的各网络段的存储位置,并建立所述存储位置与所述网络段的对应关系。

2.根据权利要求1所述的地理位置信息索引的建立方法,其特征在于,所述根据各所述参考前缀长度对应的虚拟网络段范围,从所述多个参考前缀长度中选取与IP地址地理信息文件匹配的目标前缀长度,包括:对于各所述参考前缀长度对应的每个虚拟网络段范围,获取所述虚拟网络段范围中的完整网络段;

根据各所述参考前缀长度对应的完整网络段,获取满足预设条件的所述参考前缀长度作为与IP地址地理信息文件匹配的目标前缀长度,所述预设条件为完整网络段数量最多的所述参考前缀长度。

3.根据权利要求2所述的地理位置信息索引的建立方法,其特征在于,所述获取所述虚拟网络段范围中的完整网络段,包括:当所述虚拟网络段范围仅包含一个网络段时,若所述一个网络段的IP地址范围与所述虚拟网络段范围对应的IP地址范围重合,判定所述一个网络段为完整网络段;

当所述虚拟网络段范围包括多个网络段时,判定所述多个网络段中起始网络段与结束网络段之间的网络段为完整网络段;

若所述起始网络段的起始IP地址与所述虚拟网络段范围对应的IP地址范围的起始IP地址相同,判定所述起始网络段为完整网络段;

若所述起始网络段的结束IP地址与所述虚拟网络段范围对应的IP地址范围的结束IP地址相同,判定所述结束网络段为完整网络段。

4.根据权利要求2所述的地理位置信息索引的建立方法,其特征在于,所述预设条件为网络段数量小于预设阈值且完整网络段数量最多的所述参考前缀长度。

5.一种信息查询方法,其特征在于,应用于存储有IP地址地理信息文件的服务器,所述IP地址地理信息文件基于权利要求1至4中任一项所述的地理位置信息索引的建立方法在所述服务器中建立了地理位置信息索引;所述信息查询方法包括:当接收到的包括IP地址的查询请求时,根据与IP地址地理信息文件匹配的目标前缀长度,获取所述IP地址所属的目标虚拟网络段;

根据所述存储位置与网络段的对应关系,获取所述目标虚拟网络段对应的存储位置;

从所述存储位置中获取所述IP地址对应的地理位置信息作为所述查询请求的响应。

6.根据权利要求5所述的信息查询方法,其特征在于,所述从所述存储位置中获取所述IP地址对应的地理位置信息作为所述查询请求的响应,包括:判断所述目标虚拟网络段是否为完整网络段;所述完整网络段包含的IP地址范围对应于相同的地理位置信息;

若所述目标虚拟网络段是完整网络段,将所述目标虚拟网络段对应的地理位置信息作为所述查询请求的响应;

若所述目标虚拟网络段是非完整网络段,从所述存储位置中获取所述IP地址所属的IP地址范围,并将所述IP地址范围对应的地理位置信息作为所述查询请求的响应。

7.根据权利要求6所述的信息查询方法,其特征在于,在所述判断所述目标虚拟网络段是否为完整网络段之前,还包括:判断所述存储位置中是否包括多个网络段;

若所述存储位置中包括多个网络段,进入所述从所述存储位置中获取所述IP地址所属的IP地址范围,并将所述IP地址范围对应的地理位置信息作为所述查询请求的响应的步骤。

若所述存储位置中仅包括所述目标虚拟网络段,进入所述判断所述目标虚拟网络段是否为完整网络段的步骤。

8.根据权利要求7所述的信息查询方法,其特征在于,当所述存储位置中包括多个网络段,且在所述从所述存储位置中获取所述IP地址所属的IP地址范围,并将所述IP地址范围对应的地理位置信息作为所述查询请求的响应之前,还包括:判断所述存储位置中是否包括所述目标虚拟网络段;

若所述存储位置中不包括所述目标虚拟网络段,将表征查询无结果的信息作为所述查询请求的响应;

若所述存储位置中包括所述目标虚拟网络段,进入所述从所述存储位置中获取所述IP地址所属的IP地址范围,并将所述IP地址范围对应的地理位置信息作为所述查询请求的响应的步骤。

9.根据权利要求6所述的信息查询方法,其特征在于,所述从所述存储位置中获取所述IP地址所属的IP地址范围,包括;

判断所述存储位置中是否存在所述IP地址所属的IP地址范围;

若所述存储位置中存在所述IP地址所属的IP地址范围,进入所述将所述IP地址范围对应的地理位置信息作为所述查询请求的响应的步骤;

若所述存储位置中不存在包括所述IP地址的IP地址范围,将表征查询无结果的信息作为所述查询请求的响应。

10.根据权利要求5所述的信息查询方法,其特征在于,所述根据与IP地址地理信息文件匹配的目标前缀长度,获取所述IP地址所属的目标虚拟网络段,包括:将所述IP地址转换为整型表示的IP地址;

选取所述整型表示的IP地址高位的前n位,作为目标虚拟网络段,n为所述目标前缀长度。

11.一种服务器,其特征在于,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;

其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至4中任一项所述的地理位置信息索引的建立方法。

12.一种服务器,其特征在于,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;所述存储器中存储有IP地址地理信息文件,所述IP地址地理信息文件基于权利要求1至4中任一项所述的方法在所述服务器中建立了地理位置信息索引;

其中,所述存储器还存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求5至10中任一项所述的信息查询方法。

说明书 :

地理位置信息索引的建立及信息查询方法、电子设备

技术领域

[0001] 本发明实施例涉及信息处理技术领域,特别涉及一种地理位置信息索引的建立及信息查询方法、电子设备。

背景技术

[0002] 在互联网数据分析服务中,IP地址的地理位置信息是数据分析过程中较为常用的数据,例如通过分析IP地址的地理位置信息,可以按照不同的地理位置信息统计网络流量,继而得到每个国家、每个城市、每个地区的网络流量分布图等。
[0003] 目前,IP地址的地理位置信息查询方式为:提供完整的ip地址地理信息的csv格式文件,然后利用二分法在IP地址地理信息的字符分隔值(Comma-Separated Values,简称CSV)格式文件进行地理位置信息的查找。
[0004] 然而,发明人发现现有技术中至少存在如下问题:随着IP地址范围的不断增多,导致IP地址的地理位置信息的查询难度越来越大,查询效率较低。

发明内容

[0005] 本发明实施方式的目的在于提供一种地理位置信息索引的建立及信息查询方法、电子设备,将IP地址按照网络段存储到对应的位置,建立高效的数据结构和索引,从而在进行IP地址查询时,仅需从该IP地址所属的虚拟网络段所在存储位置中进行查询,减小了IP地址的查询范围,提升了地理位置信息的查询速度。
[0006] 为解决上述技术问题,本发明的实施方式提供了一种地理位置信息索引的建立方法,包括:根据选定的多个参考前缀长度,获取IP地址地理信息文件中的各IP地址范围对应的虚拟网络段范围;根据各参考前缀长度对应的虚拟网络段范围,从多个参考前缀长度中选取与IP地址地理信息文件匹配的目标前缀长度;对于目标前缀长度对应的每个虚拟网络段范围,设定虚拟网络段范围中的各网络段的存储位置,并建立存储位置与网络段的对应关系。
[0007] 本发明的实施方式还提供了一种信息查询方法,应用于存储有IP地址地理信息文件的服务器,IP地址地理信息文件基于上述的地理位置信息索引的建立方法在服务器中建立了地理位置信息索引;信息查询方法包括:当接收到的包括IP地址的查询请求时,根据与IP地址地理信息文件匹配的目标前缀长度,获取IP地址所属的目标虚拟网络段;根据存储位置与网络段的对应关系,获取目标虚拟网络段对应的存储位置;从存储位置中获取IP地址对应的地理位置信息作为查询请求的响应。
[0008] 本发明的实施方式还提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的地理位置信息索引的建立方法。
[0009] 本发明的实施方式还提供了一种电子设备,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;存储器中存储有IP地址地理信息文件,IP地址地理信息文件基于上述的地理位置信息索引的建立方法在服务器中建立了地理位置信息索引;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述的信息查询方法。
[0010] 本发明实施方式相对于现有技术而言,在存储IP地址位置信息时,首先根据选定的多个参考前缀长度,获取IP地址地理信息文件中的各IP地址范围对应的虚拟网络段范围,并根据各参考前缀长度对应的虚拟网络段范围,从多个参考前缀长度中选取与IP地址地理信息文件匹配的目标前缀长度,然后针对目标前缀长度下的每个虚拟网络段范围,设定虚拟网络段范围中的各网络段的存储位置,并建立存储位置与网络段的对应关系,即将IP地址按照网络段存储到不同的位置,建立了高效的数据结构和索引,以便于在进行IP地址查询时,仅需从该IP地址所属的虚拟网络段所在存储位置中进行查询,减小了IP地址的查询范围,能够提升地理位置信息的查询速度。
[0011] 另外,根据各参考前缀长度对应的虚拟网络段范围,从多个参考前缀长度中选取与IP地址地理信息文件匹配的目标前缀长度,包括:对于各参考前缀长度对应的每个虚拟网络段范围,获取虚拟网络段范围中的完整网络段;根据各参考前缀长度对应的完整网络段,获取满足预设条件的参考前缀长度作为与IP地址地理信息文件匹配的目标前缀长度,预设条件为完整网络段数量最多的参考前缀长度。本实施方式提供了根据各参考前缀长度对应的虚拟网络段范围,从多个参考前缀长度中选取与IP地址地理信息文件匹配的目标前缀长度的一种具体实现方式。
[0012] 另外,获取虚拟网络段范围中的完整网络段,包括:当虚拟网络段范围仅包含一个网络段时,若一个网络段的IP地址范围与虚拟网络段范围对应的IP地址范围重合,判定一个网络段为完整网络段;当虚拟网络段范围包括多个网络段时,判定多个网络段中起始网络段与结束网络段之间的网络段为完整网络段;若起始网络段的起始IP地址与虚拟网络段范围对应的IP地址范围的起始IP地址相同,判定起始网络段为完整网络段;若起始网络段的结束IP地址与虚拟网络段范围对应的IP地址范围的结束IP地址相同,判定结束网络段为完整网络段。本实施方式提供了获取虚拟网络段范围中的完整网络段的一种具体实现方式。
[0013] 另外,预设条件为网络段数量小于预设阈值且完整网络段数量最多的参考前缀长度。本实施方式中,在预设条件中增加了对网络段数量小于预设阈值的限定,能够避免由于网络段数量过多导致的存储位置设置过多,即在一定程度上对存储位置的数量进行了限定,从而不影响地理位置信息的查询性能。
[0014] 另外,从存储位置中获取IP地址对应的地理位置信息作为查询请求的响应,包括:判断目标虚拟网络段是否为完整网络段;完整网络段包含的IP地址范围对应于相同的地理位置信息;若目标虚拟网络段是完整网络段,将目标虚拟网络段对应的地理位置信息作为查询请求的响应;若目标虚拟网络段是非完整网络段,从存储位置中获取IP地址所属的IP地址范围,并将IP地址范围对应的地理位置信息作为查询请求的响应。本实施方式中,增加了对虚拟网络段是否为完整网络段的判断,由于完整网络段中包含的所有的IP地址范围对应于相同的地理位置信息,从而能够在虚拟网络段是完整网络段时,无需再对IP地址所属的IP地址范围的进行查询,直接将虚拟网络段对应的地理位置信息作为查询请求的响应,进一步提升了查询速度。
[0015] 另外,在判断目标虚拟网络段是否为完整网络段之前,还包括:判断存储位置中是否包括多个网络段;若存储位置中包括多个网络段,进入从存储位置中获取IP地址所属的IP地址范围,并将IP地址范围对应的地理位置信息作为查询请求的响应的步骤。若存储位置中仅包括目标虚拟网络段,进入判断目标虚拟网络段是否为完整网络段的步骤。本实施方式提供了在目标虚拟网络段对应存储位置中包括多个网络段时的信息查询方式。
[0016] 另外,当存储位置中包括多个网络段,且在从存储位置中获取IP地址所属的IP地址范围,并将IP地址范围对应的地理位置信息作为查询请求的响应之前,还包括:判断存储位置中是否包括目标虚拟网络段;若存储位置中不包括目标虚拟网络段,将表征查询无结果的信息作为查询请求的响应;若存储位置中包括目标虚拟网络段,进入从存储位置中获取IP地址所属的IP地址范围,并将IP地址范围对应的地理位置信息作为查询请求的响应的步骤。本实施方式中,增加了对存储位置中是否包括目标虚拟网络段的判断,能够在存储位置中不包括目标虚拟网络段时,将表征查询无结果的信息作为查询请求的响应。
[0017] 另外,从存储位置中获取IP地址所属的IP地址范围,包括;判断存储位置中是否存在IP地址所属的IP地址范围;若存储位置中存在IP地址所属的IP地址范围,进入将IP地址范围对应的地理位置信息作为查询请求的响应的步骤;若存储位置中不存在包括IP地址的IP地址范围,将表征查询无结果的信息作为查询请求的响应。本实施方式中,增加了对存储位置中是否存在IP地址所属的IP地址范围的判断,能够在存储位置中不存在包括IP地址的IP地址范围时,将表征查询无结果的信息作为查询请求的响应。
[0018] 另外,根据与IP地址地理信息文件匹配的目标前缀长度,获取IP地址所属的目标虚拟网络段,包括:将IP地址转换为整型表示的IP地址;选取整型表示的IP地址高位的前n位,作为目标虚拟网络段,n为目标前缀长度。本实施方式根据与IP地址地理信息文件匹配的目标前缀长度,获取IP地址所属的目标虚拟网络段的一种具体实现方式。

附图说明

[0019] 一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
[0020] 图1是根据本发明第一实施方式中的地理位置信息索引的建立方法的具体流程图;
[0021] 图2是根据本发明第二实施方式中的信息查询方法的具体流程图;
[0022] 图3是根据本发明第三实施方式中的信息查询方法的具体流程图;
[0023] 图4是根据本发明第四实施方式中的信息查询方法的具体流程图。

具体实施方式

[0024] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
[0025] 本发明的第一实施方式涉及一种地理位置信息索引的建立方法,应用于服务器,服务器中存储有IP地址地理信息文件,服务器可以基于本实施例的地理位置信息索引的建立方法,建立存储位置与网络段的对应关系,将对IP地址位置信息文件按照网络段进行存储。其中,IP地址地理信息文件可以为CSV格式文件,CSV格式文件以纯文本形式存储IP地址及其地理位置信息,具体的,IP地址地理信息的CSV格式文件中,每行表示一个连续的IP地址范围,以及该范围内的IP地址所属的地理位置信息,例如大洲、国家、城市、经纬度等,各行的IP地址范围按从小到大排序。其中,IP地址可以为IPV4地址或IPV6地址,本实施例以及之后的实施例中均以IP地址为IPV6地址为例进行说明。
[0026] 本实施方式的地理位置信息索引的建立方法的具体流程如图1所示。
[0027] 步骤101,根据选定的多个参考前缀长度,获取IP地址地理信息文件中的各IP地址范围对应的虚拟网络段范围。
[0028] 具体而言,读取CSV格式的IP地址地理信息文件,可以得到每行的IP地址范围,以[rangeBegin,rangeEnd]表示当前行的IP地址范围,rangeBegin表示该行起始IP地址、rangeEnd表示该行结束IP地址。
[0029] 以下面的为两行的IP地址范围为例,每行的第一列是IP地址范围的起始IPV6地址,第二列是IP地址范围的结束IPV6地址,第三列开始是地理位置信息,分别为大洲、国家、城市、运营商。
[0030]
[0031] 上述两行的IP地址范围是标准的IPV6表示法进行表示,可以将128位的IPV6地址分为高64位与低64位,再将高64位与低64位转换为一个64位的整型来表示,得到整型表示法来表示的IP地址范围,上述两行的IP地址范围采用整型表示法表示如下:
[0032]
[0033] 基于上述的整型表示法,选定高64位中前h位作为参考前缀长度,即可以选定1、2、3、…、64作为参考前缀长度h,以任一参考前缀长度h为例,获取该h值下每行的IP地址范围包含的虚拟网络段范围[segBegin[h],segEnd[h]];以上述第一行的IP地址范围为例:选取h=10时,起始IP地址高64位的前10位为0010000000,即起始网络段segBegin[10]=128,结束IP地址高64位的前10位为0010000000,即结束网络段segEnd[10]=128,则第一行的IP地址范围对应的虚拟网络段范围仅包含一个网络段128。
[0034] 步骤102,根据各参考前缀长度对应的虚拟网络段范围,从多个参考前缀长度中选取与IP地址地理信息文件匹配的目标前缀长度。
[0035] 具体而言,网络段可以为分为完整网络段与非完整网络段,完整网络段中包含的所有的IP地址范围对应于相同的地理位置信息,从而可以将该地理位置信息作为完整网络段对应的地理位置信息,非完整网络段包含的多个IP地址范围对应于多个地理位置信息。对于各参考前缀长度对应的每个虚拟网络段范围,获取虚拟网络段范围中的完整网络段;
根据各参考前缀长度对应的完整网络段,获取满足预设条件的参考前缀长度作为与IP地址地理信息文件匹配的目标前缀长度,预设条件为完整网络段数量最多的参考前缀长度。
[0036] 仍以任一参考前缀长度h为例,获取该h值下各虚拟网络段范围中的完整网络段与非完整网络段,下面以其中一行的IP地址对应的虚拟网络段范围[segBegin[h],segEnd[h]]为例进行说明,其中segBegin[h].Begin表示当前h值下虚拟网络段segBegin[h]的第一个IP地址,segBegin[h].End表示当前h值下虚拟网络段segBegin[h]的最后一个IP地址,segEndLast[h]表示当前h值下上一行的IP地址范围包含的虚拟网络段的最后一个虚拟网络段。
[0037] 当segBegin[h]==segEnd[h]时,说明虚拟网络段范围[segBegin[h],segEnd[h]]中仅包括一个网络段,若rangeBegin==segBegin[h].Begin,且rangeEnd[h]==segEnd[h].end,则说明网络段的IP地址范围与虚拟网络段范围对应的IP地址范围重合,此时判定该网络段segBegin[h](segEnd[h])是完整网络段。否则,判定当前行的IP地址范围[rangeBegin,rangeEnd]是需要二分法查找的子范围;另外,若segBegin[h]!=segEndLast[h],则说明该网络段segBegin[h](segEnd[h])也不存在前一行中,判定网络段segBegin[h](segEnd[h])是一个新的非完整网络段。
[0038] 当segBegin[h]<segEnd[h]时,说明虚拟网络段范围[segBegin[h],segEnd[h]]中包括多个网络段,进行如下判断:
[0039] a.若segEnd[h]≥1且segBegin[h]+1)≤(segEnd[h]-1),说明虚拟网络段范围[segBegin[h],segEnd[h]]中至少包括3个网络段,判定起始网络段segBegin[h]与结束网络段segEnd[h]之间所有的网络段[segBegin[h]+1),(segEnd[h]-1)]虚拟网络段均为完整网络段。以当前行的IP地址范围包含的虚拟网络段范围为[64,128]为例,128>1且(64+1)≤(128-1),可知[65,127]之间所有的虚拟网络段均为完整网络段;对于起始网络段segBegin[h]与结束网络段segEnd[h]进行下面的判断。若虚拟网络段范围[segBegin[h],segEnd[h]]中仅包括两个网络段,则仅需对起始网络段segBegin[h]与结束网络段segEnd[h]进行下面的判断。
[0040] b.若rangeBegin==segBegin[h].begin,说明起始网络段的起始IP地址与虚拟网络段范围对应的IP地址范围的起始IP地址相同,则判定起始网络段segBegin[h]是完整网络段。
[0041] c.若rangeBegin!=segBegin[h].begin,说明起始网络段的起始IP地址与虚拟网络段范围对应的IP地址范围的起始IP地址不相同,则判定起始网络段segBegin[h]非是完整网络段,并且[rangeBegin,segBegin[h].end]是一个需要二分查找的子范围。另外,若segBegin[h]!=segEndLast[h],则说明该网络段segBegin[h](segEnd[h])也不存在前一行中,判定起始网络段segBegin[h]是一个新的非完整网络段;
[0042] d.若rangeEnd==segEnd[h].end,说明起始网络段的结束IP地址与虚拟网络段范围对应的IP地址范围的结束IP地址相同,则判定结束网络段segEnd[h]是完整网络段;
[0043] e.若rangeEnd!=segEnd[h].end,说明起始网络段的结束IP地址与虚拟网络段范围对应的IP地址范围的结束IP地址不相同,则判定结束网络段segEnd[h]是一个新的非完整网络段,并且[segEnd[h].begin,rangeEnd]是一个需要二分查找的子范围。
[0044] 利用上述的方式可以获取当前h值下每行的IP地址范围所包括的完整网络段与非完整网络段,综上可以统计出每个h值下,该IP地址地理信息文件中完整网络段的数量completeNetSegNum、非完整网络段的数量unCompleteNetSegNum、所有网络段的总数量netSegNum以及需要二分法查找的子范围的数量binarySubRangeNum。
[0045] 然后可以根据各参考前缀长度h下统计得到的完整网络段的数量completeNetSegNum,选取completeNetSegNum最大的参考前缀长度h作为IP地址地理信息文件匹配的目标前缀长度n。
[0046] 在一个例子中,预设条件为网络段数量小于预设阈值且完整网络段数量最多的参考前缀长度,即增加对所有网络段的总数量netSegNum的判断,选取netSegNum小于预设阈值K且completeNetSegNum最大的参考前缀长度h作为IP地址地理信息文件匹配的目标前缀长度n,即{h|netSegNum
[0047] 需要说明的是,本实施例中,仅以一个IP地址地理信息文件为例,若有多个IP地址地理信息文件,可以针对每个IP地址地理信息文件,基于上述的学习过程,从所有的参考前缀长度h中,选取满足预设条件的最优前缀长度作为目标前缀长度,即能够针对不同的IP地址地理信息文件的信息特征,来选取最优的目标前缀长度,实现了目标前缀长度的合理选择,以在后续查询过程中达到最优的查询速度。
[0048] 步骤103,对于目标前缀长度对应的每个虚拟网络段范围,设定虚拟网络段范围中的各网络段的存储位置,并建立存储位置与网络段的对应关系。
[0049] 具体而言,对于目标前缀长度n下所包含每个网络段,无论其是完整网络段还是非完整网络段,均设置该网络段的存储位置,继而建立该存储位置与网络段的对应关系,从而能够将各网络段及其地理位置信息存储到对应的存储位置,以便于后续根据网络段实现进行地理位置信息的快速查询。
[0050] 以存储位置为哈希槽为例进行说明,则该哈希槽对应的数据节点的存储地址即为存储位置的地址,此时服务器中预设有哈希表,哈希表中存储有哈希槽与网络段的对应关系,每个网络段及其地理位置信息存储在一个数据节点中,哈希表中存储有哈希槽与该数据节点的存储地址的映射关系,继而在得到IP地址所属的目标虚拟网络段后,用目标虚拟网络段对哈希表的哈希数组长度求余,得到哈希槽位值,该哈希槽位值的哈希槽对应的数据节点的存储地址即为目标虚拟网络段对应的存储位置。
[0051] 对于每个网络段来说,无论其是完整网络段还是非完整网络段,创建该网络段的数据节点,该数据节点中存储有该网络段及其地理位置信息,先计算该网络段的哈希槽位值,具体方式为:根据预设的哈希冲突因子HashCollisionFactor,获取哈希数组长度HashSize,HashSize=netSegNum/HashCollisionFactor,然后用该网络段对哈希数组长度HashSize求余,得到该网络段的哈希槽位值。其中,HashCollisionFactor可以根据需求预设,在此不作任何限制。当多个网络段的哈希值相等时,即存在哈希冲突时,先采用链表维护该哈希槽内的网络段的数据节点。
[0052] 对于每个需要二分查找的子范围(IP地址范围),获取子范围所属的非完整网络段,将子范围存储到所属的非完整网络段的数据节点中,可以先采用链表维护同一个非完整网络段中的数据节点中的子范围,从而可以利用二分法查找。
[0053] 遍历哈希表的每个哈希槽位值,对于发生哈希冲突的哈希槽,根据该哈希槽中发生哈希冲突的网络段的数据节点,在服务器存储中申请内存,并将数据节点由链表转换为数据节点数组。对于非完整网络段的数据节点,则根据该非完整网络段中所包含的子范围,将子范围由链表转换为子范围数组,从而可以利用二分法查找。
[0054] 由上,便可以建立虚拟网络段与哈希槽值的对应关系。
[0055] 以包含465797个IPV6地址范围的地理信息文件为例,按照上述过程依次取10、11、12、…、36作为h值,可以的得到下表1,h=0表示利用二分法进行地理位置信息查询,测试耗时为随机进行了20000000个IPV6地址的地理位置信息查询的耗时。
[0056] 表1
[0057]
[0058] 在选取满足预设条件的h值时,设定预设条件为:{h|netSegNum<100000,max(completeNetSegNum)},则选取的满足预设条件的h值为28,并且由上表1最后一列的测试耗时可知,h=28的测试耗时也是最优的。
[0059] 本实施方式相对于现有技术而言,在存储IP地址位置信息时,首先根据选定的多个参考前缀长度,获取IP地址地理信息文件中的各IP地址范围对应的虚拟网络段范围,并根据各参考前缀长度对应的虚拟网络段范围,从多个参考前缀长度中选取与IP地址地理信息文件匹配的目标前缀长度,然后针对目标前缀长度下的每个虚拟网络段范围,设定虚拟网络段范围中的各网络段的存储位置,并建立存储位置与网络段的对应关系,即将IP地址按照网络段存储到不同的位置,建立了高效的数据结构和索引,以便于在进行IP地址查询时,仅需从该IP地址所属的虚拟网络段所在存储位置中进行查询,减小了IP地址的查询范围,能够提升地理位置信息的查询速度。
[0060] 本发明的第二实施方式涉及一种信息查询方法,应用于服务器,服务器在存储IP地址地理信息文件时,基于第一实施例中的地理位置信息索引的建立方法建立了地理位置信息索引,将IP地址按照网络段进行了存储。
[0061] 本实施方式的信息查询方法的具体流程如图2所示。
[0062] 步骤201,当接收到的包括IP地址的查询请求时,根据与IP地址地理信息文件匹配的目标前缀长度,获取IP地址所属的目标虚拟网络段。
[0063] 具体而言,服务器在建立地理位置信息索引时,获取了与该IP地址地理信息文件匹配的目标前缀长度n,从而在接收到用户的查询请求时,获取该查询请求中的IP地址,并根据该目标前缀长度n,获取该IP地址的前n位,得到一个虚拟网络段,该虚拟网络段即为IP地址所属的目标虚拟网络段。举例来说,IPV6地址为128位,通常写成8组,每组为4个十六进制数的形式,可以先将其转换为整型表示法来表示,即将128位的IPV6地址分为高64位与低64位,再将高64位与低64位转换为一个64位的整型来表示,得到整型表示法来表示的IP地址,再从其高64位中选取前n(n<64)位形成该IP地址所属的目标虚拟网络段。其中,可以通过将整型表示的IP地址的高64右移(64-n)位,得到该IP地址所属的目标虚拟网络段。
[0064] 步骤202,根据存储位置与网络段的对应关系,获取目标虚拟网络段对应的存储位置。
[0065] 具体而言,服务器在建立地理位置信息索引时,已经建立了建立存储位置与网络段的对应关系,并将各网络段及其地理位置信息存储到对应的存储位置,即将IP地址地理信息文件按照网络段进行分组并存储到了对应的位置,举例来说,存储位置可以为哈希槽,则该哈希槽对应的数据节点的存储地址即为存储位置的地址,此时服务器中预设有哈希表,哈希表中存储有哈希槽与网络段的对应关系,每个网络段及其地理位置信息存储在一个数据节点中,哈希表中存储有哈希槽与该数据节点的存储地址的映射关系,继而在得到IP地址所属的目标虚拟网络段后,用目标虚拟网络段对哈希表的哈希数组长度求余,得到哈希槽位值,该哈希槽位值的哈希槽对应的数据节点的存储地址即为目标虚拟网络段对应的存储位置。
[0066] 步骤203,从存储位置中获取IP地址对应的地理位置信息作为查询请求的响应。
[0067] 具体而言,目标虚拟网络段对应的存储位置中包括至少一网络段的数据节点,网络段的数据节点中存储有网络段及其对应的地理位置信息,继而能够从目标虚拟网络段对应的存储位置中得到虚拟网络段对应的数据节点,并从该数据节点中获取Ip地址对应的地理位置信息,然后便可以将包括该地理位置信息的响应信息返回给用户。
[0068] 本实施方式相对于现有技术而言,在接收到包括IP地址的查询请求时,先根据与IP地址地理信息文件匹配的目标前缀长度,获取IP地址所属的目标虚拟网络段,并根据存储位置与网络段的对应关系,获取目标虚拟网络段对应的存储位置,再从该存储位置中获取IP地址对应的地理位置信息作为查询请求的响应,即IP地址已按照网络段存储到了对应的位置,从而在进行IP地址查询时,仅需从该IP地址所属的虚拟网络段所在存储位置中进行查询,减小了IP地址的查询范围,提升了地理位置信息的查询速度。
[0069] 本发明的第三实施方式涉及一种信息查询方法,本实施方式相对于第二实施方式来说,主要区别之处在于:进一步提升了地理位置信息的查询速度。
[0070] 本实施方式的信息查询方法的具体流程如图3所示。
[0071] 步骤301,当接收到的包括IP地址的查询请求时,根据与IP地址地理信息文件匹配的目标前缀长度,获取IP地址所属的目标虚拟网络段。与第二实施方式中的步骤201大致相同,在此不再赘述。
[0072] 步骤302,根据存储位置与网络段的对应关系,获取目标虚拟网络段对应的存储位置。与第二实施方式中的步骤202大致相同,在此不再赘述。
[0073] 步骤303,包括以下子步骤:
[0074] 子步骤3031,判断目标虚拟网络段是否为完整网络段。若是,则进入子步骤2032;若否,则进入子步骤3033。
[0075] 子步骤3032,将目标虚拟网络段对应的地理位置信息作为查询请求的响应。
[0076] 子步骤3033,从存储位置中获取IP地址所属的IP地址范围,并将IP地址范围对应的地理位置信息作为查询请求的响应。
[0077] 具体而言,网络段可以为分为完整网络段与非完整网络段,完整网络段中包含的所有的IP地址范围对应于相同的地理位置信息,从而可以将该地理位置信息作为完整网络段对应的地理位置信息,非完整网络段包含的多个IP地址范围对应于多个地理位置信息。基于此,在判定目标虚拟网络段为完整网络段时,可以将该完整网络段对应的地理位置信息作为该IP地址对应的地理位置信息,然后便可以将包括该地理位置信息的响应信息返回给用户。在判定目标虚拟网络段是非完整网络段时,则从该非完整网络段对应的IP地址范围中,采用二分法获取该IP地址所属的IP地址范围,继而可以将该IP地址范围对应的地理位置信息作为该IP地址对应的地理位置信息,然后便可以将包括该地理位置信息的响应信息返回给用户。
[0078] 本实施方式相对于第二实施方式而言,增加了对虚拟网络段是否为完整网络段的判断,由于完整网络段中包含的所有的IP地址范围对应于相同的地理位置信息,从而能够在虚拟网络段是完整网络段时,无需再对IP地址所属的IP地址范围的进行查询,直接将虚拟网络段对应的地理位置信息作为查询请求的响应,进一步提升了查询速度。
[0079] 本发明的第四实施方式涉及一种信息查询方法,本实施方式相对于第三实施方式来说,主要区别之处在于:提供了在目标虚拟网络段对应存储位置中包括多个网络段时的信息查询方式。
[0080] 本实施方式的信息查询方法的具体流程如图4所示。
[0081] 步骤401,当接收到的包括IP地址的查询请求时,根据与IP地址地理信息文件匹配的目标前缀长度,获取IP地址所属的目标虚拟网络段。与第二实施方式中的步骤201大致相同,在此不再赘述。
[0082] 步骤402,根据存储位置与网络段的对应关系,获取目标虚拟网络段对应的存储位置。与第二实施方式中的步骤202大致相同,在此不再赘述。
[0083] 步骤403,包括以下子步骤:
[0084] 子步骤4031,判断存储位置中是否包括多个网络段。若是,则进入子步骤4032;若否,则进入子步骤4034。
[0085] 子步骤4032,判断存储位置中是否包括目标虚拟网络段。若是,则进入子步骤4036;若否,则进入子步骤4033。
[0086] 子步骤4033,将表征查询无结果的信息作为查询请求的响应。
[0087] 子步骤4034,判断目标虚拟网络段是否为完整网络段。若是,则进入子步骤4035;若否,则进入子步骤4036。
[0088] 子步骤4035,将目标虚拟网络段对应的地理位置信息作为查询请求的响应。
[0089] 子步骤4036,从存储位置中获取IP地址所属的IP地址范围,并将IP地址范围对应的地理位置信息作为查询请求的响应。
[0090] 具体而言,存储位置中可以包括一个或多个网络段,下面以存储位置为哈希槽为例,对于一个哈希槽来说,当出现哈希冲突时,则该哈希槽中会包括多个网络段的数据节点;反之,则该哈希槽中仅包括一个网络段的数据节点。
[0091] 当获取目标虚拟网络段对应的哈希槽后,先判断该哈希槽中是否存在多个数据节点,若该哈希槽存在哈希冲突,则说明该哈希槽中存在多个网络段的数据节点,再判断多个网络段中是否包括目标虚拟网络段,若多个网络段中包括目标虚拟网络段,则从哈希槽所包括的多个网络段的IP地址范围中查询该IP地址所属的IP地址范围,查询方式可以为二分法,若在哈希槽中查询到该IP地址所属的IP地址范围,则将该IP地址所属的IP地址范围对应地理位置信息作为该IP地址对应的地理位置信息,然后便可以将包括该地理位置信息的响应信息返回给用户;若在哈希槽中未查询到该IP地址所属的IP地址范围,则说明IP地址地理信息文件中不存在该IP地址的地理位置信息,将表征查询无结果的信息返回给用户,表征查询无结果的信息例如为空值。若多个网络段中不包括目标虚拟网络段,同样说明IP地址地理信息文件中不存在该IP地址的地理位置信息,将表征查询无结果的信息返回给用户。其中,表征查询无结果的信息例如为空值。
[0092] 当哈希槽不存在哈希冲突时,则说明该哈希槽仅包括该目标虚拟网络段,然后判断目标虚拟网络段是否为完整网络段,在判定目标虚拟网络段为完整网络段时,可以将该完整网络段对应的地理位置信息作为该IP地址对应的地理位置信息,然后便可以将包括该地理位置信息的响应信息返回给用户。在判定目标虚拟网络段是非完整网络段时,则从该非完整网络段对应的IP地址范围中,采用二分法获取该IP地址所属的IP地址范围,继而可以将该IP地址范围对应的地理位置信息作为该IP地址对应的地理位置信息,然后便可以将包括该地理位置信息的响应信息返回给用户。
[0093] 本实施方式相对于第三实施方式而言,提供了在目标虚拟网络段对应存储位置中包括多个网络段时的信息查询方式。
[0094] 本发明的第五实施方式涉及一种服务器,务器至少一个处理器;以及,与至少一个处理器通信连接的存储器;
[0095] 其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如第一实施方式中的地理位置信息索引的建立方法。
[0096] 本发明的第六实施方式涉及一种服务器,服务器中存储有IP地址地理信息文件,IP地址地理信息文件可以按照第一实施方式中的地理位置信息索引的建立方法建立了索引,从而可以实现地理位置信息的快速查询。
[0097] 本实施例中,服务器至少一个处理器;以及,与至少一个处理器通信连接的存储器;
[0098] 其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如第二至第四实施方式中任一项的信息查询方法。
[0099] 需要说明的是,本实施方式中第五实施例中的服务器和第六实施例中的服务器可以为同一个,即一个服务器能够实现第一至第四实施方式中的方法实施例。
[0100] 本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。