IPv6 地址校验
参考链接:https://segmentfault.com/a/1190000038404439
- IPv4地址由32位二进制数组成,被分为4个8位组,每个8位组用十进制表示0~255的数字。IPv4地址格式为xxx.xxx.xxx.xxx,每组数字之间以“.”分割。
示例:示例IPv4地址:192.168.1.1- 而IPv6地址则由128位二进制数组成,以8个16位的16进制块表示。IPv6地址格式为xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,每个16位块之间以“:”分割。
示例:示例IPv6地址:2001:0db8:85a3:0000:0000:8a2e:0370:7334
因为IPv6地址比IPv4地址长度更长,可以提供更多的地址空间,不仅能够满足当前的网络需求,还能够满足未来的扩展需求。
1. IPv4 地址转化为 IPv6 格式。
举例来说:如果 IPv4 的一个地址为 135.75.43.52(十六进制为 0x874B2B34),它可以被转化为 0000:0000:0000:0000:0000:0000:874B:2B34 或者 ::874B:2B34。同时,还可以使用混合符号(IPv4- compatible address),则地址可以为::135.75.43.52。
2. 验证IPv6 网络地址
import sun.net.util.IPAddressUtil;
public class ipCheck {
public static void main(String[] args) {
// String ip = "127.0.0.1";
// String ip = "abcd::abcd:abcd:abcd:abcd";
String ip = "abcd.123:0";
boolean isIpv4 = IPAddressUtil.isIPv4LiteralAddress(ip);
System.out.println(isIpv4+" is ipv4?"+isIpv4);
boolean isIpv6 = IPAddressUtil.isIPv6LiteralAddress(ip);
System.out.println(isIpv6+" is ipv6?"+isIpv6);
}
}
3. sun.net.util.IPAddressUtil 地址转换
- textToNumericFormatV4: 将文本形式的IP4地址转换为二进制形式
- textToNumericFormatV6 :将文本形式的IP6地址转换为二进制形式
- convertFromIPv4MappedAddress : 将IP6地址转换为IP4地址,转换失败则返回null
- isIPv4MappedAddress : 判断指定的IP地址是否为IP4地址映射成的IP6地址