私はNAT32の背後で使用するためにRFC-7050に記載されているように、AndroidのIPv4アドレス(ネイティブコードまたはJava自体のいずれか)からIPv6アドレスを合成しようとしています。AndroidのIPv4アドレスからIPv4マップされたIPv6アドレスを合成しますか?
このオプションはgetaddrinfo
を呼び出して利用できましたが、Androidのgetaddrinfo
の実装では、IPv4アドレスではなくホスト名に対してのみIPv6が合成されるようです。
iOSでは、NAT64の背後にある間に、次のコードは変数res
のアドレスリスト内に合成されたIPv6アドレスを生成します。しかし、AndroidではIPv4アドレスの代わりにホスト名をgetaddrinfo
に渡さない限り、同じネイティブコードがIPv4アドレスを生成します。
struct addrinfo *res;
getaddrinfo("x.x.x.x", "80", NULL, &res);
編集
私はAndroidがCLAT/464latを実装していることを知っていますが、しかし、それはすべてのデバイスとネットワークをカバーしていません。 1つの最も重要な例は、IPv4専用ネットワークの背後にあるNAT64ネットワークです。
例:インターネット - >はIPv4のみのネットワーク - >NAT64ネットワーク - >クライアント
クライアントがRFC-4193の下でローカルIPv6アドレスを持っている(私は信じている)だけのことができるようになりそのNAT64ゲートウェイを介してインターネットにアクセスします。つまり、NAT64はアドレスを上流に送信する前に変換する必要があります。
だから私は必要なものを合成したIPv6アドレス
の接頭辞を生成する方法である理想的には、我々は、IPv4のエンドポイントに到達するためにIPv6アドレスを合成する必要があります。
464xlatの実装がWi-Fiで動作しないと私は理解しています。 IPv4のみの上流ネットワークの背後にNAT64を使用するネットワークが存在します。つまり、「インターネット - > IPv4のみネットワーク - > NAT64ネットワーク - >クライアント」であり、私はこの状況を他のものの中で説明しようとしています。 –