3

私は www を読んでいますが、P2P の最も重要な基本を理解することはできません。

図は次のようになります。

[peer1]<-->[dsl-router1]<-->[central server]<-->[dsl-router2]<-->[peer2]

中央サーバーでチャット ソフトウェアを開発しています。チャットメッセージは中央サーバーを介して転送されていますが、サーバーの帯域幅 (転送制限ではなくケーブル帯域幅) がチャットメッセージのみを転送することになっているため、p2p ファイル共有機能を作成する必要があります。

問題は、中央サーバー上の私のソフトウェアが router1 と router2 の IP とポートを認識しているが、これらのピアがルーターの背後にあり、IP アドレスを持っていないため、peer1 と peer2 を認識していないことです。

このデータが中央サーバーを通過せずに、実際にピア1からピア2に、またはその逆にデータを転送するにはどうすればよいですか?

(最悪のケースは、ピアと DSL ルーターの間にワイヤレス ルーターがあることです)

4

2 に答える 2

2

これを行うには、2 つの基本的な方法があります。新しい方法は、IGDP (uPnP 経由でポートを開く) を使用することです。これはここで非常によく説明されています:

http://www.codeproject.com/Articles/13285/Using-UPnP-for-Programmatic-Port-Forwardings-and-N

2 つのノードのどちらにも uPnP をサポートするルーターがない場合、別の代替手段として TCP ホール パンチングがあります。これは完全ではありませんが、実際には非常にうまく機能します。これについては、次のとおりです。

http://www.brynosaurus.com/pub/net/p2pnat/

于 2012-08-30T11:19:46.177 に答える
1

状況によっては、ISP が提供する「ルーター」がブリッジ モードで実行される場合があります。これにより、ピア コンピューターがインターネット上に直接公開されます (コンピューターはパブリック インターネット アドレスを取得します)。少なくとも 1 つの側がこの構成を持っている場合 (または、ピア クライアントが別のデバイスの背後にない同様の状況の場合)、物事はかなり単純である必要があります。この権限を持つ人に中央サーバーのジョブを割り当てるだけです。

両方のピアがそれぞれのコンピュータに割り当てられたローカル アドレス (192.168.0.2 など) しか持っていない別のケースでは、ルーターを通過するのはかなり困難です。ルーターの背後にあるクライアントは、ほとんどの場合、要求を発信しない限り、外部から到達できません。次に、問題に対する 1 つの解決策は、ポート フォワーディングです。明示的に記述されたルールまたは UPnP を使用してポート フォワーディングを行うと、ピア コンピューターの一部のポートがパブリック インターネットに公開されます。これは、一部のポートだけではなく、コンピューター全体が公開される最初の状況のようです。

これらのいずれも使用していない場合、中央サーバーを介した送信を回避する簡単な方法はありません。ただし、潜在的には、他の人に転送する機能を持つ他のピアを見つけることができます.

于 2012-08-30T11:18:34.027 に答える