ルーター自作でわかるパケットの流れ ~ソースコードで体感するネットワークのしくみ
- 小俣光之 著
- 定価
- 2,068円(本体1,880円+税10%)
- 発売日
- 2011.7.8
- 判型
- A5
- 頁数
- 192ページ
- ISBN
- 978-4-7741-4745-1
概要
ネットワークはどのようにつながるのか,「パケットの気持ちになって」考えてみたことはありますか? 本書では,パケットキャプチャ,ブリッジ,ルーターを「プログラムとして」作りながら,パケットの流れを体感理解。ネットワークの理解がより深まるうえ,「低レイヤーでのネットワークプログラミングのテクニック」「ネットワークで実現したいことを幅広く考えられる力」「障害発生時に問題を切り分ける力」も身につきます。
こんな方にオススメ
- ネットワークの仕組みを頭ではなく体で覚えてみたい方
- ネットワーク機器を自由にカスタマイズできる基礎知識を身につけたい方
- リンクレイヤープログラミングを知りたい方
目次
第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
- ビルド
- 実行
- 応用 ~ルーター自作のメリット
プロフィール
小俣光之
日本シー・エー・ディー株式会社 代表取締役社長。
1989年新卒で入社後,プログラマとして仕事を続け,2005年11月から社長となるがプログラマも兼務している。以前はCADシステムやWEB,データベースなどのプログラミングもしていたが,最近はネットワーク関連の製品・特注品の開発を中心に仕事をしている。
UNIX系のネットワークプログラミングにこだわり,プログラミングの著書を7冊執筆。また,プログラマの仕事のすばらしさを啓蒙することに目覚め,『プログラミングでメシが食えるか!?』(秀和システム 刊)を執筆。さらに技術者を活かすリーダーの心得をまとめた記事をITmedia エンタープライズに連載し,著書としてまとめた『ドジっ娘リーダー奮闘記』(秀和システム 刊)を執筆。メンバーとの共著『Linuxネットワークプログラミングバイブル』(秀和システム 刊)に続き,本書は11冊目の著書となる。
【Blog】プログラマー社長のブログ(ITmediaオルタナティブ・ブログ)
【Twitter】@mkomata