IPv4 子网划分

背景

网络上,数据从一个地方传到另一个地方,需要依靠 IP 寻址。

从逻辑上来讲,可分为两步。

  1. 第一步,从 IP 中找到所属的网络。
  2. 第二步,再从所属的网络中找到主机。

其中,第一步的网络,我们用网络号来标识,第二步的主机,我们用主机号来标识。IP 地址就是由网络号和主机号组成。

这么划分,有一个特别明显的优势是,在大型的 Internet 中,路由器的路由表只存储网络信息,而不需要存储数量是网络信息百倍之上的主机信息,这样大大地简化了路由表。

子网划分

IPv4 的 IP 地址是 32 位,形如 xxx.xxx.xxx.xxx, 每个 xxx 取值是 0-255.

网络号相同的 IP 地址表示为一个子网(Subnet),从逻辑上来讲,一般同一子网是使用相同的网关, 一般是 xxx.xxx.xxx.0。那么到底是前三个 xxx 相同,代表同一个子网还是前两个,还是其他呢?这个并不一定。

因此,在 Internet 中引入子网掩码(Subnet Mask)来标识子网的大小。

一个经典的情况是,IP 中前 24 位为子网号,后 8 位为主机号。子网掩码就可以用 255.255.255.0 标识。为什么是 255.255.255.0 呢?

从二进制的角度来看,一切就变得很好理解了。在二进制中,IP 地址就是 32 位 1 或 0,子网掩码标识的是子网的覆盖区间。24 位的子网号,子网掩码的覆盖区间就是 111…111(此处有 24 个 1)00…00(此处 8 个 0),每 8 位 为 1 段,变成十进制就是 255.255.255.0 了。

CIDR

现在我们清楚,利用子网地址和子网掩码可以明确描述一个子网。为了更灵活地对子网进行划分,比如可以将多个子网组合成较大的子网,将一个子网分成多个较小的子网。互联网工程小组提出了 CIDR (无类域间路由) 的概念。

CIDR 中的子网掩码是可变长的,遵从 IP +一个斜线+数字,代表这个 IPv4 地址和子网掩码的覆盖区间, 例如 200.23.16.0/23 ), 来确定一个子网。

CIDR 的提出对于互联网来说,有非常大的优点。其中一点是提高了 IPv4 地址空间的分配效率,大大提高整个 IPv4 地址空间的利用率。

更重要的是 CIDR 的提出对于整个网络的路由效率有很大的提高。CIDR 可以将小的子网聚合成更大的子网,这样有一个非常大的优势就是在路由器的转发表中可以根据这个更大的子网记录路由的转发规则,而不是对于每一个小的子网。事实上,也正是因为 CIDR 的路由聚集的技术,大大减小了路由表的大小,从而也提高路由效率。

Loading Disqus comments...
Table of Contents