Fuktommyの日記

62b8cca4 :Anonymous 2005-01-27 22:28
クライアントサーバモデル(C/S)って適用範囲が広いですよね。
もともとはホスト端末モデルに対する言葉としてできたそうですが、
ほとんどホスト端末モデルみたいなのもC/Sだし、
P2PみたいなのもC/Sだし。
P2Pを語るときに「C/Sだと駄目だから」という言い方をすることがありますけど、
P2PはC/Sの一形態ですよね。
じゃあ、P2PじゃないC/SとP2Pはどこが違うのか???

Skypeを例に出してみましょう。
もし「C/SによるSkype」なるものがあるとしたら、それは何なのか。
例えば会話は(電話の交換機のように)全てlivedoorやBUFFALOのサーバを通過するとか。
確かにそれはC/Sっぽいし、「C/Sだと駄目だからP2P」という感じですよね?

一方、SkypeとSMTP(電子メールのプロトコル)を比較してみます。
自宅サーバでメールを受けとれるようになっているとします。
Skypeは分散ハッシュで相手を探すそうですが、SMTPはDNSで相手を探します。
Skypeは(NAT越えの技術を使っているそうですが)ポートに接続があれば通信の開始です。
SMTPもポートに接続してきたらメッセージを転送するなり保存するなりします。
原理的にはほとんど同じですよね?

要はP2PとC/Sは紙一重ということです。
では改めて、どこに差があるのか。
ここで用語を定義してみようと思います。

<ピア>: コンピュータだが、ユーザとセットになっている
<サーバ>: 人間が関わらないコンピュータ

<ピア>は人間とセットになっているのが特徴です。
<サーバ>は<ピア>との対比であって、C/Sでいうところのサーバとは意味が違います。

パターン(1): <ピア>-<サーバ>
Unixでのかな漢字変換システムは、たいていがC/Sで実装されています。
この場合クライアントは人間が関わっているので<ピア>、
サーバは変換するだけなので<サーバ>となります。

サーバに複数のユーザが繋いだとしても、ユーザ間のコミュニケーションはないので、
<ピア>-<サーバ>の組が複数できるだけです。

自分専用のHTTPサーバがあって、Wikiを動かしてる場合もこれにあたります。

パターン(2): <ピア>-<サーバ>-<ピア>
2chに読み書きするのはC/Sです。
でも人間を含めて考えると、2chに書き込むのが究極の目的ではなくて、
誰かに読んでもらうのが目的です。
つまり<サーバ>の向う側に別の<ピア>があります。
この点において、かな漢字変換サーバに複数のユーザが接続するのとは違います。

2chそのものは勝手に動いてるのではなく、管理チームが管理しているわけですが、
人の関わりよりも機能が目立つので<サーバ>になります。

パターン(3): <ピア>-<ピア>
これもC/Sなんですが、相手の機能よりも人間の関わりが重視されるとこうなります。
相手のサーバにデータを送ることが最終目的なのではなくて、
そのコンピュータを使っている人がデータを読む(聞く)ことが目的です。

パターン(4): <ピア>-<ピア>-<ピア>
中継ですね。
2chと違うのは、機能だけでなく、人が強く意識されるということです。
例えば「この人は自分と同じWinnyを使って中継しているのだ」という感じ。

まとめると、P2PとそうでないC/Sの境界はあいまいで、
主観的な判断しかできないということです。
判断の主な理由は、通信相手をただのコンピュータと思っているか、
それを使っているユーザを含めて捉えているかの違いです。

さて、自宅サーバでSMTPを受け付けるようにしているのは、
P2Pなのかそうじゃないのか。
メールを出す人がそれを意識していればP2Pでしょうね。
Powered by shinGETsu.