知识点编号:021
难度等级:⭐⭐(必掌握)
面试频率:🔥🔥🔥🔥🔥
🎯 一句话总结
私有地址就像小区内部的门牌号,只在内网用,不能直接上公网!🏘️
🔐 三段私有地址
A类私有地址 🏰
范围:10.0.0.0 ~ 10.255.255.255
掩码:255.0.0.0 (/8)
数量:1个A类网络
主机数:16,777,216个
用途:
✅ 大型企业内网
✅ 数据中心
✅ 云服务器内网
示例:
10.0.0.1
10.1.2.3
10.255.255.254
B类私有地址 🏘️
范围:172.16.0.0 ~ 172.31.255.255
掩码:255.255.0.0 (/16)
数量:16个B类网络
主机数:1,048,576个
用途:
✅ 中型企业内网
✅ 学校网络
✅ Docker默认网络
示例:
172.16.0.1
172.20.1.1
172.31.255.254
C类私有地址 🏢
范围:192.168.0.0 ~ 192.168.255.255
掩码:255.255.255.0 (/24)
数量:256个C类网络
主机数:65,536个
用途:
✅ 家庭网络
✅ 小型办公室
✅ 路由器默认地址
示例:
192.168.0.1
192.168.1.1 (最常见!)
192.168.255.254
📊 私有地址总结表
| 类别 | 范围 | CIDR | 网络数 | 常见用途 |
|---|---|---|---|---|
| A类 | 10.0.0.0 ~ 10.255.255.255 | 10.0.0.0/8 | 1 | 大型内网 |
| B类 | 172.16.0.0 ~ 172.31.255.255 | 172.16.0.0/12 | 16 | Docker、企业 |
| C类 | 192.168.0.0 ~ 192.168.255.255 | 192.168.0.0/16 | 256 | 家庭、小公司 |
🌐 私有地址 vs 公网地址
私有地址(内网)🏠
特点:
✅ 只在局域网内使用
✅ 不能直接访问互联网
✅ 可以重复使用(不同局域网)
✅ 免费使用
❌ 不能在互联网上路由
比喻:
小区内部门牌号
- 1号楼101室
- 只在小区内有效
- 别的小区也有1号楼101室
公网地址(外网)🌍
特点:
✅ 全球唯一
✅ 可以直接访问互联网
✅ 可以在互联网上路由
❌ 需要购买/租用
❌ IPv4地址不够用
比喻:
GPS坐标
- 全球唯一
- 任何人都能找到
🔄 NAT:私网到公网的桥梁
问题:
私有地址不能直接上网
解决:
NAT(Network Address Translation)
网络地址转换
过程:
内网设备(192.168.1.2)
↓
路由器NAT转换
↓
公网地址(58.1.2.3)
↓
互联网
生活比喻:
你在公司内部打电话(内线8888)
打外部电话时,转接到公司总机(外线021-1234567)
💻 Java代码判断
public class PrivateIPChecker {
/**
* 判断是否为私有IP地址
*/
public static boolean isPrivateIP(String ip) {
String[] parts = ip.split("\\.");
int first = Integer.parseInt(parts[0]);
int second = Integer.parseInt(parts[1]);
// 10.0.0.0 ~ 10.255.255.255
if (first == 10) {
return true;
}
// 172.16.0.0 ~ 172.31.255.255
if (first == 172 && second >= 16 && second <= 31) {
return true;
}
// 192.168.0.0 ~ 192.168.255.255
if (first == 192 && second == 168) {
return true;
}
return false;
}
/**
* 判断是否为公网IP
*/
public static boolean isPublicIP(String ip) {
return !isPrivateIP(ip) && !isSpecialIP(ip);
}
/**
* 判断是否为特殊IP
*/
public static boolean isSpecialIP(String ip) {
// 127.0.0.0 ~ 127.255.255.255 (本地回环)
// 0.0.0.0 (任意地址)
// 255.255.255.255 (广播地址)
String[] parts = ip.split("\\.");
int first = Integer.parseInt(parts[0]);
return first == 0 || first == 127 || first >= 224;
}
public static void main(String[] args) {
String[] testIPs = {
"10.0.0.1",
"172.16.0.1",
"192.168.1.1",
"8.8.8.8",
"114.114.114.114"
};
for (String ip : testIPs) {
System.out.printf("%s -> %s\n",
ip,
isPrivateIP(ip) ? "私有地址" : "公网地址"
);
}
}
}
// 输出:
// 10.0.0.1 -> 私有地址
// 172.16.0.1 -> 私有地址
// 192.168.1.1 -> 私有地址
// 8.8.8.8 -> 公网地址
// 114.114.114.114 -> 公网地址
🐛 常见面试题
Q1:IPv4私有地址有哪些?
答案:
三段私有地址:
1. A类:10.0.0.0 ~ 10.255.255.255
- 10.0.0.0/8
- 大型企业、数据中心
2. B类:172.16.0.0 ~ 172.31.255.255
- 172.16.0.0/12
- Docker、中型企业
3. C类:192.168.0.0 ~ 192.168.255.255
- 192.168.0.0/16
- 家庭、小公司(最常见)
记忆技巧:
"十点 一七二点十六到三十一 一九二点一六八"
特点:
- 只在内网使用
- 可以重复使用
- 需要NAT才能访问公网
Q2:为什么需要私有地址?
答案:
原因:
1. IPv4地址不够用 💀
- IPv4总共:43亿个地址
- 全球设备:远超43亿
- 必须节省使用
2. 安全性 🔒
- 私有地址不能从公网直接访问
- 天然防火墙
- 保护内网设备
3. 灵活性 🔄
- 不同局域网可以使用相同私有地址
- 组网更灵活
- 不需要申请公网IP
4. 成本 💰
- 私有地址免费
- 公网IP需要购买/租用
- 节省成本
实际应用:
家庭网络:
- 路由器公网IP:58.1.2.3(唯一)
- 内网设备私有IP:
* 电脑:192.168.1.2
* 手机:192.168.1.3
* 电视:192.168.1.4
通过NAT共享一个公网IP上网
Q3:私有地址能直接访问公网吗?
答案:
❌ 不能直接访问!
原因:
- 私有地址不能在互联网上路由
- 路由器会丢弃私有地址的包
- 目标服务器无法回复(不知道往哪里回)
解决方案:NAT
过程:
1. 内网设备(192.168.1.2)发送请求
2. 路由器NAT转换:
- 源IP:192.168.1.2 → 58.1.2.3(公网IP)
- 记录映射关系
3. 外网服务器收到:来自58.1.2.3的请求
4. 外网服务器回复:发给58.1.2.3
5. 路由器收到,查映射表:
- 目标IP:58.1.2.3 → 192.168.1.2
6. 转发给内网设备
生活比喻:
你写信给国外朋友
- 你的地址:1号楼101室(私有)
- 公司地址:北京xx路xx号(公网)
- 信封写公司地址
- 公司收到后转给你
🎓 总结
私有地址的关键点:
- 三段:10.x、172.16-31.x、192.168.x
- 内网用:不能直接上公网
- 可重复:不同局域网可以重复
- 需要NAT:通过NAT访问公网
记忆口诀:
十点大公司 🏢
一七二Docker用 🐳
一九二家里见 🏠
都是私有地址群 🔒
文档创建时间:2025-10-31