繁体   English   中英

如何从 IPV6 中的 CIDR 计算最后一个 IP 地址

[英]How to calculate last IP address from CIDR in IPV6

我正在尝试使用 Apache commons-net for IPV4 从 CIDR 计算最后一个 IP 地址

SubnetUtils su = new SubnetUtils(cidr);
SubnetInfo si = su.getInfo();
si.getHighAddress();

它不适用于 IPV6,有人可以建议一些库来解决这个问题吗?

通常,IPv6 子网将是/64 (很少有例外,其他子网大小可能会破坏)。 由于 IPv6 甚至没有广播概念,因此子网中的最后一个地址将ffff:ffff:ffff:ffff作为最后 64 位。 IPv6 还可以使用子网中的第一个 ( 0000:0000:0000:0000 ) 地址。 这使得它比 IPv4 容易得多,因为子网中的每个地址都是有效地址。

IPAddress Java 库可以执行您在此处描述的操作。

对于任何给定的 CIDR 字符串,无论是 IPv4(例如 1.2.3.4/16)还是 IPv6(例如 1:2:3:4::/64),您都可以执行以下操作:

IPAddressString string = new IPAddressString("1:2:3:4::/64");
IPAddress subnet = string.getAddress();
IPAddress highest = subnet.getHighest();
String highestString = highest.toCanonicalString();
System.out.println(highestString);

对于 1:2:3:4::/64 上面代码的输出是 1:2:3:4:ffff:ffff:ffff:ffff

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM