2009-12-09 79 views
2

如果我有一个私有IP地址块,如171.58.0.0/12,这是否意味着我本质上是按位AND与32位版本的171.58.0.0与32位1,其中最后12位是0' d出来,以获得该范围内可接受的私人IP地址的最长前缀?如何解释IP地址块?

10101011.00111010.00000000.00000000 (171.58.0.0) AND 
11111111.11111111.11110000.00000000 (12 bit mask?) 

= 

10101011.00111010.00000000.00000000 (Longest Prefix of Private IP addresses) 

获取前缀可接受的私有IP地址?

谢谢!

+0

能否请您检查您所谈论的网络分配? – 2009-12-09 09:11:16

回答

7

你创建一个32位的数字,它的高12位设置为1,然后将它与给定的IP地址进行比较,并获得网络地址。除了保留的所有零(网络地址本身)和全1(广播地址)之外,其余位可用于主机地址。在你的情况将是:

171.58.0.0 = network 
171.58.0.1 to 171.58.15.254 = hosts 
171.58.15.255 = broadcast 

编辑。请参阅Tony van der Peet的答案,因为它为我的答案增加了有价值的信息。

+0

广播地址不必是全1地址。虽然它几乎总是,并且可能已经标准化了。在Linux上,广播地址可以与网络掩码分开配置。 – 2009-12-09 08:23:30

+0

也许我很困惑,但也许你指的是*多播*地址(我不知道,无论如何)。 – Konamiman 2009-12-09 08:27:17

+1

过去,所有0和广播地址的全1都已被允许。现在所有1都是更标准的,我相信有一个MIB变量可以控制0或1。我相当确信,所有0作为地址是为了避免与旧标准冲突而保留的。当然在/ 31或/ 32网络中没有广播地址! – 2009-12-09 08:57:40

1
+0

我被拒绝了什么?为了说提问者是对的,即使我没有检查他的数字?我注意到他颠倒了通常惯例的位掩码,但这是找到网络地址的正确方法。这就是为什么我将这些符号链接到一些文档。 – 2009-12-09 18:51:35

+0

我没有投票给你。我没有检查过参考文献,但它们都看起来很有用,所以猜猜看,我会给你投票。 – 2009-12-09 20:49:01

+0

与我当天的最后一票不会少于。 – 2009-12-09 20:49:57

2

@Konamiman - 你的答案是(+1)几乎现货,但我无法避免的,因为问题的奇怪的东西回答。

首先,我想强调一下,OP得到12位反转,/ 12表示12位左边的1,而不是右边的12位。

其次,二进制中的171.58.0.0/12是10101011.00111010.00000000.00000000(与OP状态一样),其掩码为11111111.11110000.00000000.00000000,这意味着在地址的主机地址部分有非零位。据我所知,这不是表达地址的的方法,即使它是该子网中的有效单个地址。

更明智的是,您可以将其表示为171.48.0.0/12(这是否是一个错字?),这意味着主机部分全部为零。 171.58.0.0的最小有效网络掩码为/ 15。编辑:看看这个IP addressing guide。它有点过时了,因为它引用了A,B,C类,但是对于网络掩码来说是一个有用的备忘单。

+0

哎呀,我没有注意到位反转。我只是依靠他提供的示例二进制表示。 – Konamiman 2009-12-09 09:06:26

+0

感谢您的澄清。我在地址的主机地址部分有非零的位,因为这个例子是人为的......我只是编了数字:) – ash 2009-12-09 09:07:29

+0

什么叫!我们都不能看见树木。 – 2009-12-09 09:12:11

0

假设这是基于CIDR,maybe`

Mask:255.240.0.0  Host/Net - 1048574 
Network   Broadcast 
171.48.0.0  171.63.255.255