「Peer to Peer」の版間の差分
削除された内容 追加された内容
タグ: モバイル編集 モバイルウェブ編集 |
m 外部リンクの修正 (ci.nii.ac.jp) (Botによる編集) |
||
(21人の利用者による、間の30版が非表示) | |||
1行目:
{{Redirect|P2P}}
{{複数の問題
|出典の明記=2021-11
|独自研究=2021-11
}}
[[ファイル:P2P-network.svg|thumb|200px|P2P型ネットワーク(図はピュアP2P型)。コンピューター同士が対等に通信を行うのが特徴である。]]
'''Peer to Peer'''(ピア・トゥ・ピア または ピア・ツー・ピア)とは、複数のコンピューター間で通信を行う際の[[アーキテクチャ]]のひとつで、対等の者(Peer、ピア)同士が通信をすることを特徴とする通信方式、通信モデル、あるいは通信技術の一分野を指す。
== 概要 ==
[[ファイル:Server-based-network.svg|thumb|200px|'''クライアント
P2Pに対置される用語として[[クライアントサーバモデル|クライアント
P2Pではネットワークに接続されたコンピューター同士が対等の立場、機能で直接通信するものである。クライアント
P2P通信の一例としては、インターネットに接続した一般ユーザーの複数[[パーソナルコンピュータ|パソコン]] (PC) 同士が互いのIPアドレスを呼び合う直接通信が挙げられる。P2Pによるネットワークは[[オーバーレイ・ネットワーク]]の一つに数えられる。
実用化されたシステムとしてはP2Pデータ配信、P2P電話、P2P掲示板、P2P放送
しかしこれらの応用技術は[[2000年代]]初頭から実用化され始めた技術であり、歴史的にはまだ日が浅く、成熟技術となるまでには解決しなければならない様々な問題がある(後述)。そのため現在でも学術的な研究が盛んな分野である。また無線通信で使われる[[モバイルアドホックネットワーク]]もP2Pの一種であるが、無線での通信可能距離を稼ぐという特殊な使い方であるので詳細な解説は別項に譲る。
== P2Pの端末装置 ==
P2Pにおける通信端末はピア (peer) と呼ばれるが、[[位相幾何学|トポロジー理論]]、[[グラフ理論]]などで用いる「[[ノード (ネットワーク)|ノード]]」(node: 節点)という呼称を用いることも多い。またクライアントの機能とサーバーの機能を併せ持つという意味で[[サーバント]]という呼び方をすることもある。
端末装置の種類としては
== インターネットにおけるP2P ==
インターネットの基盤である[[IPネットワーク]]は[[IPアドレス]]さえ分かっていればどのコンピューター機器(以下機器)にも到達できる。つまり機器同士が相手のIPアドレスを知っていればP2P通信が可能である。したがってインターネット上のP2P応用技術はIPネットワークの[[オーバーレイ・ネットワーク]](Overlay Network:以下、OLNと略記する)と見ることができる。
例えば放送型サービスにP2Pを応用する場合は[[マルチキャスト]]型の通信形態となる。そのためこれを
後者の呼び方は[[IPマルチキャスト]]がTCP/IPのレイヤーでのパケットの複製によりマルチキャストを行うのに対して、アプリケーション層でデータのコピーをしてマルチキャストを行う、という意味合いから来ている。
== P2Pアプリケーションの分類 ==
ピア間で何を行うか、という観点で、大きく以下の4つのタイプ
#一対一通信型
#放送型
#オンデマンド型
#分散型データ管理
複数の機能を併せ持ったアプリケーションも存在する。
=== 一対一通信型 ===
[[IP電話]]、[[LINE電話]]や[[Skype]]に代表されるような、
このタイプのアプリケーションでは、データは通常、リアルタイムでの[[ストリーミング]]でやりとりされる。
[[P2P-SIP]]では、SIP-URIからIPアドレスを知るためにP2P技術を利用しており、従来
応用例:[[IP電話]]、[[Skype]]、[[LINE (アプリケーション)|LINE]]、[[MSN メッセンジャー]]、[[P2P-SIP]]、P2P[[グループウェア]]
=== 放送型 ===
98 ⟶ 52行目:
[[ファイル:Overlay_Multicast.png|thumb|center|560px|オーバーレイマルチキャストの配信ツリーの概念図]]
多くのP2P型放送システムでは、アドレス解決にハイブリッドP2P方式
上流ノードが脱退したときに、ストリームが途切れるが、内部にバッファを持つことで、一定時間は再生が途絶えないようにして、その間に、別の上流ノードを探し出して、再接続を行う。再接続の処理には時間がかかるため、通常、予備の上流ノードを用意しておく。再接続先候補のノードを、効率的に準備しておくために、様々な創意工夫が考案されている(詳細は、[[オーバーレイマルチキャスト]]
応用例:P2P放送
=== オンデマンド型 ===
動画コンテンツの配信などでは、コンテンツを欲するノードが、当該コンテンツを持っているノードを探し出して、そこへデータを要求することで、保持ノードがそれに応じてデータを送信する(オンデマンド)、という一方向型の通信が行われる。言い換えると、持っている者から欲する者へ、という通信である。送信元は、
オンデマンド型のP2Pアプリケーションでは、配信効率を上げるために、コンテンツのコピー(レプリカ)を作ることが良く行われる。一度取得したコンテンツのコピーを保持して、他のノードに対して提供可能な状態にすることで、他の誰かが再度同じコンテンツをリクエストしたときに、負荷分散の効果が期待できるからである。これは特に、人気のあるコンテンツに対してのアクセス集中の緩和に効果的である。レプリカを作るアプリケーションでは、通常、レプリカをキャッシュフォルダー内に作り、古いレプリカから追い出すような実装になっていることが多い。
オンデマンド型のP2Pアプリケーションでは、データ全体を、一旦リクエストした端末までは持ってきてから利用する「ダウンロード方式」の実装がほとんどである。
114 ⟶ 68行目:
=== 分散型データ管理 ===
[[ビットコイン]]、[[Ripple (支払いシステム)|Ripple]]などでは、通貨の取引履歴情報を、各ノードで分散して持つことによって、通常はサーバーで管理する台帳データの不正な改竄を防ぐことができるので、P2Pを利用している。これにより自分のノードの台帳データを改ざんしたとしても、他の多数のノードが正しいデータを保持していることにより、比較した際に改竄を検知することができる。
== 技術的な分類 ==
=== インデックス情報の持ち方での分類 ===
「こういうデータを持っているのは誰ですかね?」という問いに答えるためには、データを検索するための属性キーとデータのありかの対応表(インデックス)を持っている必要があるが、これをサーバーに集中して持たせる場合と、各ノードに分散して持たせる場合と、特定の選ばれたノードに分散して持たせる場合、の
<span id="hybridP2P"></span>
==== ハイブリッドP2P ====
[[ファイル:BitTorrent DNAの動作説明2.PNG|thumb|200px|ハイブリッドP2Pの仕組み(図はBitTorrentのもの)。<br />欲しい情報となるキーファイルをサーバーに伝え、実際のデータはノード同士でやりとりを行う仕組み]]
ハイブリッドP2Pにおいては、インデックス情報を、中央のインデックスサーバーで一括して管理する。新しいデータを保持したノードは、自分が持っていることを、インデックスサーバーに申告しておく。データを欲するノードが、「このキーに対応する相手を教えて下さいな」とインデックスサーバーに問い合わせると、対応する相手のIPアドレスを教えてくれる。インデックスが膨大になると、スケーラビリティが無くなる点が、後述のピュアP2Pと比べて劣るが、通常規模のシステムであれば、この方式で事足りるケースが多い。インデックスサーバーがダウンすると、システム全体が停止するため、耐障害性の面では、ピュアP2Pに劣る。
[[BitTorrent]]、[[Napster]]、[[WinMX]]、放送型P2P (
<span id="pureP2P"></span>
==== ピュアP2P ====
[[ファイル:P2P-network.svg|thumb|200px|ピュアP2Pの仕組み。一切の処理をコンピューター同士が対等に通信を行うのが特徴である。]]
インデックス情報は、各ノードが少しずつ分散して持ち合う。
自分の知っているノードに、「データを持っているのは誰ですかね?」というメッセージを投げると、そのノードが知っていれば回答が返り、知らなければ又聞きをしてくれる(メッセージを転送する)仕組みになっている。インデックスが膨大になっても破綻しないため、スケーラビリティが高い。メッセージ転送の方式により、非構造化タイプと構造化タイプの2つに分類できる(後述)。
[[Gnutella]]、[[Freenet]]、[[OceanStore]]、[[Winny]]、[[Share (ソフトウェア)|Share]] は、この方式を採用している。
ピュアP2Pに参加する際には、既に参加しているノードのIP情報を何らかの形で知っている必要がある。このためには、常に活きているノード
<span id="supernodeP2P"></span>
==== スーパーノード型P2P ====
インデックス情報は、特定の選ばれたノード(スーパーノード)が分担して持つ。スーパーノードには、できるだけ安定な端末(ずっと電源が入っていて、通信回線も安定していて、帯域幅も太いようなノード)が選ばれる。スーパーノードは、一般のエンドユーザーの端末から能力に応じて選ばれるが、サービス提供者側が用意した端末であることも多い。
[[kazaa|KaZaA]]、[[Skype]]は、この方式を採用している。
148 ⟶ 103行目:
;非構造化オーバーレイ
:問い合わせ元のノードは、キーに対応する相手を発見するために、手当たり次第に、自分が知っているノード(かつて通信をしたことがあるノードなど)に対して、「データを持っているのは誰ですかね?」というメッセージを投げつけ、受け取ったノードは、持っていれば返答し、持っていなければ検索メッセージをコピーして、他のノードに転送する方式。メッセージがネズミ算式に増えるので、フラッディング方式(洪水という意味)という別名が付いているが、メッセージが増えすぎないように、転送回数やメッセージの生存時間などで制限をかける必要がある。そのため、OLN上のどこかに相手が存在するにも関わらず、発見できない場合がある。
:[[Gnutella]]、[[Freenet]]、[[Winny]]、[[Share]] などで実装されている。
;構造化オーバーレイ
:「データを持っているのは誰ですかね?」というメッセージを転送する際の、転送先を選ぶ方法をあらかじめ構造的に決めておいて、「キーに対応する相手」が確実に分かるようにした方式である。よく知られている方式として、[[分散ハッシュテーブル|DHT]](Distributed Hash Table)、[[SkipGraph]]などがある。検索メッセージの転送先の範囲が、キーに応じてだんだんと絞られていくように設計されている。概略イメージは、A県の中のB市の中のC町の中の田中さん、というように範囲を絞る形で、メッセージが転送される、と考えると理解がしやすい。
:DHTの実装例としては、[[Chord]]、[[:en:Content_addressable_network|CAN]]、[[Pastry]]、[[Tapestry]]、[[Kademlia]]、[[OpenDHT]]、[[Overlay Weaver]]などがよく知られている。
== 脚注 ==
{{脚注ヘルプ}}
=== 出典 ===
{{reflist}}
== 関連項目 ==
* {{仮リンク|Wi-Fi Direct|en|Wi-Fi Direct}} - Wi-Fiを利用したP2P通信の規格。
** [[Miracast]]
* [[P2P共有]]
**[[ファイル共有ソフトウェア]]
***[[Gnutella]]
****[[LimeWire]]
*****[[Cabos]]
***[[WinMX]]
****[[Winny]]/[[Freenet]]
*****[[Antinny]]
****[[Perfect Dark]]
****[[Profes]]
****[[StealthNet]]
* [[分散コンピューティング]]
**[[Tor]]
**[[Ripple (支払いシステム)|Ripple]]
**[[新月_(掲示板)]]
**[[Real Time Media Flow Protocol]]
**[[ActivityPub]]
* [[ポイント・ツー・ポイント]]
* [[エンドツーエンド原理]]
* [[ブロックチェーン]]
== 外部リンク ==
=== 研究資料 ===
* [http://
* [http://www-2.cs.cmu.edu/~kunwadee/research/p2p/links.html More peer-to-peer research resources]{{en icon}}
* [http://overlayweaver.sourceforge.net/index-j.html オーバレイ構築ツールキット]
=== P2P関連情報サイト ===
*[http://www.fmmc.or.jp/P2P/20110216.html ネットワーク高度利用推進協議会シンポジウム「商用P2P、クラウド、キャッシュを活用したネットワーク効率化最新動向」の開催について]
*{{PDFlink|[http://www.npo-ba.org/public/20080918p.pdf P2P関連問題研究会 P2P基本提言]}}
*[
{{暗号ソフトウェア}}
{{Normdaten}}
[[Category:P2P|*]]
[[Category:コンピュータネットワーク|ひあつうひあ]]
|