TCPIP协议栈从入门到精通 - 第4节
IPv4地址结构:从32位说起
IP协议是整个TCP/IP栈的“交通警察”。而IPv4地址,就是每台设备在网络上的门牌号。
IPv4地址只有32位,分成4组8位二进制数。比如 192.168.1.1,写成二进制就是:
11000000.10101000.00000001.00000001
32位,总共能表示约43亿个地址。听起来不少对吧?但说实话,互联网发展太快了,这个数字早就捉襟见肘。我2012年做运营商项目时,就亲眼见过IPv4地址池被分到只剩几个C类段。
网络号 vs 主机号
IPv4地址不是平铺直叙的。它分成两部分:网络号和主机号。
- 网络号:标识你属于哪个“小区”
- 主机号:标识你在小区里的具体“门牌”
举个例子:192.168.1.0/24 这个网段里,192.168.1 是网络号,最后一个 0 是主机号。主机号全0代表网络本身,全1代表广播地址。
关键点:主机号全0和全1不能分配给设备。所以一个/24网段实际可用地址是254个,不是256个。
分类编址:老派的做法
早期互联网把IPv4地址分成A、B、C、D、E五类。说白了就是按地址的前几位来划分“大中小”三种网络规模。
| 类别 | 前几位 | 网络号位数 | 主机号位数 | 地址范围 | 最大主机数 |
|---|---|---|---|---|---|
| A类 | 0 | 8位 | 24位 | 1.0.0.0 – 126.255.255.255 | 约1677万 |
| B类 | 10 | 16位 | 16位 | 128.0.0.0 – 191.255.255.255 | 约6.5万 |
| C类 | 110 | 24位 | 8位 | 192.0.0.0 – 223.255.255.255 | 254 |
| D类 | 1110 | 组播 | — | 224.0.0.0 – 239.255.255.255 | 组播 |
| E类 | 1111 | 保留 | — | 240.0.0.0 – 255.255.255.255 | 实验 |
你看,A类一个网段就能容纳1600多万台设备,C类才254个。这种“一刀切”的方式,浪费太严重了。我记得有家公司申请了一个B类地址段,结果只用了不到1000个IP,剩下的全空着——别人想用也用不了。
注意:127.0.0.0/8是回环地址段,不属于任何分类。你电脑上的127.0.0.1就是“本机自己”。
子网掩码:把大网切小
分类编址浪费严重,怎么办?子网掩码就是用来“切蛋糕”的。
子网掩码也是一个32位的数,网络号部分全1,主机号部分全0。比如 255.255.255.0 的二进制就是24个1加8个0。
怎么用?把IP地址和子网掩码做“按位与”运算,就能得到网络号。
IP地址: 192.168.1.100 → 11000000.10101000.00000001.01100100
子网掩码: 255.255.255.0 → 11111111.11111111.11111111.00000000
按位与结果: 11000000.10101000.00000001.00000000
→ 192.168.1.0 (网络号)
子网掩码可以灵活调整。比如一个C类网段,你可以用 255.255.255.192(即/26)把它切成4个子网,每个子网62个可用地址。我在做企业内网规划时,经常这么干——给财务部一个子网,给研发部一个子网,互不干扰。
小技巧:快速判断两个IP是否在同一子网?把IP和掩码做按位与,结果相同就在同一子网。这个判断在配置ACL和路由策略时天天用。
CIDR:终结分类编址
到了90年代,分类编址的浪费问题已经忍无可忍了。1993年,CIDR(无类别域间路由)正式登场。
CIDR的核心思想就一句话:不再按A/B/C类固定分,而是用“前缀长度”灵活指定网络号位数。
写法很简单:IP地址后面加个斜杠,再写网络号的位数。比如 10.0.0.0/8、172.16.0.0/12、192.168.1.0/24。
你想想看,以前B类地址固定16位网络号,现在你可以用 /18、/20、/22……想怎么切就怎么切。
CIDR的优势
- 减少路由表条目:多条小路由可以聚合成一条大路由。比如16个连续的C类网段,可以聚合成一个
/20的路由条目。 - 地址分配更灵活:需要500个地址?给一个
/23(510个可用地址)就行,不用浪费半个B类。 - 缓解IPv4枯竭:虽然只是治标不治本,但确实多撑了好几年。
我曾经帮一家连锁企业做网络规划,他们有300多家门店,每家需要10-20个IP。用CIDR,我直接分配 /27 或 /28 的子网,整整齐齐,路由聚合后核心路由器上就两条条目。
CIDR vs 分类编址:分类编址是“先定大小再切”,CIDR是“要多大切多大”。后者明显更科学。
核心知识体系
下面这张图,把IPv4地址的核心概念串起来了。我建议你多看几遍,理清它们之间的关系。
避坑指南
做网络规划这么多年,我踩过不少坑。挑几个典型的说说:
- 子网掩码写错:我曾经把
255.255.255.192写成255.255.255.128,结果两个子网互相能ping通,但跨子网访问时断时续。排查了整整一下午。 - 忘了广播地址:分配IP时没留广播地址,导致设备配置冲突。记住,每个子网的最后一个IP是广播地址,不能分配给主机。
- CIDR聚合太激进:把不连续的路由硬聚合成一条,结果流量跑偏了。聚合前一定要确认地址段是连续的。
重要提醒:私有地址段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)只能在内部网络使用,千万别在公网上路由它们。我见过有人把内网地址配到公网接口上,结果整个公司上不了外网。
好了,IPv4地址结构、分类编址、子网掩码和CIDR就讲到这里。这些概念是IP协议的基石,理解了它们,后面学路由协议、VLSM、NAT就会轻松很多。