どーも!
たかぽんです!
今回はサーバーとクライアントの関係について考えてみたいと思います!
僕自身、ほぼ理解できているつもりではありますが、改めて基礎から理解するついでに備忘録を書いておきます!
それではやっていきましょう!
サーバーとクライアントについてざっくり解説!
では、早速ですが、サーバーとクライアント...
まず最初に、これらの英単語の意味を簡単に調べてみましょう。
最初にサーバー(server)です。
仕える人、つとめる人、給仕人、(ミサで司祭を助ける)侍者、(テニスなどで)サーバー、サーブする人、(料理をのせる)大型の皿、盆、(料理を取り分ける)大型のフォーク、サラダばさみ(など)
Weblio
何かを出す(料理をお客様へ届けたり、ボールを最初に打ったり...)役割を持つ人や、それを行うために使用する物(大型の皿やお盆でいろんな人へ配ったり、大型のフォークやサラダバサミなどでいろんな人へ料理を小分けに配る...)を表していそうですね。
次はクライアントについてもみてみましょう。
(弁護士などの)依頼人、(商店などの)顧客、お客、クライアント
Weblio
ぱっと見でお客さんということですね。
つまり...?
サーバーとクライアントは、"何かを提供する物と、それを受け取るお客さん"をそれぞれ表しているようです。
では、ITにおけるサーバー・クライアントの定義も合わせて調べてみましょう!
サーバとは、コンピュータネットワークにおいて、他のコンピュータに対し、自身の持っている機能やサービス、データなどを提供するコンピュータのこと。また、そのような機能を持ったソフトウェア。
IT用語時点 e-Words
ふむふむ...
つまり、サービスやデータなどを他のコンピュータに提供するコンピュータ...の事といった捉え方で良さそうですね。
では、クライアントも同様に...
ITの分野では、他のコンピュータやソフトウェアから機能や情報の提供を受けるコンピュータやソフトウェアのことをクライアントという。
IT用語時点 e-Words
クライアントは逆に、サーバーが提供する物を受け取る物で良さそうですね!
さて、基本的な部分は理解できたかと思います。
簡単にまとめておくと...
"サーバはサービスやデータなどを提供するコンピュータ"
"クライアントはサーバーが提供するサービスやデータを享受するコンピュータ"
です。
次は、みなさんが今この記事を閲覧している際のサーバーとクライアントの関係を考察してみます。
WEBページ閲覧時のサーバーとクライアント
今、みなさんは僕のこの記事を閲覧しています。
これにもサーバーとクライアントは関係していますので、それを元に解説してみます。
まず、みなさんが何かしらの調べたい事(ここにいる皆さんはサーバーとクライアントについて)がある場合、chromeやsafariなどの検索用のブラウザでさまざまな記事を検索します。
その際、皆さんは僕の記事のリンクを踏んで、アクセスしたかと思います。
そのアクセスをする瞬間に、皆さんはサーバーに対して、"こんな記事が欲しいです!"というふうに要求します(リクエストと呼ばれます)。
その要求に対して、サーバーは記事のデータを返してあげるわけです。
つまり、皆さんのコンピュータ(正確にはブラウザ)がクライアントとなり、クライアントから要求を出して、その要求に対してサーバーがデータを返すと言う構図になってきます。
まとめると...
"クライアントがサーバーに欲しい情報を伝えサーバーはその要求に対してデータを返す"
これが、WEBの検索をする際に毎回行われているんですね。
図におこすと、以下のような形です。
これが、みなさんが普段検索する場合のサーバー・クライアントの関係性になります。
特定の記事をどうやって見極めているの?
さて、基本的な検索については理解できたかと思います。
ただ、僕のブログにはたくさんの記事があります。
同じサーバーにたくさんの記事があるはずだけど、どうやってそのアクセスが特定記事のものか見極めているのでしょうか・・・?
察しの良い方はなんとなくわかっているかもしれませんが...
それを見極めるのに使っているのは"URL"です。
他の記事を適当にみてもらえれば僕の記事ごとにURLが全て違うことがわかるでしょう。
例えば、本記事の場合...
"https://tektektech.com/server-and-client/"
となっているのに対し、他の記事は
"https://tektektech.com/hoge/"
のように、"hoge"の部分に何かしらの違う英単語などが入っている場合が多いかと思います。
上記を分解していくと...
"https:"の部分はスキームと呼ばれ、通信に用いるアプリケーションの指定を行います。(ここを詳述するととても長くなってしまいそうなので、詳細は割愛します。)
そして、"//"は区切りを表していて、それ以前がスキーム、それ以降がサーバーの情報であることがわかります。
"tektektech.com"は、僕のブログのドメイン名です。
このドメインというのを指定することで、僕のブログ記事等が管理されたサーバーを探すことができます。
そして、スラッシュ区切りで、さらに以下がありますね。
"server-and-client"
これはパスを表していて、サーバーの中のさらにどのファイルを見に行けばいいのかを指定してます。
このように、リクエストを行う際のURLによって、サーバーのどの情報が欲しいのかを詳細に指定し、データを受け取る仕組みになっているわけですね。
URL周りの詳細は以下の記事などが参考になるので、是非みてみてください。
WEB以外のサーバー・クライアントについて
WEBの検索に関してのサーバー、クライアントの関係は大まかに理解できたかと思います。
では、それ以外のサーバーやクライアントもあったりするのでしょうか・・・?
他の一例としてですが、メールも同じように考えることができます。
メールサーバーというものがあり、クライアントから要求があると、メールの内容を取得したり...です。
また、WEBサーバー兼メールサーバーというふうにあるサーバーが二つ以上の役割を担う・・・といったこともあり得ます。
他にもさまざまなものがあるので、是非興味を持った方は各自で調べてみてください。
まとめ
今回はサーバー・クライアントの関係について、改めて基本的な部分を調べてみました。
技術職についていると理解していて当たり前...という知識かもしれませんが、意外と細かいところでどうなってたっけ?とかなることも...
最近はTCP/IPあたりの理解も少ししておきたい...ということでいくつか書籍も購入して読んでいるので、理解が深まったタイミングでそれぞれ記事かしていければと思っています。
それでわ!