【初心者向け】クライアントサーバとP2Pの違いとは?P2Pが危険と言われる理由も解説

普段あまり意識することはありませんが、ネットワークを使用したシステムやサービスには、大きく分けて2つの通信方法があります。

その2つとは「クライアント・サーバ型」「ピアツーピア(P2P)型」

「P2P」という言葉を見ると、ニュースか何かで見た怖いイメージを持っている人もいるかもしれません。

今回、この2つの通信方法はどういったものなのか?それぞれどのように使われているのか?について解説します。中身がわかれば、怖さも和らぐと思いますよ。




クライアントサーバとP2Pとは何が違うのか?


博士!SkypeってP2Pなんですか?大丈夫なんですか?


なんじゃいきなり…


こないだたまたま本で見たんですけど、SkypeはP2Pだって書いてあって、僕はSkype使ってるんですけど、それを聞いて危ないからやめようかなって思って…


ほぉ、なにが危ないのじゃ?


だってほら、P2Pですよ。危ないやつじゃないですか。


なにかどう危ないのか説明してみなさい


……え、いや、あの、よくわかってないんですけど、ニュースとかでP2Pは危ないと。


まきおくん、技術者を目指すならば物事をきちんと見ることが大事じゃ。ただ「危ない危ない」ではなく、具体的に「何がどうなっているから、こんな危険性がある」と説明できねば、技術者とは言えんぞ。


…は、はい…


勉強も大事じゃが、技術者としての姿勢も意識するようにな。


はい…反省………。では博士、P2Pがどんなものなのか、教えていただけないでしょうか?


ふむ、よろしい。
P2Pはいわば「システムの構造」を表したものじゃ。

 


「システムの構造」ですか?


うむ、例えば先ほどのSkypeの例では「Skypeは、P2P構造のシステム」と言うわけじゃな。


なるほど、システムの構造って、他にも種類があるんですか?


お、良いところに気づいたの!他にもある。最も代表なものが、「クライアントサーバ」じゃ。


クライアントサーバ!それこそ本とかでよく見ますね!


クライアントサーバこそが、最も一般的なシステム構造と言っていいじゃろうな。絵にするとこんな感じじゃ。P2Pの構造も合わせて書いておこう。

 


「一つのサーバに対して通信する」のがクライアントサーバで、「パソコン同士で通信する」のがP2Pですね。


ざっくり言うとそんな感じじゃな。なお、世の中の大半のシステムや、ほとんどのインターネット上のサービスはクライアントサーバ型なのじゃ。


へぇー

クライアントサーバは集中型システム、求めているのは「確実性」


まずは多数派のクライアント・サーバ型から説明しよう。
これは昔から使われているシステム構造で、様々なホームページを始め、オンラインショッピングや掲示板、Wikipediaなど、Webブラウザを使うようなものは、ほぼクライアントサーバ型と考えて良い。


え、有名どころはほとんどクライアントサーバなんじゃないですか。


実際そうじゃ。と言うのも、効率を考えたら自然とそうなるわけじゃな。
例えばショッピングサイトをイメージしてもらえばわかるが、商品の情報や顧客の情報、お金のやり取りなど一箇所で行っていると、運営側も訳がわからなくなってしまうじゃろう。


まぁそうですよね。お客さんからしても、どこに行けば良いのってなっちゃいますからね。


そうじゃ。それに買い物の履歴やクレジットカード決済情報が紛失してしまったりしたら大問題じゃしの。


信用に関わっちゃいますもんね。


そう。だからこそ、一極集中でしっかり管理。確実性を重視する。そしてサーバも堅牢なものにするわけじゃ。
その代わり、通信があまりに集中すると「重くなる」という症状がどうしても出てしまうのも特徴じゃな。


あぁ~、確かに。大事件があったときのニュースサイトとか、人気商品の予約が始まったときのショッピングサイトとか。


一極集中型ゆえに起こる渋滞じゃな。

P2Pは分散型システム、求めているのは「スピード」


って考えると、確かにシステムってクライアント・サーバ型だけで良いんじゃないの?って思っちゃいますね。
P2P型って、使い道があるんですか?


ふむ、P2Pは技術としては昔からあったものの、サービスとして一般化されることはあまりなかったのじゃ。
ところが最近は、クライアントサーバの欠点を補うものとして使われてきておる。


クライアントサーバの…欠点?


先程ちょっと触れたが「渋滞」問題じゃ。クライアント・サーバ型は、そのシステムの構造上、どうしても渋滞が起きやすいからの。


え、でも、さっきの話で、しっかり管理したい、確実性を守るからこその一極集中じゃないですか。多少遅くなったりとか、仕方がないんじゃないですか?


ふむ、例えばショッピングやニュースなどは確かにそうじゃ。Webページの切り替わりがいつもより遅くたって、例えばクリックしてから5秒かかったって、多少イライラはするかもしれんが、まぁ待てる時間じゃ。
だが最近は、ちょっとした時間も待つことが受け入れられない事情が出てきた。


ちょっと待つのが受け入れられないって、なんかわがままですねぇ。そんなのあるんですか?


あるぞよ。それは電話じゃ。


あ…


話して、相手に伝わるまで5秒かかるとか、耐えられるかの?


それは…ちょっと嫌ですね。会話も弾まなくなりそう。


しかも音声通信は、Webページ表示などに比べて非常に高度な処理となる。サーバも高い性能が必要じゃ。
大量の利用者の音声通信をすべて処理しようと思ったら、超高性能のサーバが何百台必要なことか…


考えるだけで恐ろしくなりますね…


そこでP2Pの出番。すなわち、サーバ一極集中型ではなく、各パソコン同士が直接通信するのじゃ。
いちいちサーバと通信することもないから通信時間も短く、負荷の集中もなくなるからの。


そうか!Skypeの通話はP2Pだからあんなにスムーズに話ができるんですね!


うむ、あれだけ多くの利用者がおっても遅れなく高品質なテレビ電話ができるのは、P2Pによるところが大きい。それに、テレビ電話などは、多少映像に乱れがあっても、ちょっと音声が途切れても、そう困らないからの。


なるほど、確かに。聞こえなかったら「え?なに?」って聞き返せば良いだけですしね。


そう、テンポよく通信できることが何より重要。確実性よりもスピードを重視しておるわけじゃ。


さっきのクライアント・サーバの一極集中は、とても合理的な考え方だと思ったんですけど、P2Pも、それはそれで合理的ですね。


ふむ、それぞれの事情に合わせた構造と言える。適材適所と言うやつじゃな。

「P2Pが危険」と言われるのはなぜ?


P2Pって、とっても合理的なことだと思うんですけど……なんであんなに危険危険って言われてるんでしょう?
どうしてあんな騒がれ方をしてしまったんですか?


ふむ、まさに最初に言った「なにがどうなっているから、こんな危険性がある」という部分じゃな。
よろしい。ここをきちんと説明しよう。


お願いします!

P2Pの利用例として有名なのは「ファイル共有ソフト」


P2Pの特性を活かして、「ファイル共有ソフト」と言うものが作られたのが発端じゃ。


ファイル共有ソフト?


例えばフリーソフトなどをダウンロードしようとすると、どこかのサーバにアクセスするのが一般的じゃ。
だがそうすると、先ほどの「渋滞」問題が起こる。


人気ソフトとか、人気動画とか、みんなアクセスしますからねぇ。


そう、だからこそ生まれた「共有」という考え方。自分が持っているファイルをお互いに公開、共有し合うわけじゃ。


…ちょっとよくイメージがわかない。


皆が皆、サーバからファイルをダウンロードしていたら効率が悪い。もしすぐ近くのパソコンにファイルがあるなら、そっちから貰おうという話じゃ。

 


なるほど、確かに、そっちのほうが速そうですね。渋滞も起きないし。


人気のあるファイルは多くの人が持っているから、それだけ通信も分散されるしな。


おぉ!そう考えるとすっごい便利ですね。とっても良い仕組みじゃないですか。

P2Pの仕組みを悪用する人が世の中には存在する


ところが…そういうソフトを悪用するものも出てくる。例えばウィルスを作成し、いかにも皆が欲しそうなファイル名を付けて公開したりの。


えぇぇぇ、、、そんな悪い奴がいるんですね。


いつかも言ったが、インターネットは良くも悪くもオープンじゃからの。そういう輩も一定数おるものじゃ。
そして、ウィルスに感染すると自分のHDDの中身がまるごとファイル共有され、意図せず公開されてしまったりする。


ええええええ…


恐ろしいのが、そうやって意図せず公開されてしまったファイルを削除したくても、他の多くのパソコンに渡ってしまったらもう消しようがないということじゃ。
それに、サーバというものがない以上、誰が仕掛けたウィルスなのか、誰が拡散元なのかもわからん。悪人側の言葉で言うならば「足がつきにくい」のじゃ。


おおおお、怖い。ファイル共有って怖いですね。


違うぞまきおくん。


え?


怖いのはファイル共有ではなく、それを悪用する「行為」じゃ。
ファイル共有そのものは、先ほどまきおくんが思ったとおり、うまく活用すれば非常に効率よく便利なもの。
要は「使い方」の問題なのじゃ。


使い方…そうか…確かにそうですね…ファイル共有の仕組みそのものは、非常に画期的で良いものなのに…


使い方次第で、良くも悪くもなる。ただこういった新しい技術は様々な意味で注目されるもんじゃ。だから何か問題が起こったら「ファイル共有は危ない」「P2Pは危険だ」と言われてしまう。まぁこれはコンピュータに限った話ではなく、世の中なんでもそうじゃがのう。


技術者を目指す者、何がどう危険なのか、きちんと見極めるようにせねば!ですね。

結局、クライアントサーバとP2Pの違いとは何か?


さて話を戻してP2Pじゃが、実は何かと実現は難しい。


え、そうなんですか?


考えてもみよ。サーバに一極集中させている機能を、パソコンに分散するようなイメージなのじゃから、いわば多くのパソコンが、ちょっとずつサーバの機能を持っている状態じゃ。


まぁ、確かにそうなりますよね。


まきおくん、パソコンにSkypeのソフトをインストールしとるじゃろう?


そうなんですよ、ちょっと面倒なんですけど、そうしないと使えませんからね。ブラウザだけで使えたら便利なんですけど…


それは無理なのじゃ。先ほどの話で、他のパソコンとの通話を受け付けたりするためには、ブラウザだけでの実装は困難。
どうしても専用ソフトなどをインストールし、電話を受ける機能を持たせる必要がある。


そうか…言われてみれば確かに。P2Pのほうが準備が大変そうですね。クライアント・サーバのほうがいろんな意味でシンプルなんだなぁ。


じゃな。とは言えSkypeにしても、すべてがすべてP2Pではない。例えばログインの機能などは、サーバと通信して行われている。
ログインはセキュリティに関する機能じゃから、安全確実が最優先。高速性もそこまで重要視されんからの。


あ!なるほど、Skpyeも通話以外の部分ではクライアント・サーバ的な動きもしてるんですね。


多くのシステムはそういった構造になっておる。P2Pが最も効果的に活用できる部分のみをP2Pで実装し、ほかはクライアント・サーバ型にするのじゃ。いわばクライアント・サーバとP2Pのハイブリッド型じゃな。

 


おぉ、ハイブリッド!なんかカッコイイですね。

まとめ


さて、P2Pのこと、分かったかの?


はい!本当におかげさまで、クライアント・サーバとP2Pの関係から、P2Pが怖いと言われてしまう意味まで、よく理解できました!


ふむ、通信システムの根幹とも言える部分じゃから、よく覚えておくように。そしてきちんと説明できるようにな。少年よ大志を抱け!