学んだことを発信するブログ

ジャンル問わず、学んだことを発信していきます。その過程で私の提供した情報がどなたかのお役に立てればなお嬉しいです!

Webの基本的な仕組み(9)

本日、2記事目ということで、引き続きWeb関連の知識について

解説してまいります。

 

 今回はクライアント/サーバについて説明いたします。

これは、Webというアーキテクチャスタイルにおいて採用されている方式のことです。つまり、クライアント(Webブラウザ)がサーバ(Webサーバ)に接続し、各種のリクエストを出し、それに対してレスポンスを受け取るという形式でやりとりをするシステムです。

 

 具体的な手順としては、下記の通りとなります。

①クライアント側でリクエストメッセージを作成。→ ②サーバ側に送信。→ ③サーバ側がメッセージを受信。→ ④受信したメッセージの解析。→ ⑤処理を行えるアプリケーションプログラムに処理を委譲。→ ⑥処理結果を受信し、レスポンスメッセージを作成。→ ⑦クライアント側に送信。→ ⑧クライアント側でメッセージの解析。→

⑨解析結果に基づき、最後の処理を行う。 

 

 上記のリクエストメッセージとレスポンスメッセージを合わせて、「HTTPメッセージ」といい、HTTPに関連する重要な概念として、ステートフルとステートレスがあります。ステートフルとはクライアント側が一度出した要求はサーバ側で記憶されるため、再度命令は不要というプロトコル形式のことです。クライアント側がサーバ側に何か⑴という要求を出すとします。そして、追加でまた別の⑵という要求を出すとするとサーバ側が(1)で出した要求も記憶しているため、クライアント側は極論⑴の要求を出したこと及び内容を失念していても、サーバが適切な処理を行ってくれるというシステムです。しかし、ステートフル方式においてサーバ側が同時に記憶できる要求の数に上限があります。そのため、HTTPにおいてはステートフル方式は採用されていません。では、どうしたかというと、ステートレス方式というプロトコルを採用しています。

 

 ステートレスとは、サーバがクライアント側のアプリケーション状態を保持しないということを指します。つまり、サーバ側に丸投げせず、クライアント側で記憶しておきましょうよ!という方式です。しかし、具体的には、クライアント側がサーバ側に何か⑴という要求を出すとします。そして、追加でまた別の⑵という要求を出すとすると、サーバはさっき言ったはずの⑴を忘れてしまっているので、「⑴と⑵をやってください!」と一括して要求を出し直す必要があるということです。そのため、送信するデータ量が多くなる、処理量が増えるという問題が発生します。また、通信エラーへの対応も変わってきます。

 

 ステートフルの場合、エラー発生前にクライアント側から送られた要求もサーバ内で記憶されています。そのため、エラー発生後に同一の要求がクライアント側から送られてきたとしても、「同じ要求は以前頂いていますよ。同じ処理を行ってもいいですか?」と確認し直してくれるのです。しかし、ステートレスの場合、サーバは過去あった要求のことなど忘れている訳ですから、そんな気の利いたことはしない訳です。

 

以上で、今回の解説を終わります。ご覧頂きありがとうございました。

次回以降も何卒よろしくお願いいたします。