介绍
了解网络是在 Internet 上配置复杂环境的基本部分。这在尝试有效地在服务器之间进行通信、开发安全网络策略以及保持节点组织时会产生影响。
在之前的指南中,我们讨论了一些基本的网络术语。您应该仔细阅读该指南,以确保您熟悉那里介绍的概念。
在本文中,我们将讨论一些涉及设计或与联网计算机交互的更具体的概念。具体来说,我们将介绍用于分组 IP 地址的网络类、子网和 CIDR 表示法。
了解 IP 地址
网络上的每个位置或设备都必须是可寻址的。这意味着可以通过在预定义的地址系统下引用其名称来访问它。在网络分层的正常 TCP/IP 模型中,这是在几个不同的层上处理的,但通常当我们提到网络上的地址时,我们谈论的是 IP 地址。
IP 地址允许通过网络接口访问网络资源。如果一台计算机想要与另一台计算机通信,它可以将信息寻址到远程计算机的 IP 地址。假设两台计算机在同一个网络上,或者中间的不同计算机和设备可以跨网络转换请求,那么这些计算机应该能够相互访问并发送信息。
每个 IP 地址在其自己的网络上必须是唯一的。网络可以相互隔离,并且可以桥接和转换以提供不同网络之间的访问。一个称为网络地址转换的系统允许在数据包穿越网络边界时重写地址,以允许它们继续到达正确的目的地。这允许在多个隔离网络上使用相同的 IP 地址,同时如果配置正确,仍然允许这些网络相互通信。
IPv4和IPv6的区别
目前在系统上广泛实施的 IP 协议有两个修订版:IPv4 和 IPv6。由于协议的改进和 IPv4 地址空间的限制,IPv6 正在慢慢取代 IPv4。简而言之,对于通过 IPv4 提供的地址数量而言,世界现在有太多的互联网连接设备。
IPv4 地址是 32 位地址。地址的每个字节或 8 位段由句点分隔,通常表示为 0-255 的数字。尽管这些数字通常以十进制表示以帮助人类理解,但每个段通常称为一个八位字节,以表达它是 8 位表示的事实。
典型的 IPv4 地址如下所示:
192.168.0.5
每个八位字节中的最低值为 0,最高值为 255。
我们也可以用二进制来表达,以更好地了解四个八位字节的外观。我们将用空格分隔每 4 位以提高可读性,并用破折号替换点:
1100 0000 - 1010 1000 - 0000 0000 - 0000 0101
认识到这两种格式代表相同的数字对于以后理解概念很重要。
尽管 IPv4 和 IPv6 在协议和后台功能方面存在一些其他差异,但最显着的差异是地址空间。IPv6 将地址表示为 128 位数字。从这个角度来看,这意味着 IPv6的地址空间是 IPv4 的7.9×10 28倍。
为了表达这个扩展的地址范围,IPv6 通常被写成四个十六进制数字的八个段。十六进制数字通过使用数字 0-9 来表示数字 0-15,以及数字 a-f 来表示更高的值。典型的 IPv6 地址可能如下所示:
1203:8fe0:fe80:b897:8990:8a7c:99bf:323d
您可能还会看到这些地址以紧凑的格式编写。IPv6 的规则允许您从每个八位字节中删除任何前导零,并用双冒号 (::) 替换单个范围的零组。
例如,如果您在 IPv6 地址中有一个如下所示的组:
...:00bc:...
您可以改为键入:
...:bc:...
为了演示第二种情况,如果 IPv6 地址中有一个范围,其中多个组为零,如下所示:
...:18bc:0000:0000:0000:00ff:...
您可以像这样压缩它(也可以像我们上面所做的那样删除组的前导零):
...:18bc::ff...
每个地址只能执行一次此操作,否则将无法重建完整地址。
虽然 IPv6 每天都变得越来越普遍,但在本指南中,我们将使用 IPv4 地址探索其余概念,因为使用较小的地址空间更容易讨论。
IPv4 地址类和保留范围
IP 地址通常由两个独立的部分组成。地址的第一部分用于标识地址所属的网络。后面的部分用于指定该网络中的特定主机。
网络规范在哪里结束和主机规范从哪里开始取决于网络的配置方式。我们稍后会更彻底地讨论这个问题。
IPv4 地址传统上分为五个不同的“类”,命名为 A 到 E,旨在区分可用的可寻址 IPv4 空间的各个部分。这些由每个地址的前四位定义。您可以通过查看这些位来确定 IP 地址属于哪个类别。
这是一个转换表,它根据地址的前导位定义地址:
-
A级
0---
:如果 IPv4 地址的第一位为“0”,则表示该地址属于 A 类。这意味着从0.0.0.0
to 开始的127.255.255.255
任何地址都属于 A类。
-
B级
10--
:B 类包括从128.0.0.0
到的191.255.255.255
任何地址。这表示地址的第一位为“1”,但第二位没有“1”。
-
C级
110-
:C 类定义为地址范围从192.0.0.0
到223.255.255.255
。这表示所有地址的前两位为“1”,但第三位不为“1”。
-
D级
1110
:此类包括前三位为“111”,但下一位为“0”的地址。此地址范围包括从224.0.0.0
到 的239.255.255.255
地址。
-
E级
1111
: 此类定义240.0.0.0
和255.255.255.255
之间的地址。任何以四个“1”位开头的地址都包含在此类中。
D 类地址是为多播协议保留的,它允许在一次移动中将数据包发送到一组主机。E 类地址保留供将来和实验使用,并且在很大程度上不使用。
传统上,每个常规类 (A–C) 将地址的网络和主机部分划分为不同的部分,以适应不同规模的网络。A 类地址使用第一个八位字节的其余部分来表示网络,使用地址的其余部分来定义主机。这有利于定义几个网络,每个网络都有很多主机。
B 类地址使用前两个八位字节(第一个的其余部分和整个第二个)来定义网络,其余的用于定义每个网络上的主机。C 类地址使用前三个八位字节来定义网络,使用最后一个八位字节来定义该网络中的主机。
将大部分 IP 空间划分为类现在几乎是一个遗留概念。最初,这是作为快速耗尽 IPv4 地址问题的权宜之计(如果多台计算机位于不同的网络中,则它们可以具有相同的主机)。这在很大程度上被我们将在下面讨论的后来的方案所取代。
保留的私有范围
还有一些 IPv4 空间是为特定用途保留的。
最有用的保留范围之一是由地址指定的环回范围从127.0.0.0
到127.255.255.255
。每个主机使用此范围来测试其自身的网络。通常,这由以下范围内的第一个地址表示:127.0.0.1
。
每个普通类也有一个范围,用于指定专用网络地址。例如,对于 A 类地址,从10.0.0.0
to的地址10.255.255.255
保留用于专用网络分配。对于B类,这个范围是172.16.0.0
到172.31.255.255
。对于 C 类,192.168.0.0
to的范围192.168.255.255
保留供私人使用。
任何未直接连接到 Internet 的计算机(任何通过路由器或其他 NAT 系统的计算机)都可以随意使用这些地址。
为特定用例保留了额外的地址范围。您可以在此处找到保留地址的摘要。
网络掩码和子网
将网络划分为更小的网络部分的过程称为子网划分。这可以用于许多不同的目的,并有助于将主机组彼此隔离以更轻松地处理它们。
正如我们上面所讨论的,每个地址空间都分为网络部分和主机部分。其中每个占用的地址数量取决于地址所属的类。例如,对于 C 类地址,前 3 个八位字节用于描述网络。对于地址192.168.0.15
,该192.168.0
部分描述了网络,而15
描述了主机。
默认情况下,每个网络只有一个子网,其中包含其中定义的所有主机地址。网络掩码基本上是用于网络部分的地址位数量的规范。子网掩码是用于进一步划分网络的另一个网络掩码。
地址中被认为对描述网络很重要的每一位都应在网络掩码中表示为“1”。
例如,我们上面讨论的地址,192.168.0.15
可以用二进制表示如下:
1100 0000 - 1010 1000 - 0000 0000 - 0000 1111
如上所述,C 类地址的网络部分是前 3 个八位字节或前 24 位。由于这些是我们想要保留的重要位,因此网络掩码将是:
1111 1111 - 1111 1111 - 1111 1111 - 0000 0000
这可以用普通的 IPv4 格式写成255.255.255.0
. 网络掩码的二进制表示中任何为“0”的位都被视为地址的主机部分的一部分,并且可以是可变的。然而,对于正在讨论的网络或子网,“1”位是静态的。
我们通过AND
在地址和网络掩码之间应用按位运算来确定地址的网络部分。按位AND
操作将保存地址的网络部分并丢弃主机部分。在我们上面代表我们网络的例子中的结果是:
1100 0000 - 1010 1000 - 0000 0000 - 0000 0000
这可以表示为192.168.0.0
。主机规格则是这些原始值与主机部分之间的差异。在我们的例子中,主机是0000 1111
或15
。
子网划分的思想是取一个地址的一部分主机空间,作为附加的网络规范,再次划分地址空间。
例如,255.255.255.0
我们上面看到的网络掩码使我们在网络中有 254 台主机(您不能以 0 或 255 结尾,因为这些是保留的)。如果我们想把它分成两个子网,我们可以使用地址的传统主机部分的一位作为子网掩码。
所以,继续我们的例子,网络部分是:
1100 0000 - 1010 1000 - 0000 0000
主机部分是:
0000 1111
我们可以使用主机的第一位来指定子网。我们可以通过调整子网掩码来做到这一点:
1111 1111 - 1111 1111 - 1111 1111 - 0000 0000
对此:
1111 1111 - 1111 1111 - 1111 1111 - 1000 0000
在传统的 IPv4 表示法中,这将表示为192.168.0.128
. 我们在这里所做的是将最后一个八位字节的第一位指定为在寻址网络时重要。这有效地产生了两个子网。第一个子网是从192.168.0.1
到192.168.0.127
。第二个子网包含了主机192.168.0.129
到192.168.0.255
。传统上,子网本身不得用作地址。
如果我们将主机空间中的更多位用于网络,我们可以获得越来越多的子网。
CIDR 表示法
开发了一种称为无类别域间路由或 CIDR 的系统作为传统子网划分的替代方案。这个想法是你可以在 IP 地址本身中添加一个关于构成路由或网络部分的有效位数量的规范。
例如,我们可以通过使用 CIDR 表示法来表达 IP 地址192.168.0.15
与网络掩码相关联的想法。这意味着给定 IP 地址的前 24 位被认为对网络路由很重要。255.255.255.0
192.168.0.15/24
这为我们提供了一些有趣的可能性。我们可以使用这些来引用“超网”。在这种情况下,我们指的是使用传统子网掩码无法实现的更具包容性的地址范围。例如,在 C 类网络中,如上所示,我们无法组合来自网络的地址192.168.0.0
,192.168.1.0
因为 C 类地址的网络掩码是255.255.255.0
。
但是,使用 CIDR 表示法,我们可以通过将此块引用为 来组合这些块192.168.0.0/23
。这指定有 23 位用于我们所指的网络部分。
所以第一个网络 ( 192.168.0.0
) 可以用二进制表示如下:
1100 0000 - 1010 1000 - 0000 0000 - 0000 0000
而第二个网络 ( 192.168.1.0
) 将是这样的:
1100 0000 - 1010 1000 - 0000 0001 - 0000 0000
我们指定的 CIDR 地址表示前 23 位用于我们引用的网络块。这等效于255.255.254.0
, 或的网络掩码:
1111 1111 - 1111 1111 - 1111 1110 - 0000 0000
正如你所看到的,这个块的第 24 位可以是 0 或 1,它仍然会匹配,因为网络块只关心前 23 位数字。
CIDR 使我们能够更好地控制对连续 IP 地址块的寻址。这比我们最初讨论的子网划分有用得多。
结论
希望到现在为止,您应该对 IP 协议的一些网络影响有了实际的了解。虽然处理这种类型的网络并不总是直观的,有时可能很难处理,但了解正在发生的事情以便正确配置您的软件和组件非常重要。
网上有各种计算器和工具,可以帮助您理解其中一些概念,并通过输入某些信息来获得您需要的正确地址和范围。CIDR.xyz提供从基于十进制的 IP 地址到八位字节的转换,并让您可视化不同的 CIDR 网络掩码。