CN104424197A - 一种ip地址库检索方法及系统 - Google Patents
一种ip地址库检索方法及系统 Download PDFInfo
- Publication number
- CN104424197A CN104424197A CN201310364947.6A CN201310364947A CN104424197A CN 104424197 A CN104424197 A CN 104424197A CN 201310364947 A CN201310364947 A CN 201310364947A CN 104424197 A CN104424197 A CN 104424197A
- Authority
- CN
- China
- Prior art keywords
- address
- recording mechanism
- source code
- target program
- confirmation function
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种IP地址库检索方法及系统,涉及计算机网络领域。本发明公开的方法包括:将IP地址库构建成源代码,其中,构建的源代码包括IP地址哈希表、索引存储表以及确证函数的信息;将所述源代码编译成目标程序;通过所述目标程序对IP地址进行检索,检索得到所述IP地址归属地信息。本发明还公开了一种IP地址库检索系统。本申请技术方案具有加载速度快、低内存占用、检索速度快、地址库保密的优点,解决了传统IP地址库检索方法的缺陷。
Description
技术领域
本发明涉及计算机网络领域,特别涉及一种IP地址库检索方法及系统。
背景技术
目前,计算机网络领域中传统使用的IP地址库检索方法,通常使用如下方法实现:
系统启动时,从数据库中或配置文件中读取IP地址库。IP地址库中通常包括记录号、起始地址、结束地址、、所属的国家、省份、城市信息。IP地址库的格式如表1所示。
表1为传统IP地址库的格式表
然后,根据IP地址库生成数据结构,通常使用哈希表实现,当发生冲突时使用冲突链方法解决冲突。
运行时,根据IP地址查找数据结构并获取国家、省、城市信息。
但是,上述方法存在以下缺陷:
1)系统启动时,读取IP地址库及生成数据结构,将会占用系统时间,从而延长了系统的加载过程。尤其当IP地址库很大,或生成的数据结构复杂时,加载速度会变慢。
2)使用冲突链方法解决冲突时,需要为每个冲突节点在数据段中分配内存,当冲突很多时将占用较多的系统内存。
3)根据IP地址查找数据结构,通常使用哈希表算法实现,如果发生冲突时,采用冲突链方法解决冲突问题,可是冲突链方法导致检索效率并不高。
4)将系统发布给第三方时,IP地址库必须随附发布,无法做到地址库保密。
发明内容
本发明所要解决的技术问题是,提供一种IP地址库检索方法及系统,以解决传统IP地址库检索效率低的问题。
为了解决上述技术问题,本发明公开了一种IP地址库检索方法,该方法包括:
将IP地址库构建成源代码,其中,构建的源代码包括IP地址哈希表、索引存储表以及确证函数的信息;
将所述源代码编译成目标程序;
通过所述目标程序对IP地址进行检索,检索得到所述IP地址归属地信息(例如IP地址归属的国家、省、城市信息)。
可选地,上述方法中,通过所述目标程序对IP地址进行检索的过程如下:
所述目标程序将所要检索的IP地址转换为C类网络地址,将所述C类网络地址作为关键值查询IP地址哈希表,当所述C类网络地址仅对应索引存储表中一个记录号时,返回该记录号,通过所返回的记录号检索IP地址所归属的国家,省,城市信息。
可选地,上述方法中,当所述C类网络地址对应索引存储表中多个记录号时,返回确证函数地址,从所返回的确证函数地址中调用所述确证函数,得到一个记录号,通过该记录号检索IP地址所归属的国家,省,城市信息。
可选地,上述方法中,所述目标程序为可执行程序或动态链接库。
可选地,上述方法中,通过编写一个脚本程序将IP地址库构建成源代码。
本发明还公开了一种IP地址库检索系统,该系统包括:
第一单元,将IP地址库构建成源代码,其中,构建的源代码包括IP地址哈希表、索引存储表以及确证函数的信息;
第二单元,将所述源代码编译成目标程序;
第三单元,通过所述目标程序对IP地址进行检索,检索得到所述IP地址归属地信息(例如IP地址归属的国家、省、城市信息)。
可选地,上述系统中,所述第三单元,通过所述目标程序对IP地址进行检索的过程如下:
将所要检索的IP地址转换为C类网络地址,将所述C类网络地址作为关键值查询IP地址哈希表,当所述C类网络地址仅对应索引存储表中一个记录号时,返回该记录号,通过所返回的记录号检索IP地址所归属的国家,省,城市信息。
可选地,上述系统中,当所述C类网络地址对应索引存储表中多个记录号时,返回确证函数地址,从所返回的确证函数地址中调用所述确证函数,得到一个记录号,通过该记录号检索IP地址所归属的国家,省,城市信息。
可选地,上述系统中,所述目标程序为可执行程序或动态链接库。
可选地,上述系统中,所述第一单元,通过编写一个脚本程序将IP地址库构建成源代码。
本申请技术方案提供一种高效的IP地址库检索方案,主要使用一种对地址库构建源代码的方式,将IP地址库构建成C程序源代码,再编译生成目标代码。本申请提供的IP地址库检索方法及装置具有加载速度快、低内存占用、检索速度快、地址库保密的优点,解决了传统IP地址库检索方法的缺陷。
附图说明
图1为本实施例中IP地址库检索流程图;
图2为本实施例中IP地址库检索方法IP哈希表结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文将结合附图对本发明技术方案作进一步详细说明。需要说明的是,在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
实施例1
本申请发明人提出,可以使用一种构建源代码的方式,将IP地址库建成源代码(例如C程序源代码,但本申请不限于C程序源代码),在此源代码中包含IP地址哈希表、索引存储表、确证函数三个部分,然后使用确证函数解决哈希表中的冲突问题,将源代码编译生成目标代码,实现IP地址库检索,即检索出IP地址归属的国家、省、城市信息。
基于上述思想,本实施例提供一种IP地址库检索方法,如图1所示,包括如下操作:
步骤100,将IP地址库构建成源代码(例如C程序源代码)。
上述步骤100中,构建生成的源代码中,包含IP地址哈希表、索引存储表、确证函数三个部分。
其中,IP地址哈希表可以以C类网络地址作为IP地址哈希表的key(关键值)值,共包含16777216个元素,在计算机领域表示为2^24=16M个元素。每个key对应指向索引存储表的记录号或确证函数地址。如图2所示。
而生成IP地址哈希表时可能会出现如下2种情况:
第一种情况,某项记录表述的C类网络地址(包括256个IP地址)仅对应于索引存储表中一个记录号,则不产生冲突,在IP地址哈希表中此项记录的key值对应为指向索引存储表的记录号;
第二种情况,某项记录表述的C类网络地址(包括256个IP地址)对应于索引存储表中的多个记录号,则产生冲突。
此时,为了避免冲突,本实施例提出可使用确证函数方法来解决。即在IP地址哈希表中为冲突的C类网络地址分别增设对应的确证函数地址。也就是说,如果产生冲突,则产生一个确证函数,并将IP地址哈希表中此项记录的key值对应为确证函数地址。
本实施例中,以C语言源代码为例,表示确证函数,以if-else分支的结构表示当IP地址属于不同的范围时,对应索引存储表中的记录号。其实现流程如下所示。
需要指出的是,确证函数经过编译后,不在系统的数据段占用内存,即生成的确证函数不占用系统内存空间。
步骤200,使用编译器将步骤100生成的C程序源代码编译成目标程序,即生成可执行程序或动态链接库。
上述步骤200中,将C程序源代码编译成目标程序的工具可以选择常用的GCC、CC、G++等工具。
其中,仅IP地址哈希表占用16M*4=64M内存。确证函数不在数据段占用内存。使用本实施例实现的IP地址库检索系统(也可称为定位系统)共占用64M内存,比常规的方法内存占用低很多。
步骤300,使用步骤200生成的目标程序对IP进行检索,检索出IP地址归属的国家、省、城市信息。
下面以当前主流的C语言的开发环境为例,说明上述IP地址库检索的详细过程:
步骤1:将IP地址库构建成C程序源代码。
该步骤可以通过编写一个脚本程序将IP地址库构建成C程序源代码,通常可使用pl脚本实现
假定已经获取IP地址库,可能以数据库或配置文件的方法表示,如表1所示。
这个地址库中有如下特点:
1.在第1行中,包含对218.241.32.*这个C类网络地址的检索信息,且218.241.32.*这个C类地址仅对应于索引存储表中的记录号1。
2.218.241.33.*这个C类网络地址也仅对应于索引存储表中的记录号1。
3.同理218.241.127.*,218.241.128.*仅对应于索引存储表中的一个记录号。
即说明以上三个C类网络地址在图3描述的IP地址哈希表中不冲突。
4.但是218.241.156.*这个C类网络地址可能对应索引存储表中的记录号6、7、8这3条记录,即这个C类网络地址在IP地址哈希表中冲突。
针对冲突的情况,可产生一个确证函数,将IP地址哈希表中此项记录的key值对应为确证函数地址。需要说明的是,一组冲突的C类网络地址对应一个确证函数,不同组的冲突的C类网络地址分别对应不同的确证函数。
步骤2:使用编译器将步骤1生成的C程序源代码编译成目标程序,即生成可执行程序或动态链接库。
步骤3:使用步骤2生成的目标程序对IP进行检索。检索出IP地址归属的国家、省、城市信息。
需要说明的是,对IP进行检索时,将IP地址转换为C类网络地址作为key值。以此key值查询IP地址哈希表,如果返回为记录号,则通过此记录号检索IP所归属的国家,省,城市信息。如果返回为确证函数地址,则调用执行此函数,由此函数返回记录号,再通过此记录号检索IP所归属的国家,省,城市。
假设:
对218.241.115.107地址按照本实施例提供的方法进行检索:
先将218.241.115.107转换为C类网络地址为218.241.115。以此为key值查询IP地址哈希表,将返回索引存储表中的记录号3,再通过记录号3检索IP所归属地为江苏徐州。
假设:
对218.241.156.231地址按照本实施例提供的方法进行检索:
先将218.241.156.231转换为C类网络地址为218.241.156。以此为key值查询IP地址哈希表,将返回一个确证函数geoip_colli_func_218_241_156,然后调用执行此确证函数,由此确证函数返回索引存储表的记录号7,再通过记录号7检索IP所归属地为浙江杭州。
实施例2
本实施例提供一种IP地址库检索系统,可实现上述实施例1的方法,该系统包括如下三个单元。
第一单元,将IP地址库构建成源代码,其中,构建的源代码包括IP地址哈希表、索引存储表以及确证函数的信息;
具体地,上述第一单元,通过编写一个脚本程序将IP地址库构建成源代码。
第二单元,将所述源代码编译成目标程序;
其中,目标程序可以为可执行程序或动态链接库。
第三单元,通过所述目标程序对IP地址进行检索,检索得到所述IP地址归属的国家、省、城市信息。
具体地,上述第三单元,通过所述目标程序对IP地址进行检索的过程如下:
将所要检索的IP地址转换为C类网络地址,将所述C类网络地址作为关键值查询IP地址哈希表,当所述C类网络地址仅对应索引存储表中一个记录号时,返回该记录号,通过所返回的记录号检索IP地址所归属的国家,省,城市信息。
当所述C类网络地址对应索引存储表中多个记录号时,返回确证函数地址,从所返回的确证函数地址中调用所述确证函数,得到一个记录号,通过该记录号检索IP地址所归属的国家,省,城市信息。
上述IP地址库检索系统的详细工作过程可参见实施例1中的相应内容,在此不再赘述。
从上述实施例可以看出,本申请具有如下优点:
1)因为IP地址哈希表、索引存储表、确证函数均由源代码表示,且编译成目标程序,即在目标程序启动时,不存在IP地址库加载的过程。因此,本申请具有加载速度快的优点。
2)同上述相同的原因,由于本申请技术方案不存在IP地址库加载的过程,因此程序运行时不需要暴露地址库,从而实现地址库保密。
3)对IP进行检索时,将IP地址转换为C类网络地址作为key值。以此key值查询IP地址哈希表。如果返回为指向索引存储表的记录号,则通过此记录号检索索引存储表,获取所归属的国家,省,城市信息即可。如果返回为确证函数地址,则调用执行此确证函数,由确证函数返回记录号,再通过此记录号检索索引存储表,获取所归属的国家,省,城市信息。由于本方法不使用常规的冲突链方法解决冲突,而是使用确证函数,则不需要在数据段中分配内存,同时避免了数据段寻址,因此具有低内存占用和检索速度快的优点。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
以上所述,仅为本发明的较佳实例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种IP地址库检索方法,其特征在于,该方法包括:
将IP地址库构建成源代码,其中,构建的源代码包括IP地址哈希表、索引存储表以及确证函数的信息;
将所述源代码编译成目标程序;
通过所述目标程序对IP地址进行检索,检索得到所述IP地址归属地信息。
2.如权利要求1所述的方法,其特征在于,通过所述目标程序对IP地址进行检索的过程如下:
所述目标程序将所要检索的IP地址转换为C类网络地址,将所述C类网络地址作为关键值查询IP地址哈希表,当所述C类网络地址仅对应索引存储表中一个记录号时,返回该记录号,通过所返回的记录号检索IP地址所归属的国家,省,城市信息。
3.如权利要求2所述的方法,其特征在于,
当所述C类网络地址对应索引存储表中多个记录号时,返回确证函数地址,从所返回的确证函数地址中调用所述确证函数,得到一个记录号,通过该记录号检索IP地址所归属的国家,省,城市信息。
4.如权利要求1至3任一项所述的方法,其特征在于,
所述目标程序为可执行程序或动态链接库。
5.如权利要求4所述的方法,其特征在于,
通过编写一个脚本程序将IP地址库构建成源代码。
6.一种IP地址库检索系统,其特征在于,该系统包括:
第一单元,将IP地址库构建成源代码,其中,构建的源代码包括IP地址哈希表、索引存储表以及确证函数的信息;
第二单元,将所述源代码编译成目标程序;
第三单元,通过所述目标程序对IP地址进行检索,检索得到所述IP地址归属地信息。
7.如权利要求6所述的系统,其特征在于,所述第三单元,通过所述目标程序对IP地址进行检索的过程如下:
将所要检索的IP地址转换为C类网络地址,将所述C类网络地址作为关键值查询IP地址哈希表,当所述C类网络地址仅对应索引存储表中一个记录号时,返回该记录号,通过所返回的记录号检索IP地址所归属的国家,省,城市信息。
8.如权利要求7所述的系统,其特征在于,
当所述C类网络地址对应索引存储表中多个记录号时,返回确证函数地址,从所返回的确证函数地址中调用所述确证函数,得到一个记录号,通过该记录号检索IP地址所归属的国家,省,城市信息。
9.如权利要求6至8任一项所述的系统,其特征在于,
所述目标程序为可执行程序或动态链接库。
10.如权利要求9所述的系统,其特征在于,
所述第一单元,通过编写一个脚本程序将IP地址库构建成源代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310364947.6A CN104424197B (zh) | 2013-08-20 | 2013-08-20 | 一种ip地址库检索方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310364947.6A CN104424197B (zh) | 2013-08-20 | 2013-08-20 | 一种ip地址库检索方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104424197A true CN104424197A (zh) | 2015-03-18 |
CN104424197B CN104424197B (zh) | 2018-05-11 |
Family
ID=52973199
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310364947.6A Active CN104424197B (zh) | 2013-08-20 | 2013-08-20 | 一种ip地址库检索方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104424197B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111970368A (zh) * | 2020-08-24 | 2020-11-20 | 北京微步在线科技有限公司 | 一种基于ip信誉数据的信息处理方法、服务端及系统 |
CN114285797B (zh) * | 2021-12-30 | 2024-04-19 | 北京天融信网络安全技术有限公司 | Ip地址的处理方法、装置、存储介质 |
CN118158292A (zh) * | 2024-02-05 | 2024-06-07 | 远江盛邦(北京)网络安全科技股份有限公司 | 互联网协议ip地址库构建方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100574324C (zh) * | 2006-09-25 | 2009-12-23 | 北京启明星辰信息技术股份有限公司 | 一种ip地址快速定位的方法和系统 |
US20100023727A1 (en) * | 2008-07-24 | 2010-01-28 | Ewha University-Industry Collaboration Foundation | Ip address lookup method and apparatus by using bloom filter and multi-hashing architecture |
CN102984292A (zh) * | 2012-12-03 | 2013-03-20 | 北京锐安科技有限公司 | 一种ip段地址集中查找ip地址的方法 |
-
2013
- 2013-08-20 CN CN201310364947.6A patent/CN104424197B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100574324C (zh) * | 2006-09-25 | 2009-12-23 | 北京启明星辰信息技术股份有限公司 | 一种ip地址快速定位的方法和系统 |
US20100023727A1 (en) * | 2008-07-24 | 2010-01-28 | Ewha University-Industry Collaboration Foundation | Ip address lookup method and apparatus by using bloom filter and multi-hashing architecture |
CN102984292A (zh) * | 2012-12-03 | 2013-03-20 | 北京锐安科技有限公司 | 一种ip段地址集中查找ip地址的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111970368A (zh) * | 2020-08-24 | 2020-11-20 | 北京微步在线科技有限公司 | 一种基于ip信誉数据的信息处理方法、服务端及系统 |
CN111970368B (zh) * | 2020-08-24 | 2021-11-23 | 北京微步在线科技有限公司 | 一种基于ip信誉数据的信息处理方法、服务端及系统 |
CN114285797B (zh) * | 2021-12-30 | 2024-04-19 | 北京天融信网络安全技术有限公司 | Ip地址的处理方法、装置、存储介质 |
CN118158292A (zh) * | 2024-02-05 | 2024-06-07 | 远江盛邦(北京)网络安全科技股份有限公司 | 互联网协议ip地址库构建方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104424197B (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3014479B1 (en) | Omega names: name generation and derivation | |
CN105335137B (zh) | 用于处理源文件的方法和装置 | |
CN101223522B (zh) | 调用表值函数的查询的有效评估系统和方法 | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
US9483508B1 (en) | Omega names: name generation and derivation | |
CN114077680B (zh) | 一种图数据的存储方法、系统及装置 | |
CN102402602A (zh) | 一种实时数据库的b+树索引方法及装置 | |
CN101772043B (zh) | 局数据核查方法和装置 | |
CN104572920A (zh) | 一种数据整理方法和装置 | |
CN106095698A (zh) | 面向对象的缓存写入、读取方法及装置 | |
CN105447030A (zh) | 一种索引处理方法与设备 | |
US9292549B2 (en) | Method and system for index serialization | |
JP2005050347A (ja) | 実行時バインディング/動的パス名解決の方法および装置 | |
CN104424197A (zh) | 一种ip地址库检索方法及系统 | |
CN100527131C (zh) | 一种ims数据库互动式访问方法和工具 | |
CN115203211A (zh) | 一种唯一哈希序号生成方法和系统 | |
CN112269839B (zh) | 区块链中的数据存储方法、装置、电子设备及存储介质 | |
CN112463880B (zh) | 一种区块链数据存储方法及相关装置 | |
CN107239568B (zh) | 分布式索引实现方法及装置 | |
CN106227769A (zh) | 数据存储方法及装置 | |
CN102542019A (zh) | 识别码存储方法及系统、识别码索引方法及系统 | |
CN103902554B (zh) | 数据访问方法与装置 | |
KR101368441B1 (ko) | 데이터베이스의 공간 재사용 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 | |
CN102193947A (zh) | 数据访问处理方法及系统 | |
CN113553329B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |