IPv6地址格式统一工具类 1.说明 2.工具类 3.测试结果

1.说明

一个IPv6地址可以有多种文本格式,
如下所示:

2001:db8:0:0:1:0:0:1
2001:0db8:0:0:1:0:0:1
2001:db8::1:0:0:1
2001:db8::0:1:0:0:1
2001:0db8::1:0:0:1
2001:db8:0:0:1::1
2001:db8:0000:0:1::1
2001:DB8:0:0:1::1

这种灵活性给运营商客户、系统工程师等,
带来了很多问题。
下面将介绍一个工具类,
将不同的IPv6地址格式统一为一种格式,
该格式满足如下RFC5952标准:
RFC5952 IPv6地址文本格式的建议规范

2.工具类

tomcat的IPv6Utils提供了转换工具类,
新建IPv6UtilsDemo.java如下:

package org.apache.tomcat.util.net;

public class IPv6UtilsDemo {
    public static void main(String[] args) {
        String ipv6Address = "2022:0006:0004:0003:0000:0000:0000:0002";
        String canonize = IPv6Utils.canonize(ipv6Address);
        System.out.println("before=" + ipv6Address);
        System.out.println("after=" + canonize);
    }
}

工具类所在的POM依赖:

<dependency>
  <groupId>org.apache.tomcat.embed</groupId>
  <artifactId>tomcat-embed-core</artifactId>
  <version>9.0.36</version>
</dependency>

3.测试结果

运行上述代码后,
输出结果如下:

before=2022:0006:0004:0003:0000:0000:0000:0002
after=2022:6:4:3::2

可以改变IPv6的地址格式,
查看输出的结果是否正确,
测试结果如下:

---------------------------
before=2001:db8:0:0:1:0:0:1
after=2001:db8::1:0:0:1
---------------------------
before=2001:0db8:0:0:1:0:0:1
after=2001:db8::1:0:0:1
---------------------------
before=2001:db8::1:0:0:1
after=2001:db8::1:0:0:1
---------------------------
before=2001:db8::0:1:0:0:1
after=2001:db8::1:0:0:1
---------------------------
before=2001:0db8::1:0:0:1
after=2001:db8::1:0:0:1
---------------------------
before=2001:db8:0:0:1::1
after=2001:db8::1:0:0:1
---------------------------
before=2001:db8:0000:0:1::1
after=2001:db8::1:0:0:1
---------------------------
before=2001:DB8:0:0:1::1
after=2001:db8::1:0:0:1
---------------------------

分析上述测试结果,
发现文章开始给出的一个IPv6多种格式地址,
被统一为2001:db8::1:0:0:1了,
这些IPv6地址都被统一为压缩格式了,
包括省略前导零,使用双冒号::压缩多个连续0
所谓压缩格式可以参考如下文章:
IPv6地址格式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章