Node.js 中 IPv6 转换为 IPv4

2025 年 3 月 3 日 | 2 分钟阅读

要在 Node.js 中将 IPv6 地址 转换为 IPv4 地址,需要了解两种 IP 地址 格式之间的区别,并设计一个函数来检测和转换 IPv6 映射的 IPv4 地址。

了解 IPv6 和 IPv4

32 位 IPv4 地址通常以点分十进制表示法(例如 192.168.0.1)表示。十六进制 128 位值用作 IPv6 地址,因为它们由冒号分隔(例如,2001:0db8:85a3:0000:0000:8a2e:0370:7334)。

由于 IPv6 中称为 IPv4 映射 IPv6 地址的独特语法,IPv4 地址可以嵌入到 IPv6 地址中。这些地址的 IPv4 地址是 a.b.c.d,其格式为 ::ffff:a.b.c.d。

将 IPv6 转换为 IPv4 的步骤

  1. 验证 IPv6 地址是否已从 IPv4 映射到 IPv6。
  2. 获取 IPv6 地址并提取 IPv4 部分。
  3. 将检索到的部分转换为 IPv4 标准地址。

以下是一个详尽的 Node.js 代码,它将已映射到 IPv4 的 IPv6 地址转换为 IPv4 地址。

Node.js 代码实现

  1. 安装任何所需的依赖项:由于 Node.js 的 net 模块提供了所有必要的实用程序,我们通常不需要任何其他依赖项来完成此过程。
  2. 创建转换函数

输出

Convert ipv6 to ipv4 in Node.js

说明

  1. 导入 net 模块: net 模块提供 IP 地址验证函数。
  2. 定义 ipv6ToIpv4 函数
    • 验证:使用 net.isIP 和 net.isIPv6 确定输入是否是有效的 IPv6 地址。
    • 正则表达式匹配:使用正则表达式匹配 IPv4 映射的 IPv6 地址模式。
    • 提取并返回 IPv4:如果地址符合模式,则提取并返回 IPv4 部分。
  3. 用例示例:它解释了如何使用 ipv6ToIpv4 函数,并解决了提供未映射到 IPv4 的 IPv6 地址的情况。

由于多个 IPv6 地址空间通常无法将其他类型的 IPv6 地址转换为 IPv4,因此此函数仅限于 IPv4 映射的 IPv6 地址。