假设给出两个IPv6地址ip1(abc :: 1/64),ip2(abc :: 2/64),确定它们是否属于同一子网的算法是什么?
对于IPv4,一个地址中的每个八位字节都用子网八位字节屏蔽,结果与第二个地址的类似练习的结果进行比较。我们可以为IPv6地址中的每个hextet做类似的事情吗?
另外,在IPv6中,前缀长度/ 64等于'ffff:ffff:ffff:ffff ::'?网络掩码如何用IPv6地址格式表示?
谢谢!
答案 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