こんにちは!
プログラミング学習を始めてからずっと封印していた趣味のアニメ鑑賞をしたら、
懐かしすぎてオタク時代に戻ってしまったみんみんです!
今回は、Web技術に関する以下7つの基本用語についてまとめていきます。
- ステートフル
- ステートレス
- リクエスト
- レスポンス
- クッキー
- プロトコル
- ポート番号
ステートフル(stateful)
ステートフルとは、「サーバーが現在のセッション(関連する処理を行う一連の流れ)状況を保ったままで次の処理を行う状態」です。
つまり、以下のような場面が可能な状態を指します。
- ログインした状態で買い物カゴに欲しい商品を入れる
- 買い物カゴに入れた商品を購入、決済する
ユーザーからすれば、他の作業をしている間にログインした情報を忘れられてしまっては大変ですよね。
ユーザー「買い物するものが決まったので決済してください」
サーバー「誰ですか?」
だからこそショッピングサイトなどでは、ログイン状態を保ったままで他のセッションが行えるステートフルな状態が保たれています。
ステートレス(stateless)
一方でステートレスとは、ステートフルの逆で「サーバーが以前のセッション状況を保たずに次の処理を行う状態」です。
別のページに遷移するなど他の作業をすると、サーバーは以前の情報を忘れてしまいます。
「じゃあ全部ステートフルでいいんじゃないの?」と思うかもしれませんが、実はステートフルには大きな弱点があります。
ステートフルな状態を保つために、サーバーは以前の情報を持ったまま何人もの情報を一度に処理する必要があります。
そのサイトを利用するユーザー数千人、数万人を一度に処理するには、サーバーにかかる負担が大きすぎるのです。
そこで、ステートフルである必要のない以下のような場面では、ステートレスな状態になるようプログラムされています。
リクエスト(要求)
リクエストとは、「ユーザーが見たいページを表示するようサーバーにお願いすること」です。
もちろん、サーバーへ実際に「ページください」とお願いするわけではありません。
細かい点は割愛しますが、簡単に言えば以下のような流れでサーバーにリクエストをお願いします。
- ユーザーがWebブラウザ(Google ChromeやSafariなど)で見たいページをクリック、もしくはURLを直接打ち込む
- Webブラウザからサーバーへ「ページください」のお願いが行く
1秒もかからない間ですが、見たいページをクリックすれば上記のような処理が高速で行われます。
レスポンス(応答)
リクエスト(要求)をすれば、以下のような流れでレスポンス(応答)が返ってきます。
- Webサーバーがリクエスト内容を解析する
- WebサーバーからWebブラウザへ「こちらです」とページのHTMLが返される
- WebブラウザがHTMLを解析する
- Webブラウザ上にページが表示される
リクエストに対する答えとして返ってくるもの、それが「レスポンス」です。
クッキーとは、簡単に言えば「WebサーバーとWebブラウザの間にやり取りされた情報を保存しているデータ」です。
ちょっと意味がわからないと思うので、以下でもう少し説明します。
そもそもHTTP(HyperText Transfer Protocol:世界共通のハイパーテキストやり取り手順)はステートレスです。
「ユーザーがいつ、どのサイトを見ていたか」「どのサイトで何を買っていたか」などの情報が保存される仕組みではありません。
そこで情報を保存するデータとして使われるのがクッキーです。
あなたもWebサイトを見ていて「昨日Amazonで買った商品の値段比較広告」や「たまたま興味があって検索した新作ゲームの広告」が出ていたこと、ありませんか?
「何で検索履歴がバレてるの?」と思ったなら、犯人はこいつです。
しかし、サイバー攻撃の危険性やプライバシー保護の観点などから問題になり、Googleなどの大手企業ではCookieの完全廃止に向けた動きが進められています。
プロトコルとは手順、つまり「ネットワークで繋がる機器同士のやり取り手順のルール」です。
手順を指す言葉なので、主に以下のような用途ごとのプロトコルがあります。
- HTTP(HyperText Transfer Protocol)
- TCP/IP(Transmission Control Protocol / Internet Protocol)
- FTP(File Transfer Protocol)
- SMTP(Simple Mail Transfer Protocol)
- POP(Post Office Protocol)
プロトコルについて、よくたとえられるのが「狼煙」です。
狼煙が上がっているのを見れば、誰もが合図の内容を理解できます。
つまり、世界共通で「これは◯◯の合図だ!」とわかる手順(ルール)を表す言葉が「プロトコル」です。
ポート番号
ポート番号とは、「コンピューター同士が通信するために使う通信用のドア番号」のようなものです。
ドア番号は目的ごとに数字が決まっており、 0番~65535番まであります。
たとえばユーザーがインターネットでサイトを見たり買い物したりすると、80番のポート番号(ドア番号)から入ってWebサーバーとやり取りします。
他にもさまざまなやり取りごとにポート番号があり、目的ごとに通信が行われているのです。