Real World HTTP ミニ版

[cover photo]
TOPICS
Web
発行年月日
ISBN
978-4-87311-878-9
FORMAT
PDF EPUB

本書は、2017年に発行し好評を得ている『Real World HTTP』のエッセンスを凝縮した、無料の電子書籍です。
HTTP/1.0、HTTP/1.1、HTTP/2と、HTTPが進化する道筋をたどりながら、ブラウザが内部で行っていること、サーバーとのやりとりの内容などについて、プロトコルの実例や実際の使用例などを交えながら紹介しています。
ミニ版のため、一部の内容を割愛していますが、「ウェブアプリケーション」に関する新章と、HTTPのステータスコードとヘッダーをまとめた付録を追加しています。

ミニ版の使用について

ミニ版の図版やテキストは、著作権法で認められている引用の範囲に加えて、有志での勉強会、自社の社員向けの研修に用いるプレゼンテーション資料のために、全体の10~20%程度のテキストと図版や表を利用することができます。
具体的には引用部分の明記を求める条件、引用だけを用いた資料作成、引用とそれ以外の主従関係(分量)の制限を外れた利用を許可します。ただし、かならず引用元を明記していただくようお願いいたします。文章量が多すぎてしまうとプレゼンテーション資料としては読みにくいものとなるため、これぐらいの分量があれば十分でしょう。
テキストの大部分を研修資料などの目的で、ガイドラインとなる分量を大幅に超えて引用する場合に、本書を丸ごとコピーしたり、再配布することはおやめください。そのような場合は、利用者ご本人の手で個別にミニ版をダウンロードしてください。
また、ミニ版を元にして作成されたプレゼンテーション資料については、可能であれば本書と同様に公開していただけたら嬉しいです。

なお本書はEbook版のみとなりますので印刷物については、既刊の『Real World HTTP』をご参照ください。

目次

まえがき

第1章 HTTP/1.0の世界:基本となる4つの要素
    1.1 HTTPの歴史
        1.1.1 テストエコーサーバーの実行
        1.1.2 Dockerのインストール
    1.2 HTTP/0.9でできることを試す
    1.3 HTTP/0.9から1.0への道のり
    1.4 HTTPの先祖(1) 電子メール
        1.4.1 ヘッダーの送信
        1.4.2 ヘッダーの受信
        1.4.3 MIMEタイプ
        1.4.4 Content-Typeとセキュリティ
        1.4.5 電子メールとの違い
    1.5 HTTPの先祖(2) ニュースグループ
        1.5.1 メソッド
        1.5.2 ステータス
    1.6 リダイレクト
    1.7 URL(Uniform Resource Locators)
        1.7.1 URLの構造
        1.7.2 URLと国際化
        1.7.3 正規URL
        1.7.4 Protocol-Relative URL
    1.8 ボディ
        1.8.1 GETリクエスト時のボディ
    1.9 本章のまとめ

第2章 HTTP/1.0のセマンティクス:ブラウザの基本機能の裏側
    2.1 シンプルなフォームの送信(x-www-form-urlencoded)
    2.2 フォームを使ったファイルの送信(multipart/form-data)
    2.3 キャッシュ
        2.3.1 更新日時によるキャッシュ
        2.3.2 Expires
        2.3.3 Pragma: no-cache
        2.3.4 確実にキャッシュしない条件
        2.3.5 ETagの追加
        2.3.6 Cache-Control (1)
        2.3.7 Cache-Control (2)
        2.3.8 Vary
    2.4 本章のまとめ

第3章 HTTP/1.1の世界:高速化と安全性を求めた拡張
    3.1 Keep-Aliveによる通信の高速化
    3.2 TLS(トランスポート・レイヤー・セキュリティ)
        3.2.1 ハッシュ関数
        3.2.2 共通鍵暗号と公開鍵暗号とデジタル署名
        3.2.3 鍵交換
        3.2.4 共通鍵方式と公開鍵方式を使い分ける理由
        3.2.5 TLSの通信手順
        3.2.6 暗号強度
        3.2.7 暗号スイート(Cipher Suite)
        3.2.8 プロトコルの選択
        3.2.9 TLSが守るもの
    3.3 PUTメソッドとDELETEメソッドの標準化
    3.4 OPTIONS、TRACE、CONNECTメソッドの追加
        3.4.1 OPTIONS
        3.4.2 CONNECT
    3.5 チャンク
        3.5.1 末尾へのヘッダーの追加
    3.6 ボディ送信の確認
    3.7 本章のまとめ

第4章 HTTP/2とHTTP/3の世界:プロトコルの再定義
    4.1 HTTPのバイナリプロトコル化の道
        4.1.1 SPDY
        4.1.2 QUIC
    4.2 HTTP/2
        4.2.1 ストリームによる通信の高速化
        4.2.2 HTTP/2のアプリケーション層
        4.2.3 フローコントロール
        4.2.4 サーバープッシュ
        4.2.5 HTTP/2とプリロードによるリソース取得の最適化
        4.2.6 HPACKによるヘッダーの圧縮
    4.3 HTTP/3への道
        4.3.1 HTTP/3のレイヤー
        4.3.2 HTTP Alternative Servicesによるアップグレード
    4.4 本章のまとめ

第5章 ウェブアプリケーションの基礎
    5.1 用語の整理
    5.2 基本的なフロー
    5.3 ウェブアプリケーションのリクエストのライフサイクル
        5.3.1 HTTPリクエスト
        5.3.2 セッション
    5.4 ウェブアプリケーションの動作のパターン
        5.4.1 第1世代: サーバーサイドレンダリング
        5.4.2 第2世代: Ajax
        5.4.3 第3世代: シングルページアプリケーション
        5.4.4 第3.5世代: シングルページアプリケーション+サーバーサイドレンダリング
    5.5 インフラ構成
        5.5.1 開発環境
        5.5.2 本番環境の基本構成
    5.6 より大規模なウェブシステムの構成
    5.7 その他のインフラ形態
        5.7.1 PaaS(Platform as a Service)
        5.7.2 サーバーレス
        5.7.3 マイクロサービス
    5.8 ウェブアプリケーション内部の階層構造
    5.9 ウェブアプリケーション構成要素の詳細な分類
    5.10 ウェブAPIの設計 - 箱の使い分け
        5.10.1 RESTfulアーキテクチャ
    5.11 今後はあまり使われなくなる技術
        5.11.1 CGI
        5.11.2 リッチ・インターネット・アプリケーション
    5.12 まとめ

付録A Appendix
    A.1 ステータスコード
        A.1.1 100番台(情報)
        A.1.2 200番台(成功)
        A.1.3 300番台(リダイレクト)
        A.1.4 400番台(クライアントエラー)
        A.1.5 500番台(サーバーエラー)
    A.2 ヘッダー

あとがき