見出し画像

クライアントサーバシステムとP2P後外とはなにか?

おはようございます。またはこんにちは。もしくはこんばんわ。マゲっちSCと申します。10月も半ばに入ってきました。先週になりますが私の住む愛媛松山では松山まつり(秋祭り)が行われました。このご時世ですので規模は縮小されていました。このお祭りが終わると秋も本番を迎え涼しくなるのですが、今年は秋祭りが終わってもなかなか暑さが引いていかないですね。まだまだ夏日の日が続きます。皆さんの地域では秋祭りは終わりましたでしょうか?

さて、前回のブログではデータの圧縮と解凍についてお話をしました。現在コンピュータ上で扱うデータは非常に大きなものとなりました。そこである一定のルールに基づいてデータを削ることなくデータ容量だけを軽量化するための技術がデータの圧縮です。また、圧縮されたデータはそのままでは意味がありません。そこでルールに基づいて圧縮されたデータをもとに戻すことをデータの解凍といいます。ファイルを圧縮する場合もあれば通信パケットにする前にデータを圧縮してネット回線に流す方法もあります。データの圧縮方法は様々ですが、解凍側とルールが共通であれば大丈夫です。

クライアントサーバシステムとはなにか?

さて、今回はクライアントサーバシステムとピアツーピア通信について簡単にお話しようかと思っています。皆さんも耳にしたことはあるのではないでしょうか?うちの会社のシステムはクライアントサーバシステムで構築されているとシステム部あたりの方とのお話で出てきたかも知れません。ですが、きちんとイメージできている方はそう多くはないと思います。ネットワークサービスは大きく分けるとクライアントサーバシステムとピアツーピア(P2P)に分かれると言ってもいいでしょう。その中でもインターネットを利用したり、各企業内の主なデータのやり取りはほとんどがクライアントサーバシステムで成り立っています。調べてみると機能や情報を提供するサーバと利用者が操作するクライアントをネットワークで接続して、クライアントからの要求にサーバが応答する形で処理を進める方式とあります。

この説明でおわかりいただけた方はこの欄は読み飛ばしていただいて問題ありません。簡単に言うとクライアント(顧客)とサーバ(店舗)がネットワークを通じてつながっている形式です。もっとわかりやすくいうと出前のシステムとだいたい一緒です。例えば皆さんが昼食を食べたいと思ったとき、自宅で自炊したりお店に食べに行ったり出前をとったりすると思います。最近はこのご時世ですので飲食店へ出かけるのも躊躇するかも知れません。かと言って自炊も飽きてきたとなると出前を取ることになると思います。例えば皆さんが噂の美味しいラーメン屋さんに電話でラーメンを注文したとしましょう。注文は電話を通じてラーメン屋につながります。皆さんは一番安いラーメンを一杯注文したとします。注文を受けたラーメン屋は住所と皆さんの連絡先と注文されたもの、それから注文数を確認します。間違いがなければ注文を受けた店員から厨房の調理担当者へ注文が伝えられます。調理担当者がラーメンを作り終えて丼にラーメンを移します。そしてそれをおかもちへ入れ出前担当者が確認した住所へラーメンを届けに行きます。皆さんは出前担当者が来たらラーメンを受け取り出前担当者へ代金を支払います。

以上がクライアントサーバシステムの基本的な流れになります。皆さんのコンピュータががクライアントでありお店はサーバです。出前担当者は通信パケットです。出前担当者は皆さんのお住いへ向かうまでに道路を使用しますがその道路がネットワーク回線に該当します。ですが時間帯によってはお店が混んでいたり道路が混んでいたりします。例えばお昼時の12時頃に出前の注文をするとお店の状況によっては「注文が殺到してるので少し遅くなるかも知れません」と言われることもあるでしょう。またはお店は総混雑していなかったとしてもみなさんのお住いに向かう道路が混んでいる可能性もあります。クライアントサーバシステムでも同じことが起きることがあります。例えば日本のインターネットのゴールデンタイム、つまりインターネット利用者が増える時間帯はだいたい20時から24時頃だと言われています。平日の昼間は皆さん企業や現場での仕事をされている方が多いと思います。そのため企業からのアクセスは増えますが自宅からのアクセスは減るため、昼間のインターネット回線はある程度空いています。だいたい18時~20時頃までに帰宅して食事と入浴を済ませる人が多いことを考えると、落ち着いて自分のやりたいことをするのがだいたい20時以降になることが多いはずです。また翌日も仕事がある場合はだいたい24時頃で趣味の時間を切り上げて睡眠を取る時間にあてると思います。

遅くとも深夜の1時以降になれば日本のネットワーク回線の混雑は解消されていることが多いと思います。つまりお店が空いていたり道路が空いている時間帯は家からインターネットを使って動画を見たり、メールを送信したりしていてもあまり遅延を感じることはないと思います。最近はインターネット回線も大容量で高速なものを使うことがほとんどですので、多少ネットワークが混雑してる時間帯でも少し遅いかな?程度で済むと思います。しかしサーバ側が混雑している場合、つまりお店に注文が殺到している場合はリクエスト(注文)をさばききれないことがあります。よく「サーバが落ちる」ということを耳にされることがあると思いますが、それはネットワーク回線が混雑しているのではなくサーバがリクエストをさばききれずに無反応になっているという意味です。ネットワーク回線は通常通り動いています。

DDoS攻撃とは

サーバの反応が遅くなる原因としてはアクセスの殺到があるということがおわかりいただけたかと思います。ネットワークが混雑しているだけの状況では多少遅くはなりますがサーバからの返答は必ず来ます。しかし、サーバが混雑している場合は必ずサーバからの返答があるわけではありません。サーバに負荷がかかりリクエストをさばききれなければタイムアウト(リクエスト不履行)が起こります。もしリクエスト不履行になった場合はどうなるのかというと、「500 Internal Server Error」や「404 (File)Not Found」という文字がブラウザに表示されることが多いはずです。HTTPエラーと言われるもので500番はサーバ内での処理エラー。つまりは注文が多すぎて注文受け担当者が厨房担当者に連絡できない状態に陥っています。例えば注文担当者1人で10個のテーブルの注文を同時に受けている状態です。404番はサーバ内に目的のファイルがない場合に表示されます。サイト管理者の不手際などでサーバ内にあるファイルが削除されてしまった場合などに表示されます。これはお店でいうとお品書きの中にないものを注文した際に「そのメニューは当店にはありません」と言われているのと同じです。ラーメン屋でうどんを注文しているのと同じですね。

少し話がそれましたが、500番のエラーがブラウザで表示されている場合、サーバにリクエストが殺到していることが考えられます。こういう場合は少し時間をおいてから再度アクセスすることで解決する場合があります。しかし、世の中には企業のサーバに対してDoS攻撃(ドス攻撃)を仕掛けている人がいる場合があります。インターネットを使った攻撃方法として今まで過去になりすましを行ったり、コンピュータ・ウィルスを送信してきたり、皆さんのコンピュータに不正アクセスを試みるという内容をお話したことがありますが、DoS攻撃とは他人になりすまして悪事をはたらいたり変なデータを送ってきたり、皆さんのコンピュータを踏み台にして他のコンピュータを攻撃しようとするものではなく、正常なデータを大量に送りつけてサーバの処理能力を下げることをいいます。例えば何かの商品がテレビやネットの動画などで紹介された場合、どのような商品かを確認したくなると思います。そこでそれを取り扱っているメーカーやEC(ネット通販)サイトへアクセスすることがあると思いますが、いきなりたくさんの人がサイトにアクセスすると一時的にサーバが処理を行う件数が増えるため、少しだけ反応が遅くなったり場合によっては500番のエラーが表示されたりします。ですがそれは一時的なものですぐ解消されます。

ところがDoS攻撃の場合はその状態が場合によっては3~5日くらい続くことがあります。サイバー攻撃ならサーバ管理を行っているところで何とか対処できるのでは?と思われるかも知れませんが、先ほど申し上げたとおり通信パケットそのものは正常な通信パケットです。企業のデータを盗もうとする目的の不正アクセスやコンピュータ・ウィルスのデータではありません。つまり、通信パケットそのものは通信する上で問題がないためすべてサーバへ通してしまいます。自動でフィルタリングすることができないわけです。少なくとも2021年現在ではまだ自動で処理を行って解決する方法は見つかっていません。解決するためには大量に通信パケットを送りつけているIPアドレスを特定して、そのIPアドレスから送られてくる通信パケットを遮断するしかないのですが、それは必ず人が介在する必要があります。最近ではDDoS攻撃といって不特定多数のIPアドレスから大量にパケットを送りつけてサーバの処理能力を下げる手法があります。よくオンラインサイトやオンラインゲームが重くなったりアクセスができなくなったりして、その時間が長時間続く場合はDDoS攻撃の可能性があるため公式サイトで運営側から何らかの連絡が来ることがあります。

ピアツーピア通信とはなにか?

クライアントサーバシステム以外にネットワークサービスを行う方法としてもう一つ上げられるのがピアツーピア(P2P)通信です。ピアとはチケット販売を行っている大手代理店ではなく同等という意味です。クライアントサーバシステムでは顧客と店舗という立場の違いがありましたが、ピアツーピアでは対等な立場にある人たちが直接連絡を取り合っているイメージです。簡単に言うとあるお店の常連客2名がそれぞれの家などで電話やLINEなどをして連絡を取り合っているイメージです。コンピュータネットワーク上ではお互いがサーバでありクライアントであるという状態で通信します。

例えば皆さんとご友人がインターネットを使ってビデオ通話をするとします。この場合はピアツーピア通信を利用して通話が可能なアプリを使用するのですが、この場合はどちらがクライアントでどちらがサーバなのかという立場の違いはなく、お互いがサーバでありクライアントであるという形になります。ビデオ通話なのでお互いの状態や音声は常に1対1でお互いに送受信しっぱなしの状態になります。つまりどちらも対等な立場での通信となります。代表的な例としては一昔前になりますが「Winny」というファイル交換ソフトがありました。もともとは大学の教授同士がお互いのPC同士をピアツーピアで接続してファイルをやり取りするためのソフトだったそうですが、これが世間に出回り実に様々なデータをやり取りするということが起こりました。ということは悪意を持った人間が悪意あるデータを忍ばせることもできるということです。通信相手が必ずしも信用できる相手かどうかはソフトは判断できません。コンピュータ・ウィルスを載せたり、著作権のある動画や画像をやり取りすることもできてしまったため、Winny製作者は逮捕されるという騒動にまで発展してしまいました。その印象が強い方もいるようでピアツーピア通信は悪意ある通信であると誤解した人も多くいたようです。

クライアントサーバシステムとピアツーピアの使い分け

通常ほとんどのネットワークを使った通信ではクライアントサーバシステムで充分対応できます。例えばウェブサイトの閲覧やメールの送受信もWebサーバやメールサーバがあるのでクライアントサーバシステムです。他にはオンラインゲームもほとんどのものはクライアントサーバシステムで稼働しています。MMORPGや大半のソーシャルゲーム(スマホ向けオンラインゲーム)はクライアントサーバシステムで稼働しています。ですがクライアントサーバシステムは必ずいくつかのサーバやネットワーク機器を経由するため、それらの危機が計算を行って結果が返ってくるまで少し時間がかかります。例えばクライアントサーバシステムのオンラインゲームで、コンピュータが操作する敵が強力な攻撃を仕掛けてきたとします。そのときオフラインのゲームであれば相手の動きを見てから攻撃判定が発生するまでの間の時間に防御スキルを発動させたり攻撃を避ける動作を入力することができます。しかしクライアントサーバシステムではデータをインターネットで転送する時間やサーバ側でデータを計算してクライアントへ送り返す時間が必ず発生するため、相手の動きを見て技の発生を予測できたとしても防御スキルを瞬間的に発動してダメージを軽減したり、攻撃を避ける入力をしても間に合わないことがほとんどです。そのため瞬間的な入力はクライアントサーバシステムを採用しているオンラインゲームでは事実上不可能です。

しかしピアツーピア通信の場合は少し違います。ネットワークを経由するということで多少の通信遅延は発生します。しかし、お互いのコンピュータ同士を直接つなぐイメージであるため、経由するネットワーク機器の数はあまりクライアントサーバシステムと変化がなくとも絶対的なサーバが存在しないためオフラインゲームのような瞬間的な入力が反映できる場合があります。例えば格闘ゲームであればサーバがないため瞬間的な入力にもある程度対応できます。例えば相手の技を見てから避けるということができます。ゲームの仕様によってどのように通信しているかはわからない部分もありますが、私がプレイしている格闘ゲームでは海外の方と対戦してもあまり遅延を感じたことはありません。ただし南米やオセアニアの方と対戦したり、一部のヨーロッパや北米の地域の方と対戦する場合はゲームが時々止まる(おそらくパケットが届いていない場合は届くまでゲームの進行をストップさせる)ようになっているのだと思います。FPSやTPSノンライン対戦もおそらくですがピアツーピア通信のはずです。

まとめ

このようにインターネットの通信のやり方をわけると、クライアントサーバシステムとピアツーピア通信の2つの方式があることがおわかりいただけたかと思います。どの方式を採用するかはサービスを運営する企業などによって違ってきますが、ほとんどの場合はクライアントサーバシステムで充分事足ります。ビジネスではピアツーピア通信でやり取りすることはほぼないでしょう。というのもネットワークセキュリティを考慮するとピアツーピア通信ではやはり弱い部分があります。ただ最近ではWi-Fiルータなどを使って家庭でもパケットのフィルタリングが可能になってきたという環境があるため、今後は用途によってはピアツーピア通信も使われていくと思います。では次回ですがコンピュータの基本的な考え方、つまり概論についてのお話を予定しています。コンピュータはどのような考え方で作られ運用されているのでしょうか?コンピュータが世の中に出てきてもうかなりの年月が経ちますが基本的な考え方に変化はあったのでしょうか?そういったお話になります。ご興味がありましたらまたお立ち寄りください。それでは失礼いたします。

この記事が気に入ったらサポートをしてみませんか?