3

P2P Android アプリを作成しています。私の現在の問題は、デバイスが同じネットワーク上にあり、プライベート IP アドレスを使用しない限り、デバイスを相互に認識させることができないことです。すべてのパブリック IP/ポート/プライベート IP アドレスをデータベースに保存しています。

NAT が私の試行をブロックし、パブリック IP アドレスから選択するプライベート IP を具体的に選択できないことを考えると、ルーターの設定やポート転送を行わずに、一方を他方に接続させるにはどうすればよいでしょうか...

仲間のデバイスに正常に到達するにはどうすればよいですか =]

4

3 に答える 3

3

簡単な答え: できません

長い答え: NAT トラバーサルの問題には 10 年以上の労力が必要であり、私の知る限り、skype を除いてこれを確実に行う製品は他にありません (skype を使用すると、本質的に skype を気にする必要のない信頼できる P2P 接続プロバイダーです。たとえば、ここここを参照してください)。案の定、Skype を「P2P 接続を提供してください」というサービス プロバイダーとして使用すると、独自の手に負えないソリューションに結び付けられるため、実際には... ソリューションではありません。

現在、IPv4 での NAT トラバーサルに関しては、今後数年のうちに事態をより困難にするだけの別の問題があります。具体的には、ISP は「キャリアグレード NAT」と呼ばれるものを導入し始めます (CGN、これを参照)。ホームNATが使用するものとは異なるタイプのポート割り当てアルゴリズムを使用します(さらに、これに加えて、対処する2つのカスケードNATがあります)。一言で言えば、10 人年以上の開発リソースを手元に置くことなく、IPv4 を介した P2P のことはすべて忘れてください。ところで、Skype でさえ CGN に屈することが予想されます (モバイル接続では既に標準になっています。つまり、ハンドセットにパブリック IPv4 アドレスを提供するモバイル キャリアはほとんど残っていません)。 Skype を買収した後に MS が最初に行ったことの 1 つは、何千もの RELAY を配置することでした。これにより、今後数年間で IPv4 を介した P2P 接続を確立することが不可能になった場合に対処できるようになります。これを参照してください(MS の回答は忘れてください)。記事の最後に、それは'

できることは、IPv6 についてもう少し学び始めることです。IPv6 では、NAT が (おそらく) なくなるため、はるかに簡単になるはずです (NPT と呼ばれるものがありますが、これは P2P に適したプロトコルです)。IPv6 ルーターの問題は、ポート制御の標準プロトコルが (まだ) 存在しないことですが、現在作成中のものがあります。これを参照してください。したがって、この (または他の) プロトコルが標準化され、CPE メーカーによって採用されるようになる時期を確認してください。の場合、IPv6 ルーター トラバーサルはほとんど簡単になります。

いずれにせよ、現時点で最善の選択肢は、今後 3 ~ 5 年間は P2P のことを忘れることです。不幸にも...

PS。さらに 2 つのリンク:

  1. これは私のプロジェクトです。
  2. 野生のCGN
于 2013-01-07T19:39:39.803 に答える
0

ポイントは、公共のインターネット経由で何らかのポート転送/NATが利用できる場合にのみ、他のノードに接続できるということです。ほとんどの場合、プライベート ノード (プライベートとは、パブリック IP の背後にあるプライベート IP アドレスを持つノードを意味します) ごとにインターネットにアクセスしており、それは何らかのルールが既に設定されている場合にのみ発生するためです。唯一の問題は、そのルールをアプリに使用できるかどうかです。

上記のコメントで参照したリンクには、使用される一般的な手法のいくつかが記載されています。

于 2012-12-21T20:04:58.790 に答える
0

NAT ルーターを通過するには、STUN や UPnP などのテクノロジを使用する必要があります。

于 2012-12-21T20:19:54.840 に答える