はじめに
コンピュータネットワークにおいて、P2Pはファイル共有技術であり、ユーザーは主にビデオ、音楽、電子書籍、ゲームなどのマルチメディアファイルにアクセスすることができます。 このネットワーク内の個々のユーザーはピアと呼ばれます。

P2Pの仕組み(概要)
ピア・ツー・ピア・ネットワークは、サーバーを必要とせずにコンピュータのハードウェアとソフトウェアが通信できる仕組みです。 クライアント・サーバー・アーキテクチャとは異なり、P2Pアーキテクチャではリクエストを処理する中央サーバーは存在しません。

さて、あるピアがリクエストをしたとき、複数のピアがそのリクエストされたオブジェクトのコピーを持っている可能性があります。 問題は、それらすべてのピアのIPアドレスをどうやって取得するかです。 これは、P2Pシステムがサポートする基本的なアーキテクチャによって決まります。

このようなアーキテクチャーは次の3つがあります。

  1. Centralized Directory
  2. Query Flooding
  3. Exploiting Heterogeneity

1.

  • すべてのピアは、このセントラル サーバーに自分の IP アドレスと共有可能なファイルを通知します。
  • サーバーはピアに一定の間隔でクエリを実行し、ピアがまだ接続されているかどうかを確認します。
  • 動作

    • さて、リクエストしているピアが来るたびに、ピアはそのクエリをサーバーに送信します。

      このようなアーキテクチャの大きな問題点は、単一の障害点があるということです。 サーバーがクラッシュすると、P2Pネットワーク全体がクラッシュしてしまいます。 また、すべての処理を1台のサーバーで行うため、膨大な量のデータベースを維持し、定期的に更新しなければなりません。

      2.

      2.クエリフラッディング

      • 中央集権的なアプローチとは異なり、この方法は分散システムを利用しています。
      • このオーバーレイ ネットワークでは、ピアはノードと呼ばれ、ピア間の接続はノード間のエッジと呼ばれるため、グラフのような構造になります。

      仕組み

      • さて、あるピアがあるファイルを要求すると、この要求はすべての隣接するノード、つまり、このノードに接続されているすべてのノードに送信されます。 もし、これらのノードが必要なファイルを持っていない場合、そのノードは自分の隣人にクエリを渡し、それを繰り返します。
      • 要求されたファイルを持つピアが見つかると(クエリヒットと呼ばれる)、クエリフラッディングが停止し、ファイル名とファイルサイズをクライアントに送り返します。

      Gnutellaは、最初の分散型P2Pネットワークです。

      この方法にもいくつかの欠点があります。例えば、クエリは、一致するものが見つからない限り、隣接するすべてのピアに送信しなければなりません。

      この方法にもいくつかの欠点があります。

      3.異質性を利用する

      • このP2Pアーキテクチャは、上述の両方のシステムを利用しています。
      • クエリ処理のための中央サーバーがないため、Gnutellaのような分散システムに似ています。
      • ただし、Gnutellaとは異なり、すべてのピアを平等に扱うわけではありません。より高い帯域幅とネットワーク接続性を持つピアは高い優先順位を持ち、グループリーダー/スーパーノードと呼ばれます。

      KaZaAテクノロジーは、NapsterとGnutellaの両方を利用した例です。
      つまり、個々のグループリーダーとその子供のピアがNapsterのような構造を形成します。

      この技術は、NapsterとGnutellaの両方を利用しています。

      機能

      • この構造は2つの方法でクエリを処理することができます。
      • 1つ目は、スーパーノードが他のスーパーノードに連絡して、そのデータベースを自分のデータベースにマージすることです。
      • もう 1 つの方法は、クエリが入ってくると、Gnutella のように、一致するものが見つかるまで近隣のスーパーノードに転送されることです。 このようにクエリフラッディングは存在しますが、各スーパーノードには多くの子ピアがあるため、範囲は限られています。

      参考文献-Computer Networking:A Top down Approach By James F. Kurose

      この記事はArushi Dhamijaが執筆しました。 GeeksforGeeksを気に入ってくださり、寄稿したいと思われる方は、contribute.geeksforgeeks.orgを使って記事を書いていただくか、 [email protected] までメールでお送りください。 あなたの記事がGeeksforGeeksのメインページに掲載されるのを見て、他のGeeksを助けてください。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です