🙄

【初学者によるまとめ】この一冊で全部わかるWeb技術の基本 「Chapter3」>「09 HTTP/2での改良点」

2024/12/09に公開

目的:「イラスト図解式 この一冊で全部わかるWeb技術の基本」の要点を自分なりにまとめアウトプットして理解力の向上に努める。

注意点
🤔 ←この絵文字の文章は個人的な見解になります。的外れなこともあるかと思います。
例)🤔<(感想、考察、疑問点など)

(参考書籍)

  1. イラスト図解式 この一冊で全部わかるWeb技術の基本

(参考サイト)

  1. 大阪市立大学大学院医学研究科
  2. 日経XTECH
  3. Yahoo! JAPAN Tech Blog
  4. MDN

:::note warn
バイナリ("binary":「二進数の~」)

  • テキスト形式以外の記述形式全般を指す
    (文字コードじゃない形式)
    • テキスト形式は".txt"で作られる文字オンリーのファイルを指している
      (メモ帳とかが代表例)
  • "人間の言葉"ではなく「0」「1」(バイナリデータ)なのが特徴
    • "コンピューターの言葉"というイメージ
  • テキスト形式ファイルは基本どんなプログラムでもある程度読み書き可能なのに対して、バイナリ形式ファイルはプログラムによっては中身を参照できない
    • "バイナリ形式ファイル"と一言でいっても音声、画像、動画、実行、圧縮などあらゆるファイルが分類に含まれている
      (動画プレーヤーで .zip ファイルを開こうとしてもムリ)
      :::

HTTP/2での改良点

HTTP/2でのストリームの多重化以外の改良点について

バイナリ形式の利用

  • HTTP/1.1以前ではHTTPメッセージを"テキスト形式"でやり取りしていた
    • 名前やメールアドレス等送信したいデータも原文の文字列のまま送信していた
  • HTTP/2では"バイナリ形式"でやり取りをするようになった
    • これによりテキスト形式を扱うよりも効率的な通信とサーバーの処理負担軽減が実現された
      • コンピューターが理解しやすい形式で通信するようになったため
      • HTTP/1.1以前はバイナリ形式のデータを扱う際は、わざわざテキスト形式に変換していた背景も関係

HTTPリクエスト&レスポンスの分割

  • HTTPリクエスト、HTTPレスポンスは1つの文書として送信されていたが、パケットのように分割して送信するように変更された
    ⇒ この分割単位を「フレーム」という
    • HTTP/1.1以前ではヘッダーが圧縮できなかった
      ⇒ フレーム分割によってヘッダーも圧縮可能になり通信効率が向上した
      • 一説ではバイナリ形式ではなくテキスト形式で扱っていた関係で圧縮する仕組みが無かったためらしい

image.png

ヘッダー圧縮

  • HTTP/1.1以前ではヘッダーが圧縮できなかったが、
    HTTP/2ではヘッダーも圧縮可能になった
  • この圧縮時にHPACKという圧縮方式を利用することでデータの転送量を抑えている
    • ヘッダーの差分だけを送信する」仕組み
      • 具体的には「ヘッダーに入っているメタ情報が以前送信した内容と同じものは送信には含めない」「裏では差分の確認のための情報が保持している」という仕組みがなされている

サーバープッシュ

  • HTTP/1.1以前ではHTTPリクエストとHTTPレスポンスを反復的に送受信することでWebコンテンツを生成していた
    • HTTPレスポンスから別ファイルが必要だと分かった場合、再度リクエストが必要であれば別ファイルを再リクエストする必要があった(HTML に css,img が必要など)
  • HTTP/2ではWebサーバー側がHTTPリクエストから必要なファイルを一括で送るようにしてくれている
    ⇒ これをサーバープッシュ という
    • Webサーバー側がHTTPリクエストから「リクエストされているWebコンテンツを生成するにはどのファイルが必要なのか」を判断してくれる(HTML に css,img が必要など)

まとめ

:::note info

  • HTTP/2ではHTTPメッセージをバイナリ形式で扱っている
  • HTTPメッセージはフレームという単位に分割して送信している
  • サーバープッシュという仕組みにより従来の反復的なHTTPリクエスト、HTTPレスポンスのやり取りが不要になった
    • HTTPリクエストで必要になるであろう関連ファイルは一括で送信してくれる
      :::

Discussion