ルーター自作でわかるパケットの流れ
~ソースコードで体感するネットワークのしくみ
2011年7月8日紙版発売
小俣光之 著
A5判/192ページ
定価2,068円(本体1,880円+税10%)
ISBN 978-4-7741-4745-1
書籍の概要
この本の概要
ネットワークはどのようにつながるのか,「パケットの気持ちになって」考えてみたことはありますか? 本書では,パケットキャプチャ,ブリッジ,ルーターを「プログラムとして」作りながら,パケットの流れを体感理解。ネットワークの理解がより深まるうえ,「低レイヤーでのネットワークプログラミングのテクニック」「ネットワークで実現したいことを幅広く考えられる力」「障害発生時に問題を切り分ける力」も身につきます。
こんな方におすすめ
- ネットワークの仕組みを頭ではなく体で覚えてみたい方
- ネットワーク機器を自由にカスタマイズできる基礎知識を身につけたい方
- リンクレイヤープログラミングを知りたい方
著者の一言
「ブリッジやルーターはハードウェアで,中では電気的な処理が行われているのだろう」と,ブラックボックス的に考えている人は多いのではないでしょうか。リピーターは電気的な中継だけともいえますが,ブリッジはMACアドレスによりパケットを配信するポートを選択しますし,ルーターはパケットの書き換えや,経路の選択,MACアドレスの解決など,さまざまな処理を行っています。そしてそれらは基本的にソフトウェアで実現可能なことです。
その気になればすぐに作って動かして試してみることができるのが,ソフトウェアの最大の魅力です。ネットワークの難しい理屈や幅広い知識を身につけるよりも,まずは作って動かしてみると様子が具体的に見えてきます。ブリッジやルーターを自作して,本当にパケットを中継しながらイーサネットの理解を深めてみましょう。
本書に関するお知らせ
本書の公式ハッシュタグは『router_jisaku』です。
- ネットワークはどのようにつながるのか~「パケットの気持ちになって」考えてみたことはありますか?
- 毎日メールのやりとりをしたり,ゲームをしたり,動画を見たり,インターネットはだれもが使うものとなりました。しかし,意外と仕組みについてはよく理解できていなかったりします。
この書籍に関連する記事があります!
目次
第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
- ビルド
- 実行
- 応用 ~ルーター自作のメリット
この本に関連する書籍
-
ソースコードで体感するネットワークの仕組み ~手を動かしながら基礎からTCP/IPの実装までがわかる
普段あたりまえのようにネットワークを使っていますが,「IPアドレスを持っている」とはどういったことか,本当に理解できているでしょうか。本書では,IPやUDP,TCPを...
-
検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏
まいにち使っている検索エンジンがどうやって動いているか,知っていますか? 本書では,小さな検索エンジンを作りながら,ソースコードレベルで検索エンジンのしくみ...
-
プログラムは技術だけでは動かない ~プログラミングで食べていくために知っておくべきこと
開発言語にくわしい。 さまざまなアルゴリズムを理解している。 開発環境を使いこなせる。 ミドルウェアなどの情報を知っている。 OSやネットワークなどの知識があ...
-
小悪魔女子大生のサーバエンジニア日記 ―インターネットやサーバのしくみが楽しくわかる
「可愛いイラストでするする理解できてしまうインターネットの本当の仕組み!」インターネットの会社でアルバイトをはじめたけど,文系女子大生だしわからないことばか...
-
[改訂新版]3分間ネットワーク基礎講座
大好評「3分間ネットワーク基礎講座」が,内容を刷新して新登場です! おなじみ博士とネット君が,ネットワークのしくみを基礎の基礎から説明してくれます。「ネットワ...
-
UNIX ネットワークプログラミング入門
ネットワークプログラミングというと,どうしても難しく考えがちです。しかしコツさえ掴んでしまえば,それほど難しくありません。本書では簡単なサンプルプログラムの...