对于您的示例172.16.0.0/16,172.16.0.0是 IPv4 网络地址和主机地址,但不是可用的主机地址。它可能是网络地址,也可能是具有不同掩码长度的可用主机地址(例如,它是具有/11或更短掩码长度的可用主机地址)。如果掩码长度为 ,它甚至可以是一个网络地址和一个可用的主机地址/31。告诉你掩码的/16长度(连续1位数),我称之为掩码长度(可以称为前缀长度,取决于上下文)。
00000000000000000000000000000000IPv4 地址是一个 32 位无符号整数(从to11111111111111111111111111111111或十进制0to的二进制基数4294967295)。不要将任何内容读入它以四个十进制八位字节表示的事实;那只是为了让人类更容易阅读;网络设备处理二进制数,而不是文本表示。
IPv4 的网络掩码也是一个 32 位无符号整数,但它由设置为 的连续位组成1,后跟设置为 的任何其他位0。掩码决定了IP地址的哪一部分是网络,哪一部分是网络中的主机号。
如果您按位AND对 IP 地址和掩码进行操作,您将获得网络地址。您需要以二进制形式进行 IP 数学运算;尝试使用小数会导致愚蠢的错误。
IPv4 address 172.16.0.0 -> 10101100000100000000000000000000
Mask length 16 -> 11111111111111110000000000000000
Bitwise AND -> ================================
IPv4 network address -> 10101100000100000000000000000000
如果您有地址和掩码,则您拥有计算有关 IPv4 地址的所有内容所需的一切。请参阅问题,如何计算前缀、网络、子网和主机号?了解如何进行 IP 数学运算。
IPv6 寻址的工作方式相同,只是 IPv6 地址是 128 位而不是 IPv4 的 32 位,并且网络中的所有 IPv6 地址都是可用的主机地址,因为 IPv6 没有广播。