查询IPv6子网

时间:2011-10-10 09:51:21

标签: networking ipv6

假设给出两个IPv6地址ip1(abc :: 1/64),ip2(abc :: 2/64),确定它们是否属于同一子网的算法是什么?

对于IPv4,一个地址中的每个八位字节都用子网八位字节屏蔽,结果与第二个地址的类似练习的结果进行比较。我们可以为IPv6地址中的每个hextet做类似的事情吗?

另外,在IPv6中,前缀长度/ 64等于'ffff:ffff:ffff:ffff ::'?网络掩码如何用IPv6地址格式表示?

谢谢!

3 个答案:

答案 0 :(得分:1)

  

假设有两个IPv6地址ip1(abc :: 1/64),ip2(abc :: 2/64)   给定,确定它们是否属于同一个算法的算法是什么   子网与否?

如果前64位相同,它们在同一子网上。这些是地址中的前四个“块”。如果您写完整地址,则它们变为0abc:0000:0000:0000:0000:0000:0000:0001和0abc:0000:0000:0000:0000:0000:0000:0002。前64位(0abc:0000:0000:0000:部分)相等,因此它们位于同一子网上。

  

对于IPv4,一个地址中的每个八位字节都用子网八位字节屏蔽   并将结果与​​类似运动的结果进行了比较   第二个地址。我们可以为每个hextet做类似的事情   IPv6地址?

实际上,你掩盖了比特,而不是八位字节。但你仍然可以使用相同的技术。将地址转换为位并使用与前缀长度对应的位序列对其进行掩码。所以a / 64将是64位,值为1,后跟64位,值为0.对于/ 48,它将是48位,值为1,后跟80位,值为0。

  

此外,在IPv6中,前缀长度/ 64等于   'FFFF:FFFF:FFFF:FFFF ::'?如何在IPv6中表示网络掩码   地址格式?

通常你没有,但'ffff:ffff:ffff:ffff ::'对应于/ 64网络掩码。

答案 1 :(得分:1)

IPv4网络掩码有点虚假,因为它允许人们指定像255.0.0.255这样的掩码。 IPv6通过将术语“前缀长度”定义为网络掩码中连续位的长度来阐明这一点。

255.0.0.0     ≡ ff00::      ≡ 8-bit prefix
255.255.0.0   ≡ ffff::      ≡ 16-bit prefix
255.255.192.0 ≡ ffff:C000:: ≡ 18-bit prefix

如果您有两个地址,IP#1和IP#2以及网络掩码NETMASK,那么要测试同一网络中的两个地址是否必须为真:

IP#1 & NETMASK == IP#2 & NETMASK

这适用于IPv4和IPv6,所以所有必要的是将IPv6前缀长度转换为更容易在测试中使用的网络掩码。

答案 2 :(得分:0)

路由查找的标准基数树(Trie)(Patricia)实现可用于IPv6。

网络掩码表示如下:

  

当我们描述IPv4 IP和网络时,我们使用网络掩码来定义网络。 IPv6决定使用/#表示法,而不是使用旧的255.255.255.0表示法。所以我们的网络掩码将是128来描述类似于/ 32(255.255.255.255)或一个主机的东西。请注意expr 16 \* 8给我们128.“[1]

[1] http://www.linux-sxs.org/networking/ipv6_for_beginners.html

[2] http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/