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地址的核心概念串起来了。我建议你多看几遍,理清它们之间的关系。

IPv4地址核心知识体系 IPv4地址核心知识体系 IPv4地址(32位) 网络号 + 主机号 分类编址(A/B/C/D/E) CIDR(前缀长度) 子网掩码 地址浪费严重 路由聚合 子网划分 IPv4枯竭 超网/聚合 说明:CIDR通过前缀长度替代固定分类,配合子网掩码实现灵活的子网划分和路由聚合 这是现代IP网络规划的基础,也是缓解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就会轻松很多。