takehara blog

ネットワークプロトコル系をメイン取り扱う予定

【技術書典7】『くいっく』HTTP/3編 を頒布します

サークル「すらりんラボ」の一員として技術書典7に参加します。
※技術書典6ではオーディオの本を出していました
今回はHTTP/3に関する本を頒布予定です。

頒布情報

f:id:takehara3586:20190915093755p:plain:w300

「すらりんラボ」からは すらりん さん著の「DirectX Programing Vol.2」及び「Vulkan Programing Vol.2」も頒布予定です!
こちらの詳細についてはすらりん日記さんの記事を参照ください。

「くいっく! HTTP/3 編」の概要

どんな本なの?

  • 対話形式で気軽に HTTP/3 の概要を学べます
  • プログラムに似た『魔法』が発展している異世界が舞台です
    • 『主人公は魔法技術競技会での優勝を目指す精霊魔術師で……』
      というような軽いストーリー仕立てで進行します
  • 対話の後の詳細解説コーナーで深掘りした内容まで把握できます
  • HTTP/2 のおさらいも掲載されているのでHTTP/2を知らない人も安心です

サンプル

f:id:takehara3586:20190915095715p:plain:w300 f:id:takehara3586:20190915095718p:plain:w300 f:id:takehara3586:20190915095721p:plain:w300 f:id:takehara3586:20190915095839p:plain:w300 f:id:takehara3586:20190915095926p:plain:w300 f:id:takehara3586:20190915100118p:plain:w300

HTTP/3 って?

  • HTTP/2 の弱点を克服することができる HTTP の最新バージョンです
    • ただし、現在まだドラフト(仕様策定中)です
  • HTTP3 のベースとなるプロトコルである QUIC は ChromeOpera で既に利用されています
    • RFC 発行(標準仕様作成)後は HTTP/3 はほとんどのブラウザに採用されると予想されます
    • 今のうちに概要を把握し、未来に備えましょう
  • 本書はドラフトバージョン 22 ベースで解説してあります

読む為に必要なスキル

  • TCP のことを何となくわかっている方が望ましいです(ハンドシェイクとか)
  • パケットロストや暗号化等のネットワークの基礎知識もほんのりあると理解が深まるでしょう
  • HTTP/2 の知識はまったくもって不要です

得られる知識

  • HTTP/2の特徴と弱点
  • HTTP/3の仕組み

こんな人にお勧め

  • HTTP/3 の概要や機能を一通り抑えておきたい人
  • 新しいプロトコルはとりあえず試してみたい人
  • HTTP/3 のドラフトを読むのを挫折した人

こんな人には向いてないかも

  • HTTP/3 や QUIC の RFC 並の詳細な仕様や実装を知りたい人
  • HTTP/3 の実装例が知りたい人

章立て

  • はじめに
  • Chapter.1 HTTP/2のおさらい
    • 速度の秘訣「ストリーム」
      • ストリーム
      • フレーム
    • 柔軟な通信「プライオリティ」
      • プライオリティ
      • Stream Weight
      • Stream Dependency
    • 軽量なヘッダを実現「HPACK」
      • HPACK
      • HEADERS FRAME
      • Huffman Coding
      • Indexing Table
      • Static Tabel
      • Dynamic Tabel
      • Literal Header Field
      • HPACK Indexed Header Field
      • HPACK まとめ
  • Chapter.2 HTTP/2の問題点
    • 暗号化無しでも運用可能です
      • DeepDive:HTTP/2と暗号化の関係について
    • 再接続すると頭からやり直しです
    • プライオリティが複雑過ぎます
      • プライオリティの実装状況
      • DeepDive:HTTP/2プライオリティの今後
    • パケロスはやめてくださいっ!
      • TCP Head of line blocking
      • DeepDive:HTTP/2とHTTP/1.1はどちらが速い?①
      • DeepDive:HTTP/2とHTTP/1.1はどちらが速い?②
  • Chapter.3 HTTP/3を学ぼう
    • QUICとHTTP/3の関係
    • UDPを知ろう
    • IDベースのコネクション管理
      • HTTP/3コネクションの管理
      • HTTP/3コネクションのライフタイム
      • HTTP/3コネクションの設定
      • QUICコネクションのクローズ
      • HTTP/3コネクションのクローズ
      • QUICのパケットタイプ
      • Long Header Packets
      • QUICのストリーム
      • HTTP/3のストリーム
      • HTTP/3のフレーム
      • QUICのフレーム
      • QUICのHeader Protection
    • ハンドシェイク高速化の秘密
      • HTTP/3のハンドシェイクの流れ(1-RTT)
      • HTTP/3のハンドシェイクの流れ(1-RTT)補足
      • HTTP/3のハンドシェイクの流れ(0-RTT)
      • DeepDive:QUICとTLS 1.3の関係
    • パケットロス検出の工夫
      • Packet Numberの追加
      • QUICのパケットロスの検出方法
      • SACKとの違い
      • DeepDive:QUICのバージョン互換について
    • 通信速度の管理
      • QUICのフロー制御
    • プライオリティはどうなる?
      • HTTP/3のプライオリティの現状
      • 新しく提案されたHTTPプライオリティの概要
    • ヘッダ圧縮『QPACK』
      • HPACKの問題点
      • QPACK
      • DeepDive:QPACK - Definitions
      • DeepDive:QPACK - Dynamic Table
      • DeepDive:QPACK - Header Block①
      • DeepDive:QPACK - Header Block②
      • DeepDive:QPACK - Encoder Instructions
      • DeepDive:QPACK - Encoder Process
      • DeepDive:QPACK - Decoder
      • 実装状況を確認しよう
    • HTTP/3及びQUICの実装状況の確認方法
      • HTTP/3の実装状況(2019/8時点)
      • ツールの実装状況 (2019/8時点)
    • まとめ
  • Chapter.4 HTTP/3の弱点
    • ちょっぴりスロースターターです
      • アンプ攻撃とは
      • QUICのアンプ攻撃への対策
    • サーバによっては対応してません
    • 経路によっては制限されてます
      • ブロックされている事があります
      • UDPが使えないケース
      • Googleによる調査結果と現状
  • Epilogue
  • 参考文献
  • イラスト・フォント

それでは、技術書典7でお会いしましょう!