I. P2Pとは
ピアツーピアネットワークは、ピアツーピア接続とも呼ばれ、各参加者が等しく通信セッションを開始する能力を持つ新しい通信パラダイムです。
クライアント/サーバーアーキテクチャの場合、常にオープンなインフラストラクチャーサーバーが必要です。一方、P2Pアーキテクチャでは、常時接続のインフラ・サーバへの依存は最小限に抑えられ、断続的に接続されるホストのペアはすべてピアと呼ばれ、ピアは直接通信を行います。ピアはサービスプロバイダが所有するものではなく、ユーザが制御するデバイスです。
II.P2Pドキュメント配布
P2Pは、単一のサーバーから多数のホストに大容量ファイルを配布する特定のアプリケーションを通して、以下に検討します。
クライアント/サーバー型ファイル配布では、サーバーは各クライアントにファイルのコピーを送信する必要があり、同時にサーバーに大きな負担をかけ、サーバーの帯域幅を大量に消費します。P2Pファイル配布では、各ピアが所有するファイルの任意の部分を再配布できるため、配布においてサーバーを支援することができます。
1、クライアント/サーバー・アーキテクチャ VS P2Pアーキテクチャ
まず、ファイルの長さがFで、サーバーがレートUでアップロードし、レートDでダウンロードし、N個のクライアントがあり、それぞれがアップロードレートui(i=1, 2.....N)、それぞれのダウンロード率はdi(i=1, 2.....N).
まず、クライアント/サーバーアーキテクチャの場合、サーバーがN個のファイルをアップロードするのに必要な時間は、少なくともNF/Uです。ダウンロードレートが最も小さいピアは、F/dmin秒以内にファイルのすべてのFビットを取得できないため、クライアント/サーバーアーキテクチャを使用してファイルを配布するのに必要な時間は
Dcs = max{NF/U, F/dmin}.
次に、P2Pアーキテクチャでは、各ピアがファイルを配布するためにサーバーを支援することができます。つまり、ピアはファイルデータを受信すると、自身のアップロード機能を使用して他のピアにデータを再配布することができます。
配布の開始時には、サーバーだけがファイルを持っています。ピアがファイルを取得するためには、サーバーはアクセスリンクを介して少なくとも1回ファイルを送信する必要があります。これは、P2Pアーキテクチャでは、一度ファイルを送信したサーバーは、他のピアがそのファイルを所有するピアから取得できるため、再度ファイルを送信する必要がない可能性があるためです。
クライアント/サーバーアーキテクチャと同様に、ダウンロードレートが最も小さいピアは、F/dmin秒以内にファイルFのすべてのビットを取得することはほとんどありません。したがって、最小配布時間もF/dminになる可能性があります。
最後に、システムの総アップロード容量は、サーバーのアップロード率と各ピアのアップロード率に等しくなります。+ システムはN個のピアすべてにFビットを配信しなければならないので、総配信量はNFビットです。したがって、最小配信時間は少なくともNF/.
要約すると、P2Pアーキテクチャを使用してファイルを配布するために必要な時間は次のとおりです。
Dp2p = max{F/U, F/dmin, NF/}.
つまり、最小配布時間は、サーバーがアップロードにかかる時間、ピアがダウンロードにかかる最大時間、ピアがアップロードとダウンロードにかかるすべての時間によって決まります。同様に、F/U、F/dminは定数であるため、Nがある値に達すると、ファイルを配布するのにかかる時間として、NFは前の2つよりも大きくなり、すなわち、Dp2p = NFとなります。この式から、Nの値が大きくなると、ピアの数も増えるので、U+u1+u2...+uNの値も大きくなることがわかります。+の値も増加するため、クライアント/サーバアーキテクチャの関数のように分配時間が直線的に増加することはなく、対数関数に近い曲線を描きます。そのため、Nの値が大きい場合、P2Pアーキテクチャはクライアント/サーバーアーキテクチャよりもファイル配布にかかる時間がずっと短くなります。
2.BitTorrent(ビットトレント)-ファイル配布のための一般的なP2Pプロトコル
クライアント/サーバーベースのアーキテクチャとP2Pベースのアーキテクチャのファイル配信に要する時間の違いを数学的に説明した後、このP2Pファイル配信がどのように実装されるかを説明します。以下は、BitTorrentプロトコルを使用した例です。
まず最初の質問に答えると、各トレントにはトラッカーと呼ばれるインフラストラクチャ ノードがあります。ピアがトレントに参加すると、トラッカーに登録し、トレントに参加していることを定期的にトラッカーに通知します。特定のトレントには、任意の時点で数百または数千のピアが存在する可能性があります。新しいピア A がトレントに参加すると、トラッカーは参加しているピアのセットからランダムにいくつかのピアを選択し、これらのピアの IP アドレスを A に送信します。".時間が経つにつれて、このような処理をしているピアの一部が離脱し、他のピアが、Aが行ったように、AとのTCP接続を作成しようとするかもしれません。これにより、ダウンロードするファイルがあるトレント内のピアを知ることができます。
2 番目の質問に答えると、どの時点でも、各ピアは特定のファイル ブロックのサブセットを持っており、異なるピアは異なるファイル ブロックのサブセットを持っています。A は定期的に各隣のピアに自分が持っているブロックのリストを要求し、隣人のブロックのリストを取得するため、A は現在持っていないブロックの要求を行います。また、トレントの各ピアはダウンロードとアップロードの両方を行うため、A は要求するブロックをどの隣接ピアに送信するかを決定する必要があります。多くの場合、ブロックのリクエストにはレレストファーストと呼ばれる手法が使用されます。これは、Aが持っていないブロックに基づいて、最もレアなブロックを近隣から決定し、そのレアなブロックを最初にリクエストするというものです。これは、トレント内の各ブロックのコピー数がほぼ同じになるようにするためであり、同時に、特定のファイル ブロックのダウンロード中にダウンロードが滞ることがないため、全体的なダウンロード率が向上します。
III.P2P地域検索情報
P2Pのもう一つの重要なアプリケーションは、メッセージのインデックス作成、つまりメッセージとホストの位置の対応付けです。
インデックスとは何かを説明するために、例として、P2Pファイル共有システムにインデックスがあり、そのピアによって共有可能なファイルを動的に追跡しています。インデックスは、コピーに関する情報を、そのコピーを持つピアのIPアドレスにマップするレコードを維持します。ピアがシステムに参加すると、そのピアが所有するファイルのインデックスをシステムに通知します。ユーザーがファイルを必要とするとき、そのファイルのコピーの場所を見つけるためにインデックスを検索します。
注:P2Pファイル配布とP2Pファイル共有の間には、まだいくつかの違いがあります。P2Pファイル共有は、異なる時間に発生する可能性があります。例えば、今受け取ったファイルは、1時間後にのみアップロードする必要があります。一方、P2Pファイル配布は、ダウンロードと同時に他のユーザーのためにアップロードされる単一のファイルのためのより多くの共同プロセスです。
1、中央指数
インデックスサービスを提供するために、大規模なサーバーが使用されます。ユーザーがP2Pファイル共有アプリケーションを起動すると、アプリケーションはインデックス作成サーバーにIPアドレスと共有可能なファイル名を通知します。インデックス作成サーバーは、共有可能なオブジェクトを収集し、一元化された動的データベースを作成します。
以下のようなデメリットがあります:
1.単一障害点
2.パフォーマンスのボトルネック
3.信頼性の低さ
このタイプのインデクシングは、ファイル転送は分散化されているが、コンテンツの検索プロセスは高度に集中化されているという特徴があります。
2.照会の殺到
クエリフラッディングは、インデックスがピアの領域に包括的に分散され、ピアがオーバレイネットワークと呼ばれる抽象的な論理ネットワークを形成する完全分散アプローチを使用します。A がインデックスを見つけたい場合、A はそのすべての近傍にクエリメッセージを送信します。A のすべての近傍がそのメッセージをすべての近傍に転送し、さらにその近傍がメッセージをすべての近傍に転送する、といった具合です。ピアマスターのひとつにインデックスが設定されていれば、クエリヒットメッセージが返されます。
しかし、この単純な方法には、大量のトラフィックを発生させるという致命的な欠点があります。
1つの解決策は、範囲限定クエリフラッディングを使用することです。カウント値は、リクエストをその近 隣に転送するピアがピアのカウントフィールドを1デクリメントし、ピアのカ ウントフィールドが0になったときにクエリを停止するように設定されます。
3.階層的カバレッジ
このアプローチは集中型インデクシングとクエリフラッディングの利点を組み合わせたもので、クエリフラッディングと同様に、階層型オーバーレイの設計では、ドキュメントの追跡とインデクシングに専用のサーバーを使用しません。異なる点は、すべてのピアが階層的なカバレッジにおいて等しいわけではないということです。
模式図は以下の通り:
スーパーピアは、そのサブピアによって共有されているすべてのファイルの識別子のインデックス、ファイルに関するメタデータ、およびそれらを維持するサブピアのIPアドレスを維持します。一方、スーパーピアは通常、単なる普通のピアです。スーパーピアは互いにTCPコネクションを確立し、オーバーレイネットワークを形成します。スーパーピアは信頼できるスーパーピアにクエリーを転送することができますが、スーパーピアがスコープ制限クエリー・フラッディングを使用している場合に限られます。
ピアがインデックスを作成すると、キーワードを含むクエリをスーパーピアに送信します。スーパーピアは関連ファイルを持つサブピアのIPアドレスで応答し、そのスーパーピアは1つ以上の近隣のスーパーピアにクエリを転送してもかまいません。近隣のピアがそのようなリクエストを受信した場合、そのピアもまた、一致するファイルを持つサブピアのIPアドレスで応答します。
制約付きクエリフラッド設計とは対照的に、階層的カバレッジ設計では、過剰なクエリトラフィックを発生させることなく、より多くのピアが一致をチェックすることができます。
これら2つの一般的なP2Pアプリケーションを紹介することで、P2Pに関するある程度の知識を得ることができるはずです!




