【问题标题】:Equivalence of old & new IPv4-Mapped IPv6 representation?新旧 IPv4 映射 IPv6 表示的等价性?
【发布时间】:2016-07-18 23:38:06
【问题描述】:

IPv4 作为 IPv6 地址的旧定义是(使用 127.0.0.1):

0000:0000:0000:0000:0000:0000:7f00:0001

而当前定义的第 6 个组件为 FFFF:

0000:0000:0000:0000:0000:ffff:7f00:0001

这些应该被认为是等价的,还是在对待它们的方式上有一些微妙的区别?目前,我正在研究价值持续存在的位置以及对假设的影响。

【问题讨论】:

    标签: ipv6


    【解决方案1】:

    您的第一个示例是与 IPv4 兼容的 IPv6 地址,这些地址已被弃用。

    您的第二个示例是 IPv4 映射的 IPv6 地址。允许并鼓励您使用混合表示法(例如 ::ffff:127.0.0.1)或 IPv6 表示法(例如 ::ffff:7f00:0001)。

    RFC 5952, A Recommendation for IPv6 Address Text Representation,是一个讨论 IPv6 表示的标准。它指出:

    5.特殊地址的文本表示

    地址,例如 IPv4 映射的 IPv6 地址、ISATAP [RFC5214] 和 IPv4 可翻译地址 [ADDR-FORMAT] 具有 IPv4 地址 嵌入地址的低 32 位。这些地址 有可能混合十六进制和点的特殊表示 十进制表示法。十进制表示法只能用于 地址的最后 32 位。对于这些地址,混合表示法是 如果满足以下条件,建议使用:地址可以是 区别在于在低 32 位中嵌入了 IPv4 地址 仅通过使用众所周知的前缀从地址字段中获取。 此类前缀在 [RFC4291] 和 [RFC2765] 中定义 这篇写作。如果通过某种外部方法知道给定的 前缀用于嵌入 IPv4,它可以表示为混合 符号。提供选项以指定前缀的工具 (或不)表示为混合符号可能有用。

    这里有一个权衡,即建议实现 搜索中的完全匹配(没有点小数)和 帮助地址可读性的建议(点十进制 尽可能)不会导致相同的解决方案。以上 建议旨在尽可能多地固定代表性 可能的同时留给未来知名的机会 前缀以人类友好的方式表示为工具 适应新分配的前缀。

    应该应用Section 4中提到的文本表示方法 对于前导十六进制部分(即 ::ffff:192.0.2.1 而不是 0:0:0:0:0:ffff:192.0.2.1)。

    【讨论】:

    • 如果我确实在我的数据库(或任何数据源)中遇到了与 IPv4 兼容的 IPv6 地址,将其简单地转换为 IPv4 映射的 IPv6 地址是否安全?
    • 它应该是强制性的,因为 IPv4 兼容地址已被弃用,但这取决于使用地址的内容以及使用方式。如果它确实是数据库中的 IPv4 地址,它使用 IPv6 表示法来存储 IPv4 和 IPv6 地址,那么您可能不想这样做。如果它确实是一个 IPv6 地址,那么您可能确实想要更改它。
    • 所以,如果我理解:在数据库中同时存储 IPV4 和 IPv6 地址的字段,那么我将使用“IPv4 兼容”地址进行 IPv4 和“IPv4 映射”的连接通过 IPv6 建立的连接的 IPv6 地址?
    • 这可能会变得一团糟。 IPv4 映射的 IPv6 地址实际上是一个没有太多用处的杂物,除非有人真的不知道他们在做什么,否则你不会经常找到它们。我也不提倡在数据库中混合 IPv4 和 IPv6 地址,因为它们是两个独立的协议。这真的要归结为什么被用于什么。
    • 仅供参考,这种“推荐”方式导致this ABNF 多么美好的世界
    猜你喜欢
    • 2014-11-01
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2015-01-17
    相关资源
    最近更新 更多