この
記事 きじ には
複数 ふくすう の問題 もんだい があります。
改善 かいぜん や
ノートページ での
議論 ぎろん にご
協力 きょうりょく ください。
P2P型 がた ネットワーク(図 ず はピュアP2P型 がた )。コンピューター同士 どうし が対等 たいとう に通信 つうしん を行 おこな うのが特徴 とくちょう である。
Peer to Peer (ピア・トゥ・ピア または ピア・ツー・ピア)とは、複数 ふくすう のコンピューター間 あいだ で通信 つうしん を行 おこな う際 さい のアーキテクチャ のひとつで、対等 たいとう の者 もの (Peer、ピア)同士 どうし が通信 つうしん をすることを特徴 とくちょう とする通信 つうしん 方式 ほうしき 、通信 つうしん モデル、あるいは通信 つうしん 技術 ぎじゅつ の一 いち 分野 ぶんや を指 さ す。略記 りゃっき は、P2P 。
クライアント・サーバー 型 かた ネットワーク。サーバー(図 ず 中央 ちゅうおう )とクライアントは一対一 いちたいいち の通信 つうしん を行 おこな うのが特徴 とくちょう である。
P2Pに対置 たいち される用語 ようご としてクライアント・サーバー方式 ほうしき がある。クライアント・サーバー方式 ほうしき ではネットワークに接続 せつぞく されたコンピューターに対 たい しクライアントとサーバーに立場 たちば ・機能 きのう を分離 ぶんり しており、一般 いっぱん 的 てき には多数 たすう のクライアントに対 たい してサーバーが一 ひと つである。クライアントはサーバーとだけ通信 つうしん でき、あるクライアントが他 た のクライアントと通信 つうしん するにはサーバーを介 かい する必要 ひつよう がある。
P2Pではネットワークに接続 せつぞく されたコンピューター同士 どうし が対等 たいとう の立場 たちば 、機能 きのう で直接 ちょくせつ 通信 つうしん するものである。クライアント・サーバー方式 ほうしき ではクライアント数 すう が非常 ひじょう に多 おお くなると、サーバーおよびその回線 かいせん に負荷 ふか が集中 しゅうちゅう するのに対 たい して、Peer to Peer方式 ほうしき はその構造 こうぞう 上 じょう 、コンピューター機器 きき (以下 いか 機器 きき )数 すう が膨大 ぼうだい になっても特定 とくてい 機器 きき へのアクセス集中 しゅうちゅう が発生 はっせい しにくいという特徴 とくちょう がある。
P2P通信 つうしん の一 いち 例 れい としては、インターネットに接続 せつぞく した一般 いっぱん ユーザーの複数 ふくすう パソコン (PC) 同士 どうし が互 たが いのIPアドレスを呼 よ び合 あ う直接 ちょくせつ 通信 つうしん が挙 あ げられる。P2Pによるネットワークはオーバーレイ・ネットワーク の一 ひと つに数 かぞ えられる。
実用 じつよう 化 か されたシステムとしてはP2Pデータ配信 はいしん 、P2P電話 でんわ 、P2P掲示板 けいじばん 、P2P放送 ほうそう (テレビ、ラジオ)、P2Pグループウェア 、P2P分散 ぶんさん ファイルシステム 、P2P-SIP [ 1] 、P2P-DNS 、P2P-仮想 かそう ネットワーク[ 2] 、P2P地震 じしん 情報 じょうほう などがある。またここ数 すう 年 ねん [いつ? ] 、商用 しょうよう 的 てき にも注目 ちゅうもく を集 あつ めており、特 とく にIP電話 でんわ (Skype 、LINE など)や動画 どうが 配信 はいしん サービス (Veoh など)といった応 おう 用例 ようれい が増 ふ えてきている。
しかしこれらの応用 おうよう 技術 ぎじゅつ は2000年代 ねんだい 初頭 しょとう から実用 じつよう 化 か され始 はじ めた技術 ぎじゅつ であり、歴史 れきし 的 てき にはまだ日 ひ が浅 あさ く、成熟 せいじゅく 技術 ぎじゅつ となるまでには解決 かいけつ しなければならない様々 さまざま な問題 もんだい がある(後述 こうじゅつ )。そのため現在 げんざい でも学術 がくじゅつ 的 てき な研究 けんきゅう が盛 さか んな分野 ぶんや である。また無線 むせん 通信 つうしん で使 つか われるモバイルアドホックネットワーク もP2Pの一種 いっしゅ であるが、無線 むせん での通信 つうしん 可能 かのう 距離 きょり を稼 かせ ぐという特殊 とくしゅ な使 つか い方 かた であるので詳細 しょうさい な解説 かいせつ は別項 べっこう に譲 ゆず る。
P2Pにおける通信 つうしん 端末 たんまつ はピア (peer) と呼 よ ばれるが、トポロジー理論 りろん 、グラフ理論 りろん などで用 もち いる「ノード 」(node: 節点 せってん )という呼称 こしょう を用 もち いることも多 おお い。またクライアントの機能 きのう とサーバーの機能 きのう を併 あわ せ持 も つという意味 いみ でサーバント という呼 よ び方 かた をすることもある。
端末 たんまつ 装置 そうち の種類 しゅるい としてはPCやスマートフォンが使 つか われることが多 おお いが、セットトップボックス (STB) やHDDレコーダー、HDD内蔵 ないぞう ルーター といったものもピアになりうる。
インターネットの基盤 きばん であるIPネットワーク はIPアドレス さえ分 わ かっていればどのコンピューター機器 きき (以下 いか 機器 きき )にも到達 とうたつ できる。つまり機器 きき 同士 どうし が相手 あいて のIPアドレスを知 し っていればP2P通信 つうしん が可能 かのう である。したがってインターネット上 じょう のP2P応用 おうよう 技術 ぎじゅつ はIPネットワークのオーバーレイ・ネットワーク (Overlay Network:以下 いか 、OLNと略記 りゃっき する)と見 み ることができる。
例 たと えば放送 ほうそう 型 がた サービスにP2Pを応用 おうよう する場合 ばあい はマルチキャスト 型 かた の通信 つうしん 形態 けいたい となる。そのためこれをオーバーレイマルチキャスト (英語 えいご 版 ばん ) (Overlay Multicast: OLM) あるいはアプリケーション層 そう マルチキャスト (Application Layer Multicast: ALM) と呼 よ ぶことがある[ 3] 。
後者 こうしゃ の呼 よ び方 かた はIPマルチキャスト がTCP/IPのレイヤーでのパケットの複製 ふくせい によりマルチキャストを行 おこな うのに対 たい して、アプリケーション層 そう でデータのコピーをしてマルチキャストを行 おこな う、という意味合 いみあ いから来 き ている。
ピア間 あいだ で何 なに を行 おこな うか、という観点 かんてん で、大 おお きく以下 いか の4つのタイプのアプリケーションに分 わ けられる。
一対一 いちたいいち 通信 つうしん 型 がた
放送 ほうそう 型 がた
オンデマンド型 がた
分散 ぶんさん 型 がた データ管理 かんり
複数 ふくすう の機能 きのう を併 あわ せ持 も ったアプリケーションも存在 そんざい する。
IP電話 でんわ 、LINE電話 でんわ やSkype に代表 だいひょう されるような、コンピューター間 あいだ で一対一 いちたいいち のコミュニケーションを行 おこな う使 つか い方 かた である。相手 あいて のIPアドレスを、電話 でんわ 番号 ばんごう やニックネームなどから見 み つけ出 だ し(=IPアドレス解決 かいけつ と呼 よ ぶ)、その後 ご 、ピアとピアが対等 たいとう の立場 たちば で通信 つうしん を行 おこな う。音声 おんせい データであれば電話 でんわ となり、映像 えいぞう データであればテレビ電話 でんわ となる。インスタントメッセージやオンラインチャットもある。通常 つうじょう 、アプリケーションの背後 はいご に特定 とくてい の利用 りよう 者 しゃ がいることが想定 そうてい されており、その人物 じんぶつ に対 たい して接続 せつぞく を行 おこな うような使 つか い方 かた が多 おお い。この種 たね のアプリケーションのほとんどには、相手 あいて がオンラインかどうかを認識 にんしき する仕掛 しか け(プレゼンス機能 きのう )が設 もう けられている。
このタイプのアプリケーションでは、データは通常 つうじょう 、リアルタイムでのストリーミング でやりとりされる。
P2P-SIP では、SIP-URIからIPアドレスを知 し るためにP2P技術 ぎじゅつ を利用 りよう しており、従来 じゅうらい あったSIPサーバーを不要 ふよう にできる。アドレス解決 かいけつ 以外 いがい の、接続 せつぞく ・切断 せつだん のシグナリング、音声 おんせい データのストリーミングに関 かん しては、従来 じゅうらい のSIP やRTP/RTCPの技術 ぎじゅつ をそのまま利用 りよう している。任天堂 にんてんどう やボードゲームの一部 いちぶ アプリでは、オンライン用 よう 双方向 そうほうこう 通信 つうしん にP2P通信 つうしん を採用 さいよう している。
応 おう 用例 ようれい :IP電話 でんわ 、Skype 、LINE 、MSN メッセンジャー 、P2P-SIP 、P2Pグループウェア 、リアルタイムオンラインゲーム
ノード間 あいだ 接続 せつぞく を、カスケード状 じょう に多段 ただん 階層 かいそう 化 か して、配信 はいしん ツリーを形成 けいせい することで、放送 ほうそう 型 がた のサービスが実現 じつげん できる。ツリーの根元 ねもと のノードが、放送 ほうそう 局 きょく となり、上流 じょうりゅう ノードから下流 かりゅう ノードへ、データをバケツリレーさせることで、全 ぜん 参加 さんか ノードに、ほぼ同時 どうじ に同 おな じデータを配信 はいしん することが出来 でき る。これにより、リアルタイムのストリーミング中継 ちゅうけい が可能 かのう となる。
オーバーレイマルチキャストの配信 はいしん ツリーの概念 がいねん 図 ず
多 おお くのP2P型 がた 放送 ほうそう システムでは、アドレス解決 かいけつ にハイブリッドP2P方式 ほうしき (後述 こうじゅつ )を採用 さいよう しており、通常 つうじょう 、チャンネル名 めい でインデックスサーバーに問 と い合 あ わせると、「あのノードの下流 かりゅう につながってストリームをもらいなさい」というようにノードを紹介 しょうかい してくれる。インデックスサーバーの役割 やくわり を各 かく ノードに分散 ぶんさん させる(=ピュアP2P型 がた OLM)ことも可能 かのう ではあるが、そのような実装 じっそう 例 れい はまだ発表 はっぴょう されていない。
上流 じょうりゅう ノードが脱退 だったい したときに、ストリームが途切 とぎ れるが、内部 ないぶ にバッファを持 も つことで、一定 いってい 時間 じかん は再生 さいせい が途絶 とだ えないようにして、その間 あいだ に、別 べつ の上流 じょうりゅう ノードを探 さが し出 だ して、再 さい 接続 せつぞく を行 おこな う。再 さい 接続 せつぞく の処理 しょり には時間 じかん がかかるため、通常 つうじょう 、予備 よび の上流 じょうりゅう ノードを用意 ようい しておく。再 さい 接続 せつぞく 先 さき 候補 こうほ のノードを、効率 こうりつ 的 てき に準備 じゅんび しておくために、様々 さまざま な創意 そうい 工夫 くふう が考案 こうあん されている(詳細 しょうさい は、オーバーレイマルチキャスト またはアプリケーション層 そう マルチキャスト を参照 さんしょう )。
応 おう 用例 ようれい :P2P放送 ほうそう (映像 えいぞう +音声 おんせい 、音声 おんせい のみ); (PeerCast [ 4] 他 た [ 5] [ 6] [ 7] )
動画 どうが コンテンツの配信 はいしん などでは、コンテンツを欲 ほっ するノードが、当該 とうがい コンテンツを持 も っているノードを探 さが し出 だ して、そこへデータを要求 ようきゅう することで、保持 ほじ ノードがそれに応 おう じてデータを送信 そうしん する(オンデマンド)、という一方向 いちほうこう 型 がた の通信 つうしん が行 おこな われる。い換 いか えると、持 も っている者 もの から欲 ほっ する者 もの へ、という通信 つうしん である。送信 そうしん 元 もと は、使用 しよう しているコンピューターが複数 ふくすう ある場合 ばあい 、どれからでも良 よ くて、不 ふ 特定 とくてい 多数 たすう の中 なか からアプリケーションまかせで選 えら ばれる。送信 そうしん 元 もと のIPアドレスは、コンテンツのタイトルなどを手 て がかりに、インデックスを検索 けんさく して見 み つけ出 だ し、コンテンツ保持 ほじ ノードにデータ送信 そうしん を要求 ようきゅう することで、データ転送 てんそう が開始 かいし される。
オンデマンド型 がた のP2Pアプリケーションでは、配信 はいしん 効率 こうりつ を上 あ げるために、コンテンツのコピー(レプリカ)を作 つく ることが良 よ く行 おこな われる。一度 いちど 取得 しゅとく したコンテンツのコピーを保持 ほじ して、他 た のノードに対 たい して提供 ていきょう 可能 かのう な状態 じょうたい にすることで、他 た の誰 だれ かが再度 さいど 同 おな じコンテンツをリクエストしたときに、負荷 ふか 分散 ぶんさん の効果 こうか が期待 きたい できるからである。これは特 とく に、人気 にんき のあるコンテンツに対 たい してのアクセス集中 しゅうちゅう の緩和 かんわ に効果 こうか 的 てき である。レプリカを作 つく るアプリケーションでは、通常 つうじょう 、レプリカをキャッシュフォルダー内 ない に作 つく り、古 ふる いレプリカから追 お い出 だ すような実装 じっそう になっていることが多 おお い。
オンデマンド型 がた のP2Pアプリケーションでは、データ全体 ぜんたい を、一旦 いったん リクエストした端 はし 末 まつ までは持 も ってきてから利用 りよう する「ダウンロード方式 ほうしき 」の実装 じっそう がほとんどである。
応 おう 用例 ようれい :P2Pコンテンツ配信 はいしん 、P2P掲示板 けいじばん 、P2Pグループウェア、P2P分散 ぶんさん ファイルシステム、無線 むせん のアドホックネットワーク 、ゲームソフトのアップデート[ 8]
ビットコイン 、Ripple などでは、通貨 つうか の取引 とりひき 履歴 りれき 情報 じょうほう を、各 かく ノードで分散 ぶんさん して持 も つことによって、通常 つうじょう はサーバーで管理 かんり する台帳 だいちょう データの不正 ふせい な改竄 かいざん を防 ふせ ぐことができるので、P2Pを利用 りよう している。これにより自分 じぶん のノードの台帳 だいちょう データを改 かい ざんしたとしても、他 た の多数 たすう のノードが正 ただ しいデータを保持 ほじ していることにより、比較 ひかく した際 さい に改竄 かいざん を検知 けんち することができる。
インデックス情報 じょうほう の持 も ち方 かた での分類 ぶんるい [ 編集 へんしゅう ]
「こういうデータを持 も っているのは誰 だれ ですかね?」という問 と いに答 こた えるためには、データを検索 けんさく するための属性 ぞくせい キーとデータのありかの対応 たいおう 表 ひょう (インデックス)を持 も っている必要 ひつよう があるが、これをサーバーに集中 しゅうちゅう して持 も たせる場合 ばあい と、各 かく ノードに分散 ぶんさん して持 も たせる場合 ばあい と、特定 とくてい の選 えら ばれたノードに分散 ぶんさん して持 も たせる場合 ばあい 、の3種類 しゅるい が存在 そんざい する。
ハイブリッドP2Pの仕組 しく み(図 ず はBitTorrentのもの)。欲 ほ しい情報 じょうほう となるキーファイルをサーバーに伝 つた え、実際 じっさい のデータはノード同士 どうし でやりとりを行 おこな う仕組 しく み
ハイブリッドP2Pにおいては、インデックス情報 じょうほう を、中央 ちゅうおう のインデックスサーバーで一括 いっかつ して管理 かんり する。新 あたら しいデータを保持 ほじ したノードは、自分 じぶん が持 も っていることを、インデックスサーバーに申告 しんこく しておく。データを欲 ほっ するノードが、「このキーに対応 たいおう する相手 あいて を教 おし えて下 くだ さいな」とインデックスサーバーに問 と い合 あ わせると、対応 たいおう する相手 あいて のIPアドレスを教 おし えてくれる。インデックスが膨大 ぼうだい になると、スケーラビリティが無 な くなる点 てん が、後述 こうじゅつ のピュアP2Pと比 くら べて劣 おと るが、通常 つうじょう 規模 きぼ のシステムであれば、この方式 ほうしき で事足 ことた りるケースが多 おお い。インデックスサーバーがダウンすると、システム全体 ぜんたい が停止 ていし するため、耐 たい 障害 しょうがい 性 せい の面 めん では、ピュアP2Pに劣 おと る。
BitTorrent 、Napster 、WinMX 、放送 ほうそう 型 がた P2P (オーバーレイマルチキャスト (英語 えいご 版 ばん ) ) の多 おお くは、この方式 ほうしき を採用 さいよう している。
ピュアP2Pの仕組 しく み。一切 いっさい の処理 しょり をコンピューター同士 どうし が対等 たいとう に通信 つうしん を行 おこな うのが特徴 とくちょう である。
インデックス情報 じょうほう は、各 かく ノードが少 すこ しずつ分散 ぶんさん して持 も ち合 あ う。
自分 じぶん の知 し っているノードに、「データを持 も っているのは誰 だれ ですかね?」というメッセージを投 な げると、そのノードが知 し っていれば回答 かいとう が返 かえ り、知 し らなければ又聞 またぎ きをしてくれる(メッセージを転送 てんそう する)仕組 しく みになっている。インデックスが膨大 ぼうだい になっても破綻 はたん しないため、スケーラビリティが高 たか い。メッセージ転送 てんそう の方式 ほうしき により、非 ひ 構造 こうぞう 化 か タイプと構造 こうぞう 化 か タイプの2 ふた つに分類 ぶんるい できる(後述 こうじゅつ )。
Gnutella 、Freenet 、OceanStore 、Winny 、Share は、この方式 ほうしき を採用 さいよう している。
ピュアP2Pに参加 さんか する際 さい には、既 すで に参加 さんか しているノードのIP情報 じょうほう を何 なん らかの形 かたち で知 し っている必要 ひつよう がある。このためには、常 つね に活 い きているノード(コンタクトノード)を用意 ようい しておいて、参加 さんか 時 じ はいつもそこに接続 せつぞく するようにするか、あるいは、参加 さんか しているいくつかのノードの情報 じょうほう をサーバーに集 あつ めて、ここから知 し るように構成 こうせい する。
インデックス情報 じょうほう は、特定 とくてい の選 えら ばれたノード(スーパーノード)が分担 ぶんたん して持 も つ。スーパーノードには、できるだけ安定 あんてい な端 はし 末 まつ (ずっと電源 でんげん が入 はい っていて、通信 つうしん 回線 かいせん も安定 あんてい していて、帯域 たいいき 幅 はば も太 ふと いようなノード)が選 えら ばれる。スーパーノードは、一般 いっぱん のエンドユーザーの端末 たんまつ から能力 のうりょく に応 おう じて選 えら ばれるが、サービス提供 ていきょう 者 しゃ 側 がわ が用意 ようい した端 はし 末 まつ であることも多 おお い。
KaZaA 、Skype は、この方式 ほうしき を採用 さいよう している。
ピュアP2Pにおいては、インデックス情報 じょうほう も分散 ぶんさん されて持 も たれるため、相手 あいて 先 さき IPアドレスの発見 はっけん の仕組 しく みは、検索 けんさく メッセージを転送 てんそう することで行 おこな われる。転送 てんそう 方式 ほうしき で、2種類 しゅるい に分類 ぶんるい ができる。
非 ひ 構造 こうぞう 化 か オーバーレイ
問 と い合 あ わせ元 もと のノードは、キーに対応 たいおう する相手 あいて を発見 はっけん するために、手当 てあ たり次第 しだい に、自分 じぶん が知 し っているノード(かつて通信 つうしん をしたことがあるノードなど)に対 たい して、「データを持 も っているのは誰 だれ ですかね?」というメッセージを投 な げつけ、受 う け取 と ったノードは、持 も っていれば返答 へんとう し、持 も っていなければ検索 けんさく メッセージをコピーして、他 た のノードに転送 てんそう する方式 ほうしき 。メッセージがネズミ算式 さんしき に増 ふ えるので、フラッディング方式 ほうしき (洪水 こうずい という意味 いみ )という別名 べつめい が付 つ いているが、メッセージが増 ふ えすぎないように、転送 てんそう 回数 かいすう やメッセージの生存 せいぞん 時間 じかん などで制限 せいげん をかける必要 ひつよう がある。そのため、OLN上 じょう のどこかに相手 あいて が存在 そんざい するにも関 かか わらず、発見 はっけん できない場合 ばあい がある。
Gnutella 、Freenet 、Winny 、Share などで実装 じっそう されている。
構造 こうぞう 化 か オーバーレイ
「データを持 も っているのは誰 だれ ですかね?」というメッセージを転送 てんそう する際 さい の、転送 てんそう 先 さき を選 えら ぶ方法 ほうほう をあらかじめ構造 こうぞう 的 てき に決 き めておいて、「キーに対応 たいおう する相手 あいて 」が確実 かくじつ に分 わ かるようにした方式 ほうしき である。よく知 し られている方式 ほうしき として、DHT (Distributed Hash Table)、SkipGraph などがある。検索 けんさく メッセージの転送 てんそう 先 さき の範囲 はんい が、キーに応 おう じてだんだんと絞 しぼ られていくように設計 せっけい されている。概略 がいりゃく イメージは、A県 けん の中 なか のB市 し の中 なか のC町 まち の中 なか の田中 たなか さん、というように範囲 はんい を絞 しぼ る形 かたち で、メッセージが転送 てんそう される、と考 かんが えると理解 りかい がしやすい。
DHTの実装 じっそう 例 れい としては、Chord 、CAN 、Pastry 、Tapestry 、Kademlia 、OpenDHT 、Overlay Weaver などがよく知 し られている。