目录
IP 地址格式
IPv4 Address 由 4 个 8bits 共 32bits 组成,通常使用 “点分十进制“ 表示,每个整数都对应 1 个 8bits 长度(0-255)。
分类编址法
为了管理和分配有限的公网(全球唯一)IPv4 Address 资源,国际标准组织 ISP 采用 “{网络号 + 主机号}“ 的编址方式,并分为 3 类网络:
- A 类网络:1 个 8bits 网络号,可分配 126(2^7-2)个网络,每个网络中拥有 16777214 个公网 IP 地址。
- B 类网络:2 个 8bits 网络号,可分配 16383(2^14-1)个网络,每个网络中拥有 65534 个公网 IP 地址。
- C 类网络:3 个 8bits 网络号,可分配 2097151(2^21-1)个网络,每个网络中拥有 254 个公网 IP 地址。
理论上,全球共有 42.94 亿个公网 IP 地址。
CIDR 无分类编址法
上世纪 90 年代初,IETF 意识到两个问题:
- 32 位 IP 地址很可能不够用;
- 当时地址分为 A、B、C 类,B 类已分配完毕,由于还未引入 BGP4,而对于一定规模的网络,就需要分配数个 C 类地址,这无疑将导致路由表爆炸式增长。
就当时而言,短期解决方案一是使用 NAT 解决 IPv4 地址的短缺,二是发明了 CIDR(Classless Inter-Domain Routing,无分类域间路由选择)。
CIDR 又称为 “无分类编址法”,意为:抛弃 A、B、C 类网络的编址方式,化繁为简,只关注子网掩码(NETMASK)。
CIDR 具有 2 个核心优势:
- 表达格式简洁:{IP / NETMASK},但包含信息量完备,如下例子。
- 可以通过 NETMASK 任意伸缩子网容量的大小。
- 可以通过地址聚合,实现路由聚合,减少 Router 中的路由条目。
CIDR: 128.14.35.7https://files.jxasp.com/image/20
IP 地址: 128.14.35.7 = 10000000 00001110 00100011 00000111
子网掩码: 255.255.240.0 = 11111111 11111111 11110000 00000000
最小地址: 128.14.32.0 = 10000000 00001110 00100000 00000000
最大地址: 128.14.47.255 = 10000000 00001110 00101111 11111111
-
LAN-1:网络 192.168.1.0https://files.jxasp.com/image/24,网关 192.168.1.1https://files.jxasp.com/image/24,NETMASK 255.255.255.0。
-
LAN-2:网络 192.168.1.0https://files.jxasp.com/image/25,网关 192.168.1.1https://files.jxasp.com/image/25,NETMASK 255.255.255.128。
-
提高网络性能和安全性:在一个大的网络中,大量的广播和多播流量可能会降低网络性能。通过子网划分,引入 Router 等网关设备,可以将广播和多播流量限制在更小的网络范围内,从而提高网络性能和安全性。
-
有效地利用 IP 地址空间:在一个大的网络中,IP 地址很难管理,容易出现分配不合理和浪费。通过子网划分,可以更精细地管理每一个 IP 地址。
-
简化网络管理:将一个大的网络划分成多个较小的子网可以简化网络管理任务。例如,可以为每个子网指定不同的网络管理员和安全策略,从而更好地管理和保护网络资源。
-
SubnetA:203.0.113.0https://files.jxasp.com/image/26,共有 62 个可用主机地址。
-
SubnetB:203.0.113.64https://files.jxasp.com/image/27,共有 30 个可用主机地址。
-
SubnetC:203.0.113.96https://files.jxasp.com/image/28,共有 14 个可用主机地址。
值的注意的是,CIDR 的关键在于识别 NETMASK,即便有 2 个 IP 地址看起来一样,但如果它们的 NETMASK 不同,那么它们就不是同一个 IP。
例如:192.168.1.100https://files.jxasp.com/image/24 和 192.168.1.100https://files.jxasp.com/image/25,它们处于不同的 LAN 中,需要通过 Router 进行三层路由通信。Router 通过 NETMASK 来区分网络,当 dstIP 为 192.168.1.100 的 Packet 来临时,Router 会采用 LPM(最长前缀匹配)算法进行路由选择,即路由到 192.168.1.100https://files.jxasp.com/image/25。
子网划分
有了 CIDR 后,Subnet(子网)的划分就变得非常简单,只需要通过调整 NETMASK 就可以得到一个新的 Subnet。当我们仍要深刻理解子网划分的意义是为了实现更有效的网络管理和资源利用。
举例来说,假设我们拥有一个公网地址段为 203.0.113.0https://files.jxasp.com/image/24,需要将其划分为 A、B 和 C 这 3 个 Subnets,以支持不同的网络需求。需要注意的是 Subnets 之间的 IP 地址应该尽量不要重合,否者会带来管理上的混乱。
网络聚合
与子网划分相反,网络聚合是把一些具有相同 NETMASK 的小网络组合成一个大网络,主要是为了减少 Router 中的路由条目。路由表越大,查找路由表所需的内存和 CPU 也就越多,时间也会越长,导致转发 IP 数据包的性能下降。如果想要搭建大规模、高性能的网络,就需要尽可能的路由表的大小。
需要注意的是,当两个网络的 NETMASK 不同时,是不能合并的。