P2P & JXTA Memo For Beginners Hosei Graduation School ITPC 02R3315 Katsuhiro Chiba
P2Pとは 各デバイス(PC・PDA・携帯電話など)が、 それぞれ同等に通信し合う仕組みや技術。 このP2Pを利用することで、ピア同士が 様々なリソースやサービスを提供しあうことが 可能になる。 *「ピア」=「各デバイス」
P2Pの特徴 1、 中央で一括処理を行うサーバを必要としない。 (サーバを排除するわけではない) 1、 中央で一括処理を行うサーバを必要としない。 (サーバを排除するわけではない) 2、 サーバ構築がないため、運営コストがかからず、 メンテナンスも必要としない。 3、 集中的な負荷がかからないため、 ネットワークの帯域幅を効率的に利用できる。 4、 NATやファイアウォールといった、 ネットワークの構成に影響されることがない。
P2Pの種類(1) ハイブリット型 サーバが存在するP2P。 サーバはクライアントの所在情報のみを管理し、 共有されるリソースはクライアント側で保有する。 サーバへは所在情報の問い合わせを行い、 リソースの提供は、クライアント間で行われる。 例:Napster、WinMX
P2Pの種類(2) ピュア型 クライアント、サーバといった役割分担が 存在せず、ピア(クライアント)のみで動作する。 サーバが存在しないため、自己増殖的に、 そして自発的にネットワークを形成することが 可能である。 ピア間でメッセージの受け渡しは、ルーティング することによって成立している。(マルチホップ) 例:Gnutella、Winny
P2Pの利用事例 コラボレーション 分散処理 ストレージ >複数ユーザの強調活動を支援する >大規模なデータ処理を小さな単位に分割し、 >それらをネットワーク上のPCに処理させる ストレージ >ファイル共有。
JXTAの特徴 JXTAとは、Sunによって作られたP2Pプロトコル。 主なコンセプト 相互運用性 →相互通信のための様々なサービスを提供する。 プラットフォーム非依存性 →プログラミング言語、OS、通信プロトコル、 ハードウェアのどれにも依存しない。 遍在性 →携帯電話、PC、PDAなどのデバイスにも実装可能。
JXTAのアーキテクチャ(1)
JXTAのアーキテクチャ(2) JXTAで可能なこと(*アーキテクチャ図参照) ファイアウォールやNATを越えて、 動的にピアを探し出す 簡単にデータ、ドキュメントを共有する。 他のピアのリソースを探し出す サービスを提供するグループの作成する。 他のピアの状態を監視する。 他のピアとセキュアな通信する。
JXTAの構成要素(1) ピア ピアグループ サービス パイプ アドバタイズメント ID
JXTAの構成要素(2) ピア ピアの種類 JXTAネットワークを形成する最小単位。 ピアは独立して存在し、他のピアの動作に関係なく、 非同期で動作する。 ピアの種類 マイクロピア・・・携帯電話やPDAなどのスペックが限られたピア。 シンプルピア・・・パソコンやサーバなどの一般的なピア。 スーパーピア・・・高スペックのパソコンやアドレスを持ったサーバなど 特別な機能を持つピア。下記の2種類がある。 ランデブーピア・・・ピア同士の出会いの場を提供するピア。 リレーピア・・・メッセージの受け渡し、中継を行うピア。
JXTAの構成要素(3) ピアグループ 複数のピアが集まって構成されたグループ。 サービスを提供することで、グループのピアが 同一の動作をふるまうことを可能にする。 セキュリティを実装することが可能。 階層的なグループ形成が可能。
JXTAの構成要素(4) サービス パイプ ピアが利用する基本機能(共通的) 具体的には、ファイル交換・コンテンツ配信など。 ピアがお互いに通信するための伝送路。 非同期で短方向のメッセージ通信経路。 パイプ上で流れるメッセージはXML。
JXTAの構成要素(5) アドバタイズメント ピア・ピアグループ・パイプ・サービスなど、さまざまな リソースを表すXMLドキュメント ワークで利用できるリソースの情報を得る。 ピアは各リソースのアドバタイズメントを作成し、外部に 公開する。他のピアはこの公開されたアドバタイズメント を検索・発見し、いろいろなリソースを享受する。
JXTAの構成要素(6) ID JXTAで扱われる各リソースは、ユニークIDを 持っているため、識別が可能である。 様々なデバイスが、様々なネットワークトランス ポートを利用するため、より柔軟な識別情報を もつ必要がある。JXTAでは各リソースにIDを 持たせることによって、これをクリアしている。
参考資料 C Magazine/2003年01号/P37~74 「ピア・ツー・ピア プログラミング」