CN104424197B - 一种ip地址库检索方法及系统 - Google Patents

一种ip地址库检索方法及系统 Download PDF

Info

Publication number
CN104424197B
CN104424197B CN201310364947.6A CN201310364947A CN104424197B CN 104424197 B CN104424197 B CN 104424197B CN 201310364947 A CN201310364947 A CN 201310364947A CN 104424197 B CN104424197 B CN 104424197B
Authority
CN
China
Prior art keywords
address
source code
recording mechanism
class
target program
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.)
Active
Application number
CN201310364947.6A
Other languages
English (en)
Other versions
CN104424197A (zh
Inventor
肖成民
徐小琳
王明华
李高超
李佳
刘阳
高胜
郑礼熊
李向通
刘亚东
王虹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Venus Information Security Technology Co Ltd
National Computer Network and Information Security Management Center
Beijing Venus Information Technology Co Ltd
Original Assignee
Beijing Venus Information Security Technology Co Ltd
National Computer Network and Information Security Management Center
Beijing Venus Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Venus Information Security Technology Co Ltd, National Computer Network and Information Security Management Center, Beijing Venus Information Technology Co Ltd filed Critical Beijing Venus Information Security Technology Co Ltd
Priority to CN201310364947.6A priority Critical patent/CN104424197B/zh
Publication of CN104424197A publication Critical patent/CN104424197A/zh
Application granted granted Critical
Publication of CN104424197B publication Critical patent/CN104424197B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9537Spatial 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地址库中通常包括记录号、起始地址、结束地址、所属的国家、省份、城市信息。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类网络地址在图2描述的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 (8)

1.一种IP地址库检索方法,其特征在于,该方法包括:
将IP地址库构建成源代码,其中,构建的源代码包括IP地址哈希表、索引存储表以及确证函数的信息;
将所述源代码编译成目标程序;
所述目标程序将所要检索的IP地址转换为C类网络地址,将所述C类网络地址作为关键值查询IP地址哈希表,当所述C类网络地址对应索引存储表中多个记录号时,返回确证函数地址,从所返回的确证函数地址中调用所述确证函数,得到一个记录号,通过该记录号检索IP地址所归属的国家,省,城市信息。
2.如权利要求1所述的方法,其特征在于:
当所述C类网络地址仅对应索引存储表中一个记录号时,返回该记录号,通过所返回的记录号检索IP地址所归属的国家,省,城市信息。
3.如权利要求1或2所述的方法,其特征在于,
所述目标程序为可执行程序或动态链接库。
4.如权利要求3所述的方法,其特征在于,
通过编写一个脚本程序将IP地址库构建成源代码。
5.一种IP地址库检索系统,其特征在于,该系统包括:
第一单元,将IP地址库构建成源代码,其中,构建的源代码包括IP地址哈希表、索引存储表以及确证函数的信息;
第二单元,将所述源代码编译成目标程序;
第三单元,将所要检索的IP地址转换为C类网络地址,将所述C类网络地址作为关键值查询IP地址哈希表,当所述C类网络地址对应索引存储表中多个记录号时,返回确证函数地址,从所返回的确证函数地址中调用所述确证函数,得到一个记录号,通过该记录号检索IP地址所归属的国家,省,城市信息。
6.如权利要求5所述的系统,其特征在于,所述第三单元,
当所述C类网络地址仅对应索引存储表中一个记录号时,返回该记录号,通过所返回的记录号检索IP地址所归属的国家,省,城市信息。
7.如权利要求5或6所述的系统,其特征在于,
所述目标程序为可执行程序或动态链接库。
8.如权利要求7所述的系统,其特征在于,
所述第一单元,通过编写一个脚本程序将IP地址库构建成源代码。
CN201310364947.6A 2013-08-20 2013-08-20 一种ip地址库检索方法及系统 Active CN104424197B (zh)

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 CN104424197A (zh) 2015-03-18
CN104424197B true 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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111970368B (zh) * 2020-08-24 2021-11-23 北京微步在线科技有限公司 一种基于ip信誉数据的信息处理方法、服务端及系统
CN114285797B (zh) * 2021-12-30 2024-04-19 北京天融信网络安全技术有限公司 Ip地址的处理方法、装置、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100574324C (zh) * 2006-09-25 2009-12-23 北京启明星辰信息技术股份有限公司 一种ip地址快速定位的方法和系统
CN102984292A (zh) * 2012-12-03 2013-03-20 北京锐安科技有限公司 一种ip段地址集中查找ip地址的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100962653B1 (ko) * 2008-07-24 2010-06-11 이화여자대학교 산학협력단 블룸 필터 및 복수 해싱 구조를 사용한 ip 주소 검색방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100574324C (zh) * 2006-09-25 2009-12-23 北京启明星辰信息技术股份有限公司 一种ip地址快速定位的方法和系统
CN102984292A (zh) * 2012-12-03 2013-03-20 北京锐安科技有限公司 一种ip段地址集中查找ip地址的方法

Also Published As

Publication number Publication date
CN104424197A (zh) 2015-03-18

Similar Documents

Publication Publication Date Title
US10324909B2 (en) Omega names: name generation and derivation utilizing nested three or more attributes
US8364909B2 (en) Determining a conflict in accessing shared resources using a reduced number of cycles
CN102929680B (zh) 一种将TTCN-3脚本转换为Java源代码的方法,装置和系统
CN101826107B (zh) 哈希数据处理方法和装置
US20090327377A1 (en) Copying entire subgraphs of objects without traversing individual objects
US9483508B1 (en) Omega names: name generation and derivation
JP2005032259A (ja) 共有ライブラリーシステム及び前記システム構築方法
CN105608214B (zh) 对布控车牌号码进行快速搜索的方法
CN104021123A (zh) 用于数据迁移的方法和系统
CN107526746A (zh) 管理文档索引的方法和设备
CN104424197B (zh) 一种ip地址库检索方法及系统
CN105677903A (zh) 获取数据的方法和装置、计算机设备
CN109656986A (zh) 一种业务数据汇总的辅助方法、装置及电子设备
CN109213445A (zh) 一种存储系统元数据的管理方法、管理系统及相关装置
CN100527131C (zh) 一种ims数据库互动式访问方法和工具
CN104636327A (zh) 一种基于增量计算的分布式流式数据系统
CN111625543B (zh) 一种基于HBase表实现全局单调递增的序列的方法
CN112463880A (zh) 一种区块链数据存储方法及相关装置
US20120066270A1 (en) Automated memory management of indexed data using weak references
CN102446164A (zh) 一种报表公式的解析方法、装置及业务系统
CN101055521A (zh) 映射规则的可视化生成方法及系统
CN116010337B (zh) 一种openGauss访问ORC数据的方法
CN113553329B (zh) 数据集成系统和方法
CN109992701B (zh) 一种链表实现方法、装置、设备及可读存储介质
CN103019801A (zh) 一种应用于高速数字io波形引擎的编译器

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