一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

IP地址匹配方法、装置、设备和计算机可读存储介质与流程

2021-11-05 21:36:00 来源:中国专利 TAG:

ip地址匹配方法、装置、设备和计算机可读存储介质
技术领域
1.本公开的实施例一般涉及计算机技术领域,并且更具体地,涉及一种 ip地址匹配方法、装置、设备和计算机可读存储介质。


背景技术:

2.ip地址匹配查询是判断一个ip地址是否存在于一个给定的ip地址池 内。ip地址池包括ip地址和ip地址段,通常为一个或多个ip地址段。ip 地址匹配查询主要通过树状结构查找进行ip地址查询,现有树状结构的最 大深度为4,测试一个ip地址是否存在于地址池中是固定进行4次查询和 跳转才找到叶子结点,匹配速度较慢,并且现有技术中地址池在构建树形 图时,若地址段较大,则会占用较大的空间。


技术实现要素:

3.根据本公开的实施例,提供了一种ip地址匹配方法、装置、设备和计 算机可读存储介质。
4.在本公开的第一方面,提供了一种ip地址匹配方法。该方法包括:
5.获取待进行匹配的ip地址;
6.将所述待进行匹配的ip地址的各段与预设ip地址集合对应的网络树 中对应层的节点依次进行匹配;
7.若所述待进行匹配的ip地址的段匹配到对应层的叶子节点,则所述ip 地址匹配成功;其中,
8.所述网络树通过以下步骤预先生成:根据所述预设ip地址集合中各ip 地址段分别生成初始网络树,从root节点开始对各初始网络树进行合并; 其中,将所述初始网络树中同一层的相同节点进行合并,若某一节点下的 子节点包括所有可能的ip地址,则将该节点作为叶子节点。
9.如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所 述ip地址的段为ip地址中由小数点进行隔断得到的。
10.如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所 述ip地址段为多个连续ip地址的集合。
11.如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所 述root节点为根节点,在所述网络树的最顶端,不对应ip地址中的段。
12.如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所 述网络树的最大深度为4。
13.如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,将 所述待进行匹配的ip地址的各段与预设ip地址集合的网络树中对应层的节 点依次进行匹配,直至网络树的叶子节点,包括:
14.所述待匹配的ip地址的各段按照从前往后的顺序,依次与网络树中从 顶端到底
端的各层的节点对应。
15.在本公开的第二方面,提供了一种ip地址匹配装置。该装置包括:
16.获取单元,用于获取待进行匹配的ip地址;
17.匹配单元,用于将所述待进行匹配的ip地址的各段与预设ip地址集 合对应的网络树中对应层的节点依次进行匹配;
18.确定单元,用于若所述待进行匹配的ip地址的段匹配到对应层的叶子 节点,则所述ip地址匹配成功;其中,
19.所述网络树通过以下步骤预先生成:根据所述预设ip地址集合中各ip 地址段分别生成初始网络树,从root节点开始对各初始网络树进行合并; 其中,将所述初始网络树中同一层的相同节点进行合并,若某一节点下的 子节点包括所有可能的ip地址,则将该节点作为叶子节点。
20.在本公开的第三方面,提供了一种电子设备。该电子设备包括:存储 器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序 时实现如以上所述的方法。
21.在本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算 机程序,所述程序被处理器执行时实现如根据本公开的第一方面和/或第二发 面的方法。
22.应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的 关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下 的描述变得容易理解。
附图说明
23.结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、 优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同 或相似的元素,其中:
24.图1示出了根据本公开的实施例的ip地址匹配方法的流程图;
25.图2示出了根据本公开的另一实施例的ip地址匹配方法的流程图;
26.图3示出了根据本公开的实施例的ip地址段对应的树形结构图;
27.图4示出了根据本公开的实施例的另一ip地址段对应的树形结构图;
28.图5示出了根据本公开的实施例的预设ip地址集合对应的网络树结构 图;
29.图6示出了根据本公开的实施例的ip地址匹配装置的方框图;
30.图7示出了能够实施本公开的实施例的示例性电子设备的方框图。
具体实施方式
31.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公 开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述, 显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于 本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获 得的全部其他实施例,都属于本公开保护的范围。
32.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表 示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在 a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关 联对象是一种“或”的关系。
33.现有技术中除了通过树状结构遍历进行ip地址匹配查询外,还可以通 过二分查
找算法、线性探测哈希(hash)查找算法以及布隆过滤器(bloomfilter)算法等,其中二分查找算法在进行ip地址查询时,通过折半查找时 要求线性表必须采用顺序存储结构,地址池复杂时线性表就长,随着表长 度增加,查找步骤也会增加,不适用于复杂的待查地址池环境;线性探测 hash查找算法是通过hash函数将待匹配地址池数据构造成一个hash表, 通过将被查询的数据进行相同hash匹配,然后判断是否存在于该hash表中, 来进行匹配校验;bloom filter算法是通过hash函数将待匹配地址池数据 映射到一个位(bit)数组中,每个hash值对应一个bit位置1,通过将被 查询的数据通过同样的hash函数进行映射计算,由该bit数组中对应字节 是否为1来判断被查询的数据是否匹配。
34.本公开中通过预设ip地址集合建立一种网络树,将预设ip地址集合中 各ip地址中的相同位置段作为同一层的节点,并将各ip地址中各段所在 节点对应的前一节点和/或后一节点进行连接,得到上述网络树,在该网络 树中,若任一节点的所有子节点包括所有可能的ip地址的段或该节点对应 为ip地址的最后一段,则该节点为叶子节点;通过将待进行匹配的ip地 址的各段与上述网络树中对应层的节点依次进行匹配,直至网络树的叶子 节点,若在最底层节点中匹配到相同段时则确定ip地址匹配成功。本公开 实施例是将ip地址与预设ip地址集合进行匹配,检测预设ip地址集合中 是否存在待进行匹配的ip地址,可选的,本公开采用将预设ip地址集合 转换为网络树,将待匹配ip地址与网络树进行匹配的方式。由于待进行匹 配的ip地址与网络树进行匹配时,若ip地址的某一段匹配到网络树的叶子 节点时就可以确定匹配成功,不需要再比较待匹配的ip地址的下一段,因 此减少了ip地址的匹配时间,并且通过上述方式得到的网络树占用的内存 空间较小。
35.图1示出了根据本公开实施例的ip地址匹配的方法100的流程图,包 括:
36.步骤s110:获取待进行匹配的ip地址;
37.本公开实施例中,ip地址包括但不限于ipv4和ipv6,在ipv4协议 中,一个ip地址是一个32位的二进制数。每8位可以用一个十进制整数 数字来表示。在ipv6协议中,一个ip地址是一个128位的二进制数。需 要说明的是,ipv4和ipv6只是两种协议方式,若ipv4由32位变为40位 或者出现其他的网络协议时,本公开实施例中的ip地址匹配方法也同样适 用。
38.步骤s120:将所述待进行匹配的ip地址的各段与预设ip地址集合对 应的网络树中对应层的节点依次进行匹配;
39.以ipv4为例,ip地址一共包括32位,作为一种可选的实施方式,通 常分割为4个“8位二进制数”,也即每8位为一段,且每8个位可以用 一个十进制整数数字来表示,取值范围为0~255。预设ip地址集合中可能 包括至少一个ip地址,或者至少一个ip地址段,或者同时包括至少一个 ip地址和至少一个ip地址段,本公开实施例中,预设ip地址集合可以但 不限于为ip地址池。
40.其中,网络树通过以下步骤预先生成:根据预设ip地址集合中各ip 地址段分别生成初始网络树,从root节点开始对各初始网络树进行合并, 其中,将初始网络树中同一层的相同节点进行合并,若某一节点下的子节 点包括所有可能的ip地址的段,则将该节点作为叶子节点。
41.其中,ip地址段为多个连续ip地址的集合,ip地址的段为ip地址中 由小数点进行隔断得到的。具体的,在组成初始网络树时,将ip地址段中 各ip地址中位置相同的段作为
同一层的节点,例如,若ip地址段为 192.168.1.0

192.168.1.254,则将该ip地址集合中各个ip地址的第一段作为 第一层,则第一层的节点为192,将各个ip地址的第二段作为第二层,则 第二层的节点为168,将各个ip地址的第三段作为第三层,则第三层的节 点为1,将各个ip地址的第四段作为第四层,则第四层的节点为0

254, 以此方式将各个ip地址段转换为各个初始网络树。
42.同样的,从root节点开始对各初始网络树进行合并时,将初始网络树 中同一层的相同节点进行合并,并将各个初始网络树中的对应的各层合并 为一层。例如将各个初始网络树的各第一层合并为预设ip地址集合对应网 络树的第一层。具体实施例如下,若ip地址段为192.168.1.0

192.168.1.254, 和地址段6.6.6.10

6.6.6.10,则将上述两个ip地址段对应的初始网络树的第 一层进行合并,得到预设ip地址集合对应的网络树的第一层节点为192和 6,将上述两个初始网络树的第二层进行合并,得到预设ip地址集合对应 的网络树的第二层节点为192和6,将上述初始两个网络树的第三层节点 进行合并,得到预设ip地址集合对应的网络树的第三层节点为1和6,将 将上述初始两个网络树的第四层节点进行合并,得到预设ip地址集合对应 的网络树的第四层节点为0

254。需要说明的是,本公开实施例中,若网络 树各层中存在相同的段,则将相同的段进行合并,这样可以大大节省网络 树的空间占有率,需要说明的是,本公开实施例的网络树也即树形图,网 络树的最大深度为4。
43.为了减少网络树占有的空间,提升ip地址匹配速率,本公开实施例设 置若初始网络树中同一层的相同节点进行合并后,若某一节点下的子节点 包括所有可能的ip地址的段,则将该节点作为叶子节点。其中,网络树当 中没有子节点的节点称为叶子节点,又称为终端节点。需要说明的是,这 里的所有可能的ip地址的段包括但不限于为人为设定的节点范围,也可以 是通过一个十进制整数数字表示的8位二进制数,此时所有可能的ip地址 的段包括0

255。例如,若预设ip地址集合中包括 20.20.100.100

20.20.110.110,则该地址段中第三段中101

109区间内节点 的所有子节点包括所有可能的ip地址的段,也即包括0

255的字节。
44.本公开中,网络树顶部还包括一个root(根)节点,在网络树的最顶 端,并与网络树的第一层连接,且root节点不对应ip地址的段。
45.其中,待匹配的ip地址的各段按照从前往后的顺序,依次与网络树中 从顶端到底端的各层对应。
46.步骤s130:若所述待进行匹配的ip地址的段匹配到对应层的叶子节 点,则所述ip地址匹配成功。
47.在进行ip地址匹配时,将待进行匹配的ip地址的各段与预设ip地址 集合的网络树对应层的节点依次进行匹配,直至网络树的叶子节点。需要 说明的是,在进行匹配时,若在某一层中匹配到相同的段,则在匹配下一 层时,需要在与该段具有连接关系的节点中进行匹配。具体的,首先将待 进行匹配的ip地址的第一段与网络树第一层的节点进行匹配,若第一层中 存在与待进行匹配的ip地址的第一段相同的节点,则首先确定网络树第二 层中与上一层匹配到的节点的有连接关系的节点,将待进行匹配的ip地址 的第二段与上述第二层中确定与第一层有连接关系的节点进行匹配,若第 一层中不存在与待进行匹配的ip地址的第一段相同的节点,则表示待进行 匹配的ip地址不存在于预设ip地址集合中,ip
地址匹配不成功。若网络 树的第二层与上一层匹配到的节点有连接关系的节点中存在与ip地址的第 二段相同的节点,则继续匹配下一段,否则匹配不成功,在ip地址匹配过 程中,若匹配到网络树的叶子节点,则说该节点对应的段为ip地址的最后 一段,或者该节点的所有子节点包括所有可能的ip地址的段,此时若在叶 子节点中匹配到相同段,则说明预设ip地址集合中存在与待进行匹配的ip 地址相同的ip地址,ip地址匹配成功。需要说明的是,本公开实施例中进 行ip地址匹配时也可以但不限于使用遍历法进行ip地址匹配查询、二分 查找算法、线性探测哈希查找算法以及布隆过滤器算法等。
48.作为一种可选的实施方式,在匹配完成后可以通过但不限于文字、语 音等形式输出匹配结果,在此不再详细赘述。
49.下面结合具体的实施方式,详细介绍本公开实施例提出的一种ip地址 匹配方法,如图2所示:
50.步骤s210,获取待进行匹配的ip地址;
51.本公开实施例中,设置待进行匹配的ip地址分别为1.1.1.1、6.6.6.6和 20.20.105.106。
52.步骤s220,根据预设ip地址集合中各ip地址段分别生成初始网络树, 从root节点开始对各初始网络树进行合并;其中,将初始网络树中同一层 的相同节点进行合并,若某一节点下的子节点包括所有可能的ip地址,则 将该节点作为叶子节点;
53.本公开实施例中,设置预设ip地址集合包括6.6.6.6

6.6.6.6和 20.20.100.100

20.20.110.11,其中,6.6.6.6

6.6.6.6地址段对应的树形图如图 3所示,20.20.100.100

20.20.110.11地址段对应的树形图如图4所示,需要 说明的,本公开实施例的网络树顶部还设置一个root节点。
54.本公开实施中得到的网络树的具体结构如图5所示,其中

表示未画 出的连续节点。
55.步骤s230,待进行匹配的ip地址的各段与预设ip地址集合对应的网 络树中对应层的节点依次进行匹配;
56.步骤s240,若在网络树的叶子节点中匹配到相同段,则ip地址匹配 成功,否则匹配失败;
57.1)首先对1.1.1.1进行匹配,从root出发,首先将1.1.1.1的第一个段 与网络树中的第一层节点进行匹配,由于网络树中第一层节点中没有1, 则匹配失败。
58.2)对6.6.6.6进行匹配,从root出发,首先将6.6.6.6的第一段与网络 树中的第一层节点进行匹配,匹配到相同节点6后,确定网络树第二层中 与第一层节点6有连接关系的节点,然后将6.6.6.6的第二段与上述确定的 与第一层节点6有连接关系的节点进行匹配,匹配到相同节点6后,确定 网络树第三层中与第二层节点6有连接关系的节点,然后将6.6.6.6的第三 段与上述确定的与第二层节点6有连接关系的节点进行匹配,匹配到相同 节点6后,确定网络树第四层中与第三层节点6有连接关系的节点,然后 将6.6.6.6的第四段与上述确定的与第三层节点6有连接关系的节点进行匹 配,匹配到相同节点6,由于网络树第四层节点6为叶子节点,所以确定 ip地址匹配成功。
59.3)对20.20.105.106进行匹配,从root出发,首先将20.20.105.106的 第一段与网络树中的第一层节点进行匹配,匹配到相同节点20后,确定网 络树第二层中与第一层节点
20有连接关系的节点,然后将20.20.105.106 的第二段与上述确定的与第一层节点20有连接关系的节点进行匹配,匹配 到相同节点20后,确定网络树第三层中与第二层节点20有连接关系的节 点,然后将20.20.105.106的第三段与上述确定的与第二层节点20有连接 关系的节点进行匹配,匹配到相同节点105,并且由于网络树的105节点 为叶子节点,则确定ip地址匹配成功。
60.本公开实施例中,由于将包括所有可能的ip地址的段的节点设置为叶 子节点,并在组成网络树时将不显示该叶子节点的所有子节点,因此在组 成网络树时可以降低网络树的占用空间,节省内存,另外在进行ip地址匹 配时若匹配到相应的叶子节点就可以确定匹配成功,相对于现有技术在一 定程度上提高了匹配速度。
61.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表 述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描 述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同 时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属 于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
62.以上是关于方法实施例的介绍,以下通过装置实施例,对本公开所述方 案进行进一步说明。
63.图6示出了根据本公开的实施例的ip地址匹配装置的方框图,如图6 所示,装置600包括:获取单元610、匹配单元620和确定单元630,其中:
64.获取单元610用于获取待进行匹配的ip地址;匹配单元620用于将所 述待进行匹配的ip地址的各段与预设ip地址集合对应的网络树中对应层 的节点依次进行匹配;确定单元630用于若所述待进行匹配的ip地址的段 匹配到对应层的叶子节点,则所述ip地址匹配成功;其中,
65.所述网络树通过以下步骤预先生成:根据所述预设ip地址集合中各ip 地址段分别生成初始网络树,从root节点开始对各初始网络树进行合并; 其中,将所述初始网络树中同一层的相同节点进行合并,若某一节点下的 子节点包括所有可能的ip地址,则将该节点作为叶子节点。
66.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描 述的模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不 再赘述。
67.图7示出了可以用来实施本公开的实施例的电子设备700的示意性框图。 如图所示,设备700包括cpu701,其可以根据存储在rom702中的计算机 程序指令或者从存储单元708加载到ram703中的计算机程序指令,来执 行各种适当的动作和处理。在ram 703中,还可以存储设备700操作所需 的各种程序和数据。cpu 701、rom 702以及ram 703通过总线704彼此 相连。i/o接口705也连接至总线704。
68.设备700中的多个部件连接至i/o接口705,包括:输入单元706,例 如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储 单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、 无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网 络和/或各种电信网络与其他设备交换信息/数据。
69.处理单元701执行上文所描述的各个方法和处理,例如方法200、300、 400。例如,在一些实施例中,方法200、300、400可被实现为计算机软件 程序,其被有形地包含于机器
可读介质,例如存储单元708。在一些实施例 中,计算机程序的部分或者全部可以经由rom 702和/或通信单元709而被 载入和/或安装到设备700上。当计算机程序加载到ram 703并由cpu 701 执行时,可以执行上文描述的方法200、300、400的一个或多个步骤。备选 地,在其他实施例中,cpu 701可以通过其他任何适当的方式(例如,借助 于固件)而被配置为执行方法200、300、400。
70.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来 执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可 编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、 片上系统(soc)、复杂可编程逻辑器件(cpld)等等。
71.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任 何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可 编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执 行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在 机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且 部分地在远程机器上执行或完全在远程机器或服务器上执行。
72.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或 存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结 合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介 质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红 外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可 读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算 机盘、硬盘、ram、rom、eprom、光纤、cd

rom、光学储存设备、磁 储存设备、或上述内容的任何合适组合。
73.此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操 作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执 行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同 样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释 为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可 以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特 征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
74.尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题, 但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定 特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的 示例形式。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献