by shigemk2

当面は技術的なことしか書かない

今夜わかるHTTP 2

前回はこちら
今夜わかるHTTP 1 - by shigemk2

初期のHTTPは通信を1度するたびにTCPによる接続と切断を繰り返していたが、
一つのHTMLには画像だの文書だのが入っていてその度に通信を切ったりするのは
通信量が増大してコストが上がるので、現在は持続的接続(常に接続されっぱなし)に
より通信量を節約している。

また、パイプライン化により、レスポンスを待たずに次のリクエストを
送信出来るので、リクエストとレスポンスのやりとりが早く完了する。

HTTPはステートレス通信なので、サーバーのCPUやメモリの消費を抑える
利点があるが、認証が必要なページではアクセスするたびにログインしなければ
ならないデメリットも存在する。

そのため、クライアントの状態を把握しておく仕組みであるクッキーを利用する。
クッキーをクライアントのブラウザに保存させておくことで、次のリクエストが
送られたときにそのクッキーを送り返す。
クッキーはHTTPリクエストにくっつける。


HTTPでデータを転送する場合、そのまま転送するよりエンコーディング(変換)
したほうが効率が上がる。ただし、エンコーディングはサーバー側で行うため、
CPUの消費は多くなってしまう。

メッセージ HTTP通信の基本単位
エンティティ リクエストやレスポンスのペイロード(付加物)

エンコーディング
エンコーディングを行うことで、エンティティボディの内容が変化する。

コンテンツコーディング (エンティティを圧縮)
転送コーディング (エンティティを分解)
MIME (複数の異なるデータをまるごと格納して転送する)
レンジリクエスト (一部分だけ貰えるリクエスト)

コンテンツネゴシエーション
クライアントとサーバーが提供するリソースの内容について交渉し、
最適なものを決定すること。(例:日本語ページと英語ページがある場合、どちらを優先的に表示させるかを決定する)


サーバー
バーチャルホスト (1台で複数のサーバーが存在するかのように見せかける)

中間サーバー

  • プロキシ クライアントからのリクエストをサーバーに転送し、サーバーからのリクエストをクライアントに転送する
  • ゲートウェイ クライアントからのリクエストを、別の形式(SQL文など)に変換する
  • トンネル 離れた別のサーバーとクライアントが安全に直接通信できる。

プロキシサーバーはネットワーク帯域利用の効率化や、アクセス制限などを担う。
キャッシングプロキシ プロキシサーバー上にリソースのコピー(キャッシュ)を保存しておく
トランスペアレントプロキシ 中継ノ際メッセージに何も加えないプロキシ


キャッシュ プロキシサーバーやクライアントのローカルディスクに保存されたリソースのコピーで、サーバーへのアクセスを減らすことが出来る。

これにより、オリジンサーバーにアクセスしなくてもプロキシサーバーのキャッシュからリソースを獲得することが出来る。
(キャッシュの有効期間が切れたら、オリジンサーバーに確認を取る)


今夜わかるHTTP (Network)

今夜わかるHTTP (Network)