5

Web サーバーが受信した以前の HttpRequest オブジェクトから収集した IPv4 形式の IP のリストがあります。Ipv6形式でIPアドレスを提供するJavaアプレットがあります(JavaアプレットはIPアドレスとともに一連のデータを返します)。アプレットから返された IP がリストの項目と一致するかどうかを確認する必要があります。

IPv6 と IPv4 のフォーマットを相互変換するにはどうすればよいですか?

私の Web アプリケーションはASP.Net C#で構築されています

編集

ここに私が直面している問題があります。Java アプレットはクライアントから一連の IP を返しますが、これはクライアント マシンにあるネットワーク カードの数に依存すると思われます。

これに伴い、ASP.Net HTTPRequest オブジェクトから IP アドレスを取得します。Web サイトへの接続に実際に使用された IP を特定し、いくつかのタスクを実行する必要があります。

問題は、Javaapplet から IPv6 形式の IP を 1 つしか取得しないことがありますが、HTTPRequest オブジェクトから取得した IP は IPv4 形式であるため、比較が失敗することがあります。

4

3 に答える 3

4

IPv4-IPv6 マッピングまたは IPv4 アドレス埋め込みについて話している。

IPv4 アドレスの埋め込みを使用して、IPv4 アドレスと IPv6 アドレスの間の関係を作成し、IPv4 から IPv6 への移行を支援します。1 つのタイプである IPv4 互換 IPv6 アドレスは、IPv4 と IPv6 の両方と互換性のあるデバイスに使用されます。96 個のゼロ ビットで始まります。もう 1 つの IPv4 マップ アドレスは、IPv6 と互換性のない IPv4 デバイスを IPv6 アドレス空間にマップするために使用されます。80 個のゼロで始まり、その後に 16 個の 1 が続きます。

..

これら 2 種類のアドレスの違いは微妙ですが、重要です。最初の 80 ビットは常に 0 であるため、これが表示されると、何らかの組み込み IPv4 アドレスであることがわかります。IPv4 互換の IPv6 アドレスは、実際に IPv6 対応のデバイスにのみ使用されます。IPv4 互換アドレスは、従来の IPv6 アドレスに追加されます。逆に、先頭の80以降の16ビットが「FFFF」の場合は、IPv4アドレスがIPv6形式にマッピングされた従来のIPv4機器を示しています。IPv6 対応デバイスではありません。

つまり、それらが一緒にマッピングされていない限り、相互に変換することはできません。翻訳者が必要です。

于 2010-08-25T18:24:12.357 に答える
3

0A0Dはすでにこれに答えているようですが、私はそれに挑戦します:

IPv6アドレスの最初の10バイト(80ビット)がゼロの場合、最後の4バイトをIPv4アドレスの4バイトと比較できます。

bool AreEquivalent(IPAddress ip6addr, IPAddress ip4addr)
{
  byte[] ip6bytes = ip6addr.GetBytes();
  byte[] ip4bytes = ip4addr.GetBytes();
  for (int i = 0; i < 10; i++)
  {
     if (ip6bytes[i] != 0)
       return false;
  }
  for (int i = 0; i < 4; i++)
  {
     if (ip6bytes[i + 12] != ip4bytes[i])
        return false;
  }
  return true;
}

これは、ipv6とipv4が何であるかをすでに知っていることを前提としています。任意のアドレスを比較する必要がある場合は、必要に応じてロジックを追加します。

于 2010-08-31T20:05:37.897 に答える
2

ある種のワイヤレスプラットフォームを使用しているか、ワイヤレスを実行する機能があると想定します。IPV6は、モバイルネットワーキング(別名「ワイヤレス」)の改善と関係があります。IPV6をIPV4に変換することは、あなたが探しているものではありません。IPV6は実際のアドレスです。これは、最近のIPアドレスの新しい高度な標準です。ここを見て、自分で決めてください。ここで手動で行うこともできます。IPV6はIPV4をマスクすることになっています。

お役に立てば幸いです。

于 2010-08-25T19:19:28.560 に答える