1个稳定版本
1.0.0 | 2024年2月12日 |
---|
#13 在 #ipv4-address
在 protomask 中使用
16KB
208 行
RFC6052的Rust版本
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