gpt4 book ai didi

mysql - IS_IPV4_COMPAT 使用已弃用的 RFC-4291

转载 作者:行者123 更新时间:2023-11-29 01:59:12 25 4
gpt4 key购买 nike

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

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

The MySQL documentation says:

This function takes an IPv6 address represented in numeric form as a binary string, as returned by INET6_ATON(). It returns 1 if the argument is a valid IPv4-compatible IPv6 address, 0 otherwise. IPv4-compatible addresses have the form ::ipv4_address.

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

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?**

最佳答案

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

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

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

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

如果您需要支持这两种格式,请在查询时使用IS_IPV4_COMPAT(field) 或 IS_IPV4_MAPPED(field)

关于mysql - IS_IPV4_COMPAT 使用已弃用的 RFC-4291,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19567431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com