5

インターネット上で P2P アプリケーションを作成したいと考えています。分散ネットワーク内の他のノードの自動検出を行うのに最適な方法は何ですか?または十分な方法がない場合は?

4

3 に答える 3

8

GNUnetプロジェクト (匿名の検閲に耐性のあるファイル共有ネットワーク) のGrothoff と GauthierDickeyは、中央ホストリストなしで p2p ネットワークをブートストラップする問題について調査しました。

彼らは、Gnutella (Limewire) ネットワークの場合、ピアを見つけるために平均 2500 回の接続試行が必要なランダム IP 検索が必要であることを発見しました。

この論文で彼らは、必要な接続試行回数を Gnutella では 817 回、E2DK ネットワークでは 51 回に減らす方法を提案しました。

これは、すべての DNS 組織の p2p ユーザーの統計プロファイルを作成することで達成されました。この小さな (約 100kb) 検出データベースを事前に作成し、p2p クライアントに同梱する必要があります。

于 2013-04-11T21:15:30.943 に答える
4

これが P2P の聖杯です。実際には魔法のような解決策はありません。参照として機能する適切な既知のポイントがなければ、ノードが他のノードを検出する方法はありません (LAN ではブロードキャストを使用して検出できますが、インターネットでは検出できません)。P2P ファイル共有は、発見のための「開始点」を配布する既知の Web サイトを持つことによって機能する傾向があり、ノードに他のノードについて知っていることを尋ねることで、さらなる発見 (私が期待する) を得ることができます。

調査を開始するのに適した場所は、分散ハッシュ テーブルです。

セキュリティに関しては、そのトピックはどこかの文献にあると思います。やはりウィキペディアをお勧めします。存在しないものは簡単に処理されます。IP/ポートに接続できない場合は、リストに保持しないでください。ノードが定期的に存在しないポインターを提供する場合は、優先順位を下げるか、リストから削除することを検討してください。完全にリストします。

悪ノードの場合は、ユース ケースによって異なりますが、ファイル共有を行っているとしましょう。ファイルのセクションを要求する場合は、ファイル セクションのハッシュがどうあるべきかをいくつかのノードで確認してから、ハッシュで要求します。悪意のあるノードが別のハッシュを持つチャンクを提供する場合、そのノードの優先順位を下げるか忘れることができます。

分散処理システムの動作は少し異なります。関連のない複数のノードに同じ作業を実行するように依頼する傾向があり、次に投票システムを使用して (おそらく再びハッシュを使用します)、悪が近づいているかどうかを判断します。ノードが一貫して悪い結果を提供する場合、管理者に連絡するか、既知のノード リストから IP を削除します。

于 2013-04-11T19:31:37.593 に答える
0

わかりました。2 つのピアがお互いを見つけるには、両者が共通のことを知っている必要があります。たとえば、IP を 1 回交換するためのメディエータです。この種の最初のハンドシェイクには何でも使用できますが、その「チャネル」から書き込みおよび読み取りを行うことができます。例: DNS (既知のドメイン)、電子メール、IRC、Twitter、Facebook、Dropbox など。

于 2013-04-11T19:41:43.117 に答える