CN103297554B - IPv4和IPv6兼容处理的方法及装置 - Google Patents

IPv4和IPv6兼容处理的方法及装置 Download PDF

Info

Publication number
CN103297554B
CN103297554B CN201210278733.2A CN201210278733A CN103297554B CN 103297554 B CN103297554 B CN 103297554B CN 201210278733 A CN201210278733 A CN 201210278733A CN 103297554 B CN103297554 B CN 103297554B
Authority
CN
China
Prior art keywords
address
ipv6
ipv6 address
type
ipv4
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
CN201210278733.2A
Other languages
English (en)
Other versions
CN103297554A (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.)
Shenzhen Zhongxing Communication Technology Service Co., Ltd.
Original Assignee
Shenzhen Zhongxing Communication Technology Service 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 Shenzhen Zhongxing Communication Technology Service Co Ltd filed Critical Shenzhen Zhongxing Communication Technology Service Co Ltd
Priority to CN201210278733.2A priority Critical patent/CN103297554B/zh
Publication of CN103297554A publication Critical patent/CN103297554A/zh
Application granted granted Critical
Publication of CN103297554B publication Critical patent/CN103297554B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种IPv4和IPv6兼容处理的方法,该方法包括以下步骤:定义IP地址为存储型和显示型,接收IP地址字节流信息并判断IP地址版本;若是IPv4,则将IPv4地址使用对应的长整型数据进行唯一标识;若是IPv6,则根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型并赋值长整型数据;根据预置IP地址与长整型数据对应的IP映射关系建立IP映射关系表并将IP映射关系表存储。本发明还公开一种IPv4和IPv6兼容处理的装置。本发明通过使用唯一长整型表示IPv4和IPv6的方法,实现了IPv4和IPv6兼容处理、降低***存储空间、提高***操作效率的有益效果。

Description

IPv4和IPv6兼容处理的方法及装置
技术领域
本发明涉及计算机网络技术领域,尤其涉及一种IPv4和IPv6兼容处理的方法及装置。
背景技术
目前,我们使用的IP(Internet Protocol,互联网协议)地址大多数是IPv4(Version 4,版本号为4),IPv4地址使用32位二进制编码,即4个字节,每8位为一组;在日常使用中,IPv4地址用点分十进制表示,如地址:10.40.183.7。IPv4地址表示范围是:0.0.0.0~255.255.255.255。
由于IPv4地址最多只能使用40多亿个IP地址,远远不能满足日益增加的全球互联网用户的需求,所以制定了IPv6(Version 6,版本号为6)协议。IPv6地址的长度是IPv4地址长度的4倍,IPv6地址使用128位二进制编码,即16个字节,表示起来也比IPv4复杂,IPv6地址的基本表达方式是X:X:X:X:X:X:X:X,其中X是一个4位十六进制整数,每个整数包含4个数字,每个数字由4位二进制数来表示,每个地址包括8个整数,共计128位。
在一般涉及IP地址处理的***中如程序或数据库,对于IPv4地址的保存有两种方式,一种为字符串存储(如10.40.183.7),一般一位占用一个字节,最多占用15个字节;另一种为长整型或整型存储,仅需8个或者4个字节。而16字节的IPv6地址在程序或数据库中,通常使用字符串表示,如2009:ABCD:1234:5678:789F:0123:2010:2012,因为普通的整数类型是无法完整表示IPv6的。按照这种表示方法,最多需要39个字节(对于混合表达式,最多需要45个字节)。如果***需要处理较多的IP信息,这种存储方式无疑会占用较多的空间,尤其在数据库操作字符串型字段时(比如排序、分组等),相比操作整型字段,效率也会低很多;对于数据量大、效率要求高的***,这无疑是个很大的瓶颈。尤其在一个需要兼容IPv4和IPv6地址存储的***中,如何实现其兼容处理,是个非常重要的问题。如果一个IP,既有可能是IPv4又有可能是IPv6,我们将IPv4和IPv6分类存储,比如IPv4使用整型,而IPv6使用字符串,这会增加操作复杂性和难度,并且处理也不一致;如果将IPv4和IPv6统一按照字符串处理,则会造成存储占用率增大、操作效率降低的不良效果。如何实现IPv4和IPv6的兼容存储和查询,并能保证***合理的存储占有率和高效的处理效率,是摆在我们面前的一个难题。
发明内容
本发明的主要目的是提供一种IPv4和IPv6兼容处理的方法,旨在实现IPv4和IPv6的兼容处理、快速查询已存储的IP地址及简单、快捷地校验IPv6地址的合法性,同时降低***存储空间、提高***操作效率。
本发明提供了一种IPv4和IPv6兼容处理的方法,包括以下步骤:
定义互联网协议IP地址的表示形式为存储型和显示型,接收IP地址字节流信息并判断所述IP地址的版本是IPv4还是IPv6;
若是IPv4,则将IPv4地址使用对应的长整型数据进行唯一标识;若是IPv6,则根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型,并将转换后的存储型IPv6地址赋值为长整型IPv6地址;
根据预置的IP地址与所述长整型数据对应的IP映射关系建立IP映射关系表,并将所述IP映射关系表存储。
优选地,所述根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型的步骤具体包括:
以冒号为分割点,将IPv6地址分割为字符串数组;
判断分割后的每个字符串数组中是否含有四位字符;
若否,则判断不满四位的字符串数组是否为空字符串;
若是空字符串,则通过计算一个双冒号代表所需填充的零的位数来补齐字符串数组;
若不是空字符串,则在非空字符前填充零,将普通的非空字符串数组补齐四位。
优选地,所述IPv4和IPv6兼容处理的方法还包括步骤:
接收对已存储的IPv4或IPv6地址的查询请求;
根据预置转换规则,将所述IPv4或IPv6地址的表示形式由存储型转换为显示型。
优选地,所述根据预置转换规则,将IPv6地址的表示形式由存储型转换为显示型的步骤具体包括:
若IPv6地址为不带冒号的存储型,则补充冒号;
将带冒号的存储型IPv6地址进行冗余去零处理;
若经过去零处理后的存储型IPv6地址的首部和/或中部含有至少两个连续的零字符串,所述零字符串以冒号为分割点,则将所述连续的零字符串还原为双冒号,且在一个IPv6地址中只能出现一个双冒号。
优选地,所述根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型的步骤之后还包括:
校验IPv6地址的合法性。
优选地,所述校验IPv6地址的合法性的步骤具体包括:
以冒号为分割点,将带冒号的存储型IPv6地址分割成字符串数组;
判断所述字符串数组的长度是否为8;
若否,则所述IPv6地址不合法,不对其进行存储;
若是,则对所述字符串数组中的每个字符串进行校验,判断是否满足预置校验规则;
若有任一字符串不满足预置校验规则,则所述IPv6地址不合法,不对其进行存储。
本发明还提供了一种IPv4和IPv6兼容处理的装置,包括:
IP地址接收模块,用于定义IP地址的表示形式为存储型和显示型,接收IP地址字节流信息并判断所述IP地址的版本是IPv4还是IPv6;
IPv4地址模块,用于在接收的IP地址的版本为IPv4时,将IPv4地址使用对应的长整型数据进行唯一标识;
IPv6地址模块,用于在接收的IP地址的版本为IPv6时,根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型,并将转换后的存储型IPv6地址赋值为长整型IPv6地址;
IPv4和IPv6兼容处理模块,用于根据预置的IP地址与所述长整型数据对应的IP映射关系建立IP映射关系表,并将所述IP映射关系表存储。
优选地,所述IPv6地址模块具体包括:
IPv6地址存储型单元,用于根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型;
IPv6地址赋值单元,用于将转换后的存储型IPv6地址赋值为长整型IPv6地址;
其中,所述IPv6地址存储型单元具体用于:
以冒号为分割点,将IPv6地址分割为字符串数组;
判断分割后的每个字符串数组中是否含有四位字符;
若否,则判断不满四位的字符串数组是否为空字符串;
若是空字符串,则通过计算一个双冒号代表所需填充的零的位数来补齐字符串数组;
若不是空字符串,则在非空字符前填充零,将普通的非空字符串数组补齐四位。
优选地,所述IPv4和IPv6兼容处理的装置还包括:
IP查询模块,用于接收对已存储的IPv4或IPv6地址的查询请求;根据预置转换规则,将所述IPv4或IPv6地址的表示形式由存储型转换为显示型。
优选地,所述根据预置转换规则,将IPv6地址的表示形式由存储型转换为显示型的步骤具体包括:
若IPv6地址为不带冒号的存储型,则补充冒号;
将带冒号的存储型IPv6地址进行冗余去零处理;
若经过去零处理后的存储型IPv6地址的首部和/或中部含有至少两个连续的零字符串,所述零字符串以冒号为分割点,则将所述连续的零字符串还原为双冒号,且在一个IPv6地址中只能出现一个双冒号。
优选地,所述IPv4和IPv6兼容处理的装置还包括:
IPv6地址校验模块,用于校验IPv6地址的合法性。
优选地,所述IPv6地址校验模块具体用于:
以冒号为分割点,将带冒号的存储型IPv6地址分割成字符串数组;
判断所述字符串数组的长度是否为8;
若否,则所述IPv6地址不合法,不对其进行存储;
若是,则对所述字符串数组中的每个字符串进行校验,判断是否满足预置校验规则;
若有任一字符串不满足预置校验规则,则所述IPv6地址不合法,不对其进行存储。
本发明通过定义IP地址的两种表示形式为显示型和存储型、对IPv4地址进行长整型标识、IPv6地址进行赋值长整型、IPv6地址显示型和存储型之间的相互转换及准确高效地校验IPv6地址合法性的方法,实现了IPv4和IPv6的兼容处理、降低***存储空间、提高***操作效率的有益效果。
附图说明
图1是本发明IPv4和IPv6兼容处理的方法第一实施例流程示意图;
图2是Mysql数据库中创建IP映射关系表T_FCS_IPMap部分示意图;
图3是本发明IPv4和IPv6兼容处理的方法中,根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型一实施例流程示意图;
图4是本发明IPv4和IPv6兼容处理的方法第二实施例流程示意图;
图5是本发明IPv4和IPv6兼容处理的方法中,根据预置转换规则,将IPv6地址的表示形式由存储型转换为显示型一实施例流程示意图;
图6本发明IPv4和IPv6兼容处理的方法第三实施例流程示意图;
图7本发明IPv4和IPv6兼容处理的方法中校验IPv6地址的合法性一实施例流程示意图;
图8是本发明IPv4和IPv6兼容处理的装置第一实施例结构示意图;
图9是本发明IPv4和IPv6兼容处理的装置中IPv6地址模块第一实施例结构示意图;
图10是本发明IPv4和IPv6兼容处理的装置第二实施例结构示意图;
图11是本发明IPv4和IPv6兼容处理的装置第三实施例结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
以下结合说明书附图及具体实施例进一步说明本发明的技术方案。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1是本发明IPv4和IPv6兼容处理的方法第一实施例流程示意图。如图1所示,本发明IPv4和IPv6兼容处理的方法包括:
步骤S01、定义IP地址的表示形式为存储型和显示型;
在日常应用中,IPv6地址通常使用字符串来表示;在后续的操作中,因为涉及IPv6地址比较、IPv6地址范围选择等操作,所以对IPv6地址的存储格式有一定的要求。在一优选的实施例中,IPv6地址为“2009::2010”,为方便后续操作,将其表示成“2009:0000:0000:0000:0000:0000:0000:2010”形式,或者去掉冒号的“20090000000000000000000000002010”形式,按照所述完整的表示格式才能进行IP大小的合理比较和IP范围的正确选择。定义“2009::2010”这一类别的IP地址表示形式为表示型或显示型IP地址,定义“2009:0000:0000:0000:0000:0000:0000:2010” 这一类别的IP地址表示形式为带冒号的存储型或完整型IP地址,定义“20090000000000000000000000002010”这一类别的IP地址表示形式为不带冒号的存储型或完整型IP地址。
与此类似,对于IPv4地址,在一优选的实施例中,当IPv4地址显示型为“10.46.36.29”时,其带冒号的存储型为“010:046:036:029”,不带冒号的存储型为“010046036029”。
步骤S02、接收IP地址字节流信息并判断所述IP地址的版本是IPv4还是IPv6;若是IPv4,则执行步骤S03;若是IPv6,则执行步骤S04;
接收IP地址字节流信息,辨别所接收的IP地址的版本是IPv6还是IPv4。在一优选的实施例中,所述IP字节流信息为一串字节流,所述字节流中有专门表示IP版本的字段可以用来识别IP的版本。因此,很容易辨别所接收的IP地址的版本是IPv6还是IPv4。
步骤S03、将IPv4地址使用对应的长整型数据进行唯一标识;
若经判断接收到的IP地址字节流是IPv4地址,由于IPv4地址使用的是32位二进制编码并采用4个字节表示,且IPv4地址通常直接由长整型表示或由字符串表示,因此可以使用对应的长整型进行唯一标识,对IPv4地址的处理也比较简单。若IPv4地址直接由长整型表示,则直接用所述长整型进行唯一标识;若IPv4地址由字符串表示,则将所述IPv4地址使用对应的长整型数据进行唯一标识。这样操作的目的是便于后续与IPv6地址的兼容存储。
步骤S04、将IPv6地址的表示形式由显示型转换为存储型,并将转换后的存储型IPv6地址赋值为长整型IPv6地址;
因为在后续的操作中,涉及IPv6地址比较、IPv6地址范围选择等操作,为了便于操作,将所述IPv6地址表示为存储型;由于IPv6地址使用16个字节表示,因此无法用一个整型或长整型来直接表示。8个字节表示的带符号长整型的最大值为9223372036854775807,在用户日常使用的实际环境下,如城域网或者校园网的网络用户,IPv6地址的使用数目不会超过这么大的值,因此如果给每个IPv6地址定义一个唯一的长整型去表示,则能实现IPv6地址与IPv4地址的统一处理;在一优选的实施例中,IPv6地址的长整型值由***统一赋值。
步骤S05、根据预置的IP地址与所述长整型数据对应的IP映射关系建立IP映射关系表,并将所述IP映射关系表存储。
为保证IPv4和IPv6地址与所述长整型数值对应的唯一性,根据预置的IP地址与所述长整型数据对应的IP映射关系建立IP映射关系表,并将所述IP映射关系表存储。***每接收一个IPv6地址,就进行一次赋值。
在一优选的实施例中,通过定义IPID(Identity,识别码)来实现将IPv4地址使用对应的长整型数据进行唯一标识,同时将IPv6地址赋值长整型。由于IPv4地址的表示范围为:0.0.0.0~255.255.255.255,最大的IPv4地址为255.255.255.255,其对应的整数表示为4294967295,IPv4地址对应的长整型数据最大不会超过十一位数字,因此将1010以上的数字用以表示IPv6地址。为保证IPv4地址、IPv6地址与长整型数据一一对应,IPv6地址对应的数值表示由***统一赋值。
在一优选的实施例中,在内存中增加一个哈希映射表,在数据库中增加一个IP地址字符串与IP长整型的映射表T_FCS_IPMap。参照图2,图2是Mysql数据库中创建IP映射关系表T_FCS_IPMap部分示意图。如图2所示,根据Mysql数据库中创建的IP映射关系表T_FCS_IPMap,很容易得出IPv6地址和与之对应的IPID值。所述Mysql是一种关联数据库管理***,关联数据库将数据保存在不同的数据表中,而不是将所有数据放在一个大仓库内。这样就增加了***的运行速度并提高了***运行时的灵活性。图2的Mysql数据库中创建的IP映射关系表,将IPv6地址赋值IPID是通过自增的方式实现的;在一优选的实施例中,可采用哈希算法将IPv6地址赋值长整型。将所述IP映射关系同时存储在内存和数据库中。存储在内存中是为了便于***的快捷调用和计算,***将定期清理内存,而存储在数据库中则将会永久性保存。
本发明IPv4和IPv6兼容处理的方法通过定义IP地址的两种表示形式为显示型和存储型、对IPv4地址进行长整型标识、IPv6地址进行赋值长整型、IPv6地址显示型和存储型之间的相互转换及准确高效地校验IPv6地址合法性的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
参照图3,图3是本发明IPv4和IPv6兼容处理的方法中根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型一实施例流程示意图。如图3所示,本发明IPv4和IPv6兼容处理的方法中,根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型的步骤包括:
步骤S11、以冒号为分割点,将IPv6地址分割为字符串数组;
将IPv6地址表示为存储型首先要进行分割操作,通过冒号将IPv6地址字符串分割。在一优选的实施例中,所述IPv6地址为“123::321”,则分割成字符串数组{“123”,“”,“321”};
步骤S12、判断分割后的每个字符串数组中是否含有四位字符;若是,则表示所述IPv6地址为存储型;若否,则执行步骤S13;
判断分割后的每个字符串数据组中是否含有四位字符,这是因为IPv6地址采用128位二进制编码, 存储型表示形式的IPv6地址分割后的每个字符串数据组中包含4个字符,若分割后的每个字符串数组中均含有四位字符,则表示所述IPv6地址为存储型;
步骤S13、判断不满四位的字符串数组是否为空字符串;若是空字符串,则执行步骤S14;若不是空字符串,则执行步骤S15;
IPv6地址分割后,将不满四位的字符串数据组做填充补位的操作,将不满四位字符串填充零补齐四位。所述不满四位的字符串数组有两种情况:空字符串和普通的非空字符串;
步骤S14、通过计算一个双冒号代表所需填充的零的位数来补齐字符串数组;
若所述不满四位的字符串数组中有空字符串,则表示遇到了双冒号“::”,此时,需要通过计算一个双冒号代表几个零位来将双冒号还原成特定长度的“0000:”组合。在一优选的实施例中,所述显示型IPv6地址为“123::321”,分割后的字符串数组为{“123”,“”,“321”},所述分割后的字符串数组长度为3;而一个不含双冒号的显示型IPv6地址如“1:2:3:4:5:6:7:8”,分割后的字符串数组长度为8;因此,所述IPv6地址“123::321”中的一个冒号代表零字符的个数为:(8+1-3=6),因此,所述IPv6地址“123::321”中的空字符串这个空字符串“”可以还原成“0000:0000:0000:0000:0000:0000:”;
步骤S15、在非空字符前填充零,将普通的非空字符串数组补齐四位。
若所述不满四位的字符串为普通的非空字符串,则只需在非空字符前填充零,将普通非空字符串数组补齐四位即可。在一优选的实施例中,所述显示型IPv6地址“123::321”分给后的字符串数据组{“123”,“”,“321”}中的普通非空字符串“123”和“321”,补齐四位后,即为“0123”和“0321”;从而最终将所述显示型IPv6地址“123::321”转换成带冒号的存储型IPv6地址为:“0123:0000:0000:0000:0000:0000:0000:0321”。
本发明IPv4和IPv6兼容处理的方法通过将IPv6地址由显示型表示为存储型的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
参照图4,图4是本发明IPv4和IPv6兼容处理的方法第二实施例流程示意图。如图4所示,本发明IPv4和IPv6兼容处理的方法还包括:
步骤S06、接收对已存储的IPv4或IPv6地址的查询请求;根据预置转换规则,将所述IPv4或IPv6地址的表示形式由存储型转换为显示型。
因为已存储的IPv4和IPv6地址在存储之前分别做了如下处理:将IPv4地址使用对应的长整型数据进行唯一标识,将IPv6地址赋值长整型,且在存储时,保证IPv4和IPv6地址兼容存储的同时,为了节省字节和存储空间均采用无冒号的存储型IPv4和IPv6地址;而在用户使用时,通常习惯性使用显示型IP地址,因为显示型IP地址简便,因此,为了方便用户需要,查询已存储的IPv4和IPv6地址时,将所述IPv4和IPv6地址的表示形式再由存储型转换为显示型。
本发明IPv4和IPv6兼容处理的方法通过对接收对已存储的IPv4或IPv6地址的查询请求、根据预置转换规则
将所述IPv4或IPv6地址的表示形式由存储型转换为显示型的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
参照图5,图5是本发明IPv4和IPv6兼容处理的方法中,根据预置转换规则,将IPv6地址的表示形式由存储型转换为显示型一实施例流程示意图。如图5所示,本发明IPv4和IPv6兼容处理的方法中,根据预置转换规则,将IPv6地址的表示形式由存储型转换为显示型的步骤具体包括:
步骤S31、判断所述IPv6地址是否为带冒号的存储型;若否,则执行步骤S32;若是,则执行步骤S33;
步骤S32、补充冒号,将所述IPv6地址表示为带冒号的存储型;
若IPv6地址为不带冒号的存储型,则需要补充冒号,按照4位分割将冒号补充进去,这是为了后续将IPv6由存储型转换为显示型的需要;
步骤S33、将带冒号的存储型IPv6地址进行冗余去零处理;
因为显示型IPv6地址的表示方式比较简洁,因此需要将存储型IPv6地址字符串中冗余的零去掉。所述IPv6地址字符串中冗余的零有两类,一类是:IPv6地址字符串中全为零的空字符串;另一类是:IPv6地址字符串中普通的非空字符串中位于字符串前端的零。在一优选的实施例中,所述带冒号的存储型IPv6地址为“0123:0000:0000:0000:0000:0000:0000:0321”,将所述IPv6地址字符串中冗余的零去掉后还原为“123:0:0:0:0:0:0:321”;
步骤S34、判断去零处理后的存储型IPv6地址的首部和/或中部是否含有至少两个连续的零字符串;若含有至少两个连续的零字符串,则执行步骤S35;
步骤S35、将所述连续的零字符串还原为双冒号,且在一个IPv6地址中只能出现一个双冒号。
判断所述IPv6地址字符串的首部和/或中部是否含有至少两个连续的零字符串,所述连续的零字符串以冒号为分割点;若所述IPv6地址字符串的中部含有至少两个连续的零字符串,或所述IPv6地址字符串的首部含有至少两个连续的零字符串,或所述IPv6地址字符串的首部和中部均含有两个连续的零字符串,则将所述连续的零字符串还原为双冒号,但双冒号在同一IPv6地址字符串中只能出现一次。
在一优选的实施例中,去零后的IPv6地址字符串为“123:0:0:0:0:0:0:321”,将所述IPv6地址字符串中部的6个连续的零字符串还原为双冒号“::”,得到显示型IPv6地址字符串“123::321”。
在一优选的实施例中,去零后的IPv6地址字符串为“0:0:0:0:0:0:0:1”,将所述IPv6地址字符串首部的7个连续的零字符串还原为双冒号“::”,得到显示型IPv6地址字符串“::1”。
在一优选的实施例中,去零后的IPv6地址字符串为“0:0:0:1:0:0:0:1”,将所述IPv6地址字符串首部或中部的3个连续带号码的零字符串还原为双冒号“::”,得到显示型IPv6地址字符串“::1:0:0:0:1”或“0:0:0:1::1”。但不能同时去掉所述IPv6地址字符串首部和中部的3个连续的零字符串,因为双冒号在IPv6地址中只能出现一次。
本发明IPv4和IPv6兼容处理的方法通过将IPv6地址的表示形式由存储型转换为显示型的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
参照图6,图6本发明IPv4和IPv6兼容处理的方法第三实施例流程示意图。如图6所示,本发明IPv4和IPv6兼容处理的方法还包括:
步骤S07、校验IPv6地址的合法性。
用户输入的IPv6地址可能为不合法的IPv6地址组成,且只有在IPv6地址合法的情况下,对IPv6进行后续的操作和存储才有实际意义,因此要对IPv6地址的合法性进行校验。
本发明IPv4和IPv6兼容处理的方法通过校验IPv6地址合法性的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果
参照图7,图7本发明IPv4和IPv6兼容处理的方法中校验IPv6地址的合法性一实施例流程示意图。如图7所示,本发明IPv4和IPv6兼容处理的方法中,校验IPv6地址的合法性具体包括以下步骤:
步骤S21、以冒号为分割点,将带冒号的存储型IPv6地址分割成字符串数组;
判断IPv6地址是否合法之前,首先应将所述IPv6地址表示为带冒号的存储型;以冒号为分割点,将带冒号的存储型IPv6地址进行分割,得到字符串数组;
步骤S22、判断所述字符串数组的长度是否为8;若否,则执行步骤S23;若是,则执行步骤S24;
步骤S23、所述IPv6地址不合法,不对其进行存储;
因为IPv6地址采用128位二进制进行编码,每个地址可以按照冒号分割成8个整数;所以,若将带冒号的存储型IPv6地址分割后得到的字符串数组的长度应该是8;若分割存储型IPv6地址后得到的字符串数组长度不是8,则所述IPv6地址肯定不合法;对不合法的IPv6地址,不进行存储;
步骤S24、对所述字符串数组中的每个字符串进行校验,判断是否满足预置校验规则;若有任一字符串不满足预置校验规则,则执行步骤S23:所述IPv6地址不合法,不对其进行存储;若所有字符串均满足预置校验规则,则执行步骤S25;
步骤S25、所述IPv6地址合法;
若分割存储型IPv6地址后得到的字符串数组长度是8,则对分割后的每个字符串数组进行校验,判断是否满足预置校验规则。在一优选的实施例中,所述预置校验规则为:定义一个简单的正则表达式:"([0-9A-Fa-f]{1,4})",匹配0到9的数字和a~f的字母,长度最多为4;只有分割后的每个字符串数组的每一项都满足校验规则,输入的IPv6地址才为合法的IPv6地址格式。
本发明IPv4和IPv6兼容处理的方法通过校验IPv6地址合法性的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
参照图8,图8是本发明IPv4和IPv6兼容处理的装置第一实施例结构示意图。如图8所示,本发明IPv4和IPv6兼容处理的装置包括:
IP地址接收模块01,用于定义IP地址的表示形式为存储型和显示型,接收IP地址字节流信息并判断所述IP地址的版本是IPv4还是IPv6;
IPv4地址模块02,用于在接收的IP地址的版本为IPv4时,将IPv4地址使用对应的长整型数据进行唯一标识;
IPv6地址模块03,用于在接收的IP地址的版本为IPv6时,根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型,并将转换后的存储型IPv6地址赋值为长整型IPv6地址;
IPv4和IPv6兼容处理模块04,用于根据预置的IP地址与所述长整型数据对应的IP映射关系建立IP映射关系表并将所述IP映射关系表存储。
本发明IPv4和IPv6兼容处理的装置通过定义IP地址的两种表示形式为显示型和存储型、准确高效地校验IPv6地址的合法性及IPv6地址显示型和存储型之间的相互转换、对IPv4地址进行长整型标识、IPv6地址进行赋值长整型的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
参照图9,图9是本发明IPv4和IPv6兼容处理的装置中IPv6地址模块一实施例结构示意图。如图9所示,本发明IPv4和IPv6兼容处理的装置中,IPv6地址模块03具体包括:
IPv6地址存储型单元031,用于根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型;
IPv6地址赋值单元022,用于将转换后的存储型IPv6地址赋值为长整型IPv6地址;
所述IPv6地址存储型单元031具体用于:
以冒号为分割点,将IPv6地址分割为字符串数组;
判断分割后的每个字符串数组中是否含有四位字符;
若否,则判断不满四位的字符串数组是否为空字符串;
若是空字符串,则通过计算一个双冒号代表所需填充的零的位数来补齐字符串数组;
若不是空字符串,则在非空字符前填充零,将普通的非空字符串数组补齐四位。
本发明IPv4和IPv6兼容处理的装置通过根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型,并将转换后的存储型IPv6地址赋值为长整型IPv6地址的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
参照图10,图10是本发明IPv4和IPv6兼容处理的装置第二实施例结构示意图。如图10所示,本发明IPv4和IPv6兼容处理的装置还包括:
IP查询模块05,用于接收对已存储的IPv4或IPv6地址的查询请求;根据预置转换规则,将所述IPv4或IPv6地址的表示形式由存储型转换为显示型。
所述IP查询模块05将所述IPv6地址的表示形式由存储型转换为显示型的步骤具体包括:
若IPv6地址为不带冒号的存储型,则补充冒号;
将带冒号的存储型IPv6地址进行冗余去零处理;
若经过去零后的存储型IPv6地址字符串的首部和/或中部含有至少两个连续的零字符串,所述零字符串以冒号为分割点,则将所述连续的零字符串还原为双冒号,且在一个IPv6地址中只能出现一个双冒号。
本发明IPv4和IPv6兼容处理的装置通过将IPv4和IPv6的表示形式由存储型转换为显示型的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
参照图11,图11是本发明IPv4和IPv6兼容处理的装置第三实施例结构示意图。如图11所示,本发明IPv4和IPv6兼容处理的装置还包括:
IPv6地址校验模块06,用于校验IPv6地址的合法性。
所述IPv6地址校验模块06具体用于:
以冒号为分割点,将带冒号的存储型IPv6地址分割成字符串数组;
判断所述字符串数组的长度是否为8;
若否,则所述IPv6地址不合法,不对其进行存储;
若是,则对所述字符串数组中的每个字符串进行校验,判断是否满足预置校验规则;
若有任一字符串不满足预置校验规则,则所述IPv6地址不合法,不对其进行存储。
本发明IPv4和IPv6兼容处理的装置通过校验IPv6地址合法性的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
本发明通过定义IP地址的两种表示形式为显示型和存储型、准确高效地校验IPv6地址的合法性及IPv6地址显示型和存储型之间的相互转换、对IPv4地址进行长整型标识、IPv6地址进行赋值长整型并对IP地址进行查询的方法,实现了IPv4和IPv6地址的兼容处理、降低***存储空间、提高***操作效率的有益效果。
以上所述仅为本发明的优选实施例,并非因此限制其专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (8)

1.一种IPv4和IPv6兼容处理的方法,其特征在于,包括以下步骤:
定义互联网协议IP地址的表示形式为存储型和显示型,接收IP地址字节流信息并判断所述IP地址的版本是IPv4还是IPv6;
若是IPv4,则将IPv4地址使用对应的长整型数据进行唯一标识;若是IPv6,则根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型,并将转换后的存储型IPv6地址赋值为长整型IPv6地址;
根据预置的IP地址与所述长整型数据对应的IP映射关系建立IP映射关系表,并将所述IP映射关系表存储;
所述根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型的步骤之后还包括:
校验IPv6地址的合法性;
所述校验IPv6地址的合法性的步骤具体包括:
以冒号为分割点,将带冒号的存储型IPv6地址分割成字符串数组;
判断所述字符串数组的长度是否为8;
若否,则所述IPv6地址不合法,不对其进行存储;
若是,则对所述字符串数组中的每个字符串进行校验,判断是否满足预置校验规则;
若有任一字符串不满足预置校验规则,则所述IPv6地址不合法,不对其进行存储;
其中,显示型的IP地址具体包括:包含空字符串或者省略每段数字中非空字符前的零的IP地址;存储型的IP地址具体包括:将每段数字填充零后的完整IP地址。
2.根据权利要求1所述的IPv4和IPv6兼容处理的方法,其特征在于,所述根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型的步骤具体包括:
以冒号为分割点,将IPv6地址分割为字符串数组;
判断分割后的每个字符串数组中是否含有四位字符;
若否,则判断不满四位的字符串数组是否为空字符串;
若是空字符串,则通过计算一个双冒号代表所需填充的零的位数来补齐字符串数组;
若不是空字符串,则在非空字符前填充零,将普通的非空字符串数组补齐四位。
3.根据权利要求1所述的IPv4和IPv6兼容处理的方法,其特征在于,还包括步骤:
接收对已存储的IPv4或IPv6地址的查询请求;
根据预置转换规则,将所述IPv4或IPv6地址的表示形式由存储型转换为显示型。
4.根据权利要求3所述的IPv4和IPv6兼容处理的方法,其特征在于,所述根据预置转换规则,将IPv6地址的表示形式由存储型转换为显示型的步骤具体包括:
若IPv6地址为不带冒号的存储型,则补充冒号;
将带冒号的存储型IPv6地址进行冗余去零处理;
若经过去零处理后的存储型IPv6地址的首部和/或中部含有至少两个连续的零字符串,所述零字符串以冒号为分割点,则将所述连续的零字符串还原为双冒号,且在一个IPv6地址中只能出现一个双冒号。
5.一种IPv4和IPv6兼容处理的装置,其特征在于,包括:
IP地址接收模块,用于定义IP地址的表示形式为存储型和显示型,接收IP地址字节流信息并判断所述IP地址的版本是IPv4还是IPv6;
IPv4地址模块,用于在接收的IP地址的版本为IPv4时,将IPv4地址使用对应的长整型数据进行唯一标识;
IPv6地址模块,用于在接收的IP地址的版本为IPv6时,根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型,并将转换后的存储型IPv6地址赋值为长整型IPv6地址;
IPv4和IPv6兼容处理模块,用于根据预置的IP地址与所述长整型数据对应的IP映射关系建立IP映射关系表,并将所述IP映射关系表存储;
其特征在于,还包括:
IPv6地址校验模块,用于校验IPv6地址的合法性;
所述IPv6地址校验模块具体用于:
以冒号为分割点,将带冒号的存储型IPv6地址分割成字符串数组;
判断所述字符串数组的长度是否为8;
若否,则所述IPv6地址不合法,不对其进行存储;
若是,则对所述字符串数组中的每个字符串进行校验,判断是否满足预置校验规则;
若有任一字符串不满足预置校验规则,则所述IPv6地址不合法,不对其进行存储;
其中,显示型的IP地址具体包括:包含空字符串或者省略每段数字中非空字符前的零的IP地址;存储型的IP地址具体包括:将每段数字填充零后的完整IP地址。
6.根据权利要求5所述的IPv4和IPv6兼容处理的装置,其特征在于,所述IPv6地址模块具体包括:
IPv6地址存储型单元,用于根据预置转换规则,将IPv6地址的表示形式由显示型转换为存储型;
IPv6地址赋值单元,用于将转换后的存储型IPv6地址赋值为长整型IPv6地址;
其中,所述IPv6地址存储型单元具体用于:
以冒号为分割点,将IPv6地址分割为字符串数组;
判断分割后的每个字符串数组中是否含有四位字符;
若否,则判断不满四位的字符串数组是否为空字符串;
若是空字符串,则通过计算一个双冒号代表所需填充的零的位数来补齐字符串数组;
若不是空字符串,则在非空字符前填充零,将普通的非空字符串数组补齐四位。
7.根据权利要求5所述的IPv4和IPv6兼容处理的装置,其特征在于,还包括:
IP查询模块,用于接收对已存储的IPv4或IPv6地址的查询请求;根据预置转换规则,将所述IPv4或IPv6地址的表示形式由存储型转换为显示型。
8.根据权利要求7所述的IPv4和IPv6兼容处理的装置,其特征在于,所述根据预置转换规则,将IPv6地址的表示形式由存储型转换为显示型的步骤具体包括:
若IPv6地址为不带冒号的存储型,则补充冒号;
将带冒号的存储型IPv6地址进行冗余去零处理;
若经过去零处理后的存储型IPv6地址的首部和/或中部含有至少两个连续的零字符串,所述零字符串以冒号为分割点,则将所述连续的零字符串还原为双冒号,且在一个IPv6地址中只能出现一个双冒号。
CN201210278733.2A 2012-03-02 2012-08-07 IPv4和IPv6兼容处理的方法及装置 Active CN103297554B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210278733.2A CN103297554B (zh) 2012-03-02 2012-08-07 IPv4和IPv6兼容处理的方法及装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201210052718 2012-03-02
CN201210052718.6 2012-03-02
CN2012100527186 2012-03-02
CN201210278733.2A CN103297554B (zh) 2012-03-02 2012-08-07 IPv4和IPv6兼容处理的方法及装置

Publications (2)

Publication Number Publication Date
CN103297554A CN103297554A (zh) 2013-09-11
CN103297554B true CN103297554B (zh) 2016-09-28

Family

ID=49097856

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210278733.2A Active CN103297554B (zh) 2012-03-02 2012-08-07 IPv4和IPv6兼容处理的方法及装置

Country Status (1)

Country Link
CN (1) CN103297554B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105187568B (zh) * 2015-08-12 2018-09-25 广东睿江云计算股份有限公司 一种ipv4地址转换方法及装置
CN105827530B (zh) * 2016-03-11 2019-04-16 中国互联网络信息中心 一种兼容ipv4/ipv6的ip二分查找方法及装置
CN108011993B (zh) * 2017-12-07 2021-07-16 北京百悟科技有限公司 IP地址信息的存储、IPv4地址的查询的方法及***
CN108093095B (zh) * 2017-12-13 2020-01-21 清华大学 将具有短名字的地址字符串转换为IPv6地址的方法及装置
CN109325496B (zh) * 2018-09-30 2021-07-23 武汉斗鱼网络科技有限公司 基于字符去除的弹幕校验方法、装置、终端及存储介质
CN109348305B (zh) * 2018-09-30 2021-04-27 武汉斗鱼网络科技有限公司 一种弹幕数据的校验方法、装置、终端及存储介质
CN109299719B (zh) * 2018-09-30 2021-07-23 武汉斗鱼网络科技有限公司 基于字符分割的弹幕校验方法、装置、终端及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102223289A (zh) * 2010-04-15 2011-10-19 杭州华三通信技术有限公司 一种存储IPv4地址和IPv6地址的方法和装置
CN102340551A (zh) * 2010-07-27 2012-02-01 中国电信股份有限公司 一种构建IPv6地址池的方法与***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8406232B2 (en) * 2010-06-17 2013-03-26 Microsoft Corporation 4to6 network stack for IPv4 applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102223289A (zh) * 2010-04-15 2011-10-19 杭州华三通信技术有限公司 一种存储IPv4地址和IPv6地址的方法和装置
CN102340551A (zh) * 2010-07-27 2012-02-01 中国电信股份有限公司 一种构建IPv6地址池的方法与***

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种Web服务中IPv4/IPv6兼容的实现方法;张杰等;《微计算机信息》;20061030;第22卷(第30期);第25-27页 *

Also Published As

Publication number Publication date
CN103297554A (zh) 2013-09-11

Similar Documents

Publication Publication Date Title
CN103297554B (zh) IPv4和IPv6兼容处理的方法及装置
CN108769111A (zh) 一种服务器连接方法、计算机可读存储介质及终端设备
US9742556B2 (en) Comparison and search operations of encrypted data
CN104298680B (zh) 数据统计方法及数据统计装置
US10042875B2 (en) Bloom filter index for device discovery
CN111191422B (zh) 一种文件格式转换方法、装置和计算机可读存储介质
US20200201637A1 (en) Method and apparatus to re-configure mdio registers on an ethernet device
CN111095421B (zh) 基因文件的上下文感知增量算法
CN104486777B (zh) 一种实现数据处理的方法及装置
EP2618268A1 (en) Method and device for data storage
CN102333039A (zh) 一种转发报文的方法、生成表项的方法及装置
CN108415708A (zh) 应用程序安装包大小的处理方法、装置、设备和存储介质
CN108874987A (zh) 表项管理方法、装置及交换芯片
CN112035857B (zh) 数据保护方法、装置、设备及介质
CN105447151A (zh) 访问分布式数据库的方法、数据源代理装置及应用服务器
CN104657481A (zh) 一种存储、查询数据的方法及装置
CN114185895A (zh) 数据导入导出方法、装置、电子设备及存储介质
CN109783126A (zh) 一种分布式全局id生成方法及其装置
CN106802927A (zh) 一种数据存储方法及查询方法
CN103593445A (zh) 数据填充方法及装置
CN116610731B (zh) 一种大数据分布式存储方法、装置、电子设备及存储介质
CN103051480B (zh) 一种dn的存储方法及dn存储装置
US20150363510A1 (en) Indexed shaped graph creation
CN109413077B (zh) 一种json报文数据的收发方法、装置及电子设备
CN111198880A (zh) 一种基于redis的数据存储方法、装置及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: 518057, A building, Zhongxing building, Nanshan District science and Technology Park, Shenzhen, Guangdong, five

Applicant after: ZTE Corporation

Address before: 518057 Nanshan District Guangdong high tech Industrial Park, South Road, science and technology, ZTE building, Ministry of Justice

Applicant before: ZTE Corporation

ASS Succession or assignment of patent right

Owner name: SHENZHEN ZHONGXING TELECOMMUNICATION TECHNOLOGY SE

Free format text: FORMER OWNER: ZTE CORPORATION

Effective date: 20150109

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150109

Address after: 518057 Nanshan District high tech Industrial Park, Guangdong, ZTE building, A3-01, A3-02,

Applicant after: Shenzhen Zhongxing Communication Technology Service Co., Ltd.

Address before: 518057, A building, Zhongxing building, Nanshan District science and Technology Park, Shenzhen, Guangdong, five

Applicant before: ZTE Corporation

C14 Grant of patent or utility model
GR01 Patent grant