Ipv6地址与Ipv6 Cidr合法性校验

本文介绍了Ipv6和Ipv6 Cidr的概念,特别是Cidr的使用和规则,如:fd00::1001:100/120。讨论了在实际应用中遇到的问题,包括判断IPv6地址是否在指定Cidr段内、验证Cidr的合法性以及IPv6地址全写和简写的转换。同时提到了在开发中需要注意的错误示例,如:fd00::1:1/120,并提供了相关的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       最近做和Eip相关的裸金属功能,涉及到一个以前开发中接触较少的领域:Ipv6 和 Ipv6 Cidr。Ipv6的概念网上有很多,但是Cidr的概念不多,而且大部分文章讲的也比较啰嗦,不够简明;这里简单记录一下自己的理解,实用为主。

关于Ipv6 Cidr

       为了划分一个可用的Ip地址段,供一个小型局域网络来使用,避免浪费地址(ipv4比较珍贵);通常由机房中的一个大网段划分出来。与Ipv4 Cidr一样,也是一个可用的ip地址集合,其规则为:ip地址/后缀(指明前缀的位数,也叫掩码),cidr 是一种可变长子网掩码技术。比如:fd00::1001:100/120,其对应的全写:fd00:0000:0000:0000:0000:0000:1001:0100/120。

ipv6地址一共128位,对于fd00::1001:100/120,其cidr固定位(红色):fd00:0000:0000:0000:0000:0000:1001:0100】/120,可用位在中括号中。也就是说,如果你传入的IP地址:fd00:0000:0000:0000:0000:0000:1001:000,则不在当前cidr段中。同理:fd00:0000:0000:0000:0000:0000:1001:01 01 则在cidr段中。

实际使用中遇到的问题

1、判断ipv6地址是否在指定cidr段内 

2、ipv6 cidr是否合法

3、ipv6及其cidr的简写和全写切换

我在代码中使用了googlecode源码包,maven坐标如下:

        <dependency>
            <groupId>com.googlecode.java-ipv6</groupId>
            <artifactId>java-ipv6</artifactId>
            <version>0.16</version>
        </dependency>

开发中遇到了一些比较有意思的问题也一并记录:fd00::1:1/120  (这是一个错误的cidr,因为他最后一位【2】被占了;正确的应该是fd00::1:0/120,或fd00::1:1/128)。不多写了,上代码自己看吧,愿詹姆斯·高斯林保佑你。

请求实体:

@Data
@EqualsAndHashCode(callSuper=false)
public class CheckIpv6InfomationRequest extends PagingRequest {

    @Expose
    @Pattern(regexp = Validation.REGEX_IPV6, message = ErrorCode.INVALID_ARGUMENT)
    private String targetIpv6;  // ip
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值