一种对网络地址范围段进行拆分的方法及装置与流程

文档序号:18161275发布日期:2019-07-13 09:20阅读:353来源:国知局
一种对网络地址范围段进行拆分的方法及装置与流程

本申请涉及网络技术领域,特别是涉及一种对网络地址范围段进行拆分的方法及装置。



背景技术:

安全策略是根据报文的属性信息对报文进行转发控制和深度报文检测的防控策略。其中,安全策略对ip(internetprotocol,网络之间互连的协议)地址进行加速可以通过trie树(字典树)等实现快速匹配。

由于安全策略中所配置的ip地址信息可能包括:ip地址、ip地址范围段、ip地址网段等,而trie树等一般是基于ip地址网段构建的,为此,在构建trie树之前需要对ip地址范围段进行拆分,将ip地址范围段拆分为ip地址网段。

鉴于此,需要提供一种对ip地址范围段进行拆分的方法。



技术实现要素:

本申请实施例的目的在于提供一种对网络地址范围段进行拆分的方法及装置,以实现对ip地址范围段的拆分。具体技术方案如下:

第一方面,本申请实施例提供了一种对网络地址范围段进行拆分的方法,所述网络地址范围段包括起始地址和结束地址,所述起始地址对应于第一比特序列,所述方法包括:

在将所述第一比特序列二等分后的两个序列段中,确定序列段取值非零的第一序列段;

判断所述第一序列段的长度是否为预设存储长度;

若否,则将所述第一序列段作为新的第一比特序列,并重复执行在将所述第一比特序列二等分后的两个序列段中,确定序列段取值非零的第一序列段,以及判断所述第一序列段的长度是否为预设存储长度的过程,直到最终确定的第一序列段的长度为预设存储长度;

在所述最终确定的第一比特序列中,查找距离最低位最近的第一个取值非零的目标比特位置,并将所述最终确定的第一比特序列中低于最终获取的目标比特位置的比特位取值非零,确定第一结束地址,并在判定由所述起始地址与第一结束地址组成的第一网段包括所述结束地址时,将所述第一网段作为拆分结果。

第二方面,本申请实施例提供了一种对网络地址范围段进行拆分的装置,所述网络地址范围段包括起始地址和结束地址,所述起始地址对应于第一比特序列,所述装置包括:

序列段确定模块,用于在将所述第一比特序列二等分后的两个序列段中,确定序列段取值非零的第一序列段;

长度判断模块,用于判断所述第一序列段的长度是否为预设存储长度,若否,则将所述第一序列段作为新的第一比特序列,并触发所述序列段确定模块,直到最终确定的第一序列段的长度为预设存储长度;

位置查找模块,用于在所述最终确定的第一比特序列中,查找距离最低位最近的第一个取值非零的目标比特位置;

地址确定模块,用于将所述最终确定的第一比特序列中低于最终获取的目标比特位置的比特位取值非零,确定第一结束地址;

第一结果获得模块,用于在判定由所述起始地址与第一结束地址组成的第一网段包括所述结束地址时,将所述第一网段作为拆分结果。

第三方面,本申请实施例提供了一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现本申请实施例所述的方法步骤。

第四方面,本申请实施例提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现本申请实施例所述的方法步骤。

由以上可见,本申请实施例提供的方案中,在对网络地址范围段进行拆分时,在每次确定出的第一序列段的长度不等于预设存储长度的情况下,以所确定出的第一序列段作为新的第一比特序列再次进行二等分的方式,找到长度为预设存储长度的序列段,并在最终找到的预设存储长度的序列段中查找距离第一比特序列最低位最近的取值非零的比特位置,并基于所找到的比特位置确定第一结束地址,在由起始地址和第一结束地址组成的第一网段包含结束地址时,将第一网段作为拆分结果。可见,应用本申请实施例提供的方案,能够实现对网络地址范围段的拆分。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种对网络地址范围段进行拆分的方法的流程示意图;

图2为本申请实施例提供的一种ipv6地址表示示意图;

图3为本申请实施例提供的另一种对网络地址范围段进行拆分的方法的流程示意图;

图4为本申请实施例提供的一种对网络地址范围段进行拆分的装置的结构示意图;

图5为本申请实施例提供的另一种对网络地址范围段进行拆分的装置的结构示意图;

图6为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1为本申请实施例提供的一种对网络地址范围段进行拆分的方法的流程示意图。

上述网络地址范围段包括起始地址和结束地址。其中,上述起始地址对应于第一比特序列,第一比特序列以比特形式表示起始地址。

本申请实施例中所涉及网络地址可以为ipv4地址,也可以为ipv6地址,本申请实施例并不对网络地址的类型进行限定。

具体的,上述对网络地址范围段进行拆分的方法至少包括以下s101-s104:

s101:在将第一比特序列二等分后的两个序列段中,确定序列段取值非零的第一序列段。

本申请的一个实施例中,可以对第一比特序列进行二等分,并确定出二等分得到的序列段中取值非零的序列段,然后根据取值非零的序列段确定第一序列段。即在实现上述步骤s101的过程中,可以先将上述第一比特序列二等分,得到两个序列段,然后将两个序列段中取值非零、且距离第一比特序列中最低位最近的一个序列段,作为上述第一序列段。

以ipv6地址范围段为例,上述第一比特序列包含128比特,这种情况下,将第一比特序列二等分后,得到高低两个序列段,分别记为高位序列段和低位序列段,每一序列段包含64比特。由于低位序列段中包含第一比特序列中的最低位,所以,若低位序列段取值非零,也就是包含取值非零的比特,则可以将低位序列段确定为上述第一序列段。若低位序列段取值为零,也就是不包含取值非零的比特,而高位序列段取值非零,也就是包含取值非零的比特,则可以将高位序列段确定为上述第一序列段。

由于电子设备在对数据进行处理时,除了可以按照比特进行数据处理外,还可以按照一定的数据类型对数据进行处理,此时一种数据类型对应一个比特序列段。例如,数据类型包括:包含64个比特的uint64类型、包含32比特的uint32类型、包含16比特的uint16类型、包含8比特的uint8类型等。在按照数据类型对数据进行处理时,这一数据类型对应的比特序列段被看成一个整体。基于此,本申请的一个实施例中,在判断序列段取值是否为零时,可以将序列段看作各种类型的数据,通过判断各种类型的数据是否为零,判断序列段取值是否为零。

例如,一个包含64个比特的序列段,可以看作为一个uint64类型的数据。假设,上述包含64个比特的序列段为:0000000000000000000000000000000000000000000000000000000000000110,则该序列段被看作uint64类型的数据后,以十进制表示为:6。这种情况下,判断上述序列段取值是否为零时,可以可以直接判断上述“6”是否为零,显然6不等于0,因此可以判定上述序列段取值非零。

另外,一个序列段还可以被看作包含比特数量较少的多个序列段,即可以将一个序列段n等分,可以获得n个序列段,其中n为大于1的正整数。这种情况下,本申请的一个实施例中,在判断序列段取值是否为零时,可以将序列段看作某一类型的多个数据。例如:一个包含64个比特的序列段可以看作是一个uint64类型的数据,而该uint64类型的数据可以被看作是2个uint32类型的数据。通过判断上述多个数据是否为零,进而判断序列段取值是否为零。具体的,序列段被看作的某一类型的多个数据中,只要有一个数据不为零,则可以判定该序列段取值非零。多个数据均为零时,才能够判定该序列段的取值为零。

具体的,序列段所包含比特数量可以为数据类型所包含比特数量的整数倍。

例如,一个包含128个比特的序列段可以被看作两个uint64类型的数据。一个包含64比特的序列段可以被看作两个uint32类型的数据。

这种情况下,上述第一序列段可以为:第一比特序列被二等分后的序列段中,距离最低位最近、且取值非零的上述数据类型的数据所包含比特形成的序列段。

例如,假设二等分后得到的一个序列段为上述包含64个比特的序列段。这一序列段可以以两个uint32类型的数据表示为:00000000000000000000000000000000和00000000000000000000000000000110,这两数据以十进制表示分别为:0和6。由于上述两个uint32类型的数据中包含6这一非零值,所以上述序列段取值非零,又由于十进制表示为6的这一uint32类型的数据距离最低位最近,所以上述第一序列段为:00000000000000000000000000000110。

本申请的另一个实施例中,对第一比特序列进行二等分时,还可以基于数据类型对第一比特序列进行二等分。也就是,划分后第一比特序列的两个部分中包含相同数量的上述数据类型的数据。

s102:判断第一序列段的长度是否为预设存储长度,若为否,执行s103。

具体的,上述预设存储长度可以依据设备的存储标准设定。例如,上述预设存储长度可以为8比特,当然也可以为16比特等等。

s103:将第一序列段作为新的第一比特序列,并重复执行上述s101和s102,直到最终确定的第一序列段的长度为预设存储长度。

由于第一序列段是第一比特序列的一部分,又由于第一序列段的长度不为预设存储长度的情况下,第一序列段会被作为新的第一比特序列进入下一次循环,这样第一比特序列会越来越短,因此,随着循环的进行,基于各种数据类型确定第一序列段时,所采用的数据类型包含的比特数会越来越少。

例如,第一次执行s101时所采用的数据类型可以为uint64,第二次执行s101时所采用的数据类型可以为uint32,依次类推。

具体过程这里暂不详述,可参见后续实施例。

s104:在最终确定的第一比特序列中,查找距离最低位最近的第一个取值非零的目标比特位置。

也就是,上述目标比特位置为:重复执行上述s101至s103的过程中最后确定出的第一序列段中,距离第一比特序列中最低位最近的取值非零的比特。

具体的,在最终确定的第一比特序列中查找上述目标比特位置时,可以沿从低位到高位的顺序查找第一取值非零的比特位置,作为目标比特位置。

由于上述最终确定的第一比特序列是通过对起始地址对应的第一比特序列进行多次二等分的方式得到的,所以最终确定的第一比特序列包含的比特数较少。这样在基于最终确定的第一比特序列查找目标比特位置时,需要检测的比特位数较少。

例如,上述预设存储长度为8比特的情况,最终确定的第一比特序列包含8个比特,则在查找目标比特位置时,最多需要检测8个比特位的取值。相对于检测128个比特位的取值、检测64个比特位的取值,检测次数大大减少。

s105:将最终确定的第一比特序列中低于最终获取的目标比特位置的比特位取值非零,确定第一结束地址,并在判定由起始地址与第一结束地址组成的第一网段包括结束地址时,将第一网段作为拆分结果。

本申请的一个实施例中,确定第一结束地址时,可以将上述起始地址对应的第一比特序列中低于上述目标比特位置的比特设置为非零值,然后将设置后的结果作为第一结束地址。

由以上可见,本实施例提供的方案中,在对网络地址范围段进行拆分时,在每次确定出的第一序列段的长度不等于预设存储长度的情况下,以所确定出的第一序列段作为新的第一比特序列再次进行二等分的方式,找到长度为预设存储长度的序列段,并在最终找到的预设存储长度的序列段中查找距离第一比特序列最低位最近的取值非零的比特位置,并基于所找到的比特位置确定第一结束地址,在由起始地址和第一结束地址组成的第一网段包含结束地址时,将第一网段作为拆分结果。可见,应用本实施例提供的方案,能够实现对网络地址范围段的拆分。

下面以ipv6地址为例,结合图2对网络地址范围段的拆分过程进行详细介绍。

ipv6地址以上述各个数据类型的数据进行表示的示意图如图2所示。图2中1-16的各个数字为以每一数据类型表示ipv6地址时这一数据类型的各数据在ipv6地址中的标识。如,由于ipv6地址包含128比特,所以ipv6地址是以16个uint8数据表示的,1-16这16个数字表示ipv6地址中从低位到高位的16个uint8数据的标识;ipv6地址是以2个uint64数据表示的,1和2这表示ipv6地址中从低位到高位的第一个和第二个uint64数据的标识。

对ipv6地址范围段进行拆分的过程如下。

ipv6地址范围段的起始地址对应于第一比特序列,第一比特序列包含128比特。

对第一比特序列进行二等分,得到两个64比特的序列段,每一序列段可以看作一个uint64类型的数据,也就是图2中uint64所在行中,标记有“1”和“2”的部分。将上述两数据中取值非零、且距离第一比特序列最低位近的uint64数据所在序列段作为第一序列段。此时第一序列段的长度为64比特,不等于预设存储长度8比特,所以将上述第一序列段作为第一比特序列。假设第一序列段为标识“1”的部分。

对包含64比特的第一比特序列进行二等分,得到两个32比特的序列段,每一序列段可以看作一个uint32类型的数据,也就是图2中uint32所在行中,标记有“1”和“2”的部分或者标记有“3”和“4”的部分。将上述两数据中取值非零、且距离第一比特序列最低位近的uint32数据所在序列段作为第一序列段。此时第一序列段的长度为32比特,不等于预设存储长度8比特,所以将上述第一序列段作为第一比特序列。假设第一序列段为标识“2”的部分。

对包含32比特的第一比特序列进行二等分,得到两个16比特的序列段,每一序列段可以看作一个uint16类型的数据,也就是图2中uint16所在行中,标记有“1”和“2”的部分或者标记有“3”和“4”的部分或者标记有“5”和“6”的部分或者标记有“7”和“8”的部分。将上述两数据中取值非零、且距离第一比特序列最低位近的uint16数据所在序列段作为第一序列段。此时第一序列段的长度为16比特,不等于预设存储长度8比特,所以将上述第一序列段作为第一比特序列。假设第一序列段为标识“3”的部分。

对包含16比特的第一比特序列进行二等分,得到两个8比特的序列段,每一序列段可以看作一个uint8类型的数据,也就是图2中uint8所在行中,标记有“1”和“2”的部分、或者标记有“3”和“4”的部分、或者标记有“5”和“6”的部分、或者标记有“7”和“8”的部分、或者标记有“9”和“10”的部分、或者标记有“11”和“12”的部分、或者标记有“13”和“14”的部分、或者标记有“15”和“16”的部分。将上述两数据中取值非零、且距离第一比特序列最低位近的uint8数据所在序列段作为第一序列段。此时第一序列段的长度为8比特,等于预设存储长度8比特,所以上述第一序列段为最终确定出的第一序列段。假设第一序列段为标识“6”的部分。

该最终确定出的第一序列段中取值非零、且距离第一比特序列最低位最近的比特为目标比特位置。

将上述起始地址对应的第一比特序列中低于上述目标比特位置的比特设置为非零值,也就是设置为“1”,并将设置后的比特序列作为第一结束地址。

由上述起始地址和第一结束地址组成的第一网段可以表示为[起始地址,第一结束地址],若前述ipv6地址范围段的结束地址位于[起始地址,第一结束地址]内,则将[起始地址,第一结束地址]作为ipv6地址范围段的一个拆分结果。

由以上可见,通过对第一比特序列进行二等分的方式确定第一序列段,进而确定目标比特位置,使得确定目标比特位置时无需逐字节进行数据查找,因此,相比于逐字节查找起始拆分址从低位到高位的第一个取值非零的比特位,可以加快查找速度。

本申请的一个实施例中,在判断第一网段不包括上述结束地址时,还可以将第一结束地址加1作为新的起始地址,并针对新的起始地址对应的第一比特序列,并返回前述s101,最后将获取的多个第一网段作为拆分结果。

在上述第一网段不包含网络地址范围段的结束地址的情况,可以认为第一网段仅仅为网络地址范围段的一部分,所以还需要继续对网络地址范围段进行拆分,进而拆出更多的网段。

本申请的一个实施例中,参见图3,提供了另一种对网络地址范围段进行拆分的方法的流程示意图,与前述图1所示实施例相比,本实施例中,上述s105中将第一比特序列中低于最终获取的目标比特位置的比特位取值非零,确定第一结束地址,包括:

s105a:确定将最终确定的第一比特序列中低于最终获取的目标比特位置的比特位取值非零时所表示的网络地址。

本申请的一个实施例中,可以先确定比特位数与上述起始地址对应的第一比特序列的比特位数相同、且从最低位到目标比特位置取值均非零的网络地址间隔数值,然后按照预设网络地址表示类型,将上述起始地址与网络地址间隔数值按位相加,获取低于目标比特位置的比特位取值非零时所表示的网络地址。

具体的,上述预设的网络地址表示类型可以是uint64等数据类型。

本申请的一个实施例中,可以按照从低位到高位的顺序,采用以下方式将上述起始地址与上述网络地址间隔数值中、排列标识相同的预设长度的数据相加,依次得到的相加结果从低位到高位排列形成低于目标比特位置的比特位取值非零时所表示的网络地址:

将起始地址中预设长度的第一数据与网络地址间隔数值中预设长度的第二数据相加,获得预设长度的第一相加值;

将第一相加值与进位标记相加,获得预设长度的第二相加值,作为第一数据与第二数据相加的相加结果;

根据第二相加值判断第一数据与第二数据相加是否发生进位;

若为是,设置进位标记的取值为1;

若为否,设置进位标记的取值为0。

受上述预设长度限制,上述预设长度的数据存在最大取值,这种情况下,第一数据和第二数据相加所得结果可能超出上述最大取值,为此本实施例中引入进位标记,以标识第一数据和第二数据相加是否发生进位。

上述进位标识的初始值为0。

本申请的一个实施例中,根据第二相加值判断第一数据与第二数据相加是否发生进位时,可以判断第二相加值是否大于第一相加值,若第二相加值大于第一相加值,说明没有发生数据溢出,也就是没有进位;相反,若第二相加值不大于第一相加值,说明发生了数据溢出,也就是发生了进位。

下面通过举例,对上述起始地址与上述网络地址间隔数值相加的过程进行说明。

假设,起始地址为ipv6地址,上述预设长度为64比特,则上述ipv6地址包含两个uint64数据,起始地址从低位到高位依次记为d1和d2。由于起始地址的比特数与网络地址间隔数值的比特数相等,则网络地址间隔数值也包含两个uint64数据,从低位到高位依次记为d3和d4。

这种情况下,在起始地址和网络地址间隔数值中,d1和d3的排序标识相同,均为从低位开始的第一个uint64数据,d2和d4的排序标识相同,均为从低位开始的第二个uint64数据。carry表示进位标记,初始值为0。

则先计算d1+d3得到uint64的第一相加值,记为e1;

假设,d1=18446744073709551615,d3=1,

则e1=18446744073709551616+1=0。

e1+carry=0+0=0,可见,e1小于d1,e1也小于d2,因此可以判定d1与d3相加发生了进位,carry等于1。

然后计算d2+d4得到uint64的第一相加值,记为e2;

假设,d2=15,d4=10,则e2=15+10=25。

e2+carry=25+1=26,可见,e1大于d2,e1也大于e4,因此可以判定d2与d4相加没有发生进位,carry等于0。

则e1位于低位、e2位于高位形成与起始地址间隔网络地址间隔数值的ip地址,也就是,e2e1。

可见,上述举例中在进行数据相加时基于2个uint64进行数据相加,相比于基于16个uint8数据进行数据相加,能够大大减少相加次数。在需要拆分大量网络地址范围段时,减少的相加次数更多,从而节省计算量,节省计算计算资源,提高计算效率。

s105b:判断所确定网络地址是否大于前述结束地址。若为否,执行s104c,若为是,执行s104d。

若所确定网络地址不大于网络地址范围段的结束地址,说明以所确定出网络地址作为网段结束地址拆分出的网段不会超出网络地址范围段,因此,可以先把所确定出的网络地址作为待拆分出的一个网段的结束地址。而若所确定出网络地址大于网络地址范围段的结束地址,则说明以所确定出网络地址作为待拆分出网段的结束地址会超出网络地址范围段,因此,需要重新作为待拆分出网段结束地址的网络地址。

s105c:将所确定的网络地址作为第一结束地址;

s105d:将最终获取的目标比特位置更新为低于目标比特位置一位的比特位置,并返回上述s105a。

由以上可见,应用本实施例提供的方案对网络地址范围段进行划分时,可以有效防止所拆分出的网段超出网络地址范围段所对应的范围,从而保证所拆分出网段的准确性。

与上述信息拆分方法相对应,本申请实施例还提供了一种信息拆分装置。

图4为本申请实施例提供的一种一种对网络地址范围段进行拆分的装置,所述网络地址范围段包括起始地址和结束地址,所述起始地址对应于第一比特序列,所述装置包括:

序列段确定模块401,用于在将所述第一比特序列二等分后的两个序列段中,确定序列段取值非零的第一序列段;

长度判断模块402,用于判断所述第一序列段的长度是否为预设存储长度,若否,则将所述第一序列段作为新的第一比特序列,并触发所述序列段确定模块,直到最终确定的第一序列段的长度为预设存储长度;

位置查找模块403,用于在所述最终确定的第一比特序列中,查找距离最低位最近的第一个取值非零的目标比特位置;

地址确定模块404,用于将所述最终确定的第一比特序列中低于最终获取的目标比特位置的比特位取值非零,确定第一结束地址;

第一结果获得模块405,用于在判定由所述起始地址与第一结束地址组成的第一网段包括所述结束地址时,将所述第一网段作为拆分结果。

本申请的一个实施例中,所述装置还可以包括:

地址更新模块,用于在判断所述第一网段不包括所述结束地址时,将所述第一结束地址加1作为新的起始地址,并针对所述新的起始地址对应的第一比特序列,触发所述序列段确定模块;

第二结果获取模块,用于将获取的多个第一网段作为拆分结果。

由以上可见,上述各个实施例提供的方案中,在对网络地址范围段进行拆分时,在每次确定出的第一序列段的长度不等于预设存储长度的情况下,以所确定出的第一序列段作为新的第一比特序列再次进行二等分的方式,找到长度为预设存储长度的序列段,并在最终找到的预设存储长度的序列段中查找距离第一比特序列最低位最近的取值非零的比特位置,并基于所找到的比特位置确定第一结束地址,在由起始地址和第一结束地址组成的第一网段包含结束地址时,将第一网段作为拆分结果。可见,应用上述各个实施例提供的方案,能够实现对网络地址范围段的拆分。

本申请的另一个实施例中,参见图5,提供了另一种对网络地址范围段进行拆分的装置的结构示意图,与前述图4所示实施例相比,本实施例中,所述地址确定模块404,包括:

地址确定单元404a,用于确定将所述最终确定的第一比特序列中低于最终获取的目标比特位置的比特位取值非零时所表示的网络地址;

地址判断单元404b,用于判断所确定网络地址是否大于所述结束地址;若为否,将所确定的网络地址作为第一结束地址;若为是,将最终获取的目标比特位置更新为低于所述目标比特位置一位的比特位置,并触发所述地址确定单元404a。

本申请的一个实施例中,所述地址确定单元404a,具体用于确定比特位数与所述起始地址对应的第一比特序列的比特位数相同、且从最低位到所述目标比特位置取值均非零的网络地址间隔数值;按照预设网络地址表示类型,将所述起始地址与网络地址间隔数值按位相加,获取低于所述目标比特位置的比特位取值非零时所表示的网络地址。

由以上可见,应用上述各个实施例提供的方案对网络地址范围段进行划分时,可以有效防止所拆分出的网段超出网络地址范围段所对应的范围,从而保证所拆分出网段的准确性。

与上述对网络地址范围段进行拆分的方法相对应,本申请实施例还提供了一种电子设备。

图6为本申请实施例提供的一种电子设备的结构示意图,该电子设备包括:处理器601和机器可读存储介质602,所述机器可读存储介质602存储有能够被所述处理器601执行的机器可执行指令,所述处理器601被所述机器可执行指令促使:实现本申请实施例提供的对网络地址范围段进行拆分的方法。

本申请的一个实施例中,提供了一种对网络地址范围段进行拆分的方法,所述网络地址范围段包括起始地址和结束地址,所述起始地址对应于第一比特序列,所述方法包括:

在将所述第一比特序列二等分后的两个序列段中,确定序列段取值非零的第一序列段;

判断所述第一序列段的长度是否为预设存储长度;

若否,则将所述第一序列段作为新的第一比特序列,并重复执行在将所述第一比特序列二等分后的两个序列段中,确定序列段取值非零的第一序列段,以及判断所述第一序列段的长度是否为预设存储长度的过程,直到最终确定的第一序列段的长度为预设存储长度;

在所述最终确定的第一比特序列中,查找距离最低位最近的第一个取值非零的目标比特位置,并将所述最终确定的第一比特序列中低于最终获取的目标比特位置的比特位取值非零,确定第一结束地址,并在判定由所述起始地址与第一结束地址组成的第一网段包括所述结束地址时,将所述第一网段作为拆分结果。

需要说明的是,上述处理器601被机器可执行指令促使实现的对网络地址范围段进行拆分的方法的其他实施例,与前述方法实施例部分提及的实施例相同,这里不再赘述。

上述机器可读存储介质可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,上述机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

由以上可见,本实施例提供的电子设备能够在对网络地址范围段进行拆分时,在每次确定出的第一序列段的长度不等于预设存储长度的情况下,以所确定出的第一序列段作为新的第一比特序列再次进行二等分的方式,找到长度为预设存储长度的序列段,并在最终找到的预设存储长度的序列段中查找距离第一比特序列最低位最近的取值非零的比特位置,并基于所找到的比特位置确定第一结束地址,在由起始地址和第一结束地址组成的第一网段包含结束地址时,将第一网段作为拆分结果。可见,应用本申请实施例提供的方案,能够实现对网络地址范围段的拆分。

与上述对网络地址范围段进行拆分的方法相对应,本申请实施例还提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现本申请实施例提供的对网络地址范围段进行拆分的方法。

本申请的一个实施例中,提供了一种对网络地址范围段进行拆分的方法,所述网络地址范围段包括起始地址和结束地址,所述起始地址对应于第一比特序列,所述方法包括:

在将所述第一比特序列二等分后的两个序列段中,确定序列段取值非零的第一序列段;

判断所述第一序列段的长度是否为预设存储长度;

若否,则将所述第一序列段作为新的第一比特序列,并重复执行在将所述第一比特序列二等分后的两个序列段中,确定序列段取值非零的第一序列段,以及判断所述第一序列段的长度是否为预设存储长度的过程,直到最终确定的第一序列段的长度为预设存储长度;

在所述最终确定的第一比特序列中,查找距离最低位最近的第一个取值非零的目标比特位置,并将所述最终确定的第一比特序列中低于最终获取的目标比特位置的比特位取值非零,确定第一结束地址,并在判定由所述起始地址与第一结束地址组成的第一网段包括所述结束地址时,将所述第一网段作为拆分结果。

需要说明的是,上述机器可执行指令存储处理器实现的对网络地址范围段进行拆分方法的其他实施例,与前述方法实施例部分提及的实施例相同,这里不再赘述。

由以上可见,通过执行本实施例提供的机器可读存储介质中存储的机器可执行指令,能够在对网络地址范围段进行拆分时,在每次确定出的第一序列段的长度不等于预设存储长度的情况下,以所确定出的第一序列段作为新的第一比特序列再次进行二等分的方式,找到长度为预设存储长度的序列段,并在最终找到的预设存储长度的序列段中查找距离第一比特序列最低位最近的取值非零的比特位置,并基于所找到的比特位置确定第一结束地址,在由起始地址和第一结束地址组成的第一网段包含结束地址时,将第一网段作为拆分结果。可见,应用本申请实施例提供的方案,能够实现对网络地址范围段的拆分。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备和机器可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1