『ハイパフォーマンスブラウザネットワーキング』
https://gyazo.com/65405fa4ea4cd9aec3fa555af409bc40
2014/5/16
初版は2014/5
1章 レイテンシ・帯域幅入門
1.1 スピードは機能
1.2 レイテンシを構成する多数の構成要素
1.3 光の速さと伝播遅延
1.4 ラストマイルのレイテンシ
1.5 基幹ネットワークの帯域幅
1.6 ネットワークエッジの帯域幅
1.7 より大きな帯域幅とより低いレイテンシを提供
2.2.3 輻輳回避
2.3 帯域幅遅延積
2.5 TCPの最適化
2.5.1 サーバ設定のチューニング
2.5.2 アプリケーションの動作のチューニング
2.5.3 パフォーマンスチェックリスト
3.2 UDPとネットワークアドレス変換(NAT) 3.2.1 接続状態タイムアウト
3.2.2 NATトラバーサル
3.3 UDPの最適化
4.1 暗号化、認証、データ整合性
4.2.1 RSA、Diffie-Hellman鍵交換と前方秘匿性
4.2.2 ALPN(Application Layer Protocol Negotiation)
4.2.3 SNI(Server Name Indication)
4.3 TLSセッション再開(TLS Session Resumption)
4.3.1 セッションID
4.3.2 セッションチケット
4.4 信頼チェーンと認証局
4.5 証明書の失効
4.5.1 証明書失効リスト(CRL)
4.5.2 オンライン証明書状態プロトコル(OCSP)
4.6 TLSレコードプロトコル
4.7.1 計算コスト
4.7.2 Early Termination
4.7.3 TLSセッションキャッシュとステートレスセッション再開
4.7.4 TLS False Start
4.7.5 TLSレコードサイズ
4.7.6 TLS圧縮
4.7.7 証明書チェーンの長さ
4.7.8 OCSP Stapling
4.7.9 HTTP Strict Transport Security(HSTS)
4.8 パフォーマンスチェックリスト
4.9 テストと検証
II部 ワイヤレスネットワークのパフォーマンス
5章 ワイヤレスネットワーク入門
5.1 ユビキタスコネクティビティ
5.2 ワイヤレスネットワークの種類
5.3 ワイヤレスネットワークにおけるパフォーマンスの基礎
5.3.1 帯域幅
5.3.2 信号強度
5.3.3 変調
5.4 実世界のワイヤレスパフォーマンスを測定
6章 WiFi
6.3 WiFiパフォーマンスの計測と最適化
6.3.1 WiFiネットワークのパケットロス
6.4 WiFiネットワークの最適化
6.4.1 使い放題の帯域幅の利用
6.4.2 変化する帯域幅に適応
6.4.3 変動するレイテンシに適応
7章 モバイルネットワーク
7.1 モバイルネットワーク世代の歴史の概要
7.1.1 2Gによる最初のデータサービス
7.1.2 3GPPと3GPP2のパートナーシップ
7.1.3 3G技術の進化
7.1.4 IMT-Advanced 4G規格
7.1.5 LTE(Long Term Evolution) 7.1.6 HSPA+がワールドワイドの4Gを牽引
7.1.7 世代が混在する将来に向けて
7.2 デバイスの機能と性能
7.2.1 UEカテゴリ
7.3 RRC(Radio Resource Controller)
7.3.1 3G、4G、そしてWiFiの電源要件
7.3.2 LTE RRCステートマシン
7.3.3 HSPAとHSPA+(UMTS)RRCステートマシン
7.3.4 EV-DO(CDMA)RRCステートマシン
7.3.5 定期的通信の非効率性
7.4 エンドツーエンドの移動体通信事業者ネットワークアーキテクチャ
7.4.1 RAN(Radio Access Network) 7.4.2 基幹ネットワーク(CN)
7.4.3 バックホール回線の容量とレイテンシ
7.5 モバイルネットワーク内のパケットフロー
7.5.1 リクエスト開始
7.5.2 インバウンドデータフロー
7.6 ヘテロジニアスネットワーク(HetNet)
7.7 実世界の3G、4G、そしてWiFiパフォーマンス
8章 モバイルネットワークの最適化
8.1 バッテリー消1量を抑える
8.2 非効率な定期的データ送受信を排除
8.2.1 不要なアプリケーションのキープアライブを排除
8.3 ネットワークレイテンシのオーバーヘッドを予想
8.3.1 RRC状態遷移を説明
8.3.2 ネットワークコミュニケーションからユーザインタラクションを切り離す
8.4 変化するネットワークインターフェイス状態に対応するデザイン
8.5 バースト的に送受信し、アイドル状態に戻る
8.6 WiFiネットワークへオフロード
8.7 プロトコルとアプリケーションのベストプラクティスを適用
III部 HTTP
9.1 HTTP 0.9:ワンラインプロトコル
9.2 HTTP 1.0:急速な成長とInformational RFC
9.3 HTTP 1.1:インターネット標準
9.4 HTTP 2.0:トランスポートのパフォーマンス向上
10章 Webパフォーマンス入門
10.1 ハイパーテキスト、Webページ、Webアプリケーション
10.2 モダンWebアプリケーションの解剖学
10.2.1 スピード、パフォーマンス、そして人間の知覚
10.2.2 リソースのウォーターフォールチャートを分析する
10.3 パフォーマンスの柱:演算、レンダリング、ネットワーク
10.3.1 より大きい帯域幅は(あまり)効果なし
10.3.2 パフォーマンスのボトルネックとしてのレイテンシ
10.4 人工的テストとリアルユーザでのパフォーマンス計測
10.5 ブラウザ最適化
11章 HTTP 1.x
11.1 キープアライブ接続の利点
11.2 HTTPパイプライン
11.3 複数のTCP接続を使用する
11.4 ドメインシャーディング
11.5 プロトコルオーバーヘッドの計測と制御
11.6 ファイル結合とスプライト
11.7 リソースインライン化
12.1 HTTP 2.0の歴史、そしてSPDYとの関係
12.2 HTTP 2.0への道
12.3 設計と技術的目標
12.3.1 バイナリフレーミングレイヤー
12.3.2 ストリーム、メッセージ、フレーム
12.3.3 リクエストとレスポンスの多重化
12.3.4 リクエスト優先度付け
12.3.5 1オリジンに1接続
12.3.6 フロー制御
12.3.7 サーバプッシュ
12.3.8 ヘッダ圧縮
12.3.9 効率的なHTTP 2.0アップグレードと発見
12.4 バイナリフレーム入門
12.4.1 新規ストリームの開始
12.4.2 データ送信
12.4.3 HTTP 2.0フレームのデータフローを解析
13章 アプリケーション配信最適化
13.1 定番のパフォーマンスベストプラクティス
13.1.1 リソースをクライアントにキャッシュ
13.1.2 転送中リソースの圧縮
13.1.3 リクエストから不要なデータを排除
13.1.4 リクエストとレスポンス処理の並列化
13.2 HTTP 1.xの最適化
13.3 HTTP 2.0の最適化
13.3.1 HTTP 1.xの最適化の削除
13.3.2 デュアルプロトコルアプリケーション戦略
13.3.3 HTTP 1.x-2.0変換レイヤー
13.3.4 サーバの質とパフォーマンスを評価
13.3.5 TLSを利用して/利用せずにHTTP 2.0を使用する
13.3.6 ロードバランサ、プロキシ、そしてアプリケーションサーバ
IV部 ブラウザAPIとプロトコル
14章 ブラウザネットワーク入門
14.1 接続管理と最適化
14.2 ネットワークセキュリティとサンドボックス化
14.3 リソースとクライアント状態キャッシュ
14.4 アプリケーションAPIとプロトコル
15.3 XHRでデータをダウンロード
15.4 XHRでデータをアップロード
15.5 ダウンロードとアップロードの進行状況を監視
15.6 XHRでデータストリーミング
15.7 リアルタイム通知と配信
15.7.1 XHRポーリング
15.7.2 XHRを使ったロングポーリング
15.8 XHRのユースケースとパフォーマンス
16章 Server-Sent Events
16.2 イベントストリームフォーマット
16.3 SSEのユースケースとパフォーマンス
17.1 WebSocket API
17.1.1 WSとWSS URLスキーム
17.1.2 テキストデータとバイナリデータを受信
17.1.3 テキストデータとバイナリデータを送信
17.1.4 サブプロトコルネゴシエーション
17.2 WebSocketプロトコル
17.2.1 バイナリフレーミングレイヤー
17.2.2 プロトコル拡張
17.2.3 HTTPアップグレードネゴシエーション
17.3 WebSocketのユースケースとパフォーマンス
17.3.1 リクエストとレスポンスのストリーミング
17.3.2 WebSocketメッセージのオーバーヘッド
17.3.3 データ効率と圧縮
17.3.4 カスタムアプリケーションプロトコル
17.3.5 WebSocketインフラのデプロイメント
17.4 パフォーマンスチェックリスト
18章 WebRTC
18.2 音声・動画処理エンジン
18.2.1 getUserMediaで音声と動画を取得
18.4.5 ICE候補収集と接続性ステータスの追跡
18.4.6 P2P接続開始プロセスの全体像
18.5 メディアとアプリケーションデータを配信
18.5.3 SCTPを使ってアプリケーションデータを送信
18.6.1 セットアップとネゴシエーション
18.6.2 メッセージの順序と信頼性を設定
18.6.3 部分的信頼性のある配信とメッセージサイズ
18.7 WebRTCのユースケースとパフォーマンス
18.7.1 音声、動画、そしてデータストリーミング
18.7.2 多者間通信アーキテクチャ
18.7.3 インフラと容量のプランニング
18.7.4 データの効率性と圧縮
18.8 パフォーマンスチェックリスト