我想计算给定IP地址的前缀长度。我参考了 http://escapedrabbit.com/?p=62作为参考。 我的Java代码是基于冒号分割的:并且由16个跳转。 但我不确定这是否正确。请张贴我计算IPV6地址前缀长度的正确方法。 以下代码IPV6前缀长度计算
System.out.println("IPV6 Length ==> " + ""+ipv6.split(":").length*16);
我想计算给定IP地址的前缀长度。我参考了 http://escapedrabbit.com/?p=62作为参考。 我的Java代码是基于冒号分割的:并且由16个跳转。 但我不确定这是否正确。请张贴我计算IPV6地址前缀长度的正确方法。 以下代码IPV6前缀长度计算
System.out.println("IPV6 Length ==> " + ""+ipv6.split(":").length*16);
您无法从地址中确定前缀长度。举例而言,所有这些前缀是有效的:
2001:db8::/32
2001:db8::/30
2001:db8::/64
2001:db8:1:b::/64
的:
地址中的数字不告诉你的前缀长度什么。下面是写在一个不同的(也是完全有效的)符号相同的前缀:
2001:db8:0:0:0:0:0:0/32
2001:db8:0:0:0:0:0:0/30
2001:db8:0:0:0:0:0:0/64
2001:db8:1:b:0:0:0:0/64
此外,前缀长度取决于你正在寻找。我们来看看我自己的IPv6地址。 ISP有2a00:8640::/29
,代表2a00:8640:0001::/48
给我,我把2a00:8640:0001:0000::/64
放在我家的LAN上,而我的PC有地址2a00:8640:0001:0000:3528:2df9:b368:e9e9。
我的电脑具有此配置:2a00:8640:0001:0000:3528:2df9:b368:e9e9/64
,它指定子网2a00:8640:0001:0000::/64
(更正确地写为2a00:8640:1::/64
)中的地址。
正如你所看到的你确实需要一个明确指定的前缀长度。