質問
専用の中央サーバーを使用せずにピアを見つける既知の方法はありますか?
ie:インターネットへの接続を切断して再接続しているが、毎回新しいIPアドレスを取得しているピアがあり、登録する専用サーバーを設定せずに接続したい場合。
ピアメールアドレスを使用して、接続されたピアのマニフェストを何らかのタイムコードで定期的に送信し、専用サーバーの必要性を無効にすることを考えていました。これは、既知のすべてのピアアドレスを試行した後、どのピアにも接続できない場合のフォールバックになります。しかし、ピアを見つける既存のモデルが望ましいでしょう。
解決
さらに発見するために、少なくとも1人の初期ピアを知る必要はありません。 GnutellaやGnutella2などの完全なP2Pプロトコル、またはより単純なOvernet(Storm Wormで有名になった)は、いくつかのピアの起動リストを持つ各クライアントに基づいています。これらは、たとえば、Webベースの自動トラッカーから取得できます。クライアントは、ファイル検索を委任するときなど、他のピアにさらにアドレスを要求することにより、ネットワーク全体またはネットワークの一部を検出します。
真に中央集中型のリソースを用意できない場合、できることは、ブロードキャストメッセージと最終的にIPアドレススキャンを通じて最初のピアを見つけることです。最初のアプローチは意味がありますが、少なくとも98%のケースでは結果が得られません。後者のアプローチは、もちろん、ほとんどの国で違法であるだけでなく、インターネットを乱用しています。
私は本当に、ある種の中央トラッカーを持つことを再考するでしょう。 Webサーバー上のPHPスクリプトのような単純なものにすることができます(今日、gnutellaネットワークは、お互いを知らない人々によってホストされている10から20のそのようなスクリプトによって支えられています)。そして、これは電子メールよりも確かに軽量です(少なくともスパムフィルターのために、とにかく機能しません)。
他のヒント
イントラネット内のピアの限られた場合、既知のポートにブロードキャストUDPメッセージを送信して、ピアからの報告を求めることができます。
データを投稿できる既存のフォーラムを活用してください。秘密のIRCチャネル、写真へのデータの埋め込み、写真共有サイト4chanへの投稿、アプリケーションがcaptiaのログインなしでログインしてデータを投稿できるサイトなどを考えてください。
http://chatzilla.hacksrus.com/faq/#password
もう1つの戦略は、デジタル通貨取引にメッセージを埋め込むことです。たぶんぶらぶらする可能性が高い安いコインを選択してください...多分DOGEまたはMOONコイン。アプリにウォレット機能を組み込みます。アプリが制御するアドレス間でマイクロトランザクションをやり取りできるようにします。鉱夫料金はまだありますが、これはペニーのほんの一部です。後でメタデータをトランザクションに追加することを禁止している場合でも、MOONのIPアドレスと同等のトランザクションを作成し、MOONコインのバニティアドレスをアプリに使用できます。新しいノードがオンラインになると、ブロックチェーンを検索する対象がわかるようになります-2daMOON%bootStr @ pM3。 SEND-104.003021133 MOON IP = 104.3.21.133は高価な提案ではありません。
BitcoinQTクライアントはさまざまな方法を使用してノードを検索しますが、そのうちのいくつかは役に立つかもしれません。
IRCは使用されなくなりましたが、最も簡単に実装できる可能性があります。
バージョン0.6.x以降、ビットコインクライアントはデフォルトでIRCブートストラップを使用しなくなり、バージョン0.8.2からIRCブートストラップのサポートが完全に削除されました。以下のこのドキュメントは、ほとんどの以前のバージョンで正確です。
独自のアドレスの学習と共有に加えて、ノードはIRCチャネルを介して他のノードアドレスについて学習しました。 irc.cpp を参照してください。
独自のアドレスを学習した後、ノードは自身のアドレスをニックネームとして使用される文字列にエンコードしました。次に、#bitcoin00と#bitcoin99の間の名前のIRCチャネルにランダムに参加しました。次に、WHOコマンドを発行しました。スレッドは、チャネルに現れた行を読み取り、チャネル内の他のノードのIPアドレスをデコードしました。ノードがシャットダウンされるまで、これをループで永久に実行しました。
クライアントがIRCからアドレスを検出すると、アドレスのタイムスタンプを現在の時刻に設定しましたが、「ペナルティ」を使用しました。つまり、実際には1時間近く前に見られたように見えました。
オプション3を使用しない限り、接続を開始するには中央サーバーが常に必要になりますが、3つの方法があります。
- キープアライブを使用して、ピアの既知のリストを保持する中央サーバー。
- いくつかの共通リソースピアを維持する1つ以上の中央サーバーは、相互に検出するために使用できますが、ピアが接続されている限り(BitTorrentのような)中央サーバーは不要です。ピア接続もチェーンできます。
- ポート/ IPスキャン(強くお勧めしません)。
この例では、ピアが登録される中央サーバーのようなものがまだあります。プロトコルが唯一の違いです。
古い質問ですが、私はこの問題について自分で考えてきたので、私の2セントを広告します。要するに、ノードが少なくとも1つの有効なピアを認識している場合、中央サーバーは必要ありません。新しいノードは、現在のメンバーによってネットワークに追加する必要があります(たとえば、招待されるか、アプリケーションに応じてノードが別のノードを生成します)。
仮定:
-
エージェントはピアを追跡します。このアドレス帳のサイズとエントリの管理方法は、システムの性質によって異なります。例えばピアが安定したアドレスを使用する場合、ピアが接続されたままになる期間
-
エージェントはピア情報を他のピアと共有します
-
少なくともいくつかのエージェントは、ノードがネットワークに接続してアドレス帳を更新する(またはノードが安定したアドレスを持っている)頻度と比較して、比較的長時間利用可能です
-
ピアアドレスに加えて、可用性情報も追跡されます(システムに応じて多くのオプションがあります。例:ピアが安定したアドレスを持っているかどうか、最後に見たとき、可用性メトリック、コンテンツ/サービスタイプ情報、有効なアドレス(既知の場合まで)
-
新しいエージェントは、少なくとも1つの有効なピアで初期化されます(中央ノードである必要はなく、有効なノードであればどれでもかまいません)
悪意のあるピアが存在する可能性がある場合、 -
信頼メカニズムが必要です
ピアがオンラインになると、ピアテーブル内のピアに照会して、アクティブなピアを検出し、おそらく期限切れの動的アドレスを削除します。ノードはピア情報を交換し、それ自体がリンクされる場合があります。このピアの発見/交換は、十分なサイズおよび/または品質があれば、ピアリストまで一定数のホップを継続するか、ランダムウォークを介して行われます。
詳細:
-
ノードは、ノードアドレスが変更される頻度に関連する頻度でピア情報を接続および共有するため、アドレス帳が古くなることはなく、以前のピアが最後に認識されたアドレスで使用できないためノードが切断されます
-
ノードは、最も安定したノードを中心に集中する傾向を避けるために、受け入れるピアの数を制限する必要がある場合があります。
-
ノードは、保持するピアを選択する必要があります。つまり、データを交換する可能性が高いもの(例:履歴に基づく重み)
-
ノードリンクは、アプリケーションに応じて非対称または対称になります
簡単に言えば、中央のサーバーなしでこれを行う方法はありません。
これを行いたい場合は、動的DNSかどうかに関係なく、1つ以上の中央サーバーが必要です。クライアントは接続先を発見する方法を必要とし、これを行うための本当に賢明な唯一の方法は独自のサーバーを使用することです。最も単純なシナリオでは、応答としてIPアドレスを送信するだけで済みます。
仮想サーバーは月額約15ドルで利用できます。IMOは、他の人の帯域幅を使用または悪用しようとするよりもかなり安価です。
[編集]。
簡単に言うと、次のような別の方法があります。
リフレクションについては、一連のピアをクラスターコントローラーとして指定し、動的DNSサービスを使用して他のピアがクラスターコントローラーを検出できるようにすることだと思います。
ダイナミックDNSプロバイダーを選択します。myc.ath.cxと呼びます( http:// wwwを使用します。 dyndns.com/ )。
各ピアは、クラスターコントローラーになることができる必要があります。クラスタコントローラには、接続されている他のすべてのピアのリストが含まれます。
ピアが開始されると、myc.ath.cxを検索して接続を試みます。 30秒などの期間内に接続できない場合、DNSエントリの登録を引き継ぎます。
他のピアを検出したいピアは、myc.ath.cxを照会するだけでリストが提供されます
すべてのピアは、コントローラーをクラスター化する必要がある場合に備えて、定期的にピアのリストをダウンロードする責任があります。
クラスターコントローラーは定期的にDNSエントリーを照会します-IPアドレスから変更された場合、クラスターコントローラーではなくなったことを認識するため、現在DNSエントリーを持っているクラスターコントローラーに接続し、そのリストを提供します既知のホスト。
クラスターコントローラーは、リスト上のホストに定期的にアクセスして、それらが有効であることを確認します。
ただし、電子メールの送信方法では専用サーバーを使用します。正確にはピアのメールサーバー。
大体、ピアが使用しているインターネットへの接続性を特徴付けることができない限り、何らかの専用のストレージまたはサーバーを使用しなければ、それは不可能だと思います(メールアプローチでは斜めになりますが)。
基本的に、Yの時間接続するピアのXのセットがあり、それらがZの時間グリッドから外れている場合...基本的に、どのくらいの確率で確率方程式を構築できます最後に連絡したピアのセットがまだ利用可能であるということです。その確率が1に近づく場合(上記のX、Y、Zの特定のセットに対して)、ストレージを使用せずにピアツーピアネットワークを維持できます。
おそらく精神にもっと; 「専用の中央サーバー」を持つ代わりに、簡単なオンライン無料サービスを使用してピアリストを指定します。 yahooグループ、またはそのようなものをセットアップします。クライアントはそれを自動的に検索し、ピアのセットを照会するピアアドレスを取得できます。クライアントはグループに投稿するために認証を使用してコーディングでき、IPアドレスを定期的に投稿できるため、他のユーザーが既知のアクティブピアのセットを要求できます。
本当にトリッキーになりたい場合は、基本的にステガノグラフィック手法を使用してピアの位置情報を非表示にすることができます。つまり" blah"のGoogle検索を取得します。結果にリストされている、保護されていない(CAPTCHAなし)メッセージボードがある最初のサイトを見つけます。 " Indubitably"で始まる3番目の(または何でも)投稿を見つけます。 (または何でも)、最初のメッセージのヘッダーを見つけ、そこにピアのIPアドレスがあります。それでもうまくいかない場合は、検索語のリストを下に移動してください。
しかし、それは卑劣です。 :-)
目的のために既存の専用サーバーを再利用できますか?
特に、各ピアをダイナミックDNSに登録することを考えていますが、少しくなり、既知のHotmailアカウントまたはGoogle Docなどへのアクセスを共有したい場合。
サービス検出には、中央ディレクトリまたは何らかのブロードキャストプロトコルを使用できます。 Googleでインデックスを作成できると仮定すると、各ピアが特定のページに含まれる一意のまれな単語でWebサイトを実行するシステムを考えることができます。次に、これらの単語に基づいてGoogleの検索結果を使用して、潜在的なピアを特定できます。これは、本質的に(ノイズが多く、遅い)インターネットブロードキャストになります。
ページ構造がよく知られているパターンであるか、そのピアの識別可能な接続情報が含まれている場合、検索結果でそれらを簡単に区別できます。このようなパブリックディレクトリを使用すると、形成されたネットワーク内の侵害されたノードに対して開かれたままになりますが、これはセキュリティメカニズムが存在しないP2Pネットワークにも当てはまります。
検索用語の特定の不可解なセットに対して、Google(または他の検索エンジン)によってクロールされ、高度にランク付けされたWebサイトを取得することがコツです。私はいくつかの方法を考えることができますが、それらは私が使用するものではありません。正当なサービスを提供するには、お金を使うか、ディレクトリとして機能する無料のWebサイトを探します。
他のP2Pシステムのオンラインピアを追跡するために特別に構築された別のP2Pシステムはどうですか?
次に、新しいP2Pシステムのピアを見つける問題を「メイン」P2Pシステムのピアを見つけるだけに減らします。これにより、使用したいシステムのオンラインピアのアドレスが得られます...
これは、分散ハッシュテーブルアルゴリズムの一般的な使用方法です。ペストリーのようなものを見ることをお勧めします。他のレイヤーの上にオーバーレイネットワーク(アプリケーションレイヤーネットワーク)を使用します。
各ノードには、ピアネットワーク経由で要求をルーティングするために使用されるGUIDがあります。
既に確立されている中央サーバーを探している場合は、次のページのメタサーバーエントリを参照してください。
http://martindevans.appspot.com/
そこにピアを登録すると、他のピアがそれらを見つけることができます。明らかにこれは中央サーバーですが、メンテナンスの必要はありません。