blog.fuktommy.com

P2Pという言葉を考える

はじめに

P2Pはクライアントサーバ(C/S)との比較で語られることが多いが、 C/Sには語義的曖昧性があり、文脈によって意味が違うのでややこしくなっている。 あるときは「C/Sはもう古い。これからはP2Pだ」と、 C/SとP2Pが別物のように語られ、 あるときは「P2Pのノードはクライアントにもサーバにもなる」と、 P2PがC/Sの一種のようにも語られる。

ここではC/Sの語義を大雑把に3つに分け、 それぞれと対比させてP2Pを考えてみる。

この文章はP2Pの次に来るものの補足であり、 P2P の用語:ピアとノードの違いは?あーなるほどね。これじゃ話が噛み合わなくなるわけだを もとにしている。

「いわゆるC/S」とP2P

これは多くの人がイメージするサーバ像に近いのではないだろうか。

以下P2P の用語:ピアとノードの違いは?からの引用

クライアント/サーバー方式のシステムには中心となるサーバーが存在します。 サーバーはデータの配信、蓄積、 それから検索といったサービスを一手に引き受けて、 クライアントに提供しています。 つまりサーバーとは文字通り、サービスを提供するコンピュータのことであり、 クライアントは「サービスの依頼人。要求者」なのです。

全ての要素を満たすわけではないだろうが、こういう傾向がある。

「いわゆるC/S」とP2Pを比較すると、こんな感じか。

「自宅サーバ的C/S」とP2P

P2Pの説明に「1つのノードがクライアントにもサーバにもなる」という言い方をする。

以下P2P の用語:ピアとノードの違いは?からの引用

一方 P2P では、サービスを提供する側、受ける側という役割は決まっておらず、 主にシステムを構成しているのはお互いに対等な関係のピアです。 各ピアは状況に応じて、データを提供することもあれば、取得することもあります。 つまり各ピアの役割は固定的ではなく、 状況に応じてサーバーの役目もクライアントの役目も両方果たします。

では、1つのPCでWebサーバを動かしながら、 別のウェブサイトを見ていたとしたら、それはP2Pなのか、 という頓知のような問いがある。 ここではその状態のことを「自宅サーバ的C/S」と呼び、P2Pとの比較を考える。

「自宅サーバ的C/S」とP2Pの違いは実装にある。 Webサーバとブラウザは別のソフトウェアだが、 P2Pソフトは分離することが難しい。 決して分離できないわけではないから、最終的には主観的な判断になるが。

以前はこのことを指して「P2Pはプロトコルである」と表現した。 「バッドノウハウとグッドラッパー」と表現した方が適切かもしれない。

「辞書的的C/S」とP2P

C/Sは辞書的には単に役割の分担でしかない。 100万人を50台のサーバで捌こうが、 1人のためのかな漢字変換サーバだろうがC/Sである。

以下Cプログラミング診断室/奇っ怪な条件/クライアント・サーバモデルからの引用

もっと分かりやすく言えば、 「一人でやっていた仕事を二人でやるのが、 クライアント(王様)/サーバ(召使)モデル」です。

(中略)

2者は別々のソフトになるので、 互いに別のコンピュータで動かすこともできます。

「辞書的なC/S」と比較すると、P2Pも「辞書的なC/S」の一種であるといえる。

まとめ

Copyright© 1998-2014 Fuktommy. All Rights Reserved.
webmaster@fuktommy.com (Legal Notices)