『ルーター自作でわかるパケットの流れ 〜ソースコードで体感するネットワークのしくみ』

http://t.co/LsG1bCD

ネットワークはどのようにつながるのか,「パケットの気持ちになって」考えてみたことはありますか? 本書では,パケットキャプチャ,ブリッジ,ルーターを「プログラムとして」作りながら,パケットの流れを体感理解。ネットワークの理解がより深まるうえ,「低レイヤーでのネットワークプログラミングのテクニック」「ネットワークで実現したいことを幅広く考えられる力」「障害発生時に問題を切り分ける力」も身につきます。

第1章 ネットワーク機器は何をしているのか

1-1 ルーターやブリッジは何をしているのか
パケット送信の流れ
ブリッジとルーターはどこが違うのか

1-2 ネットワークの基礎知識
プロトコル
階層
パケット
Ethernetパケット
ARPパケット
IPパケット
ICMPパケット
コラム ネットワークプログラミングの魅力

第2章 リンクレイヤープログラミングの基本

2-1 データリンク層を扱うための基本
プログラムからデータリンク層を扱うには
処理の流れ
関数の構成
サンプルソース

2-2 作成したプログラムを実行する
Makefile
ビルド
実行
受信パケットの詳細はPCAPで
コラム OSの違いとリンクレイヤープログラミング

第3章 パケットキャプチャを作ってみる

3-1 リンクレイヤーからのパケットを解析する
処理の流れ
関数の構成

3-2 キャプチャのメイン処理 〜サンプルソース1 pcap.c
ヘッダファイルのインクルード
データリンク層を扱うディスクリプタを得る
Ethenetヘッダの内容を表示する

3-3 パケットを解析する 〜サンプルソース2 analyze.c
ヘッダのインクルード
各パケットを解析する

3-4 内容表示用関数を記述する 〜サンプルソース3 print.c
ヘッダファイルをインクルードする
アドレスデータを文字化する
各ヘッダを表示する

3-5 チェックサムをチェックする 〜サンプルソース4 checksum.c
ヘッダファイルをインクルードする
疑似ヘッダを定義する
チェックサムを計算する
サンプルソースに含まれる関数のプロトタイプ宣言

3-6 パケットキャプチャで解析を実行する
Makefile
ビルド
実行
“自力で”パケット解析の練習を!

第4章 ブリッジを作ろう

4-1 ブリッジ作りでEthernetパケットの扱いに慣れる
環境
処理の流れ
関数の構成

4-2 ブリッジのサンプルソースを見る
main.c
netutil.c

4-3 作成したブリッジを実行する
Makefile
ビルド
実行
スイッチングHUB化するには
意外と広いブリッジの応用範囲
コラム ネットワークシステムをリリースする時の緊張

第5章 ルーターを作ろう

5-1 ルーターの仕組みを知る
パケットの加工
送信先の判定
送信先MACアドレスの調査
MACアドレスの書き換え
送信先の判定
送信先MACアドレスの調査
環境
処理の流れ
関数の構成
MACテーブル/送信バッファ/送信待ちデータ

5-2 ARPと送信待ちデータ関連のソースを追加する 〜サンプルソース1 base.h
ネットワークインタフェースの情報
ルーターの振る舞い

5-3 ルーターのメイン処理を記述する 〜サンプルソース2 main.c
ヘッダファイルのインクルード
動作パラメータを保持する
デバッグ用出力のON/OFF
パケットの送受信と内容のチェック
メイン関数の記述

5-4 ネットワーク関連の関数を記述する 〜サンプルソース3 netutil.c
ヘッダファイルのインクルード
ネットワークインターフェースの情報を得る
Ethernetヘッダを表示する
チェックサムを計算する
ARPリクエストを送信する
関数のプロトタイプを宣言する

5-5 IPアドレスMACアドレスを紐付ける 〜サンプルソース4 ip2mac.c
ヘッダファイルのインクルード
独自ARPテーブルの検索
データの送受信
関数のプロトタイプ宣言

5-6 送信待ちバッファのデータを管理するための関数を記述してい送信待ちバッファのデータを管理する 〜サンプルソース5 sendBuf.c
ヘッダファイルのインクルード
MACアドレスが解決できないときの処理
関数のプロトタイプ宣言

5-7 ルーターを実行する
Makefile
ビルド
実行
応用 〜ルーター自作のメリット

かなりマジな内容だな(^^;。