IPv4 映射的 IPv6 地址解析

Posted

技术标签:

【中文标题】IPv4 映射的 IPv6 地址解析【英文标题】:IPv4-mapped IPv6 address parsing 【发布时间】:2021-07-23 13:57:00 【问题描述】:

ch 是否有一些方法可以将 IPv4 映射的 IPv6 地址转换为 IPv4? 我找到了将 IPv4 转换为 IPv4 映射的 IPv6 的唯一方法。 如果不是我应该用什么来解析它? 谢谢!

【问题讨论】:

【参考方案1】:
SELECT  reinterpret(
              reverse(
                 substr( IPv6StringToNum('::ffff:46.56.82.33'), 13, 4)
              ), 
        'IPv4') AS r;

┌─r───────────┐
│ 46.56.82.33 │
└─────────────┘
SELECT extract('::ffff:46.56.82.33', '\\d+\\.\\d+\\.\\d+\\.\\d+$')


┌─extract('::ffff:46.56.82.33', '\\d+\\.\\d+\\.\\d+\\.\\d+$')─┐
│ 46.56.82.33                                                 │
└─────────────────────────────────────────────────────────────┘

【讨论】:

【参考方案2】:

不,它没有。我不确定您的用例是什么,但一种选择是剥离 ::ffff:

SELECT replaceOne('::ffff:46.56.82.33', '::ffff:', '');

(

SELECT toIPv4(replaceOne('::ffff:46.56.82.33', '::ffff:', ''));

)

【讨论】:

以上是关于IPv4 映射的 IPv6 地址解析的主要内容,如果未能解决你的问题,请参考以下文章

IPv4与IPv6的区别

数据结构与算法之深入解析“验证IP地址”的求解思路与算法示例

域名如何优先解析ipv6

ipv4和ipv6的网络地址

如何批量验证字符串是有效的 IPv4 或 IPv6 地址?

iOS应用支持IPV6