Webに関わる人のための『HTTPの教科書』を発売

ひさびさの単著となる『HTTPの教科書』が2013年5月24日に発売になります。
内容はタイトルの通り、Webに関わる全ての人に捧げるHTTPを学ぶための教科書です。基礎を学びたい初心者の方から、机の上に置いてリファレンス的に使いたい方までを対象としています。

HTTPの教科書
HTTPの教科書
  • 発売元: 翔泳社
  • 価格: ¥ 2,730
  • 発売日: 2013/05/25

HTTP関連の書籍は『今夜わかるHTTP (Network)』というタイトルの本を2004年に出しています。その頃からHTTP/1.1が主流であるというのは、今でも変わりませんがそれを取り巻く環境というのは変わりつつあります。
HTTPを学ぶ上での要点がわかりやすく、そして読みやすくなっております。前作のリニューアルっぽく感じるかと思いますが、9割以上は書き直しや追記しております。
また、レビューアとして、Masato Kinugawaさん、山崎圭吾さん、ネットエージェント株式会社はせがわようすけさんなどもお迎えして、よりよい一冊となっております。

以下は本書の目次になります。
第1章 Web とネットワークの基本を知ろう
1.1 Web はHTTP で見えている
1.2 HTTP はこうして生まれ育った
 1.2.1 Web は知識共用のために考案された
 1.2.2 Web が成長した時代
 1.2.3 進歩しないHTTP
1.3 ネットワークの基本はTCP/IP
 1.3.1 TCP/IPプロトコル
 1.3.2 階層で管理するTCP/IP
 1.3.3 TCP/IP の通信の流れ
1.4 HTTPと関係深いプロトコル IP・TCPDNS
 1.4.1 配送を担当するIP
 1.4.2 信頼性を担当するTCP
1.5 名前解決を担当するDNS
1.6 それぞれとHTTP の関係
1.7 URIとURL
 1.7.1 URI はリソースの識別子
 1.7.2 URI のフォーマット
 
第2章 シンプルなプロトコルHTTP
2.1 HTTP はクライアントとサーバーで通信を行う
2.2 リクエストとレスポンスの交換で成り立つ
2.3 HTTP は状態を保持しないプロトコル
2.4 リクエスURI でリソースを識別する
2.5 サーバーに指示を与えるHTTP メソッド
2.6 メソッドを使って指示を出す
2.7 持続的接続で通信量を節約
 2.7.1 持続的接続
 2.7.2 パイプライン化
2.8 Cookie を使った状態管理

第3章 HTTPの情報はHTTP メッセージにある
3.1 HTTP メッセージ
3.2 リクエストメッセージとレスポンスメッセージの構造
3.3 エンコーディングで転送効率を上げる
 3.3.1 メッセージボディとエンティティボディの違い
 3.3.2 圧縮して送るコンテンツコーディング
 3.3.3 分解して送るチャンク転送コーディング
3.4 複数のデータを送れるマルチパート
3.5 一部分だけ貰えるレンジリクエス
3.6 最適なコンテンツを返すコンテンツネゴシエーション

第4章 結果を伝えるHTTP ステータスコード
4.1 ステータスコードはサーバーからのリクエスト結果を伝える
4.2 2XX 成功(Success)
 4.2.1 200 OK
 4.2.2 204 No Content
 4.2.3 206 Partial Content
4.3 3XX リダイレクト(Redirection)
 4.3.1 301 Moved Permanently
 4.3.2 302 Found
 4.3.3 303 See Other
 4.3.4 304 Not Modified
 4.3.5 307 Temporary Redirect
4.4 4XX クライアントエラー(Client Error)
 4.4.1 400 Bad Request
 4.4.2 401 Unauthorized
 4.4.3 403 Forbidden
 4.4.4 404 Not Found
4.5 5XX サーバーエラー(Server Error)
 4.5.1 500 Internal Server Error
 4.5.2 503 Service Unavailable

第5章 HTTPと連携するWeb サーバー
5.1 1台で複数ドメインを実現するバーチャルホスト
5.2 通信を中継するプログラム:プロキシ、ゲートウェイ、トンネル
 5.2.1 プロキシ
 5.2.2 ゲートウェイ
 5.2.3 トンネル
5.3 リソースを保管するキャッシュ
 5.3.1 キャッシュには有効期限がある
 5.3.2 クライアント側にもキャッシュがある

第6章 HTTP ヘッダー
6.1 HTTP メッセージヘッダー
6.2 HTTP ヘッダーフィールド
 6.2.1 HTTP ヘッダーフィールドは重要な情報を伝える
 6.2.2 HTTP ヘッダーフィールドの構造
 6.2.3 種類のHTTP ヘッダーフィールド
 6.2.4 HTTP/1.1 ヘッダーフィールド一覧
 6.2.5 HTTP/1.1 以外のヘッダーフィールド
 6.2.6 エンドトゥエンドヘッダーとホップバイホップヘッダー
6.3 HTTP/1.1 一般ヘッダーフィールド
 6.3.1 Cache-Control
 6.3.2 Connection
 6.3.3 Date
 6.3.4 Pragma
 6.3.5 Trailer
 6.3.6 Transfer-Encoding
 6.3.7 Upgrade
 6.3.8 Via
 6.3.9 Warning
6.4 リクエストヘッダーフィールド
 6.4.1 Accept
 6.4.2 Accept-Charset
 6.4.3 Accept-Encoding
 6.4.4 Accept-Language
 6.4.5 Authorization
 6.4.6 Expect
 6.4.7 From
 6.4.8 Host
 6.4.9 If-Match
 6.4.10 If-Modified-Since
 6.4.11 If-None-Match
 6.4.12 If-Range
 6.4.13 If-Unmodified-Since
 6.4.14 Max-Forwards
 6.4.15 Proxy-Authorization
 6.4.16 Range
 6.4.17 Referer
 6.4.18 TE
 6.4.19 User-Agent
6.5 レスポンスヘッダーフィールド
 6.5.1 Accept-Ranges
 6.5.2 Age
 6.5.3 ETag
 6.5.4 Location
 6.5.5 Proxy-Authenticate
 6.5.6 Retry-After
 6.5.7 Server
 6.5.8 Vary
 6.5.8 WWW-Authenticate
6.6 エンティティヘッダーフィールド
 6.6.1 Allow
 6.6.2 Content-Encoding
 6.6.3 Content-Language
 6.6.4 Content-Length
 6.6.5 Content-Location
 6.6.6 Content-MD5
 6.6.7 Content-Range
 6.6.8 Content-Type
 6.6.9 Expires
 6.6.10 Last-Modified
6.7 Cookie のためのヘッダーフィールド
 6.7.1 Set-Cookie
 6.7.2 Cookie
6.8 その他のヘッダーフィールド
 6.8.1 X-Frame-Options
 6.8.2 X-XSS-Protection
 6.8.3 DNT
 6.8.4 P3P

第7章 Webを安全にするHTTPS
7.1 HTTP の弱点
 7.1.1 通信が平文なので盗聴可能
 7.1.2 通信相手を確かめないのでなりすまし可能
 7.1.3 完全性を証明できないので改竄可能
7.2 HTTP+暗号化+認証+完全性保護=HTTPS
 7.2.1 HTTP に暗号化と認証と完全性保護を加えたHTTPS
 7.2.2 HTTPSSSL の殻をかぶったHTTP
 7.2.3 お互いが鍵を交換する公開鍵暗号方式
 7.2.4 公開鍵が正しいかどうかを証明する証明書
 7.2.5 安全な通信を行うHTTPS の仕組み

第8章 誰がアクセスしているかを確かめる認証
8.1 認証とは
8.2 BASIC 認証
 8.2.1 BASIC 認証の認証手順
8.3 DIGEST 認証
 8.3.1 DIGEST 認証の認証手順
8.4 SSL クライアント認証
 8.4.1 SSL クライアント認証の認証手順
 8.4.2 SSL クライアント認証は2 要素認証で使われる
 8.4.3 SSL クライアント認証は利用するのにコストが必要
8.5 フォームベース認証
 8.5.1 認証の大半はフォームベース認証
 8.5.2 セッション管理とCookie による実装

第9章 HTTP に機能を追加するプロトコル
9.1 HTTP をベースにしたプロトコル
9.2 HTTPのボトルネックを解消するSPDY
 9.2.1 HTTP のボトルネック
 9.2.2 SPDY の設計と機能
 9.2.3 SPDY はWeb のボトルネックを解決するか?
9.3 ブラウザで双方向通信を行うWebSocket
 9.3.1 WebSocket の設計と機能
 9.3.2 WebSocket プロトコル
9.4 登場が待たれるHTTP/2.0
9.5 Web サーバー上のファイル管理を行うWebDAV
 9.5.1 HTTP/1.1 を拡張したWebDAV
 9.5.2 WebDAV で追加されたメソッドとステータスコード

第10章 Web コンテンツで使う技術
10.1 HTML
 10.1.1 Web ページのほとんどはHTML でできている
 10.1.2 HTML のバージョン
 10.1.3 デザインを適用するCSS
10.2 ダイナミックHTML
 10.2.1 Web ページを動的に変更するダイナミックHTML
 10.2.2 HTML を操作しやすくするDOM
10.3 Web アプリケーション
 10.3.1 Web を使って機能を提供するWeb アプリケーション
 10.3.2 Web サーバーとプログラムを連携するCGI
 10.3.3 Java で普及したサーブレット
10.4 データ配信に利用されるフォーマットや言語
 10.4.1 汎用的に使えるマークアップ言語XML
 10.4.2 更新情報を配信するRSSAtom
 10.4.3 JavaScript から利用しやすく軽量なJSON

第11章 Web への攻撃技術
11.1 Web への攻撃技術
 11.1.1 HTTP は必要なセキュリティ機能がない
 11.1.2 リクエストはクライアント側で改竄可能
 11.1.3 Web アプリケーションへの攻撃パターン
11.2 出力値のエスケープの不備による脆弱性
 11.2.1 クロスサイト・スクリプティング
 11.2.2 SQL インジェクション
 11.2.3 OS コマンドインジェクション
 11.2.4 HTTP ヘッダーインジェクション
 11.2.5 メールヘッダーインジェクション
 11.2.6 ディレクトリ・トラバーサル
 11.2.7 リモート・ファイル・インクルージョン
11.3 設定や設計の不備による脆弱性
 11.3.1 強制ブラウジング
 11.3.2 不適切なエラーメッセージ処理
 11.3.3 オープンリダイレクト
11.4 セッション管理の不備による脆弱性
 11.4.1 セッションハイジャック
 11.4.2 セッションフィクセーション
 11.4.3 クロスサイト・リクエストフォージェリ
11.5 その他
 11.5.1 パスワード・クラッキング
 11.5.2 クリックジャッキング
 11.5.3 DoS 攻撃
 11.5.4 バックドア

※初版は目次内に間違えている部分があります。大変申し訳ありません。
※2刷で目次は修正されました。