IP地址与子网划分
你手机连上 WiFi 后拿到的 192.168.1.x,出了路由器就变成运营商给的公网 IP——这背后是 IP 地址分类和 NAT 在工作。
IPv4 地址分类
IPv4 地址是 32 位,点分十进制表示(如 192.168.1.1)。早期按规模分成几类,方便分配给不同大小的组织:
| 类别 | 第一字节范围 | 网络位 | 主机位 | 可用主机数 | 典型用途 |
|---|---|---|---|---|---|
| A 类 | 1 ~ 126 | 8 位 | 24 位 | 约 1600 万 | 超大型机构 |
| B 类 | 128 ~ 191 | 16 位 | 16 位 | 约 6.5 万 | 中大型机构 |
| C 类 | 192 ~ 223 | 24 位 | 8 位 | 254 | 小型网络 |
| D 类 | 224 ~ 239 | — | — | — | 多播地址 |
| E 类 | 240 ~ 255 | — | — | — | 保留/实验 |
127.x.x.x 是回环地址(loopback),ping 127.0.0.1 是测试本机网络栈是否正常。
私有地址(不在公网路由,局域网内用):
| 范围 | 类别 | 常见场景 |
|---|---|---|
| 10.0.0.0 ~ 10.255.255.255 | A 类私有 | 公司内网、数据中心 |
| 172.16.0.0 ~ 172.31.255.255 | B 类私有 | 企业内网 |
| 192.168.0.0 ~ 192.168.255.255 | C 类私有 | 家用路由器、嵌入式设备 |
公司内网为什么喜欢用 10.0.0.0/8?因为它能容纳 1600 万台设备,一个 /8 就够整个公司用,不用再划子网。
子网掩码与 CIDR
A 类地址给一个机构就是 1600 万个 IP,大部分都浪费了。子网划分把一个大网络切成多个小网络。
子网掩码:和 IP 地址一样是 32 位,连续的 1 表示网络部分,连续的 0 表示主机部分。
CIDR(无类域间路由):用斜线加前缀长度表示,如 192.168.1.0/24,比分类更灵活。
怎么算:
给定 IP 地址和前缀长度,求网络地址、广播地址、可用主机数:
IP 地址:192.168.1.100/24
子网掩码:255.255.255.0(前 24 位全 1)
网络地址 = IP AND 子网掩码
= 192.168.1.100 AND 255.255.255.0
= 192.168.1.0
广播地址 = 网络地址的主机位全置 1
= 192.168.1.255
可用主机数 = 2^(32-24) - 2 = 2^8 - 2 = 254
(减 2 是因为网络地址和广播地址不能分配给主机)
典型例题:
192.168.10.200/28,求网络地址、广播地址、可用主机数。
前缀 28 位,主机位 4 位
子网掩码:255.255.255.240(最后一字节 11110000 = 240)
200 的二进制:11001000
AND 11110000 = 11000000 = 192
网络地址:192.168.10.192
广播地址:192.168.10.207(主机位全 1:11001111 = 207)
可用主机数:2^4 - 2 = 14
**判断两个 IP 是否在同一子网:**两个 IP 分别 AND 子网掩码,结果相同则在同一子网。
NAT:私有地址出公网
私有地址在公网上不可路由,出了家用路由器必须转换成公网 IP。这就是 NAT(网络地址转换)。
**为什么需要 NAT:**IPv4 公网地址只有约 43 亿个,全球设备远超这个数,NAT 让多台设备共用一个公网 IP。
怎么工作:
你的手机(192.168.1.5:54321)
↓ 发出请求
路由器 NAT 表:192.168.1.5:54321 ↔ 公网IP:60001
↓ 替换源地址
公网(公网IP:60001)→ 目标服务器
服务器回包 → 路由器查 NAT 表 → 转回 192.168.1.5:54321
NAT 表记录了内网地址+端口和公网地址+端口的映射关系,靠端口号区分不同设备的连接。
IPv6
**为什么要 IPv6:**2011 年 IANA 把最后一批 IPv4 地址分配完毕,IPv6 是根本解决方案。
| 对比项 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32 位(约 43 亿) | 128 位(约 3.4×10³⁸) |
| 表示方式 | 点分十进制 192.168.1.1 | 冒号十六进制 2001:db8::1 |
| 首部长度 | 可变(最小 20 字节) | 固定 40 字节 |
| 首部校验和 | 有 | 去掉了(交给传输层) |
| NAT | 需要(地址不够用) | 不需要(地址足够) |
| 广播 | 有 | 没有,用多播代替 |
| 地址自动配置 | DHCP | SLAAC(无状态地址自动配置) |
IPv6 地址压缩规则:
- 每组前导 0 可省略:
0042→42 - 连续全 0 组可用
::代替(只能用一次):2001:0db8:0000:0000:0000:0000:0000:0001→2001:db8::1
**嵌入式场景:**IoT 设备数量庞大,IPv6 是趋势。6LoWPAN 协议把 IPv6 压缩后跑在低功耗无线网络(如 Zigbee)上。
笔试题直击
Q:给定 IP/前缀,求网络地址、广播地址、可用主机数
套公式:
- 网络地址 = IP AND 子网掩码
- 广播地址 = 网络地址的主机位全置 1
- 可用主机数 =
Q:判断两个 IP 是否在同一子网
两个 IP 分别 AND 子网掩码,结果相同则在同一子网。
Q:IPv6 和 IPv4 的主要区别
地址 128 位 vs 32 位;首部固定 40 字节;去掉了校验和和广播;不需要 NAT;支持 SLAAC 自动配置。
如果你正在跟随梳理, 返回 MOC←