web技術の基本についてのメモ
本記事は、自己学習のための記事であり、誤った情報が含まれている恐れがありますが、ご了承ください。
参考文献
この記事は以下の情報を参考にして執筆しました。
リクエスト・レスポンス
- クライアント(webブラウザ)からの要求のことをリクエストと呼ぶ。
- リクエストに対してサーバーからの応答をレスポンスと呼ぶ。
プロトコル
プロトコルとは、情報をやり取り、伝達するためのルール(取り決め)のこと。
インターネット上には、様々なコンピュータがつながっているため、あらかじめ通信のルールを取り決めておかないと異なるコンピュータ間で情報の伝達ができない。
プロトコルにはいくつか種類があり、HTTPプロトコルはwebクライアントとwebサーバーが通信するためのプロトコル(ルール)である。
ポート番号
プロトコルにはいくつか種類があるため、受信した情報がどのようなプロトコルで、どのようなアプリケーションが処理するべきかは、TCP/IPには分からない。そこで登場するのがポートという考え方である。
インターネットで情報を届けるにはIPアドレスで宛先を指定して、さらにポート番号でどのようなアプリケーションが処理するのかを指定する必要がある。
よく使われるプロトコルについては標準で使用するポートが決まっており、HTTPプロトコルなら80番など。
また、URLに記載するべきポート番号は省略できる。そのため、HTTPリクエストのURLにポート番号を省略してもあらかじめ設定されたポート番号(80番)を参照しているおかげで普段のHTTP通信でポート番号まで意識しなくて通信ができている。
ステートフル・ステートレス
そもそもステートとは、日本語で状態のことである。webで言う状態とは、前回のリクエストの情報である。
HTTPは状態を持たない、持てないプロトコルつまりステーレスなプロトコル
FTPは状態を持つプロトコルつまりステートフルなプロトコル
ステートレスとステートフルを美容室で表すと、ステートレスな美容室は前回のお客さんの情報を記憶していない、ステートフルな美容室は前回のお客さんの情報を記憶していると表せる。
前回のリクエストの情報を記憶していないHTTPは、前回のリクエストの情報を記憶していないので、どのクライアントからのリクエストか識別ができない。
cookie
HTTPはステートレスなプロトコルな為状態を保つことができない。その為、cookieと言う仕組みを用いることで状態を保つことができる。webサーバーからwebブラウザへのHTTPレスポンスのヘッダにcookieと呼ばれる情報・キーを送信して、webブラウザは受け取ったcookieを次回同じwebサーバーにリクエストを送る際にHTTPリクエストヘッドにcookieを入れて送ることで、webサーバーがcookieを調べてアクセスしてきた相手を特定することができる。
また、cookieを受け取ったwebサーバー以外には、cookieを送らないことで意図しない情報が他のwebサーバーに送られてしまうのを防いでいる。
セッション
cookieはInetSpyなどのツールを使うことで第三者から比較的簡単に内容を覗くことができてしまう。そのためユーザーのIDやパスワード、購入する商品などの生の情報を直接cookieで保存して通信してしまうと、情報漏洩などのセキュリティ上大きな問題がある。また、cookieには記憶できる情報量に制限がある。そこでセッションと呼ばれる仕組みで安全に多くの情報を保持することができる。
セッションとは一連の処理の流れのことで、例えば以下のような処理のこと。
- ログイン(ログインIDとパスワードの情報)
- メニューから選択(メニューの情報)
- 注文内容確認
- ログアウト
そこで、これらの情報をwebサーバー上で管理、識別するために、上記の一連の処理にセッションIDという一意なIDを発行してやり取りする。
最終的にwebサーバとwebクライアントの間ではcookieを使ってセッションIDのみをやり取りすれば生の情報ではなく、情報をもたないセッションIDでやり取りが行われる。
しかし、これではセッションIDを第三者に盗まれて、なりすましが発生してしまう。これを防ぐには通信路をSSLによって暗号化することでセッションIDを第三者に盗み見られることを防げる。
SSL/SSH
SSHとは、別のコンピュータ(サーバー)を遠隔操作するためのツールであり、同じようなツールに「Telnet」というものもある。SSHとTelnetの違いは、SSHは、通信データが暗号化され、Telnetは暗号化されない。
SSLとは、インターネット上の通信、やり取りしている情報を暗号化する仕組みのこと。