IPv4作为IPv6地址的旧定义是(使用127.0.0.1):
0000:0000:0000:0000:0000:0000:7f00:0001
而当前定义的第6个组件为FFFF:
0000:0000:0000:0000:0000:ffff:7f00:0001
这些应该被认为是等同的,还是应该对它们进行一些微妙的区分?目前,我正在研究价值持续存在的背景以及对假设的影响。
答案 0 :(得分:4)
您的第一个示例是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位的地址。对于这些地址,混合符号是 如果满足以下条件,建议:地址可以 区别在于将IPv4地址嵌入低32位 仅通过使用众所周知的前缀从地址字段中获取。 此类前缀在[RFC4291]和[RFC2765]中定义 这篇文章。如果通过某种外部方法知道给定的 prefix用于嵌入IPv4,它可以表示为混合 符号。提供指定前缀的选项的工具 (或不是)表示为混合符号可能有用。
这里有一个权衡,建议实现一个 搜索中的完全匹配(无点小数)和a 建议帮助地址的可读性(小数点 只要有可能)不会产生相同的解决方案。以上 建议旨在尽可能地确定代表性 可能留下未来众所周知的机会 前缀以人性化的方式表示为工具 调整到新分配的前缀。
应该应用Section 4中提到的文本表示方法 对于前导十六进制部分(即:: ffff:192.0.2.1而不是 0:0:0:0:0:FFFF:192.0.2.1)