01 / 読書ガイド
読書ガイド
引用
Fall, K. R., & Stevens, W. R. (2011). TCP/IP Illustrated, Volume 1: The Protocols (2nd ed.). Addison-Wesley Professional.
章の要約
第2版は18章、約1,050ページからなり、前に序文と二つの前書き(本版のものと第1版から改訂して収めたもの)、後ろに略語集が付く。第1〜11章はトランスポート層より下の各層と名前解決を扱い、第12〜17章はTCPに充てられ、第18章はセキュリティに移る。ほとんどの章は、そのプロトコルに対する攻撃を扱う節、続いて要約と参考文献で終わる。
第1章:はじめに
インターネットのアーキテクチャ上の原則、プロトコルの設計と実装、TCP/IPプロトコル群の構造を述べる。インターネット、イントラネット、エクストラネット、アプリケーションの設計、標準化の過程、利用可能な実装、そしてインターネットのアーキテクチャそのものを狙う攻撃にも触れる。
第2章:インターネットのアドレスアーキテクチャ
IPv4とIPv6のアドレスの表記と構造を説明する。CIDRと経路集約、特殊用途アドレス、割り当て、ユニキャストアドレスの割り当てを含む。
第3章:リンク層
イーサネットとIEEE 802標準、全二重・省電力・オートネゴシエーション、ブリッジとスイッチ、無線LAN(IEEE 802.11)、PPP、ループバック、MTUと経路MTU、トンネリングの基礎を扱う。
第4章:ARP:アドレス解決プロトコル
短い章で、ARPキャッシュ、フレーム形式、タイムアウト、プロキシARP、Gratuitous ARPとアドレス競合検出、arpコマンド、ARPに対する攻撃を扱う。
第5章:インターネットプロトコル(IP)
IPv4とIPv6のヘッダ、IPv6拡張ヘッダ、IP転送、モバイルIP、ホストによるデータグラムの処理を示す。
第6章:システム設定:DHCPと自動設定
DHCPに長い節を割いたのち、IPv6のステートレスアドレス自動設定(SLAAC)、DHCPとDNSの相互作用、PPPoEを扱う。
第7章:ファイアウォールとネットワークアドレス変換(NAT)
ファイアウォールとNAT、NATトラバーサル、パケットフィルタリング型ファイアウォールとNATの設定、IPv4/IPv6の共存と移行のためのNATを論じる。
第8章:ICMPv4とICMPv6:インターネット制御メッセージプロトコル
ICMPメッセージ、エラーメッセージ、問い合わせ・情報メッセージを説明し、続いてIPv6の近隣探索、ICMPv4とICMPv6の間の変換を扱う。
第9章:ブロードキャストとローカルマルチキャスト(IGMPとMLD)
ブロードキャスト、マルチキャスト、グループ管理プロトコルであるIGMPとMLDを扱う。
第10章:ユーザデータグラムプロトコル(UDP)とIPフラグメンテーション
UDPのヘッダとチェックサム、IPv6上のUDP、UDP-Lite、IPフラグメンテーション、UDPによる経路MTU探索、最大データグラムサイズ、UDPサーバの設計、UDP/IPv4とUDP/IPv6の間の変換を扱う。
第11章:名前解決とドメインネームシステム(DNS)
DNSの名前空間、ネームサーバとゾーン、キャッシュ、DNSプロトコルそのものを扱う大きな章で、続いてスプリットDNSとラウンドロビン、DynDNS、DNS64、LLMNRとmDNS、LDAP、DNSへの攻撃を扱う。
第12〜13章:TCPの予備知識、TCPのコネクション管理
第12章(TCP:伝送制御プロトコル〈予備知識〉)はTCPとそのヘッダ、カプセル化を紹介する。出版社は無料のサンプル章として提供している。第13章はコネクションの確立と終了、TCPオプション、経路MTU探索、状態遷移、リセットセグメント、サーバの動作を扱う。
第14〜15章:TCPのタイムアウトと再送、TCPのデータフローとウィンドウ管理
第14章は再送タイムアウトの設定、タイマーによる再送、高速再送、選択的確認応答、見かけ上のタイムアウト、順序の入れ替わりと重複を論じる。第15章は対話的通信、遅延ACK、Nagleアルゴリズム、フロー制御とウィンドウ管理、緊急ポインタ機構を扱う。
第16〜17章:TCPの輻輳制御、TCPキープアライブ
第16章は古典的な輻輳制御アルゴリズムとその発展、拡張例、TCPフレンドリネス、高速環境向けと遅延ベースの方式、バッファブロート、アクティブキュー管理とECNを示す。第17章は短い章で、キープアライブを扱う。
第18章:セキュリティ:EAP、IPsec、TLS、DNSSEC、DKIM
情報セキュリティの基本原則、脅威、暗号の基礎から始め、証明書とPKI、ネットワークアクセス制御(802.1X、EAP)、IPsec、TLSとDTLS、DNSSEC、DKIMへ進む。
主要概念
第1〜5章:アーキテクチャ、アドレス指定、リンク層、ARP、IP
- アーキテクチャ上の原則:TCP/IPプロトコル群の背後にある設計目標と、各プロトコルがどう組み合わさるか。
- CIDRと集約:クラスレスのアドレス指定で、IPv4とIPv6のアドレス構造の基礎となる。
- 経路MTU:フラグメンテーションなしで経路を通過できる最大のデータグラム。
- IPv6拡張ヘッダ:基本のIPv6ヘッダを拡張する任意のヘッダ。
第6〜11章:設定、NAT、ICMP、マルチキャスト、UDP、DNS
- DHCPとSLAAC:ホストのアドレスを設定するステートフルとステートレスの二つの方法。
- NATトラバーサル:アドレス変換装置を越えて通信するための技術。
- 近隣探索:ARPの役割を引き継ぐIPv6の仕組み。
- IGMPとMLD:それぞれIPv4とIPv6のマルチキャストのためのグループ管理プロトコル。
- DNSのキャッシュとゾーン:名前空間がどう分割され、問い合わせがどう応答されるか。
第12〜17章:TCP
- 再送タイムアウトと高速再送:TCPがセグメントの喪失をどう判断するか。
- Nagleアルゴリズムと遅延ACK:小さなセグメントのトラフィックを左右する相互作用。
- 輻輳制御:送信速度をネットワークの容量内に抑えるアルゴリズム。
- バッファブロートとECN:キューイングの問題と、それに対処するシグナリングの仕組み。
第18章:セキュリティ
- IPsec、TLS、DTLS:ネットワーク層とトランスポート層でトラフィックを保護するプロトコル群。
- DNSSECとDKIM:名前解決と電子メールに加えられた認証。
批判的分析
長所
- プロトコルの動作を示す。 出版社は、本書がLinux、Windows、Mac OSの現実的な例を通じて各プロトコルの動作を示し、なぜそのように動くのかを説明するものだと述べている。
- 層ごとに網羅され、構成が一貫している。 目次を見ると、各プロトコルの章は、導入、仕組み、攻撃の節、要約と参考文献という同じ型をとっている。そのため、残りを読まなくてもプロトコルの弱点を探しやすい。
- TCPが深い。 6章(第12〜17章)、220ページ以上を使って、コネクション管理、タイムアウトと再送、ウィンドウ管理、輻輳制御、キープアライブを扱っており、一般的なネットワークの教科書よりはるかに詳しい。
- IPv6が付録ではなく本文に組み込まれている。 アドレス指定、ヘッダ、拡張ヘッダ、近隣探索、SLAAC、IPv6上のUDP、移行のためのNATが本論の章に現れる。
短所
- 分量と進度。 約1,050ページあり、授業の教科書というより参考書である。DHCPの節(約40ページ)やDNSプロトコルの節(約45ページ)のように、多くの授業が必要とする範囲をはるかに超える部分がある。
- 前提知識。 本書はTCP/IPの目標とアーキテクチャを紹介するが、読者がネットワークの用語に慣れていることを前提としており、ネットワークの最初の入門書ではない。
- 周縁部が古くなっている。 本書は2011年刊行であり、輻輳制御の章の高速環境向け・遅延ベース・ECNの扱いは当時の状況を反映している。その後のTCPの発展は目次にない。
コースにおける位置づけ
本書は、コンピュータネットワークの科目群でプロトコルレベルのリファレンスにあたる。KuroseとRossはアプリケーション層から下へ進み、Tanenbaumの教科書は物理層から上へ層ごとに進む。Forouzanの本はTCP/IPプロトコル群を下から学ぶやさしい入門書、Comerの本は数学を使わずにインターネットの仕組みを説明する読み物である。このうちどれを最初の授業に選んでもよく、その後にFallとStevensを読むと、各プロトコルが回線上でどう振る舞うかを詳しく知ることができる。
VargheseとXuの Network Algorithmics は、ネットワークのソフトウェアとハードウェアを高速にする方法を論じる大学院向けの教科書で、別の問いを立てる。プロトコルが理解されていることを前提に、実装上のボトルネックを研究する。先に本書のTCPの各章を読んでおくと、その背景になる。
本書の使い方
本書は、ネットワークの入門科目を終え、パケットが実際にどのように見えるかを知りたい学生、実システムのトラブルシューティングを行うネットワークエンジニアや管理者、プロトコルの正確な動作を必要とするセキュリティアナリストに向いている。
実践的な進め方は次のとおり。
- 中核: アーキテクチャ、アドレス指定、IPのための第1、2、5章と、TCPのための第12〜16章を順に読む。
- 必要に応じて: 第3章(リンク層)、第4・6章(ARP、DHCP)、第8章(ICMP)、第10章(UDP)、第11章(DNS)を、授業や障害調査の必要に応じて読む。
- 専門的: 第7章(NATとファイアウォール)、第9章(マルチキャスト)、第17章(キープアライブ)、第18章(セキュリティ。それだけで短い講義になる)。
読みながら実験用マシンでパケットアナライザを使ってトラフィックを取得し、本文のトレースと比べるとよい。ネットワークセキュリティを学ぶときは、各章の攻撃の節をチェックリストとして使える。
