IPv6子网划分查询

发布于 2024-12-09 03:58:56 字数 262 浏览 0 评论 0原文

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

对于 IPv4,一个地址中的每个八位字节都用子网八位字节进行掩码,并将结果与​​第二个地址的类似练习的结果进行比较。我们可以对 IPv6 地址中的每个十六进制执行类似的操作吗?

另外,在 IPv6 中,前缀长度 /64 是否相当于“ffff:ffff:ffff:ffff::”? IPv6 地址格式中的网络掩码如何表示?

谢谢!

Supposing two IPv6 addresses ip1 (abc::1/64), ip2 (abc::2/64) are given, what's the algorithm to determine if they're part of the same subnet or not?

For IPv4, each octet in one address is masked with the subnet octet and the result compared with the result of a similar exercise for the second address. Could we do a similar thing for the each hextet in the IPv6 address?

Also, in IPv6, is a prefix length /64 equivalent to 'ffff:ffff:ffff:ffff::'? How is the netmask represented in IPv6 address format?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晒暮凉 2024-12-16 03:58:56

假设有两个 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,一个地址中的每个八位字节都用子网八位字节进行掩码
并将结果与​​类似练习的结果进行比较
第二个地址。我们可以对每个六边形做类似的事情吗?
IPv6 地址?

实际上,您屏蔽的是位,而不是八位位组。但您仍然可以使用相同的技术。将地址转换为位,并使用与前缀长度对应的位序列对其进行掩码。因此,/64 将是值为 1 的 64 位,后跟值为 0 的 64 位。对于 /48,它将是值为 1 的 48 位,后跟值为 0 的 80 位。

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

通常不需要,但 'ffff:ffff:ffff:ffff::' 对应于 /64 网络掩码。

Supposing two IPv6 addresses ip1 (abc::1/64), ip2 (abc::2/64) are
given, what's the algorithm to determine if they're part of the same
subnet or not?

They are on the same subnet if the first 64 bits are equal. These are the first four 'blocks' in the address. If you write the full addresses they become 0abc:0000:0000:0000:0000:0000:0000:0001 and 0abc:0000:0000:0000:0000:0000:0000:0002. The first 64 bits (the 0abc:0000:0000:0000: part) is equal, so they are on the same subnet.

For IPv4, each octet in one address is masked with the subnet octet
and the result compared with the result of a similar exercise for the
second address. Could we do a similar thing for the each hextet in the
IPv6 address?

Actually, you mask the bits, not the octet. But you can still use the same technique. Convert the address to bits and mask it with a bit sequence corresponding to the prefix length. So a /64 would be 64 bits with value 1 followed by 64 bits with value 0. For a /48 it would be 48 bits with value 1 followed by 80 bits with value 0.

Also, in IPv6, is a prefix length /64 equivalent to
'ffff:ffff:ffff:ffff::'? How is the netmask represented in IPv6
address format?

Usually you don't, but 'ffff:ffff:ffff:ffff::' corresponds to a /64 netmask.

等待圉鍢 2024-12-16 03:58:56

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 前缀长度转换为更易于在测试中使用的网络掩码。

IPv4 netmasks are a bit bogus because it allows people to specify masks like 255.0.0.255. IPv6 clarifies this by defining the term "prefix length" as the length of contiguous bits in the netmask.

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

If you have two addresses, IP#1 and IP#2 and a netmask NETMASK then to test if the two addresses in the same network then the following must be true:

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

This extends true for both IPv4 and IPv6, so all that is necessary is to convert IPv6 prefix lengths into a netmask that is easier to use in the test.

场罚期间 2024-12-16 03:58:56

路由查找的标准基数树 (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/

the standard Radix Tree (Trie) (Patricia ) implementation of the Route look up is available for IPv6 .

Netmask is represented as follows :

when we describe an IPv4 IP and network, we use a netmask to define the network. IPv6 has decided, rather than use the old 255.255.255.0 notation, that it's better just to use /# notation. So our netmask would be 128 to describe something similar to /32 (255.255.255.255) or one host. Note that expr 16 \* 8 gives us 128." [1]

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文