如何将地址从 IPv4 转换为 IPv6

2022-09-01 19:56:45

这可能吗?如何将 ipv4 转换为 ipv6 地址?

这里举几个例子:

0.0.0.0   -> ::
127.0.0.1 -> ::1

我正在Java中搜索解决方案。

谢谢


答案 1

没有有意义的 IPv4 到 IPv6 映射。像 0.0.0.0 和 127.0.0.1 这样的东西在规范中是特例,所以它们具有等效的含义。但是给定一个IPv4地址,它不会告诉你它的具体IPv6地址是什么。您可以使用 DNS 查找来查看给定的 IP 地址是否解析为主机,而主机又解析为 IPv6 地址以及 IPv4 地址,但必须将 DNS 服务器配置为支持特定计算机的该地址。


答案 2

混合双栈 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];

还要检查这个


推荐