Skip to content

Instantly share code, notes, and snippets.

@eiichi-worker
Last active December 6, 2017 00:55
Show Gist options
  • Select an option

  • Save eiichi-worker/65b90be1ff02a97685bd191e7c1b65bd to your computer and use it in GitHub Desktop.

Select an option

Save eiichi-worker/65b90be1ff02a97685bd191e7c1b65bd to your computer and use it in GitHub Desktop.
HTTP2について

HTTP2について

HTTPの歴史

  • 1991年 HTTP/0.9    リクエストされたものをただ返す
  • 1996年 HTTP/1.0    レスポンスヘッダ追加(ステータスコード)、POST等追加
  • 1999年 HTTP/1.1    バーチャルホスト対応、Keep-Alive、パイプライン化
  • 2009年   SPDY/1
  •         SPDY/3 をbaseにHTTP/2策定
  • 2015年 HTTP/2 (SPDY/4)

HTTP/1.1の限界

策定当時から時間がたち限界が見えてきた

  • コンテンツのサイズ、数の増加(リッチコンテンツ化)
  • HTTPヘッダの増加
  • 基本的に1つのリクエストに対して1つのレスポンスを返す    複数リクエストを同時に投げることは一応可能
  • HTTPパイプラインはOperaくらいしか、、、

HTTP/2

HTTP/2の基本キーワード

コネクションとストリーム


引用: HTTP/2はどうしてコネクション一つで通信できるのか

フレーム


引用: HTTP/2はどうしてコネクション一つで通信できるのか

HTTP/2の特徴

ストリームの優先度

優先度をサーバーにリクエスト可能。
ただし サーバは優先度を無視しても構わない

  • 重み付け ストリーム A:Bを1:2とか
  • 依存関係

ヘッダー圧縮

  • HPACKで圧縮
    • バイナリ形式
  • 1度送信したヘッダーは基本的には再度送信することはなく、必要な差分ヘッダーのみ送信する

フロー制御

一つのストリームが帯域を食いつぶさないようにする仕組み。流れの制御。

  • Window Size分送信者はデータを送信する
  • 受信側は処理が完了し次のデータを受け取る準備ができたらWINDOW_UPDATEフレームでWindow Sizeを送信者に通知する

※コネクション全体の Window Size と ストリームのWindow Sizeがある ※ Window Size を消費するのは DATA Frameだけ。他のフレームに影響が出ないように。

サーバープッシュ

関連メモ

おまけ

参考

参考(未反映)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment