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地址格式

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