我正在使用 Beaglebone Black,我想为其分配一个静态 IP 地址。我经历过这种情况教程我也知道如何分配静态 IP。但问题是,这些参数是什么意思;
iface enp0s25 inet 静态
address 192.168.0.11
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
地址:我们将接收 IP 数据包的 IP 地址。但是网络掩码、网络和广播的功能是什么?
我想将我的电脑连接到 BBB,我可以在哪个范围内为我的电脑分配一个 IP?
答案1
网络掩码决定了定义子网的“网络”IP 的部分。
如果您已经了解这些内容,请跳过有关 IP 地址为十六进制和二进制的整个部分。否则,请从这里开始:
为了简化解释,我们仅考虑 IPv4 地址。IP 地址实际上是十进制数。例如,当我 ping(或挖掘)google.com 时,我看到 IP 地址解析为 172.217.8.78。
如果我 ping 该地址:
ping 172.217.8.78
正如预期的那样,我收到了这个回复:
PING 2899904590 (172.217.8.78) 56(84) bytes of data.
您是否注意到响应开头的“2899904590”?请记住这个数字,我们继续...
将 Google IP 地址的每个八位字节转换为十六进制。十进制值 172 的等价值是十六进制值 AC。接下来,217 是 D9,8 是 08,78 是 4E。那么十六进制表示的 IP 地址就是 ACD90878。如果我将整个十六进制数字转换为十进制,我会得到 2899904590。这与我的 ping 命令返回的数字相同。现在,如果我这样做:
ping 2899904590
我得到了同样的答复:
PING 2899904590 (172.217.8.78) 56(84) bytes of data.
补充一下:你也可以直接 ping 十六进制值:
ping 0xACD90878
所有版本 4 IP 地址 (IPv4) 都只有 4 个十六进制八位字节。每个十六进制数字(0 到 F)由 4 个二进制位组成。一个“八位字节”是 2 个十六进制数字(00 到 FF),由 8 个(因此称为“八位字节”)二进制位组成。
现在让我们看看网络掩码在您的配置文件中。前 3 个八位字节都是 255,即十六进制 FF,即二进制 11111111。最后一个八位字节是 0,即十六进制 00,即二进制 00000000。掩码定义网络 IP 地址 192.168.0.0 的哪些位构成子网。当任何掩码位的值为 1 时,则相应的网络位是子网定义的一部分。由于网络掩码的前三个八位字节的位都是 1,因此网络 IP 的相应前三个八位字节 192.168.0 就是定义子网的字节。因此,网络 IP 的最后一个八位字节 0 不是子网定义的一部分,因此会被忽略。它可以设置为 0 到 255 之间的任何数字,但我们通常将其设置为 0。
此子网上的所有地址都必须以 192.168.0 开头,因为这是被屏蔽的网络 IP 的一部分。因此,此子网的 IP 范围可以从 192.168.0.1 到 192.168.0.254(最后一个八位字节始终保留 0 和 255)
逻辑与函数定义如下:二进制 1 与二进制 1 = 二进制 1。二进制 1 与二进制 0 = 二进制 0。二进制 0 与二进制 1 = 二进制 0。二进制 0 与二进制 0 = 二进制 0(因此任何与 0 进行与运算的结果都为 0)。
播送是广播消息可以发送到的 IP 范围。广播消息是发送到子网上的所有 IP 的消息,而不是发送到特定 IP。在这种情况下,可用的 IP 必须在子网 (192.168.0) 上,并且可以是与广播 IP (255) 的最后一个八位字节进行“AND”运算的任何二进制数。由于 255 在二进制中是 11111111,因此将这些二进制位中的每一个与任何 IP 象限的每个二进制位进行 AND 运算,其值从 00000000 到 11111111(0 到 255)即可返回原始 IP 象限的值。因此,广播范围是从 192.168.0.1 到 192.168.0.254。
综上所述:如果 IP 地址与网络掩码的 AND 运算结果 = 网络值与网络掩码的 AND 运算结果,则该 IP 地址位于子网上。在这种情况下:
192.168.0.99 (address) AND 255.255.255.0 (netmask) = 192.168.0.0
和
192.168.0.0 (network) AND 255.255.255.0 (netmask) = 192.168.0.0
因此 192.168.0.99 在子网上 - 我可以直接向该地址发送 IP 数据包。
反过来:
192.168.88.99 (address) AND 255.255.255.0 (netmask) = 192.168.88.0
和
192.168.0.0 (network) AND 255.255.255.0 (netmask) = 192.168.0.0
这两个值不同,这意味着 192.168.88.99 不在我的子网中 - 我必须通过网关发送到该 IP。