如何使用ip地址和IPv4Mask获取IP地址范围是多少

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ip地址和IPv4Mask获取IP地址范围是多少相关的知识,希望对你有一定的参考价值。

主要是把 ip地址和 subnet mask 在二进制下进行对比

ip地址分成两个部分,网络号和主机号。凡是在 subnet mask 对比下, “1”代表了网络号,“0”代表了主机号

然后对比后,把主机号最小(全0)和最大(全1)找出来就是你要找的地址了范围

例如
要找出10.254.0.1/8 的地址范围,首先把地址和 subnet mask 换成二进制

00001010.11111110.00000000.00000001 = IPv4 address

11111111.00000000.00000000.00000000 = Subnet mask

对比后,前8位就是你的网络号,这8位里,有任何变动就代表了不同的网络,如果网络号的8位没有变动,而是主机号(8位以后)的任何变动,代表了在同一个网络里,只是不同的主机,剩下的就是把主机号换成最小(全0)和最大(全1)就知道地址范围了

00001010.00000000.00000000.0000000 = 10.0.0.0

00001010.11111111.11111111.11111111 = 10.255.255.255

那么 从 10.254.0.1/8可以得到的信息如以下

    Ipv4 address = 10.254.0.1

    subnet mask = 255.0.0.0

    网络地址 = 10.0.0.0

    广播地址 = 10.255.255.255

    地址范围 = 10.0.0.0 - 10.255.255.255

    可使用地址 = 10.0.0.1 - 10.255.255.254

*网络地址 = 每个网络中的第一个地址

*广播地址 = 每个网络中的最后一个地址

*以上两个地址是保留的,一般上不能被主机使用

如果还有疑问,请继续追问

参考技术A 什么

如何查找IP地址范围

【中文标题】如何查找IP地址范围【英文标题】:How to find IP address range 【发布时间】:2013-11-23 07:55:57 【问题描述】:

当我使用这个命令扫描哪个 IP 地址时

# nmap -sP 192.168.0.120/25

当我有地址和子网时,请你帮我如何获取 IP 范围。因为我试图理解这一点,但直到现在还没有结果..提前谢谢

【问题讨论】:

有没有人可以帮帮我,还是我的问题这么糊涂???? 没有愚蠢的问题,人们是来帮忙的:) 【参考方案1】:

您的命令中的网络使用CIDR 表示法。第一部分(/ 之前)定义哪个网络,第二部分定义设置了多少位网络掩码。 IPv4 地址是 4 个字节或 32 位信息。 /25 表示该地址的 25 位用于表示网络,32 - 25 = 7 位用于寻址网络上的主机。一个/25 网络可以容纳2^7 = 128 主机,减去网络和广播地址。要获取网络地址(地址块的开头),您需要获取给定的地址并按位 - 并使用2^32 - 2^7。在这种情况下(使用 Python):

>>> # Get the integer value of the address
>>> import struct
>>> ip = struct.unpack(">I", struct.pack("4B", 192, 168, 0, 120))[0]
>>> bin(ip)
'0b11000000101010000000000001111000'
>>> # Bitwise-and with the netmask
>>> net = ip & (2**32 - 2**7)
>>> bin(net)
'0b11000000101010000000000000000000'
>>> # Convert back to dotted-decimal
>>> struct.unpack("4B", struct.pack(">I", net))
(192, 168, 0, 0)

所以网络地址是192.168.0.0,你有128个地址,所以你的目标范围是192.168.0.0 - 192.168.0.127。

【讨论】:

以上是关于如何使用ip地址和IPv4Mask获取IP地址范围是多少的主要内容,如果未能解决你的问题,请参考以下文章

如何从 IP 范围/子网中获取随机 IP?

如何通过IP地址查看城市

如何检查IP地址在PHP的两个IP范围内?

如何使用CODESYS的OPCUA库获取IP地址

Java - 打印给定范围内的随机 IP 地址

Java - 在给定范围内打印随机IP地址