簡體   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