子网划分
两级 IP 地址的缺点:
- IP 地址空间的利用率有时很低
- 给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏
- 两级的 IP 地址不够灵活
子网划分:在 IP 地址中增加了一个“子网号字段”,使两级 IP 地址变成了三级 IP 地址。
子网划分的基本思路如下:
- 子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- 从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同的比特。三级 IP 地址的结构如下:IP 地址 = {<网络号>,<子网号>,<主机号>}。
- 凡是从其他网络发送给本单位某台主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号,先找到连接到本单位网络上的路由器。然后该路由器在收到 IP 数据报后,按目的网络号和子网号找到目的子网。最后把 IP 数据报直接交付给目的主机。
注意:
- 划分子网只是把 IP 地址的主机号这部分进行再划分,而不改变 IP 地址原来的网络号。因此,从一个 IP 地址本身或 IP 数据报的首部,无法判断源主机或目的主机所连接的网络是否进行了子网划分。
子网掩码
为了告诉主机或路由器对一个 A 类、B 类、C 类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位。
子网掩码是一个与 IP 地址相对应的、长 32bit 的二进制串,它由一串 1 和跟随的一串 0 组成。其中,1 对应于 IP 地址中的网络号及子网号,而 0 对应于主机号。计算机只需将 IP 地址和其对应的子网掩码逐位“与”(逻辑 AND 运算),就可得出相应子网的网络地址。
A、B、C 类地址的默认子网掩码分别为 255.0.0.0、255.255.0.0、255.255.255.0。
在使用子网掩码的情况下:
- 一台主机在设置 IP 地址信息的同时,必须设置子网掩码。
- 同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
- 路由器的路由表中,所包含信息的主要内容必须有目的网络地址、子网掩码、下一跳地址。
无分类域间路由选择(CIDR)
无分类域间选择是在变长子网掩码的基础上提出的一种消除传统 A、B、C 类网络划分,并且可以在软件的支持下实现超网构造的一种 IP 地址的划分方法。
例如,一个单位需要 2000 个地址,那么就给它分配一个 2048 地址的块(8个连续的 C 类网络),而不是一个完全的 B 类地址。这样可以大幅度提高 IP 地址空间的利用率,减小路由器的路由表大小,提高路由转发能力。
CIDR 的主要特点如下:
- 消除了传统 A、B、C 类地址及划分子网的概念,因而可以更有效地分配 IPv4 的地址空间。CIDR 使用“网络前缀”的概念代替子网络的概念。IP 地址的无分类两级编址为:IP::={<网络前缀>,<主机号>}。
CIDR 还使用“斜线记法”,即 IP 地址/网络前缀所占比特数。
最长前缀匹配(最佳匹配):使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。