为什么 IP 地址列为 172.18.0.150/24?

为什么 IP 地址列为 172.18.0.150/24?

为什么 IP 地址会以 172.18.0.150/24 的形式列出?我的意思是,IP 是 172.18.0.150,但为什么它有 /24?然后无论它在哪个子网上,都应该是别人的担心,不是吗?

3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether f8:b1:56:ba:ae:ee brd ff:ff:ff:ff:ff:ff
inet 172.18.0.150/24 brd 172.18.0.255 scope global eth0

如果我想在另一台计算机上的某个接口(ethX)上访问 172.18.0.150,我可以在该计算机的路由表中添加:

ip 路由添加 172.18.0.150/25 dev ethX
或者
ip 路由添加 172.18.0.150/24 dev ethX
或者
ip 路由添加 172.18.0.150/23 dev ethX
或者
ip 路由添加 172.18.0.150/8 dev ethX

对吧?那么 /24 到底和我的 NIC 上的地址有什么关系呢?它似乎只与路由有关,不是吗?那么为什么要在 ip addr 中列出它呢?

172.18.0.150/24 和 172.18.0.150/8 是否在同一个“网络”上,或者这两个是完全不同的 IP 地址?

答案1

一些 IP 地址基础知识

IP 地址在内部表示为 32 位值。最上面的 N 位标识网络,其余数字标识网络中的主机。

让我们看两个示例 IP,首先看一下 32 位:

10101100000100100000000010010110
10101100000100100000000110010110

您可以将 IP 拆分为 8 位组(字节)并以十进制格式写入每个二进制文件,从而以更易于阅读的方式重写 IP:

分组:
10101100 00010010 00000000 10010110
10101100 00010010 00000001 10010110
分组和十进制:
172.18.0.150
172.18.1.150

现在的问题是“这些 IP 地址是否在同一个网络上”?这取决于网络配置。我们以网络掩码为例

11111111 11111111 11111111 00000000

(1 表示网络,0 表示主机。)

将其放在两个 IP 上,您会发现两个 IP 地址位于不同的网络上。如果掩码为 255.255.0.0,则它们位于同一网络上。

不同网络:
11111111 11111111 11111111 00000000
10101100 00010010 00000000 10010110
10101100 00010010 00000001 10010110
同一网络:
11111111 11111111 00000000 00000000
10101100 00010010 00000000 10010110
10101100 00010010 00000001 10010110

与 IP 地址一样,网络掩码也可以用十进制点分格式书写:255.255.255.0 或 255.255.0.0。如果您现在需要写出完整的 IP 和网络掩码,如 172.18.0.150/255.255.255.0 或 172.18.0.150/255.255.240.0,则需要写很多东西。更简短的写法是不给出网络掩码,而是给出网络掩码中 1 的数量:172.18.0.150/24 或 172.18.0.150/20。如您所知,1 始终位于最高位,因此“/24”或“/20”的含义非常明确。

一些路由基础知识

如果你还没有读过我的回答 MAC 地址的使用你现在可能就想这么做。

简而言之:如果计算机发送 IP 数据包,它首先会检查目标 IP 地址是否与计算机本身(源 IP)位于同一网络上。如果是,计算机可以直接将数据包发送到网络,目标计算机可以接收它。如果目标 IP 不在同一网络上,则计算机无法直接到达目标,而需要将数据包发送到下一个路由器。路由表会告诉路由器,对于哪些网络,它应该连接哪个路由器(例如“如果网络为 172.18.0.0/24,则路由器为 1.1.1.1”)。该路由器将再次检查它是否可以直接到达目标 IP,或者是否需要将数据包转发到下一个路由器。

如果您想查看计算机的路由表,可以使用ip route

请记住,在接收方,网络掩码并不重要。172.18.0.150/24 或 172.18.0.150/8 都是 172.18.0.150,如果计算机接收到 172.18.0.150 的数据包,它将使用它。网络掩码仅用于发送方。如果计算机 A 从地址 aaaa/n 向地址为 bbbb/m 的计算机 B 发送数据包,则发送方 A 将比较源地址 aaaa 的最高 n 位和 bbbb 的最高 n 位,如果两者相等,则 aaaa 和 bbbb 在同一个网络上(并且 n 必须等于 m),并且可以直接发送数据包。如果不相等,则网络不相等(它不介意 n 可能不等于 m),并且必须将数据包发送给将转发该数据包的路由器。

了解“ip route”输出

我们以具有两个 NIC 的计算机为例:

默认通过 192.168.178.3 dev eth1 proto 静态度量 1024
10.0.0.0/8 通过 172.16.1.1 dev eth0
169.254.0.0/16 dev eth1 范围链接度量 1000
172.16.0.0/16 dev eth0 proto 内核范围链接 src 172.16.126.31
192.168.178.0/24 dev eth1 proto 内核范围链接 src 192.168.178.21

第 3 行到第 5 行来自 NIC 上配置的 IP 地址(ip addr)。它们告诉计算机,如果要发送的数据包与网络 172.16.0.0/16 匹配,则应将其发送到 eth0(在我的情况下,其配置为 IP 地址 172.16.126.31)。第二行是我添加的特定路由。它表示发送到 10.0.0.0/8 的数据包应发送到 eth0 上的 172.16.1.1。第一行给出了用于不匹配任何其他给定网络的数据包的默认网关/路由器。

谁决定网络是什么样的?

在顶层RFC3330定义并非所有 IP 地址都广泛使用,而是保留某些范围用于特殊目的。网络 127.0.0.0/8 就是一个例子。该范围中最突出的地址是 127.0.0.1(名称:localhost),它标识您自己的计算机。当然,这个 IP 只在您自己的计算机上有用,因为发送到该网络的每个数据包都不会离开您的计算机。获取所有可能的 IP 地址并删除保留范围,您仍然有一个可用的网络池。这个大池由 ICANN 管理。下一级是五个区域互联网注册机构(如 RIPE NCC)。他们从 ICANN 获取 IP 地址范围并将其出售给自己的客户 - 本地互联网注册机构。这些注册机构将它们卖给最终客户(例如公司)。

如何划分整个 IP 地址范围的决定权在池中的每个管理员手中。假设您是 ICANN 并管理 50.0.0.0/8-100.0.0.0/8 的范围。如果现在 RIPE NCC 需要一些 IP 地址,您可以向他们提供 50.0.0.0/16 或 50.0.0.0/8 或 50.0.0.0/8 到 60.0.0.0/8。RIPE NCC 和本地互联网注册机构也是如此。他们可以提供大型或小型网络。在过去的美好时光里,注册机构非常不情愿,因此仍然存在拥有广泛地址范围的大型大学或公司,而这些地址范围他们从未完全需要过。一些大学拥有 /8 网络,因此他们有 24 位主机。这意味着他们可以处理超过 1600 万台计算机。如果他们只有几千台计算机,则意味着为该客户保留了数百万个 IP 地址但从未使用过 - 这是一种浪费。所以最近你不再获得大范围,你必须争论是否真的需要大范围。

不管您如何决定销售 IP 地址范围(网络),您都必须记住,互联网中的大型路由器需要知道如何访问几乎所有现有网络。如果您销售非常小的网络,那么最终可能会出现 10.0.0.0/24 和 10.1.0.0/24 位于欧洲、10.0.1.0/24 和 10.1.1.0/24 位于亚洲、10.0.2.0/24 和 10.1.2.0/24 位于非洲的情况。这意味着路由器最终会在路由表中留下大量小型网络条目。如果您将 10.0.0.0/16 提供给欧洲、将 10.1.0.0/16 提供给亚洲、将 10.2.0.0/16 提供给非洲,那么路由表中将只有三个较大网络的条目。

但那不是我们的问题,而是互联网注册机构的事。不完全是,因为……

我何时以及如何设置网络?

如果您运行公司的路由器,您可能会获得一个范围 40.41.0.0/16,并根据需要将这些 IP 地址分配给您的计算机。但在这种情况下,所有计算机都应位于同一物理网络上(中间没有路由器)。这可能会给大型网络带来不良性能,因此您可能需要拆分网络。例如,如果您有两栋建筑,那么您可以将 40.41.0.0/17 分配给一号建筑,将 40.41.128.0/17 分配给二号建筑。

私有 IP 地址

如果您正在运行宽带路由器或公司的路由器,您可能已经看到过像 172.16.0.0/12 这样的私有网络 IP 地址。您提供的 IP 地址 (172.18.0.150) 就是这样一个私有 IP 地址(您可以使用新学到的网络掩码轻松检查)。如果您从本地互联网注册处获得了 N 个公共 IP 地址(在普通 ISP 的情况下,N=1),但有 M>N 个设备需要 IP 地址,则可以使用这些地址。在这种情况下,路由器有一个公共 IP 地址(用于所有往返互联网的流量),还有一个具有私有 IP 地址的私有网络。在您的情况下,路由器只占用私有网络 172.18.0.0/24,并将该网络的 IP 地址提供给您的每台 PC。

但是如果其他人的路由器也使用 172.18.0.0/24 怎么办?令人惊讶的是,这不是问题。这是因为 172.16.0.0/12 是一个私有地址范围。您永远不会在公共互联网上看到该范围的 IP 地址。如果您向互联网发送数据包,并将 172.18.0.150 作为源地址,则路由器将用 ISP 提供给您的公共 IP 地址替换 172.18.0.150。如果路由器收到发送到公共 IP 地址的数据包,它会确定应将数据包发送到您的哪台计算机,并将目标 IP 地址更改为您计算机的私有网络 IP 地址。

答案2

当然,你可以让每台主机与路由器建立点对点连接。但是,这样一来,所有流量都必须经过路由器。显然,这是非常低效的。

如果您告诉您的计算机“从 192.168.0.1 到 192.168.0.254 的所有 IP 地址都可以通过此链接直接访问”(192.168.0.X/24),它可以使用更高效的本地网络传输直接与同一网络上的目的地进行通信。

答案3

这永远不是别人的担忧。

了解 IP 地址所属的子网是件好事。

想象一下你使用/25。在这种情况下172.18.0.127,和172.18.0.128似乎在同一个子网上,因为它们是连续的,但它们在不同的子网

有必要将地址写成172.18.0.127/25172.18.0.128/25。这样您就知道每个地址在哪里。

这是一个简单的例子,但如果范围172.18.0.128 to 172.18.0.255再次划分子网,情况可能会变得更糟,例如使用/26

答案4

斜线后面的部分表示要使用的子网掩码位数。例如:

192.168.1.1/24 is 192.168.1.1 255.255.255.0

255.255.255.0正在使用2432 bits创建子网。

二进制形式如下:

11111111.11111111.11111111.00000000

因此,如果你想知道你是谁,你是 172.180.0.150 下的某个人,但是哪一个,以及如何找到你..等等.

相关内容