1个稳定版本

1.0.0 2024年2月12日

#13#ipv4-address


protomask 中使用

GPL-3.0 许可证

16KB
208

RFC6052的Rust版本

Crates.io Docs.rs

RFC6052 定义了 "仅使用静态配置信息将IPv6地址转换为相应的IPv4地址,反之亦然,的算法转换方法"。简单来说,这意味着 将IPv4地址嵌入到IPv6地址中。其主要用途是NAT64转换器。

RFC定义了将IPv4地址嵌入到IPv6地址中的以下方案

+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|PL| 0-------------32--40--48--56--64--72--80--88--96--104---------|
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|32|     prefix    |v4(32)         | u | suffix                    |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|40|     prefix        |v4(24)     | u |(8)| suffix                |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|48|     prefix            |v4(16) | u | (16)  | suffix            |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|56|     prefix                |(8)| u |  v4(24)   | suffix        |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|64|     prefix                    | u |   v4(32)      | suffix    |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|96|     prefix                                    |    v4(32)     |
+--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
  • PL 是前缀长度
  • u 是一个保留字节,必须设置为 0

安全与不安全

此库提供了嵌入和从IPv6地址中提取IPv4地址的函数的“常规”和“未经检查”版本。

“常规”函数强制执行RFC允许的IPv6前缀长度限制(32、40、48、56、64和96位长)。而“未经检查”函数不强制执行此限制,并将接受任何前缀长度,但这将导致不遵守RFC。

依赖关系

~0.4–0.9MB
~20K SLoC