はじめに
この記事では以下の項目を説明していきます。
まだあまり理解できていないよ、という方は是非読んでいってください。
- リクエスト・レスポンス
- プロトコル
- ポート番号
- ステートフル・ステートレス
- Cookie
リクエスト
一言で言うと「要求」です。
どんな要求かと言うと例えば、Yahoo! JAPANのページが見たいとします。
そこで「Yahoo! JAPANのページを見せてください。」とサーバーに要求します。
この要求がリクエストです。
レスポンス
一言で言うと「応答」です。
先ほどの例を使って、「Yahoo! JAPANのページを見せてください。」と要求したとします。
そこで、サーバー側がこちらに対して、「これがYahoo! JAPANのページです!」といった具合に、要求に対して返事を返してくれます。
このサーバーから返ってくる応答のことをレスポンスと言います。
プロトコル
コンピュータとコンピュータがお互いに情報をやりとりし合う時にはルールが必要です。
そのルールのことをプロトコルと呼びます。
そもそもルールって必要なの?と思った場合は以下に簡単な例を示しますので見てみてください。
例えば、皆さんは日本にいたら、誰かと話す時は日本語で話しますよね。
それはお互いが「日本語で会話をする」、「その日本語の意味を知っている」といった暗黙のルールがある上で成り立っています。
これが急にフランス語で話しかけられたら会話(コンピュータの場合は通信)出来ないですよね。
そういったことからお互いに情報をやりとりするためにはルールを決めてそれを守る必要があります。
いくつかプロトコルを簡単に紹介します。
- HTTP
- HTMLをやりとりするために定められたプロトコル
- FTP
- ファイル転送のためのプロトコル
- SMTP
- メール転送のためのプロトコル
ポート番号
番号はそのままの意味なので、先にポートについて説明します。
ポートは、コンピュータが情報を受け入れるための窓口のようなものです。
コンピュータは情報を受け取った時に、その情報がどのプロトコルのもので、どのアプリケーションが処理すべきなのか分かりません。
そこでそれを解決するのがポートです。アプリケーションは自分専用のポートを決めて、情報を待ちます。
そのポートに入ってきた情報は自分宛というのが決まっているので、そこで待ち受けているアプリケーションが処理します。
例えば、役所をイメージしていただくと分かりやすいかもしれません。
役所は手続きの種類によって窓口が違っていたりしますよね。
住所変更の手続きは◯番の窓口、パスポートの申請は○番の窓口、といった具合です。
このようにアプリケーションによってポートの番号が違います。
このポートに割り振られている番号のことをポート番号といいます。
ステートレス
ステートは英語でstateです。stateの意味は「状態」です。
ステートがレスということで、「状態がない」、「状態を保持しない」というイメージです。
プロトコルで紹介したHTTPは、状態を持たないプロトコルでステートレス・プロトコルと呼ばれています。
状態を持たない、というのはどういうことかというと、HTTPでは1回1回のリクエストが独立しており、2回目以降に1回目のの情報が保持されません。
なので2回目のリクエストで、1回目のリクエストをした時に情報を渡したから分かるでしょ?っていうのは出来ないです。
こういった性質のことをステートレスと言います。
ステートフル
ステートレスとは逆で「状態を保持する」というイメージです。
先ほどのプロトコルで紹介したFTPはステートフル・プロトコルと呼ばれています。
FTPは1回1回のリクエストが完全に独立しているわけではなく、前回のリクエストを覚えていて、その情報を踏まえて次のリクエストを実行します。
このような、状態を持つ性質のことをステートフルと言います。
Cookie(クッキー)
Cookieの説明をする前にCookieが考案された背景を簡単にお話しします。
先ほど、HTTPはステートレスで状態を持たないと説明しました。
しかしWebアプリケーションにはログインしたユーザーでないと使えない機能とかよくありますよね。
そういった時に「ログインをしている」という状態を表現したいです。でもHTTPは状態を持ちません。。どうしようかと。
そこで考えられたのがCookieです。
話を戻しまして、Cookieの説明です。
Cookieとは、WebサーバーからWebブラウザへ送られる小さな情報です。
この情報は「名前=値」という組み合わせで表現されます。
仕組みとしては、WebサーバーからCookieを受け取ったWebブラウザは、次回同じWebサーバーにアクセスする際、受け取ったCookieをそのままHTTPリクエストに入れてWebサーバーに送ります。
リクエストを受け取った側は、リクエストに入っているCookieを調べることでアクセスしてきた相手が誰なのかを知ることができます。
このような仕組みで成り立っています。
こうしてCookieによって、WebアプリケーションとWebブラウザの間で情報を交換できるようになりました。
参考文献
終わりに
少しでもイメージが出来るようになっていただけたら嬉しいです。
もし表現が適切でない等ありましたらコメントいただけますと幸いです。