首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IS_IPV4_COMPAT使用不推荐的RFC-4291

IS_IPV4_COMPAT使用不推荐的RFC-4291
EN

Stack Overflow用户
提问于 2013-10-24 13:31:31
回答 1查看 222关注 0票数 2

在MySQL 5.6中,添加了一些与IPv6相关的函数。

我想知道为什么新函数IS_IPV4_COMPAT(expr)使用废弃的RFC-4291来检查给定的binary地址是否是与IPv6 4兼容的有效IPv6地址。

MySQL文档说:

此函数将以数字形式表示的IPv6地址作为二进制字符串,由INET6_ATON()返回。如果参数是有效的IPv6 4兼容的IPv6地址,则返回1,否则返回0。IPv4 4兼容地址具有::ipv4_address格式。

代码语言:javascript
复制
mysql> SELECT IS_IPV4_COMPAT(INET6_ATON('::10.0.5.9'));
    -> 1
mysql> SELECT IS_IPV4_COMPAT(INET6_ATON('::ffff:10.0.5.9'));
    -> 0
代码语言:javascript
复制
But the [RFC-4291](https://www.rfc-editor.org/rfc/rfc4291#section-2.5.5) says:

    +--------------------------------------+--------------------------+
    |                80 bits               | 16 |      32 bits        |
    +--------------------------------------+--------------------------+
    |0000..............................0000|0000|    IPv4 address     |
    +--------------------------------------+----+---------------------+

> The "IPv4-Compatible IPv6 address" is now deprecated because the current IPv6 transition mechanisms no longer use these addresses. New or updated implementations are not required to support this address type.

    +--------------------------------------+----+---------------------+
    |                80 bits               | 16 |      32 bits        |
    +--------------------------------------+--------------------------+
    |0000..............................0000|FFFF|    IPv4 address     |
    +--------------------------------------+----+---------------------+

> See [RFC4038](https://www.rfc-editor.org/rfc/rfc4038) for background on the usage of the "IPv4-mapped IPv6 address".

**Which format should I use to store IPv4 addresses within a IPv6 context?**
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-24 13:46:14

在IPv4网络中有两种解决IPv6的方法。“映射”地址方案和“兼容性”地址。RFC-4291讨论了两者。MySQL允许您分别查询这两种情况。自那时以来,compat计划已被否决。

IS_IPV4_COMPAT()用于compat地址方案。尽管这是不推荐的,但是有实现它的实现,并且仍然在使用中,人们可能需要将它们存储在数据库中。

如果您想要映射地址方案的行为,请使用IS_IPV4_MAPPED。

您应该使用哪种格式取决于您需要将它们用于什么。例如,如果您存储计算机配置输入的地址,则需要知道它们支持哪种格式。如果您不知道,请使用更新的当前格式(::ffff:10.0.5.9)

如果您需要支持这两种格式,请使用IS_IPV4_COMPAT(field) or IS_IPV4_MAPPED(field)进行查询。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19567431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档