P2Pアプリケーションを設計する方法


8

[ SOユーザー(10k SO +)提案でここに移動]

ピアツーピアアプリケーションを開発したいのですが。私はLOBアプリで多くの経験を積んでいますが、P2Pアリーナは初めてです。

私は物事がどのように機能するかについて大まかな考えを持っていますが、私の理解を記入するためにいくつかの詳細が必要です。

私が知っている(信じる)必要なこと:

  • かなりの割合のクライアントがインバウンド接続を有効にする必要がある(ala uPnP / NATルール)
  • 特定のノードがダウンした場合に回復力を提供するために、ノードは他の既知のノードを共有する必要があります
  • 任意のクライアント間でデータを送信するには、何らかの形式の同期/ルート検索が必要です
  • 「ダム」クライアントとノードリストの同期/共有を処理し、メッセージをリレーするためのより強力な「スーパーノード」を区別するためのリソーススニッフィング
  • インバウンドサポートのないクライアントは、接続するノードの情報を受信できるアウトバウンド接続を開いたままにする必要があります。

つまり、特定の中央サーバーへの接続に依存しないチャット/メッセンジャーサービスを(最初は)提供したいと思っています。物事を始めるには(または大幅なアップグレード後に)集中型の「スーパーノード」をいくつか用意する必要があると思いますが、機能するP2Pネットワークが確立されたら、これらはオプションにする必要があります。

私は多くの問題を見ることができ、それらに対処する方法がわかりません。主にどのように...

  • 中央の権限を確認することなく、ユーザーを他のノードに認証する
  • どのノードが他のどのノードについて知っているかを調整します(最小-最大数/レイテンシ別????)
  • 特定のユーザーが別のユーザー(またはノード)がオンラインかどうかを判断できるようにする
  • ノードの2つのグループが物理的に切断(エアギャップ)されている状況と、グループの再接続時に再同期する方法に対処する
  • など

私はこれがかなり自由回答式の質問であることを知っているので、高レベルの設計パターンは高く評価されますが、私が本当に探しているのは、他の人がこれらの問題を処理する方法に関するまともなガイドです(そして私はまだ検討していません) )。


Webアプリケーションタグは意図的なものですか?もしそうなら、あなたの心の中で、何がp2p Webアプリを構成しますか?
svidgen 2013

@svidgen:群れがクラスター化されたWebホストである可能性があることは不合理ではありません。
Steven Evers 2013

@svidgen良いキャッチ、質問をもう少し大きくするつもりでしたが、気が変わってそのタグを削除する必要があります。ありがとう
基本

1
BitTorrentとDHT、およびそれらが使用する原理と技術を見てください。どちらも数十年の経験で、対処したい問題のほとんどに取り組んできました。これは本当に広すぎます。
CodeCaster 2013

@CodeCaster私はあなたが私をストーカーしていると思い始めています;)
基本的な

回答:


5
  1. プロトコルの設計とその上でのアプリケーションの構築は、巨大なプロジェクトです。既存のプロトコルから可能な限り多くを取りなさい。
  2. (スカイプ、超えて最も関連性の高いプロトコルであるピア・ツー・ピア・メッセージング、それのプロトコルは秘密ですが)の、特に一部を意味し、ピア・ツー・ピアネットワーク上のリソースを提供するものでTOR .onionドメインと提供Freenetのを
  3. 「必要」にリストしたほとんどのことは、フリーネットによって処理され、それらの多くはTORでも処理されます。
  4. ユーザーのアイデンティティは暗号化されている必要があります。実際の単語のIDを暗号化キーに関連付けるには、PGP / GPGのような何らかの形式の信頼のあるWebが必要です。
  5. ピアツーピアメッセージングを使用する重要な理由はプライバシーです。オフレコのメッセージングは基本的に必須です(認証がどのように機能するかを指定します)。
  6. プレゼンスもオフレコでなければならず、基本的には特別な種類のメッセージです。
  7. 切断は、一般的なフォールトトレランスを超える特別な問題ではありません。それぞれの側で、他のノードで障害が発生して再び参加するように見えます。
  8. このプロトコルをストリーミングプロトコル(おそらくsRTP)のシグナリングとして使用することもできます。そのプロトコルはNATトラバーサルを処理するため、p2pプロトコル自体のメカニズムを複製できます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.