Webサイトを見るということ

こんにちは! かぎしっぽです。
ここしばらく基礎勉強の一環で『プロになるためのWeb技術入門』――なぜ,あなたはWebシステムを開発できないのかを読んでいました。

これ、良いですね。通信の基本的な仕組みをとても分かりやすく解説してくれています。
ここに少しだけご紹介してみたいと思います。

プロトコル:まずは通信のお作法

私たちがブラウザでどこかのWebサイトにアクセスするとき、ブラウザとサイトの間ではせっせとデータのやり取りをしているのですが、その時のお作法(ルール)をプロトコルと言います。

たとえば役所で住民票をもらう時は、決まった用紙に決まった書き方で記入して係の人に渡すのがルールです。
メモ用紙に走り書きしたり名前を書かなかったり、アラビア文字ルーン文字(!)で書いたら係の人は困ってしまいます。

同じようにサイトにアクセスする時はHTTPというプロトコル(お作法)に則って通信することになっています。

ポート番号:届いたのはどんなデータ?

さてサイトへアクセスする時はHTTPプロトコル (お作法)でデータのやり取りをするのは分かりました。
けれども実はプロトコルは他にもたくさんあります。一番身近なものですとメールを受信するためのPOP3でしょうか。
そしてプロトコルごとに処理する担当者(アプリケーション)が決まっています。

その時に活躍するのがポート番号です。

データを送信する時は通常ポート番号が指定されます。するとコンピュータは届いたデータがどのプロトコルによるどのようなデータかを判断できるので、適切なアプリケーションに処理してもらうことが出来るのです。

このポート番号ですが、『プロになるためのWeb技術入門』では桟橋という言葉で紹介していました。
港にたくさんの桟橋(ポート番号)があって、各プロトコルが自分の桟橋でデータを待ち受けるイメージだそうです。

とても分かりやすい例えだと思いました。

◇ちょっと寄り道 主なプロトコルとポート番号

ここで少しだけプロトコルとポート番号をご紹介します。
なおポート番号は一定の範囲内で自分で決めることも出来ます。

ポート番号 プロトコル
21, 22 FTP(ファイル転送)
25 SMTP(メール送信)
80 HTTP
110 POP3(メール受信)
443 HTTPS(暗号化されたHTTP)

リクエスト と レスポンス:これ見せて下さい!

さてブラウザはPCなどのコンピュータにインストールされていますが、このコンピュータのことをネットの世界ではクライアントと言います。言葉の通りお客様ですね。
お客様であるクライアントはWebサイトがあるサーバーに「このページが見たいです!」などと要求し、サーバー(直訳すると奉仕者とか使用人ですね)はそれに応えてクライアントのブラウザに必要な情報を渡してくれます。

もう少し詳しく言うなら、サーバーが送ってくれた情報はクライアント(コンピュータ)のポート番号80番や443番などに届けられ、ブラウザがその情報を解析して私たちにウェブページを表示します。

このクライアントとサーバー間での要求と応答のやり取りをリクエスレスポンスと呼びます。

ステートレス と ステートフル あと クッキー:HTTPプロトコルの限界に挑戦!

ところでHTTPはとてもシンプルなプロトコルです。シンプルイズベスト、という言葉通りそれがとても便利でもあるのですが、苦手な部分も持っています。
特に困るのがやり取りが1回限りで完結してしまい、前の状態を忘れてしまうことです。

この性質を状態(ステート)を保つことができないプロトコルステートレス・プロトコルと呼びます。
こんなイメージです。


  かぎしっぽ:初めましてメモアプリさん。ユーザー登録しました。名前はかぎしっぽです。
  メモアプリ:かぎしっぽさんこんにちは! ご利用ありがとうございます。
  (1分後)かぎしっぽ:メモを書いたので保存して下さいな。
  メモアプリ:あなたはどなたですか? まずログインかユーザー登録をお願いします!
  かぎしっぽ:えええ???


さあ困りました。これではちょっと使えません。

ちなみにステートレスの逆、ステートフルつまり「状態を保つことができる」プロトコル(ステートフル・プロトコル)もちゃんとあります。
ファイルのやり取りに使われるFTPなどがそうです。こうしたプロトコルはクライアントがログインしたらきちんと同じユーザーと認識してやり取りし続けることができます。
ただこうしたプロトコルは通信の手続きが複雑で、HTTPのようにブラウザを立ちあげたらすぐにサイトを表示する、という訳には行きません。

そこでネット技術者の先輩方はあれこれ工夫をしてHTTPプロトコルでも「状態を保てる」方法を考えてくれました。その方法の一つがクッキーを使うものです。
クッキーとはサーバーがレスポンスの際にブラウザに送ってくる情報です。この情報は相手を識別する大事な手がかりです。
ブラウザは次にこのサーバー(Webサイト)にリクエストする際、このクッキーも一緒に送ります。
するとWebサーバーは相手がログイン中のユーザーであることを判別することができるのです。


  かぎしっぽ:初めましてメモアプリさん。ユーザー登録しました。名前はかぎしっぽです。
  メモアプリ:(ええと「ID:123」を発行。クライアントにもこれを送信っと)かぎしっぽさんこんにちは! ご利用ありがとうございます。
  (1分後)かぎしっぽ:メモを書いたので保存して下さいな。
  メモアプリ:(ん? リクエストの情報に「ID:123」があるな。そうするとこれはログイン中のかぎしっぽさんだな)はい分かりました。保存しておきますね。


何となくイメージが掴めたでしょうか?

今回、普段何となく見ているサイトも、たくさんの約束事と工夫で表示されていることが分かりました。
まだ見えているのはそのほんの一部ですが、これだけでも勉強して良かったなあと思います。
また何か分かったらご紹介しますね。

ではまた!