这三个地址段分别位于A、B、C三类地址内:
A类地址:10.0.0.0–10.255.255.255
B类地址:172.16.0.0–172.31.255.255
C类地址:192.168.0.0–192.168.255.255
/**
* 判断是否是内网IP
* 0.0.0.0
* 类型 : 地址块 --> 地址范围
* 默认路由 : 224.0.0.0/4 --> 224.0.0.0-239.255.255.255
* 有限广播地址 : - --> 255.255.255.255
* 环回地址 : 127.0.0.0/8 --> 127.0.0.0-127.255.255.255
* Test-Nest地址 : 190.0.2.0/24 --> 190.0.2.0-192.255.255.255
* 链路本地地址 : 169.254.0.0/16 --> 169.254.0.0-169.254.255.255
* 私有地址空间 : 10.0.0.0/18 --> 10.0.0.0-10.255.255.255
* 私有地址空间 : 172.16.0.0/12 --> 172.16.0.0-172.31.255.255
* 私有地址空间 : 192.168.0.0/16 --> 192.168.0.0-192.168.255.255
* 多播 : 224.0.0.0/4 --> 224.0.0.0-239.255.255.255
* 实验地址 : 240.0.0.0/4 --> 224.0.0.0-255.255.255.254
* 判断是否是内网IP
*
* @param ip
* @return 内网 true ,外网 false
*/
public static boolean isLanIp(String ip) {
if (ip.startsWith("10.") || ip.startsWith("192.168.") || (ip.compareTo("172.16.") > 0 && ip.compareTo("172.32.") < 0)) {
//私有地址空间
return true;
} else if (Objects.equals(ip, "0.0.0.0") || Objects.equals(ip, "255.255.255.255")) {
return true;
} else if (ip.compareTo("224.") > 0 && ip.compareTo("255.255.255.255") < 0) {
//默认路由 : 224.0.0.0/4 --> 224.0.0.0-239.255.255.255
// 多播 : 224.0.0.0/4 --> 224.0.0.0-239.255.255.255
// 实验地址 : 240.0.0.0/4 --> 224.0.0.0-255.255.255.254
return true;
} else if (ip.startsWith("127.")) {
//环回地址 : 127.0.0.0/8 --> 127.0.0.0-127.255.255.255
return true;
} else if (ip.compareTo("190.0.2.") > 0 && ip.compareTo("193.") < 0) {
// Test-Nest地址 : 190.0.2.0/24 --> 190.0.2.0-192.255.255.255
return true;
} else if (ip.startsWith("169.254.")) {
// 链路本地地址 : 169.254.0.0/16 --> 169.254.0.0-169.254.255.255
return true;
} else {
return false;
}
}