为什么ip地址被列为172.18.0.150/24?

Joh*_*Tex 8 ip-address subnet

为什么 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
Run Code Online (Sandbox Code Playgroud)

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

ip route add 172.18.0.150/25 dev ethX

ip route add 172.18.0.150/24 dev ethX

ip route add 172.18.0.150/23 dev ethX

ip route add 172.18.0.150/8 dev eth

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

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

Wer*_*nze 13

一些 IP 地址基础知识

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

我们来看两个例子IP,我们先来看32位的:

10101100000100100000000010010110
10101100000100100000000110010110

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

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

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

11111111 11111111 11111111 00000000

(那些用于网络,零用于主机。)

将其放在两个 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 向计算机 B 发送地址为 bbbb/m 的数据包,则发送方 A 将比较源地址 aaaa 的最高 n 位和 bbbb 的最高 n 位 如果两者相等,则 aaaa 和 bbbb在同一个网络上(并且 n 必须等于 m)并且可以直接发送数据包。如果不是,则网络不相等(它不介意 n 可能不等于 m)并且必须将数据包发送到将转发数据包的路由器。

了解“ip route”输出

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

默认通过 192.168.178.3 dev eth1 proto static metric 1024
10.0.0.0/8 via 172.16.1.1 dev eth0
169.254.0.0/16 dev eth1 scope link metric 1000
172.16.0.0.16 proto
scope22.16/16 178.0/24 dev eth1 proto 内核范围链接 src 192.168.178.21

第 3 行到第 5 行源自在 NIC ( ip addr)上配置的 IP 地址。它们告诉计算机,如果要发送的数据包与网络 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 地址(您可以轻松查看有关网络掩码的新知识)。如果您从本地 Internet 注册中心获得 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 地址。如果您向 Internet 发送数据包,将 172.18.0.150 作为源地址,则路由器会将 172.18.0.150 替换为 ISP 给您的公共 IP 地址。如果路由器接收到发送到公共 IP 地址的数据包,它会确定它将数据包发送到您的哪台计算机,并将目标 IP 地址更改为您计算机的专用网络 IP 地址。

  • @JohnyTex 如果 n!=m 你会遇到网络配置错误。使用 A 172.18.0.150/24 和 B 172.18.0.151/8 的两台计算机可以工作,但如果添加另一台 C 172.18.1.2/8 的计算机会导致问题。B 和 C 将直接发送到 A(同一网络),但 A 需要通过路由器(不同网络)发送到 C。这种不一致会导致问题。 (2认同)