『TCP/IP 詳解 第 1 巻 プロトコル』は、TCP/IP プロトコルの完全かつ詳細なガイドです。各層に属する個々のプロトコルと、それらが異なるオペレーティング システムでどのように動作するかについて説明します。著者は、ローレンス バークレー研究所の tcpdump プログラムを使用して、異なるオペレーティング システムと TCP/IP 実装間で送信されるさまざまなパケットをキャプチャしました。 tcpdump の出力を調べると、さまざまなプロトコルがどのように機能するかを理解するのに役立ちます。 本書は、ネットワークについて学ぶコンピュータ専攻の学生の教科書として、また教師の参考書として適しています。ネットワークを勉強する技術者にも適しています。
目次 訳者序文 第 1 章 概要 1
1.1 はじめに 1
1.2 層別化 1
1.3 TCP/IP レイヤ化 4
1.4 インターネットアドレス 5
1.5 ドメインネームシステム6
1.6 包装 6
8点で1.7点
1.8 クライアントサーバーモデル 8
1.9 ポート番号 9
1.10 標準化プロセス 10
1.11 RFC10
1.12 標準簡易サービス11
1.13 インターネット 12
1.14 実装 12
1.15 アプリケーション プログラミング インターフェイス 12
1.16 テストネットワーク 13
1.17 概要 13
第 2 章 リンク層 15
2.1 はじめに 15
2.2 イーサネットおよび IEEE 802 カプセル化 15
2.3 テールの梱包 17
2.4 SLIP: シリアルライン IP 17
2.5 圧縮SLIP 18
2.6 PPP: ポイントツーポイント プロトコル 18
2.7 ループバックインターフェース 20
2.8 最大伝送単位 MTU 21
2.9 パス MTU 21
2.10 シリアルラインのスループットの計算 21
2.11 概要 22
第 3 章 IP: インターネット プロトコル 24
3.1 はじめに 24
3.2 IPヘッダー24
3.3 IPルーティング 27
3.4 サブネットのアドレス指定 30
3.5 サブネットマスク 32
3.6 特殊な状況のための IP アドレス 33
3.7 サブネットの例 33
3.8 ifconfig コマンド 35
3.9 netstat コマンド 36
3.10 IP 36 の将来
3.11 概要 37
第 4 章 ARP: アドレス解決プロトコル 38
4.1 はじめに 38
4.2 例 38
4.3 ARP キャッシュ 40
4.4 ARP グループ化フォーマット 40
4.5 ARP の例 41
4.5.1 一般的な例 41
4.5.2 存在しないホストに対する ARP リクエスト 42
4.5.3 ARPキャッシュタイムアウト設定 43
4.6 ARP プロキシ 43
4.7 無料ARP 45
4.8 arp コマンド 45
4.9 まとめ 46
第 5 章 RARP: 逆アドレス解決プロトコル 47
5.1 はじめに 47
5.2 RARP グループ化形式 47
5.3 RARPの例47
5.4 RARPサーバーの設計 48
5.4.1 ユーザープロセスとしての RARP サーバー 49
5.4.2 ネットワークごとの複数の RARP サーバー 49
5.5 まとめ 49
第 6 章 ICMP: インターネット制御メッセージ プロトコル 50
6.1 はじめに 50
6.2 ICMP メッセージの種類 50
6.3 ICMP アドレスマスク要求と応答 52
6.4 ICMP タイムスタンプの要求と応答 53
6.4.1 例 54
6.4.2 別のアプローチ 55
6.5 ICMP ポート到達不能エラー 56
6.6 4.4BSD による ICMP メッセージの処理 59
6.7 まとめ 60
第 7 章 Ping プログラム 61
7.1 はじめに 61
7.2 Ping プログラム 61
7.2.1 LAN出力62
7.2.2 WAN 出力 63
7.2.3 ラインSLIPリンク64
7.2.4 ダイヤルアップ SLIP リンク 65
7.3 IP レコードのルーティング オプション 65
7.3.1 一般的な例 66
7.3.2 例外出力68
7.4 IP タイムスタンプのオプション 69
7.5 まとめ 70
第 8 章 Traceroute プログラム 71
8.1 はじめに 71
8.2 Traceroute プログラムの操作 71
8.3 LAN出力 72
8.4 WAN出力 75
8.5 IP オリジンルーティングオプション 76
8.5.1 緩和された起点ルーティングのための Traceroute
プログラム例 78
8.5.2 厳密なオリジンサイトルーティングのためのTraceroute
プログラム例 79
8.5.3 緩やかなソース サイト ルーティングのtraceroute プログラム
往復ルート80
8.6 まとめ 81
第 9 章 IP ルーティング 83
9.1 はじめに 83
9.2 ルーティングの原則 84
9.2.1 簡易ルーティングテーブル 84
9.2.2 ルーティングテーブルの初期化 86
9.2.3 より複雑なルーティング テーブル 87
9.2.4 目的地までのルートがない 87
9.3 ICMP ホストおよびネットワーク到達不能エラー 88
9.4 転送するかどうか 89
9.5 ICMP リダイレクト エラー 89
9.5.1 例 90
9.5.2 詳細 91
9.6 ICMP ルーター検出メッセージ 92
9.6.1 ルーターの操作 93
9.6.2 ホストの操作 93
9.6.3 実装 93
9.7 まとめ 94
第 10 章 ダイナミック ルーティング プロトコル 95
10.1 はじめに 95
10.2 動的ルーティング 95
10.3 Unixルーティングデーモン96
10.4 RIP: ルーティング情報プロトコル 96
10.4.1 メッセージフォーマット 96
10.4.2 通常の操作 97
10.4.3 メトリクス 98
10.4.4 質問98
10.4.5 例98
10.4.6 別の例100
10.5 RIP バージョン 2 102
10.6 OSPF: オープン最短パスファースト 102
10.7 BGP: ボーダー ゲートウェイ プロトコル 103
10.8 CIDR: タイプレスドメイン間ルーティング 104
10.9 まとめ 105
第 11 章 UDP: ユーザー データグラム プロトコル 107
11.1 はじめに 107
11.2 UDP ヘッダー 107
11.3 UDP チェックサム 108
11.3.1 tcpdump 出力 109
11.3.2 いくつかの統計結果 109
11.4 簡単な例 110
11.5 IP フラグメンテーション 111
11.6 ICMP 到達不能エラー (フラグメント化が必要) 113
11.7 Traceroute を使用してパス MTU 114 を決定する
11.8 UDP 116 を使用したパス MTU 検出
11.9 UDP と ARP 間の相互作用 118
11.10 UDP データグラムの最大長 119
11.11 ICMP 送信局抑止エラー 120
11.12 UDP サーバーの設計 122
11.12.1 顧客の IP アドレスとポート番号 122
11.12.2 宛先 IP アドレス 122
11.12.3 UDP入力キュー122
11.12.4 ローカル IP アドレスの制限 124
11.12.5 リモート IP アドレスの制限 125
11.12.6 ポート 125 ごとに複数の受信者
11.13 概要 126
第 12 章 ブロードキャストとマルチキャスト 128
12.1 はじめに 128
12.2 放送 129
12.2.1 制限付きブロードキャスト 129
12.2.2 ネットワークへのブロードキャスト 129
12.2.3 サブネットへのブロードキャスト 129
12.2.4 すべてのサブネットへのブロードキャスト 130
12.3 ブロードキャスト例 130
12.4 マルチキャスト 132
12.4.1 マルチキャストグループアドレス 133
12.4.2 マルチキャストグループアドレスからイーサネットアドレスへの変換 133
12.4.3 FDDI およびトークン リング ネットワークでのマルチキャスト 134
12.5 概要 134
第 13 章 IGMP: インターネット グループ管理プロトコル 136
13.1 はじめに 136
13.2 IGMP メッセージ 136
13.3 IGMP プロトコル 136
13.3.1 マルチキャストグループへの参加 136
13.3.2 IGMP レポートとクエリ 137
13.3.3 実装の詳細 137
13.3.4 生存時間フィールド 138
13.3.5 すべてのホストグループ 138
13.4 例 138
13.5 概要 141
第 14 章 DNS: ドメイン ネーム システム 142
14.1 はじめに 142
14.2 DNSの基本 142
14.3 DNS メッセージ形式 144
14.3.1 DNSクエリメッセージの問題部分 146
14.3.2 DNS 応答メッセージのリソース レコード部分 147
14.4 簡単な例 147
14.5 ポインタクエリ 150
14.5.1 例 151
14.5.2 ホスト名のチェック 151
14.6 リソースレコード 152
14.7 キャッシュ 153
14.8 UDP または TCP 156
14.9 別の例 156
14.10 概要 157
第 15 章 TFTP: 簡易ファイル転送プロトコル 159
15.1 はじめに 159
15.2 合意 159
15.3 例 160
15.4 セキュリティ 161
15.5 まとめ 162
第 16 章 BOOTP: ブートストラップ プロトコル 163
16.1 はじめに 163
16.2 BOOTP パケットのフォーマット 163
16.3 例 164
16.4 BOOTP サーバーの設計 165
16.5 BOOTP トラバーサル ルーター 167
16.6 ベンダー固有の情報 167
16.7 概要 168
第 17 章 TCP: 伝送制御プロトコル 170
17.1 はじめに 170
17.2 TCP サービス 170
17.3 TCP ヘッダー 171
17.4 まとめ 173
第 18 章 TCP 接続の確立と終了 174
18.1 はじめに 174
18.2 接続の確立と終了 174
18.2.1 tcpdump 出力 174
18.2.2 時系列 175
18.2.3 接続協定の確立 175
18.2.4 接続終了プロトコル 177
18.2.5 通常の tcpdump 出力 177
18.3 接続確立のタイムアウト 178
18.3.1 最初のタイムアウト期間 178
18.3.2 サービスタイプフィールド 179
18.4 最大セグメント長 179
18.5 TCP ハーフクローズ 180
18.6 TCP 状態遷移図 182
18.6.1 2MSL 待機状態 183
18.6.2 静かな時間の概念 186
18.6.3 FIN_WAIT_2 ステータス 186
18.7 リセットセグメント 186
18.7.1 存在しないポート187への接続要求
18.7.2 接続の異常終了 187
18.7.3 半開接続の検出 188
18.8 同時に開く 189
18.9 一斉閉鎖 191
18.10 TCP オプション 191
18.11 TCPサーバーの設計 192
18.11.1 TCPサーバーのポート番号193
18.11.2 修飾されたローカル IP アドレス 194
18.11.3 制限付きリモート IP アドレス 195
18.11.4 受信接続要求キュー 195
18.12 概要 197
第 19 章 TCP インタラクティブ データ フロー 200
19.1 はじめに 200
19.2 対話型入力 200
19.3 遅延に対する確認応答 201
19.4 ネーグルのアルゴリズム 203
19.4.1 Nagle アルゴリズムをオフにする 204
19.4.2 例 205
19.5 ウィンドウサイズ通知 207
19.6 要約 208
第 20 章 TCP チャンクデータストリーム 209
20.1 はじめに 209
20.2 通常のデータフロー 209
20.3 引き違い窓 212
20.4 ウィンドウサイズ 214
20.5 PUSHロゴ 215
20.6 スロースタート 216
20.7 チャンクデータのスループット 218
20.7.1 帯域幅遅延積 220
20.7.2 混雑 220
20.8 緊急モード 221
20.9 概要 224
第 21 章 TCP タイムアウトと再送信 226
21.1 はじめに 226
21.2 タイムアウトと再送信の簡単な例 226
21.3 往復時間の測定 227
21.4 往復時間 RTT の例 229
21.4.1 往復時間 RTT 229 の測定
21.4.2 RTT 推定量の計算 231
21.4.3 スロースタート 233
21.5 輻輳の例 233
21.6 渋滞回避アルゴリズム 235
21.7 高速再送信および高速回復アルゴリズム 236
21.8 輻輳の例 (続き) 237
21.9 ルートごとのメトリック 240
21.10 ICMP エラー 240
21.11 再編成 243
21.12 概要 243
第 22 章 TCP 永続性タイマー 245
22.1 はじめに 245
22.2 例 245
22.3 混乱した窓症候群 246
22.4 まとめ 250
第 23 章 TCP キープアライブ タイマー 251
23.1 はじめに 251
23.2 説明 252
23.3 キープアライブの例 253
23.3.1 反対側の衝突 253
23.3.2 もう一方の端がクラッシュして再起動する 254
23.3.3 もう一方の端に到達できない 254
23.4 まとめ 255
第 24 章 TCP 256 の将来とパフォーマンス
24.1 はじめに 256
24.2 パス MTU の検出 256
24.2.1 例 257
24.2.2 大規模なグループ化または小規模なグループ化 258
24.3 長く太いパイプライン 259
24.4 ウィンドウ拡張オプション 262
24.5 タイムスタンプオプション 263
24.6 PAWS: ラップアラウンドを防止するためのシリアル番号 265
24.7 T/TCP: トランザクション用の TCP 拡張機能 265
24.8 TCP パフォーマンス 267
24.9 概要 268
第 25 章 SNMP: 簡易ネットワーク管理プロトコル 270
25.1 はじめに 270
25.2 協定270
25.3 管理情報構造 272
25.4 オブジェクト識別子 274
25.5 管理情報ベースの概要 274
25.6 インスタンスの識別 276
25.6.1 単純な変数 276
25.6.2 表276
25.6.3 辞書のソート 277
25.7 いくつかの簡単な例 277
25.7.1 単純な変数 278
25.7.2 get-next 操作 278
25.7.3 テーブルアクセス 279
25.8 管理情報ベース (続き) 279
25.8.1 システムグループ 279
25.8.2 インターフェースグループ 280
25.8.3 グループ 281
25.8.4 IP グループ 282
25.8.5 icmp グループ 285
25.8.6 TCP グループ 285
25.9 他の例 288
25.9.1 インターフェース MTU 288
25.9.2 ルーティングテーブル288
25.10 トラップ 290
25.11 ASN.1 および BER 291
25.12 SNMPv2 292
25.13 概要 292
第 26 章 Telnet と Rlogin: リモート ログイン 293
26.1 はじめに 293
26.2 Rログインプロトコル 294
26.2.1 申請プロセスの開始 295
26.2.2 フロー制御 295
26.2.3 クライアント割り込みキー 296
26.2.4 ウィンドウサイズの変更 296
26.2.5 サーバーからクライアントへのコマンド 296
26.2.6 クライアントからサーバーへのコマンド 297
26.2.7 クライアントのエスケープ文字 298
26.3 Rログインの例 298
26.3.1 初期のクライアントサーバープロトコル 298
26.3.2 顧客割り込みキー 299
26.4 Telnetプロトコル302
26.4.1 NVT ASCII 302
26.4.2 Telnet コマンド 302
26.4.3 オプションネゴシエーション 303
26.4.4 サブオプションネゴシエーション 304
26.4.5 半二重、一度に 1 文字ずつ
1 行または行モード 304
26.4.6 同期信号 306
26.4.7 クライアントのエスケープ文字 306
26.5 Telnet の例 306
26.5.1 単一文字モード 306
26.5.2 行モード 310
26.5.3 一度に 1 行 (準行モード) 312
26.5.4 ラインモード: クライアント割り込みキー 313
26.6 概要 314
第 27 章 FTP: ファイル転送プロトコル 316
27.1 はじめに 316
27.2 FTP プロトコル 316
27.2.1 データ表現 316
27.2.2 FTP コマンド 318
27.2.3 FTP 応答 319
27.2.4 接続管理320
27.3 FTP の例 321
27.3.1 接続管理: 一時データポート 321
27.3.2 接続管理: デフォルトのデータポート 323
27.3.3 テキスト ファイル転送: NVT ASCII
表現または画像表現 325
27.3.4 ファイル転送の異常中止:
Telnet同期信号326
27.3.5 匿名 FTP 329
27.3.6 不明な IP アドレスからの匿名 FTP 330
27.4 概要 331
第 28 章 SMTP: 簡易メール転送プロトコル 332
28.1 はじめに 332
28.2 SMTP プロトコル 332
28.2.1 簡単な例 332
28.2.2 SMTP コマンド 334
28.2.3 封筒、ヘッダーおよび本文 335
28.2.4 リレーエージェント 335
28.2.5 NVT ASCII 337
28.2.6 再試行間隔 337
28.3 SMTP の例 337
28.3.1 MX レコード: ホストが直接接続されていない
インターネット 337
28.3.2 MX レコード: ホスト障害 339
28.3.3 VRFY および EXPN コマンド 340
28.4 SMTP 340 の将来
28.4.1 エンベロープの変更: 拡張 SMTP 341
28.4.2 ヘッダーの変更: 非 ASCII 文字 342
28.4.3 テキストの変更: 一般的なインターネット メール
拡張 343
28.5 概要 346
第 29 章 ネットワーク ファイル システム 347
29.1 はじめに 347
29.2 Sun リモート プロシージャ コール 347
29.3 XDR: 外部データ表現 349
29.4 ポートマッパー 349
29.5 NFS プロトコル 351
29.5.1 ファイルハンドル 353
29.5.2 インストールプロトコル 353
29.5.3 NFS プロセス 354
29.5.4 UDP または TCP 355
29.5.5 TCP 355 上の NFS
29.6 NFS インスタンス 356
29.6.1 簡単な例: ファイルの読み取り 356
29.6.2 簡単な例: ディレクトリの作成 357
29.6.3 ステートレス 358
29.6.4 例: サーバークラッシュ 358
29.6.5 べき等プロセス 360
29.7 NFS 360 バージョン 3
29.8 まとめ 361
第 30 章 その他の TCP/IP アプリケーション 363
30.1 はじめに 363
30.2 フィンガープロトコル 363
30.3 Whoisプロトコル 364
30.4 アーチー、WAIS、ゴーファー、ベロニカ
と WWW 366
30.4.1 アーチー 366
30.4.2 WAIS 366
30.4.3 ゴーファー 366
30.4.4 ベロニカ 366
30.4.5 ワールドワイドウェブ WWW 367
30.5 X ウィンドウ システム 367
30.5.1 Xscope プログラム 368
30.5.2 LBX: 低帯域幅 X 370
30.6 まとめ 370
付録 A tcpdump プログラム 371
付録 B コンピュータの時計 376
付録 C ソックスプログラム 378
付録 D 381 のいくつかの演習の解決策
付録 E 構成オプション 395
付録 F 無償で入手可能なソース コード 406
参考文献409
略語 420