如何将地址从 IPv4 转换为 IPv6
这可能吗?如何将 ipv4 转换为 ipv6 地址?
这里举几个例子:
0.0.0.0 -> ::
127.0.0.1 -> ::1
我正在Java中搜索解决方案。
谢谢
这可能吗?如何将 ipv4 转换为 ipv6 地址?
这里举几个例子:
0.0.0.0 -> ::
127.0.0.1 -> ::1
我正在Java中搜索解决方案。
谢谢
没有有意义的 IPv4 到 IPv6 映射。像 0.0.0.0 和 127.0.0.1 这样的东西在规范中是特例,所以它们具有等效的含义。但是给定一个IPv4地址,它不会告诉你它的具体IPv6地址是什么。您可以使用 DNS 查找来查看给定的 IP 地址是否解析为主机,而主机又解析为 IPv6 地址以及 IPv4 地址,但必须将 DNS 服务器配置为支持特定计算机的该地址。
混合双栈 IPv6/IPv4 实现通常支持一类特殊的地址,即 IPv4 映射地址。有关详细信息,请查看以下链接:
http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
要将 IPv4 转换为映射的 IPv6,可以使用以下命令:
String ip = "127.0.0.1";
String[] octets = ip.split("\\.");
byte[] octetBytes = new byte[4];
for (int i = 0; i < 4; ++i) {
octetBytes[i] = (byte) Integer.parseInt(octets[i]);
}
byte ipv4asIpV6addr[] = new byte[16];
ipv4asIpV6addr[10] = (byte)0xff;
ipv4asIpV6addr[11] = (byte)0xff;
ipv4asIpV6addr[12] = octetBytes[0];
ipv4asIpV6addr[13] = octetBytes[1];
ipv4asIpV6addr[14] = octetBytes[2];
ipv4asIpV6addr[15] = octetBytes[3];
还要检查这个