有类与无类寻址

2025年03月17日 | 阅读 9 分钟

本文讨论了IPV4地址、有类寻址、无类寻址以及有类寻址与无类寻址的区别。

首先,让我们讨论IPV4地址。

IPV4地址

IP地址,也常被称为互联网地址,是TCP/IP协议栈IP层用于标识互联网上每个设备连接的唯一标识符。主机的IP地址是一个32位的值,用于唯一标识连接到Internet的主机或路由器。由于IP地址标识的是连接而不是主机或路由器本身(因为在设备移动到不同网络时,IP地址可能会改变),因此,它是对连接的定义。

IPv4地址是唯一的。每个地址都指定了与Internet的一个且仅一个连接。如果一台设备通过两个网络连接到Internet,则它有两个IPv4地址。由于每个希望连接到Internet的主机都必须使用IPv4寻址方案,因此IPv4地址被认为是通用的。

寻址中的层级结构

在所有需要进行路由的通信网络中,如电话和邮政网络,寻址系统都是分层的。

32位的IPv4地址也具有层级结构,但它被分为两部分。地址的第一部分称为网络前缀,用于定义网络;第二部分称为主机后缀(用于连接设备到Internet)。下图中展示了一个32位IPv4地址的网络前缀和主机后缀。网络前缀的长度是n位,主机后缀的长度是(32-n)位。

Classful vs Classless addressing

网络前缀的长度可以是可变的,也可以是固定的。IPv4网络标识最初是为了使用固定长度的网络前缀而设计的。这种过时的系统被称为有类寻址一种新的寻址方法,称为无类寻址,使用可变长度的网络前缀。 在深入讨论无类寻址之前,我们将简要回顾一下有类寻址。

1. 有类寻址

IPv4地址最初具有固定长度的网络前缀,但为了支持小型和大型网络,创建了三种固定长度的网络前缀(n = 8、n = 16 和 n = 24)。整个地址空间被划分为五个类(A类、B类、C类、D类和E类),如下图所示。这种系统被称为有类寻址。尽管它已经过时,但有类寻址有助于理解无类寻址,后者将在后面的部分介绍。

Classful vs Classless addressing

A类 - 尽管网络长度为8位,但由于第一位(0)用于指示类别,因此我们只能使用七位作为网络标识符。这意味着全球范围内只有 27 = 128 个网络可以拥有A类地址。

  • 网络ID = 8位长,主机ID = 24位长
  • 识别A类地址的方法
    • 在二进制中,第一位保留为0。
    • 在点分十进制表示法中,第一个八位字节的范围是 [0, 127]。
  • A类连接总数 = 231(2,147,483,648)
  • A类网络中有 27 - 2 = 126 个网络。
    • 总体上少了2个可用网络,因为 IP 地址 0.0.0.0 保留用于广播。IP 地址 127.0.0.1 保留用于测试软件时的回送地址。
    • 因此,第一个八位字节的范围变为 [1, 126]。
  • A类中主机ID的总数 = 224 - 2 [16,777,214]
    • 由于保留了两个 IP 地址(主机 ID 位全为零或全为一),因此所有类中可以建立的主机数减少了 2。
    • 当所有主机 ID 位设置为 0 时,表示网络的网络 ID。
    • 当所有主机 ID 位设置为 1 时,表示广播地址。
  • 需要非常大网络的组织,例如印度铁路,会使用A类。

B类 - 尽管B类网络的最初两位(二进制为10,或写作 (10)2)用于指示类别,但由于B类的网络长度为16位,我们只能使用14位作为网络标识符。因此,全球范围内只有 214 = 16,384 个网络能够使用B类地址。

  • 网络ID长度 = 16位,主机ID长度 = 16位。
  • 识别B类网络的方法
    • 在二进制表示法中,前两位保留为10。
    • 在点分十进制表示法中,第一个八位字节的范围是 [128, 191]。
  • B类网络中的连接总数是 230 = 1,073,741,824。
  • B类中可用的网络总数是 214 = 16,384。
  • B类中可以配置的主机总数 = 216 - 2 = 65,534。
  • 需要中等规模网络的组织通常会使用B类。

C类 - 所有以 (110)2 开头的地址都属于C类。C类网络长度为24位,但由于类别由三位定义,网络标识符只能是21位长。因此,全球有 221 = 2,097,152 个网络能够使用C类地址。

  • 网络ID长度和主机ID长度分别为24位和16位。
  • 识别C类网络的方法
    • 在二进制表示法中,前三位保留为110,或 (110)2
    • 在点分十进制表示法中,第一个八位字节的范围是 [192, 223]。
  • C类中的连接总数 = 229 = 536,870,912。
  • C类中可用的网络总数 = 224 = 20,971,520。
  • C类中每个网络可以配置的主机总数 = 28 - 2 = 254。
  • 需要小型到中型网络的组织通常会选择C类。

快速测验 - *在 IPv4 寻址格式中,最多可以使用 C 类地址的网络数量是 __________*

  1. 214
  2. 27
  3. 221
  4. 224

答案. (c)

D类 - D类不存在网络前缀和主机后缀的概念。它用于多播地址。

  • 不存在主机ID和网络ID的概念。
  • 识别D类网络的方法
    • 在二进制表示法中,前四位保留为1110,或 (1110)2
    • 在点分十进制表示法中,第一个八位字节的范围是 [224, 239]。
  • 可用的IP地址总数为 228 = 26,843,5456。
  • 由于数据不针对特定主机,D类被保留用于多播,从而消除了从IP地址中提取主机地址的需求。

E类 - 所有以1111网络前缀开头的二进制地址都属于E类。E类与D类一样,既没有网络前缀也没有主机后缀,用作保留。

  • 与D类一样,这里也不存在主机ID和网络ID的概念。
  • 识别E类网络的方法
    • 在二进制表示法中,前四位保留为1111,或 (1111)。
    • 在点分十进制表示法中,第一个八位字节的范围是 [240, 255]。
  • 可用的IP地址总数为 228 = 26,843,5456。
  • E类被保留用于假设性或实验性用途。

2. 无类寻址

有类寻址的子网划分和超网划分技术并未完全解决地址耗尽的问题。随着互联网的扩展,人们意识到需要更大的地址空间作为长期解决方案。然而,扩大的地址空间意味着IP地址也需要更长,这需要改变IP数据包的语法。尽管已经开发了长期解决方案(称为IPv6),但仍然开发了短期解决方案,该方案使用相同的地址空间,但修改了地址的分配方式,为每个组织提供公平的份额。无类寻址是一种临时解决方案,但它仍然使用IPv4地址。 为了弥补地址耗尽,在地址分配中取消了类别的特权。

在无类寻址中,整个地址空间被划分为不同长度的块。地址的网络前缀用于指定块(网络);其主机后缀用于指定节点(设备)。理论上,我们可以拥有220、221、222...到 232 个地址的块。一个限制是地址块必须是2的幂。一个地址块可以分配给一个组织。下图显示了整个地址空间的非重叠块划分。

Classful vs Classless addressing

与有类寻址不同,无类寻址允许可变的网络前缀长度。网络前缀长度可以从0到32不等。网络前缀的长度与网络大小成反比。较小的网络具有较大的网络前缀;较大的网络具有较小的网络前缀。

我们必须强调,有类寻址的概念可以很容易地适应无类寻址。可以将A类地址视为网络前缀长度为8的无类地址。B类地址可以看作是网络前缀为16的无类地址,依此类推。换句话说,无类寻址是有类寻址的一个特例。

网络前缀长度 - 斜杠表示法

在无类寻址中,首先需要解决的问题是如何确定给定地址的网络前缀长度。我们必须单独提供网络前缀长度,因为它不是地址的属性。在这种情况下,我们将地址插入,后跟一个斜杠,然后是网络前缀长度n。斜杠表示法是这个记法的俗称,而无类域间路由(Classless Interdomain Routing),或CIDR(发音为“cider”)方法,是官方名称。因此,无类寻址中的地址可以表示为下图所示。

Classful vs Classless addressing

换句话说,在无类寻址中,我们还必须提供网络前缀长度,因为地址本身不能自动定义它所属的块或网络。

从地址中提取信息

对于块中的任何给定地址,我们通常希望知道三件事:块中的地址数、块的起始地址和块的结束地址。这三条信息,如图所示,很容易找到,因为我们已知网络前缀长度 n。

  • 根据计算,该块总共有 N = 232-n 个地址。
  • 为了确定第一个地址,保留最左边的 n 位,并将最右边的 (32 - n) 位全部设置为零。
  • 为了确定最后一个地址,保留最左边的 n 位,并将最右边的 (32 - n) 位全部设置为 1。
Classful vs Classless addressing

例如 - 地址 167.199.170.82/27 是一个无类地址。以下是我们找到上述三条信息的位置。网络中总共有 232-n = 25 = 32 个地址。

为了确定第一个地址,保留前 27 位,并将剩余位设为0。

Classful vs Classless addressing

通过保留前 27 位并将剩余位设置为 1,可以确定最后一个地址。

Classful vs Classless addressing

快速测验 - *在网络 200.10.11.144/27 中,该网络可分配给主机的最后一个IP地址的第四个八位字节(十进制)是 _____ ( GATE 2015,2分)*

答。

Classful vs Classless addressing

这里,最后一个八位字节的最大可能值为十进制的159。因此,可分配给主机的最后一个IP地址的第四个八位字节是二进制的10011110,即十进制的158。因此,问题的答案是158

有类寻址与无类寻址的区别

  1. 在分配IP地址时,有类寻址方法将IP地址分为五类。为了防止IP地址耗尽,使用了无类寻址。这是一种IP地址分配方法,最终将取代有类寻址。
  2. 另一个区别是有类寻址和无类寻址的实用性。与有类寻址相比,无类寻址更加实用和有用。
  3. 在有类寻址中,网络ID和主机ID根据类别进行调整。然而,在无类寻址中,网络ID和主机ID之间的区别并不存在。这为我们提供了区分两者的另一个角度。

结论

IP寻址包含两种类型:有类和无类。无类寻址提供了比有类寻址更有效的IP地址分配方法,这是两者之间的主要区别。简而言之,无类寻址可以防止有类寻址可能出现的IP地址耗尽问题。