CN108875006A - 确定ip地址所属地区的方法及装置 - Google Patents
确定ip地址所属地区的方法及装置 Download PDFInfo
- Publication number
- CN108875006A CN108875006A CN201810621336.8A CN201810621336A CN108875006A CN 108875006 A CN108875006 A CN 108875006A CN 201810621336 A CN201810621336 A CN 201810621336A CN 108875006 A CN108875006 A CN 108875006A
- Authority
- CN
- China
- Prior art keywords
- address
- node
- binary value
- binary
- value
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供一种确定IP地址所属地区的方法及装置。该方法包括:将待查询的IP地址值转换为二进制值;根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点,所述地址二叉树的深度与IP地址包括的二进制位数相同,所述地址二叉树包括具有地区信息的节点;根据所述与之匹配的节点包括的地区信息,确定所述待查询的IP地址的所属地区。本发明实施例的方法,提高了确定IP地址所属地区的速度。
Description
技术领域
本发明实施例涉及互联网技术领域,尤其涉及一种确定互联网协议(InternetProtocol,简称:IP)地址所属地区的方法及装置。
背景技术
IP地址是由互联网协议提供的一种统一格式的地址。互联网中的每一个设备都被分配了唯一的IP地址,基于该IP地址进行互联网通信。互联网管理机构会为不同的地区分配不同的IP地址区间段,例如IP区间段:211.82.80.0-211.82.99.255对应的地区是北京。因此,可以基于IP地址值确定该IP地址所属的地区。确定IP地址所属地区有着广泛的应用场景。例如,购物网站可以基于用户的IP地址确定用户所在地区,提供具有地区特色的服务。网站还可以基于用户的IP地址确定用户的登陆地区,对于登陆地区出现异常的账户进行相应的安全控制。
传统的确定IP地址所属地区的方法是把IP地址信息存储到关系型数据库中,在并发量比较少,实时性要求不高的情况下是可行的,但是当并发量增大时,便会对关系型数据库产生很大的压力,导致访问速度明显减慢。
因此,对于高并发、实时性要求高的场合,现有方法无法快速准确的确定IP地址所属地区。
发明内容
本发明实施例提供一种确定IP地址所属地区的方法及装置,用以解决现有技术中确定IP地址所属地区时存在的复杂度高、查询速度慢的问题。
第一方面,本发明实施例提供一种确定IP地址所属地区的方法,包括:
将待查询的IP地址值转换为二进制值;
根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点,地址二叉树的深度与IP地址包括的二进制位数相同,地址二叉树包括具有地区信息的节点;
根据与之匹配的节点包括的地区信息,确定待查询的IP地址的所属地区。
可选的,上述方法还包括:
根据各个地区的起始IP地址和终止IP地址构建地址二叉树。
可选的,根据各个地区的起始IP地址和终止IP地址构建地址二叉树包括:
将起始IP地址和终止IP地址转换为二进制值;
分别根据同一地区的起始IP地址和终止IP地址的二进制值,按照从高位到低位的顺序,若二进制值为0,则建立左子树,若二进制值为1,则建立右子树,初始化地址二叉树。
可选的,上述方法还包括:
从第一标志位开始,为同一地区的起始IP地址中二进制值为0的节点创建同深度的节点并初始化相应的地区信息,为同一地区的终止IP地址中二进制值为1的节点创建同深度的节点并初始化相应的地区信息;第一标志位的前一位为同一地区的起始IP地址和终止IP地址的二进制值第一次出现不同的位。
可选的,上述方法还包括:
为各个地区的起始IP地址和终止IP地址的二进制值的最低位对应的节点初始化相应的地区信息。
可选的,根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点包括:
按照转换后的二进制值从高位到低位的顺序,从地址二叉树的根节点开始搜索;
若二进制值为0,则搜索左子树;
若二进制值为1,则搜索右子树。
可选的,上述方法还包括:
若搜索到的节点包括地址信息,则停止搜索,并将包括地址信息的节点确定为与之匹配的的节点。
第二方面,本发明实施例提供一种确定IP地址所属地区的装置,包括:
转换模块,用于将待查询的IP地址值转换为二进制值;
查询模块,用于根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点,地址二叉树的深度与IP地址包括的二进制位数相同;
确定模块,用于根据与之匹配的节点包括的地区信息,确定待查询的IP地址的所属地区。
第三方面,本发明实施例提供一种确定IP地址所属地区的设备,包括:
存储器;
处理器;以及
计算机程序;
其中,计算机程序存储在存储器中,并被配置为由处理器执行以实现如第一方面任一项所述的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现如第一方面任一项所述的方法。
本发明实施例提供的确定IP地址所属地区的方法及装置,通过以二叉树作为数据模型,对IP地址库进行建模,实现了快速、高效、准确的根据IP来获取对应地区信息。本实施例提供的确定IP地址所属地区的方法的查找时间复杂度为常数,即不管数据量多大,查找可以始终保持非常高的速度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为本发明提供的确定IP地址所属地区的方法一实施例的流程图;
图2为本发明提供的确定IP地址所属地区的方法一实施例中构建地址二叉树的流程图;
图3为本发明提供的确定IP地址所属地区的方法一实施例中构建的地址二叉树的结构示意图;
图4为本发明提供的确定IP地址所属地区的方法一实施例中查找地址二叉树的流程图;
图5为本发明提供的确定IP地址所属地区的装置一实施例的结构示意图;
图6为本发明提供的确定IP地址所属地区的设备一实施例的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
本发明的说明书和权利要求书中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明中的“第一”和“第二”只起标识作用,而不能理解为指示或暗示顺序关系、相对重要性或者隐含指明所指示的技术特征的数量。“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本发明的说明书中通篇提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明实施例中均以32位的IPv4地址为例进行说明,但是并不构成对本发明实施例的限制,对于其他版本的IP地址同样可以采用本发明实施例所提供的方法确定IP地址所属地区。例如,对于128位的IPv6地址同样适用。
图1为本发明提供的确定IP地址所属地区的方法一实施例的流程图。如图1所示,本实施例提供的确定IP地址所属地区的方法可以包括:
步骤S101、将待查询的IP地址值转换为二进制值。
无论接收到的待查询的IP地址值以何种形式提供,均需要首先将其转换为二进制值。例如,若待查询的IP地址值为211.82.80.0,该地址值由4部分数字组成,各部分之间用小数点分开,每部分数字可以转换成8位二进制数字。首先将211.82.80.0转换成10进制,按照小数点分为4个数字数组,每个数字由1个字节8位组成。将第一个数字左移24位,第二个数字左移16位,第三个数字左移8位,然后将四部分内容相加得到二进制数。待查询的IP地址211.82.80.0对应的32位二进制值为11010011 01010010 01010000 00000000。
若接收到的待查询的IP地址为IPv6地址,依然可以采用上述方法将其转换为二进制值,只是转换后的二进制值有128位。
步骤S102、根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点,地址二叉树的深度与IP地址包括的二进制位数相同,地址二叉树包括具有地区信息的节点。
预先构建的地址二叉树包括具有地区信息的节点,例如,可以根据互联网管理机构对于IP地址的划分,将地区信息预先初始化至地址二叉树中。地址二叉树的深度与IP地址包括的二进制位数相同,对于32位的IPv4地址需要预先构建深度为32位的地址二叉树,对于128位的IPv6地址需要预先构建深度为128位的地址二叉树。
例如,对于IPv4地址,可以预先构建深度为32的完全地址二叉树。该完全地址二叉树中的节点的值只能是1或者0,且每一个节点的左孩子节点和右孩子节点不同。则从根节点至每一个叶子节点中的值连起来,便构成一个32位的IP地址,将该IP地址的地区信息初始化至相应的叶子节点。该完全地址二叉树的所有叶子节点所代表的IP地址覆盖了整个IPv4地址空间。则对于每一个待查询的IPv4地址都有一个包括了地区信息的叶子节点与之匹配。根据转换后的32位二进制值从高位到低位的顺序,依次从地址二叉树的根节点开始查找,经过32次查找便可确定与之匹配的节点。
可选的,还可以构建深度为32的非完全二叉树,此时地区信息被初始化在深度小于32的节点中,对于与之匹配的待查询IP地址经过小于32次的查找便可以确定所属地区。可见,采用地址二叉树查找一个IP地址所需的查找次数不大于树的深度。
同理,对于IPv6地址只需预先构建深度为128位的地址二叉树即可。对于待查询的IPv6地址最多只需要查找128次便可以确定其所属的地区信息。
步骤S103、根据与之匹配的节点包括的地区信息,确定待查询的IP地址的所属地区。
查找到与待查询的IP地址值相匹配的节点后,根据该节点所包括的地区信息,便可以确定待查询的IP地址的所属地区。
本实施例提供的确定IP地址所属地区的方法,通过以二叉树作为数据模型,对IP地址库进行建模,实现了快速、高效、准确的根据IP来获取对应地区信息。本实施例提供的确定IP地址所属地区的方法的查找时间复杂度为常数,即不管数据量多大,查找可以始终保持非常高的速度。
由于IP地址是以区间段进行划分的,即一个IP地址区间段对应一个地区。本实施例充分利用该信息,在上述实施例的基础上,提供了一种在确定IP地址所属地区时高效构建地址二叉树的方法。
可选的,在上述实施例的基础上,本实施例根据各个地区的起始IP地址和终止IP地址构建地址二叉树。
在一种可能的实现方式中,首先可以将起始IP地址和终止IP地址转换为二进制值。然后分别根据同一地区的起始IP地址和终止IP地址的二进制值,按照从高位到低位的顺序,若二进制值为0,则建立左子树,若二进制值为1,则建立右子树,初始化地址二叉树。
可选的,从第一标志位开始,为同一地区的起始IP地址中二进制值为0的节点创建同深度的节点并初始化相应的地区信息,为同一地区的终止IP地址中二进制值为1的节点创建同深度的节点并初始化相应的地区信息;第一标志位的前一位为同一地区的起始IP地址和终止IP地址的二进制值第一次出现不同的位。为各个地区的起始IP地址和终止IP地址的二进制值的最低位对应的节点初始化相应的地区信息。
本实施例中,在构建地址二叉树时,仅需考虑各个地区的起始IP地址和终止IP地址,大大提高了构建地址二叉树的效率,同时减小了存储该地址二叉树所需的空间。位于一个地区的起始IP地址所形成的左侧边界与该地区的终止IP地址所形成的右侧边界之间的所有节点,均属于该地区。
在上述实施例的基础上,下面采用一个具体的实施例来详细说明在上述实施例中如何构建地址二叉树。图2为本发明提供的确定IP地址所属地区的方法一实施例中构建地址二叉树的流程图。图3为本发明提供的确定IP地址所属地区的方法一实施例中构建的地址二叉树的结构示意图。图3为按照图2流程图所示方法,根据北京地区的起始IP地址和终止IP地址构建的地址二叉树的结构示意图。如图2所示,可以包括:
步骤S201、将一个地区的起始IP地址和终止IP地址转换成二进制值。
以北京地区为例,北京地区的起始IP地址为211.82.80.0,其对应的二进制值为11010011 01010010 01010000 00000000;北京地区的终止IP地址为211.82.99.255,其对应的二进制值为11010011 01010010 01100011 11111111。
步骤S202、按二进制值从高位到低位的顺序,遍历起始IP地址和终止IP地址的二进制值中的每一位。
按二进制值从高位到低位的顺序,即按照从左到右的顺序。例如,可以按从左到右的顺序为二进制值排序,最左边为第1位,最右边为第32位。从第1位开始,执行以下步骤。
步骤S203、判断起始IP地址与终止IP地址的该位是否相同。若相同,则执行步骤S204;若不同,则执行步骤S205。
属于一个地区的IP地址形成一个IP地址区段,因此同一地区的起始IP地址和终止IP地址的二进制值从高位起,至少有一位是相同的。以北京地区为例,起始IP地址和终止IP地址的前18位是相同的。
步骤S204、若该位值为0,则为当前节点创建左孩子节点;若该位值为1,则为当前节点创建右孩子节点;继续比较下一位。
对于从高位起,起始IP地址与终止IP地址相同的位,按照若该位值为0,则为当前节点创建左孩子节点;若该位值为1,则为当前节点创建右孩子节点的规则创建二叉树。以北京地区为例,前18位均相同,因此按照该方法构建的前18层均只有一个节点。如图3所示的,其中R表示根节点,左侧数字表示二叉树的深度。第1位相同且为1,则为当前节点,即根节点创建右孩子节点,并将当前节点指向新创建的右孩子节点;第2位相同且为1,则为当前节点,即上一步创建的节点创建右孩子节点,并将当前节点指向新创建的右孩子节点;第3位相同且为0,则为当前节点,即上一步创建的节点创建左孩子节点,并将当前节点指向新创建的左孩子节点。依次完成前18位相同位对应的节点创建。
步骤S205、则为当前节点分别创建左子树和右子树。
当起始IP地址与终止IP地址开始出现不同时,则为当前节点分别创建左子树和右子树。仍以北京地区为例,北京地区的起始IP地址和终止IP地址在第19位时开始出现不同,此时当前节点指向深度为18的层中的节点,则为该节点分别创建左子树和右子树。如图3所示,深度为19的层中包括左右两个孩子节点。
从出现不同的下一位开始,根据起始IP地址继续初始化左子树,根据终止IP地址继续初始化右子树。以北京地区为例,从第20位起,根据起始IP地址的第20位至第32位“10000 00000000”为深度为19的层中的左节点创建相应的孩子节点;根据终止IP地址的第20位至第32位“00011 11111111”为深度为19的层中的右节点创建相应的孩子节点。如图3所示,从第19层起,二叉树分为左右两部分。根据第一标志位的定义,本实施例中第一标志位为第20位。
步骤S206、根据起始IP地址继续创建左子树,为起始IP地址中二进制值为0的节点创建同深度的节点并初始化相应的地区信息。
从第一标志位开始,在左子树中,为起始IP地址中二进制值为0的节点创建同深度的节点并初始化相应的地区信息。如图3所示,从第20位开始,起始IP地址中二进制值为0的节点包括从第21层至第32层共12个节点,为这12个节点都创建了同深度的包括了北京地区信息的节点。即在图3中,由起始IP地址所形成的左侧边界内侧,从第21层至第32层的12个值为1的节点包括了北京地区的地区信息。若有IP地址匹配到这12个节点上,则可以确定IP地址所属的地区为北京。
步骤S207、根据终止IP地址继续创建右子树,为终止IP地址中二进制值为1的节点创建同深度的节点并初始化相应的地区信息。
从第一标志位开始,在右子树中,为终止IP地址中二进制值为1的节点创建同深度的节点并初始化相应的地区信息。如图3所示,从第20位开始,终止IP地址中二进制值为1的节点包括从第23层至第32层共10个节点,为这10个节点都创建了同深度的包括了北京地区信息的节点。即在图3中,由终止IP地址所形成的右侧边界内侧,从第23层至第32层的10个值为0的节点包括了北京地区的地区信息。若有IP地址匹配到这10个节点上,则可以确定IP地址所属的地区为北京。
步骤S208、为最后一位对应的节点初始化地区信息。
即分别为起始IP地址对应的节点和终止IP地址对应的节点初始化地区信息。如图3所示,即为第32层中最左侧的节点和最右侧的节点初始化地址信息。至此,图3所示的地址二叉树中共有24个节点包括了地区信息。
按照上述步骤便将一个地区的IP地址信息初始化到地址二叉树中相应的节点了。当包括多个地区时,针对每一个地区的起始IP地址和终止IP地址执行以上步骤,便可以构建一个包括多个地区信息的地址二叉树。
当某个待查询的IP地址落入由某一地区的起始IP地址和终止IP地址所形成的左侧边界和右侧边界之间时,便可以确定该IP地址属于该地区。
本实施例提供的构建地址二叉树的方法,仅仅根据地区起始IP地址和终止IP便可完成地址二叉树的构建,通过该方法构建的地址二叉树结构简单,节省了用于存储地址二叉树的存储空间。使用该方法构建的地址二叉树,在确定IP地址所属地区时,能够进一步减少查找步数,提高速度。
可选的,在上述实施例的基础上,根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点可以包括:
按照转换后的二进制值从高位到低位的顺序,从地址二叉树的根节点开始搜索;
若二进制值为0,则搜索左子树;
若二进制值为1,则搜索右子树。
进一步可选的,若搜索到的节点包括地址信息,则停止搜索,并将包括地址信息的节点确定为与之匹配的的节点。
在上述实施例的基础上,下面采用一个具体的实施例来详细说明在确定IP地址所属地区时,如何查找地址二叉树。本实施例中,预先构建的地址二叉树可以采用图3所示的地址二叉树。图4为本发明提供的确定IP地址所属地区的方法一实施例中查找地址二叉树的流程图。如图4所示,该方法可以包括:
步骤S401:将待查询的IP地址值转换为二进制值。
根据上述任一实施例中所述的转换方法,将待查询的IP地址值转换为对应的二进制值。例如,若待查询的IP地址为211.82.82.0,则其对应的二进制值为11010011 0101001001010010 00000000。
步骤S402:按二进制值从高位到低位的顺序,逐位遍历查找地址二叉树。
即按照二进制值从左至右的顺序,依次遍历查找地址二叉树。
步骤S403:判断遍历位是否为0。若为0,则执行步骤S404;若不为0,则执行步骤S405。
步骤S404:查找当前节点的左孩子节点,将当前节点指向该左孩子节点。然后执行步骤S406。
步骤S405:查找当前节点的右孩子节点,将当前节点指向该右孩子节点。
步骤S406:判断当前节点是否包括地区信息。若包括,则继续执行步骤S407;若不包括,则对下一遍历位重复执行步骤S402。
步骤S407:确定待查询的IP地址所属地区为当前节点包括的地区。
下面以待查询的IP地址:211.82.82.0为例,按照上述步骤,在图3所示的地址二叉树进行查询。由于该IP地址对应的二进制值为11010011 01010010 01010010 00000000。按照值为0,查找左孩子节点,值为1,查找右孩子节点。则第1位的二进制值1对应图3中深度为1的层中的1节点,该节点不包括地区信息,继续查找第2位。第2位的二进制值1对应图3中深度为2的层中的1节点,该节点也不包括地区信息,继续查找第3位。第3位的二进制值0对应图3中深度为3的层中的0节点。依次查找了前22位对应的节点,均不包括地区信息,则继续查找第23位。第23位的二进制值1对应图3中深度为23层中的左子树中的1节点,该节点包括的地区信息为北京,则停止继续查找,并将待查询的IP地址所属的地区确定为北京。本实施例中,通过23次查找便确定了待查询的IP地址所属的地区。
本实施例提供的确定IP地址所属地区时,用于搜索地址二叉树的方法,实现了快速、高效、准确的根据IP来获取对应地区信息。本实施例的搜索时间复杂度为logn,其中n小于等于地址二叉树的深度,即不管数据量再大,搜索的效率始终保持非常高的速度,即一个常数。
本发明实施例还提供一种确定IP地址所属地区的装置,请参见图5所示,本发明实施例仅以图5为例进行说明,并不表示本发明仅限于此。图5为本发明提供的确定IP地址所属地区的装置一实施例的结构示意图。如图5所示,本实施例提供的确定IP地址所属地区的装置装置50包括:转换模块501、查询模块502和确定模块503。
转换模块501,用于将待查询的IP地址值转换为二进制值。
查询模块502,用于根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点,地址二叉树的深度与IP地址包括的二进制位数相同。
确定模块503,用于根据与之匹配的节点包括的地区信息,确定待查询的IP地址的所属地区。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
可选的,上述装置还可以包括构建模块,用于根据各个地区的起始IP地址和终止IP地址构建地址二叉树。
构建模块具体可以用于,将起始IP地址和终止IP地址转换为二进制值。分别根据同一地区的起始IP地址和终止IP地址的二进制值,按照从高位到低位的顺序,若二进制值为0,则建立左子树,若二进制值为1,则建立右子树,初始化地址二叉树。从第一标志位开始,为同一地区的起始IP地址中二进制值为0的节点创建同深度的节点并初始化相应的地区信息,为同一地区的终止IP地址中二进制值为1的节点创建同深度的节点并初始化相应的地区信息;第一标志位的前一位为同一地区的起始IP地址和终止IP地址的二进制值第一次出现不同的位。为各个地区的起始IP地址和终止IP地址的二进制值的最低位对应的节点初始化相应的地区信息。
可选的,查询模块502,具体可以用于按照转换后的二进制值从高位到低位的顺序,从地址二叉树的根节点开始搜索。若二进制值为0,则搜索左子树;若二进制值为1,则搜索右子树。若搜索到的节点包括地址信息,则停止搜索,并将包括地址信息的节点确定为与之匹配的的节点。
本发明实施例还提供一种确定IP地址所属地区的设备,请参见图6所示,本发明实施例仅以图6为例进行说明,并不表示本发明仅限于此。图6为本发明提供的确定IP地址所属地区的设备一实施例的结构示意图。如图6所示,本实施例提供的确定IP地址所属地区的设备60包括:存储器601、处理器602和总线603。其中,总线603用于实现各元件之间的连接。
存储器601中存储有计算机程序,计算机程序被处理器602执行时可以实现上述任一方法实施例中确定IP地址所属地区的技术方案。
其中,存储器601和处理器602之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可以通过一条或者多条通信总线或信号线实现电性连接,如可以通过总线603连接。存储器601中存储有实现确定IP地址所属地区的方法的计算机程序,包括至少一个可以软件或固件的形式存储于存储器601中的软件功能模块,处理器602通过运行存储在存储器601内的软件程序以及模块,从而执行各种功能应用以及数据处理。
存储器601可以是,但不限于,随机存取存储器(Random Access Memory,简称:RAM),只读存储器(Read Only Memory,简称:ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称:PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称:EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,简称:EEPROM)等。其中,存储器601用于存储程序,处理器602在接收到执行指令后,执行程序。进一步地,上述存储器601内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。
处理器602可以是一种集成电路芯片,具有信号的处理能力。上述的处理器602可以是通用处理器,包括中央处理器(Central Processing Unit,简称:CPU)、网络处理器(Network Processor,简称:NP)等。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。可以理解,图6的结构仅为示意,还可以包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。图6中所示的各组件可以采用硬件和/或软件实现。
需要说明的是,本实施例提供的确定IP地址所属地区的设备可以是网络侧设备,也可以是终端设备,本实施例对此不作限制。无论是何种设备,均可以根据接收到的待查询的IP地址值,快速返回该IP地址所属的地区信息。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现上述任一方法实施例提供的确定IP地址所属地区的技术方案。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种确定IP地址所属地区的方法,其特征在于,包括:
将待查询的IP地址值转换为二进制值;
根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点,所述地址二叉树的深度与IP地址包括的二进制位数相同,所述地址二叉树包括具有地区信息的节点;
根据所述与之匹配的节点包括的地区信息,确定所述待查询的IP地址的所属地区。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据各个地区的起始IP地址和终止IP地址构建所述地址二叉树。
3.根据权利要求2所述的方法,其特征在于,所述根据各个地区的起始IP地址和终止IP地址构建所述地址二叉树包括:
将所述起始IP地址和所述终止IP地址转换为二进制值;
分别根据同一地区的起始IP地址和终止IP地址的二进制值,按照从高位到低位的顺序,若二进制值为0,则建立左子树,若二进制值为1,则建立右子树,初始化所述地址二叉树。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
从第一标志位开始,为所述同一地区的起始IP地址中二进制值为0的节点创建同深度的节点并初始化相应的地区信息,为所述同一地区的终止IP地址中二进制值为1的节点创建同深度的节点并初始化相应的地区信息;所述第一标志位的前一位为所述同一地区的起始IP地址和终止IP地址的二进制值第一次出现不同的位。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
为所述各个地区的起始IP地址和终止IP地址的二进制值的最低位对应的节点初始化相应的地区信息。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点包括:
按照所述转换后的二进制值从高位到低位的顺序,从所述地址二叉树的根节点开始搜索;
若所述二进制值为0,则搜索左子树;
若所述二进制值为1,则搜索右子树。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若搜索到的节点包括地址信息,则停止搜索,并将包括所述地址信息的节点确定为所述与之匹配的的节点。
8.一种确定IP地址所属地区的装置,其特征在于,包括:
转换模块,用于将待查询的IP地址值转换为二进制值;
查询模块,用于根据转换后的二进制值,在预先构建的地址二叉树中,查找与之匹配的节点,所述地址二叉树的深度与IP地址包括的二进制位数相同;
确定模块,用于根据所述与之匹配的节点包括的地区信息,确定所述待查询的IP地址的所属地区。
9.一种确定IP地址所属地区的设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810621336.8A CN108875006B (zh) | 2018-06-15 | 2018-06-15 | 确定ip地址所属地区的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810621336.8A CN108875006B (zh) | 2018-06-15 | 2018-06-15 | 确定ip地址所属地区的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108875006A true CN108875006A (zh) | 2018-11-23 |
CN108875006B CN108875006B (zh) | 2021-03-30 |
Family
ID=64339186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810621336.8A Active CN108875006B (zh) | 2018-06-15 | 2018-06-15 | 确定ip地址所属地区的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108875006B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109743745A (zh) * | 2019-02-19 | 2019-05-10 | 北京三快在线科技有限公司 | 移动网络接入类型识别方法、装置、电子设备及存储介质 |
CN112307138A (zh) * | 2019-07-30 | 2021-02-02 | 华扬联众数字技术股份有限公司 | 地域信息的存储和查询方法、系统与介质 |
CN112671948A (zh) * | 2020-12-28 | 2021-04-16 | 北京锐安科技有限公司 | Ip地址所属区域的确定方法、装置、电子设备及存储介质 |
CN113286013A (zh) * | 2021-05-19 | 2021-08-20 | 苏州瑞立思科技有限公司 | 一种子网匹配方法和装置 |
CN113495892A (zh) * | 2020-03-20 | 2021-10-12 | 北京沃东天骏信息技术有限公司 | Ip地址信息库的更新方法和装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020184221A1 (en) * | 2001-05-30 | 2002-12-05 | Mosaid Technologies, Inc. | Load balancing in IP address lookup |
US20030031167A1 (en) * | 2001-02-28 | 2003-02-13 | Singh Abhishek Ranjan | Methods and system for efficient route lookup |
CN1863210A (zh) * | 2006-02-23 | 2006-11-15 | 华为技术有限公司 | 设备扫描方法 |
CN103561133A (zh) * | 2013-11-19 | 2014-02-05 | 中国科学院计算机网络信息中心 | 一种ip地址归属信息索引方法及快速查询方法 |
CN104935676A (zh) * | 2014-03-17 | 2015-09-23 | 阿里巴巴集团控股有限公司 | 确定ip地址段及其对应的经纬度的方法及装置 |
CN105512229A (zh) * | 2015-11-30 | 2016-04-20 | 北京奇艺世纪科技有限公司 | 一种ip地址的地域信息的存储、查询方法及装置 |
CN106341498A (zh) * | 2015-07-06 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 基于网络地址的定位、ip分段数据的存储方法及装置 |
CN106649476A (zh) * | 2016-09-29 | 2017-05-10 | 北京中联网盟科技股份有限公司 | 一种 ip 地址信息查询系统 |
CN106789137A (zh) * | 2015-11-19 | 2017-05-31 | 北京国双科技有限公司 | Ip范围的比较方法和装置 |
CN106777163A (zh) * | 2016-12-20 | 2017-05-31 | 携程旅游网络技术(上海)有限公司 | 基于红黑树的ip地址所属地查询方法及系统 |
CN107707477A (zh) * | 2017-09-28 | 2018-02-16 | 杭州迪普科技股份有限公司 | 报文的处理方法及装置、计算机可读存储介质 |
-
2018
- 2018-06-15 CN CN201810621336.8A patent/CN108875006B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030031167A1 (en) * | 2001-02-28 | 2003-02-13 | Singh Abhishek Ranjan | Methods and system for efficient route lookup |
US20020184221A1 (en) * | 2001-05-30 | 2002-12-05 | Mosaid Technologies, Inc. | Load balancing in IP address lookup |
CN1863210A (zh) * | 2006-02-23 | 2006-11-15 | 华为技术有限公司 | 设备扫描方法 |
CN103561133A (zh) * | 2013-11-19 | 2014-02-05 | 中国科学院计算机网络信息中心 | 一种ip地址归属信息索引方法及快速查询方法 |
CN104935676A (zh) * | 2014-03-17 | 2015-09-23 | 阿里巴巴集团控股有限公司 | 确定ip地址段及其对应的经纬度的方法及装置 |
CN106341498A (zh) * | 2015-07-06 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 基于网络地址的定位、ip分段数据的存储方法及装置 |
CN106789137A (zh) * | 2015-11-19 | 2017-05-31 | 北京国双科技有限公司 | Ip范围的比较方法和装置 |
CN105512229A (zh) * | 2015-11-30 | 2016-04-20 | 北京奇艺世纪科技有限公司 | 一种ip地址的地域信息的存储、查询方法及装置 |
CN106649476A (zh) * | 2016-09-29 | 2017-05-10 | 北京中联网盟科技股份有限公司 | 一种 ip 地址信息查询系统 |
CN106777163A (zh) * | 2016-12-20 | 2017-05-31 | 携程旅游网络技术(上海)有限公司 | 基于红黑树的ip地址所属地查询方法及系统 |
CN107707477A (zh) * | 2017-09-28 | 2018-02-16 | 杭州迪普科技股份有限公司 | 报文的处理方法及装置、计算机可读存储介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109743745A (zh) * | 2019-02-19 | 2019-05-10 | 北京三快在线科技有限公司 | 移动网络接入类型识别方法、装置、电子设备及存储介质 |
CN109743745B (zh) * | 2019-02-19 | 2021-01-22 | 北京三快在线科技有限公司 | 移动网络接入类型识别方法、装置、电子设备及存储介质 |
CN112307138A (zh) * | 2019-07-30 | 2021-02-02 | 华扬联众数字技术股份有限公司 | 地域信息的存储和查询方法、系统与介质 |
CN113495892A (zh) * | 2020-03-20 | 2021-10-12 | 北京沃东天骏信息技术有限公司 | Ip地址信息库的更新方法和装置 |
CN112671948A (zh) * | 2020-12-28 | 2021-04-16 | 北京锐安科技有限公司 | Ip地址所属区域的确定方法、装置、电子设备及存储介质 |
WO2022142499A1 (zh) * | 2020-12-28 | 2022-07-07 | 北京锐安科技有限公司 | Ip地址所属区域的确定方法、装置、电子设备及存储介质 |
CN113286013A (zh) * | 2021-05-19 | 2021-08-20 | 苏州瑞立思科技有限公司 | 一种子网匹配方法和装置 |
CN113286013B (zh) * | 2021-05-19 | 2023-11-07 | 苏州瑞立思科技有限公司 | 一种子网匹配方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108875006B (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108875006A (zh) | 确定ip地址所属地区的方法及装置 | |
CN108255958B (zh) | 数据查询方法、装置和存储介质 | |
CN103186653B (zh) | 辅助查询方法和设备、查询方法和设备及命名查询系统 | |
CN108769111A (zh) | 一种服务器连接方法、计算机可读存储介质及终端设备 | |
CN106326475B (zh) | 一种高效的静态哈希表实现方法及系统 | |
JP6362805B1 (ja) | ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法及び当該ネットワークを構成するためのノード | |
CN102880628B (zh) | 哈希数据存储方法和装置 | |
CN110309368B (zh) | 数据地址的确定方法、装置、存储介质和电子装置 | |
US20170170968A1 (en) | Method and apparatus for generating two-dimensional matrix, and method and apparatus for querying key value element | |
CN105335855A (zh) | 一种交易风险识别方法及装置 | |
CN110519090B (zh) | 一种fpga云平台的加速卡分配方法、系统及相关组件 | |
CN101848248B (zh) | 一种规则查找方法和装置 | |
US10771386B2 (en) | IP routing search | |
CN112817538B (zh) | 数据处理的方法、装置、设备和存储介质 | |
CN107330094A (zh) | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 | |
CN112860592A (zh) | 基于链表的数据缓存方法、装置、电子设备和存储介质 | |
CN111107181B (zh) | Nat规则匹配方法、装置、电子设备及存储介质 | |
CN112235436A (zh) | 网络地址转换规则匹配方法及设备 | |
CN107807976B (zh) | Ip归属地查询方法和装置 | |
CN108092670B (zh) | 编码方法和装置 | |
US20160301658A1 (en) | Method, apparatus, and computer-readable medium for efficient subnet identification | |
Dong et al. | Pure Message Passing Can Estimate Common Neighbor for Link Prediction | |
CN106250440B (zh) | 文档管理方法和装置 | |
CN114567613A (zh) | 一种真实ip识别方法、装置、电子设备及存储介质 | |
CN107545026B (zh) | 一种接口名字解析树功能的实现方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |