この本を読むにあたった経緯
Laravelなどのフレームワークを触り、フロントエンドの部分やバックエンドの部分について知識を深めていたが、WEBに関する知識が足りないと痛感させられていた。その時に、知人から、「この本を読むと大切な部分について理解できるよ。」と勧めていただき、本書を手に取った。
#この記事の目的
この本を通じて、学んだこと、またはこの記事を読むことで何が大切だったか思い出すための議事録が欲しいと感じたからである。
また、書いた記事を通して、いろいろな人からコメントをいただき、理解を深めたいと思ったことも挙げられる。
#議事録
1章 HTTP(Hyper Text Transfer Protocol):基本となる 4 つの要素
HTTPとは、WEB上でサーバとクライアントが様々な情報(HTMLで書かれた文書など)をやりとりする時に使われる通信手段(プロトコル)のこと。
ちなみにHTTPとHTTPSとあるが、HTTPは暗号化されてないもの、HTTPSは暗号化されたものという認識で大丈夫だと思う。(たぶん)
HTTP は以下の 4 つの要素に分解できる。
- メソッドとパス
- ヘッダー
- ボディ
- ステータスコード
メソッドとは
指定されたアドレスにあるリソースに対する操作をサーバに指示するもの。
オブジェクト指向のプログラミングのメソッドと同じ。
(現在使用されているメソッドの例)
GET:サーバに対して、ヘッダとコンテンツを要求
HEAD:サーバに対して、ヘッダのみを要求
POST:新しいドキュメントを投稿
PUT:既に存在する URL のドキュメントを更新
DELETE:指定された URL のドキュメントを削除
####パスとは
パスとは、様々な情報やファイルがどこにあるかを辿れるようにする道筋。
一般的によく見る URL を参照して考えてみる。
https://www.oreilly.co.jp/index.shtml
これは スキーマ://ホスト名/パスとなっていて、
スキーマ:https
ホスト名:wwww.oreilly.co.jp
パス:index.shtml
となる。
####URL あたりの知識について
URL(Uniform Resource Locators):インターネット上に存在する様々な情報の場所を指し示す手段を提供するもの。
URN(Uniform Resource Name):リソースに対する名前の付け方のルール
URI(Uniform Resource Identifier):上記 2 つの定義。URL ともう混同しないよね!!
####ステータスコード
「404 Not Found」の404 が(一番よく見る?)例として挙げられる。この数字を見るだけで、サーバがどのように反応したかが一目でわかる。
- 100番代
処理中の情報の伝達。 - 200番代
成功時のレスポンス - 300番代
サーバからクライアントへの命令。エラーではなく、正常処理の範疇。リダイレクトやキャッシュの利用を指示。 - 400番代
クライアントから送られてきたリクエストにおかしい点がある場合に渡される。 - 500番代
サーバ内部でエラーが発生した場合にクライアントに送付される。
##2章 ブラウザの基本機能の裏側
####クッキー
WEBサイトの情報をブラウザ側に保存する仕組みのこと。サービス側からクライアント(ブラウザ)に「これを保存しておいて」とクッキーの保存を指示する。
クライアントはサーバから受け取ったクッキーをローカルのストレージに保存し、同じ URL にアクセスがあるときはそのクッキーを読みだしてサーバのリクエストヘッダに加える。
####認証とセッション
BASIC 認証、Digest 認証とあるがどちらも最近使われていない。
最近は、フォームを使用したログインとクッキーを使用したセッション管理の組み合わせである。
クライアントは、フォームでIDとパスワードを送信する。サーバ側では、ユーザIDとパスワードで認証し、問題がなければセッショントークを発行。サーバはセッショントークンをリレーショナルDBやキーバリュー型のDBに保存しておく。トークンはクッキーとしてクライアントに戻される。2度目の以降のアクセスは、クッキーを再送することで、ログイン済みのクライアントであることがわかるという仕組み。
####プロキシ
HTTPなどの通信を中継する仕組み。中継するだけでなく、様々な付加機能が実装されることもある。会社や大学などの組織のメンバーの誰かがアクセスしたコンテンツは、他のユーザもアクセスする可能性が高いということで、キャッシュ機能を持ったプロキシを組織のネットワークの出入り口におくことで、コンテンツをおくWEBサーバの負担を減らし、かつ各ユーザが高速にページを閲覧できるようにするといった効果がある。
####キャッシュ
既にダウンロードで、内容に変化がなければダウンロードを抑制し、それによってパフォーマンスを上げるメカニズムが「キャッシュ」である。GETとHEADメソッド以外は基本的にキャッシュされない。
#最後に
こんな感じで議事録っぽくまとめていこうと思っています!