Mysql IS_IPV4_COMPAT使用不推荐的RFC-4291

Mysql IS_IPV4_COMPAT使用不推荐的RFC-4291,mysql,ipv6,ipv4,Mysql,Ipv6,Ipv4,从MySQL 5.6开始,它添加了一些与IPv6相关的功能 我想知道为什么新函数是\u IPV4\u COMPAT(expr)使用不推荐的RFC-4291来检查给定的二进制地址是否是有效的与IPV4兼容的IPv6地址 此函数采用由INET6_ATON()返回的以数字形式表示为二进制字符串的IPv6地址。如果参数是有效的IPv4兼容IPv6地址,则返回1,否则返回0。IPv4兼容地址的格式为::IPv4\U地址 ``` 但报告说: “IPv4兼容IPv6地址”现在已被弃用,因为当前的IPv6转换

从MySQL 5.6开始,它添加了一些与IPv6相关的功能

我想知道为什么新函数
是\u IPV4\u COMPAT(expr)
使用不推荐的RFC-4291来检查给定的
二进制
地址是否是有效的与IPV4兼容的IPv6地址

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

```

但报告说:

“IPv4兼容IPv6地址”现在已被弃用,因为当前的IPv6转换机制不再使用这些地址。支持此地址类型不需要新的或更新的实现

有关使用“IPv4映射IPv6地址”的背景信息,请参阅


我应该使用哪种格式在IPv6上下文中存储IPv4地址?

在IPv6网络中寻址IPv4有两种方法。“映射”地址方案和“兼容性”地址。RFC-4291讨论了两者。MySQL允许您分别查询这两个数据库。 compat地址方案已被弃用

IS_IPV4_COMPAT()用于兼容地址方案。尽管它已被弃用,但仍有一些实现实现了它,并且仍在使用中,人们可能需要将它们存储在数据库中

如果需要映射的地址方案的行为,请使用已映射的IPV4

您应该使用哪种格式取决于您需要使用它们的目的。e、 如果你储存地址 这些是计算机配置的输入,您需要知道它们支持哪种格式。如果您不知道,请使用更新的当前格式(::ffff:10.0.5.9)


如果您需要支持这两种格式,请使用
IS\u IPV4\u COMPAT(字段)或IS\u IPV4\u MAPPED(字段)
wyhen查询。

我以前没有注意到这个函数-谢谢。可能有道理,但应更好地记录
IPv4兼容地址
vs.
IPv4映射地址
没有真正的帮助,也没有描述任何区别。@实际上,您不应该在任何地方看到IPv4兼容地址;您可能实际遇到的一切都是IPv4映射的。
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
+--------------------------------------+--------------------------+
|                80 bits               | 16 |      32 bits        |
+--------------------------------------+--------------------------+
|0000..............................0000|0000|    IPv4 address     |
+--------------------------------------+----+---------------------+
+--------------------------------------+----+---------------------+
|                80 bits               | 16 |      32 bits        |
+--------------------------------------+--------------------------+
|0000..............................0000|FFFF|    IPv4 address     |
+--------------------------------------+----+---------------------+