基礎からわかるTCP/IP ネットワーク実験プログラミング―Linux/FreeBSD対応

  • ただいまウェブストアではご注文を受け付けておりません。
  • サイズ A5判/ページ数 388p/高さ 21cm
  • 商品コード 9784274064241
  • NDC分類 547.2
  • Cコード C3055

内容説明

TCP/IPの詳細を理解するには、動作を確認するためのプログラム作成し、解析することが最良の方法です。本書では、IP、TCP、UDP、ARP、ICMP、IP(v6)などのヘッダを直接操作するプログラムの作成をとおして、これらのプロトコルのもつ性質、メカニズムの本質を理解していきます。プログラムはC言語対応、OSは、FreeBSD、Linux対応。実験プログラムをとおしてプロトコルの詳細を学ぶのに最適の1冊。

目次

第1章 TCP/IPプロトコルスタック入門
第2章 TCP/IPプロトコルとヘッダの構造
第3章 ソケット
第4章 パケットモニタリング実験
第5章 TCP/IP通信の識別
第6章 ARPの実験
第7章 IPとICMPの実験
第8章 TCPの実験
第9章 IPv6による通信実験

著者等紹介

村山公保[ムラヤマユキオ]
1992年東京学芸大学教育学部卒業。1992‐94年日本電気技術情報システム開発株式会社勤務。1998年奈良先端科学技術大学院大学情報科学研究科博士後期課程修了。現在、倉敷芸術科学大学産業科学技術学部ソフトウエア学科助教授、博士(工学)
※書籍に掲載されている著者及び編者、訳者、監修者、イラストレーターなどの紹介情報です。

出版社内容情報

【セールスポイント】
TCP/IPプロトコルの動作を実験プログラミングで学ぶ!

【発刊の目的と内容】
TCP/IPの動作メカニズムの詳細を理解するには、実際に動作を確認するためのプログラム作成し、解析することが最良の方法といえる。
この本では、IP、TCP、UDP、ICMP、IP(v6)などのヘッダを直接操作したり、生成するプログラムの作成をとおして、これらのプロトコルのもつ性質、メカニズムの本質を理解していく。
プログラムはC言語対応、OSは、FreeBSD、Linux対応。
実験プログラムをとおしてプロトコルの詳細を学ぶのに最適の1冊。

【購読対象者】
プロトコルについてプログラムをとおして深く学習したい方、全般。

【付録】
CD-ROM 1枚

【詳細目次】
目次
はじめに
本書使用上の注意
付属CD-ROMについて

第1章 TCP/IPプロトコルスタック入門
1.1 TCP/IPプロトコルとプロトコルスタックの基礎
1.1.1 TCP/IPネットワーク
1.1.2 パケット交換の基礎
1.1.3 ソフトウェアとハードウェア
1.1.4 アプリケーションとオペレーティングシステム
1.1.5 通信を制御する3つのソフトウェア
1.1.6 プロトコルスタックとパケットの処理
1.2 プロトコルスタックの詳細
1.2.1 アドレスとプロトコルスタック
1.2.2 アドレスの変換処理と表
1.2.3 プロトコルスタックの内部処理
1.2.4 クライアントサーバモデル
1.3 プロトコルスタックの実現方法
1.3.1 ソケット
1.3.2 システムコールと内部の処理
1.3.3 raw IPとデータリンクアクセス
1.3.4 多重化とバッファ

第2章 TCP/IPプロトコルとヘッダの構造
2.1 プロトコルヘッダと構造体
2.1.1 プロトコルとヘッダ
2.1.2 ヘッダと構造体とメモリ
2.1.3 ヘッダ構造とC言語の型
2.1.4 ビットフィールド、フラグによるヘッダの処理
2.1.5 配列によるヘッダの処理
2.1.6 メモリの整列
2.1.7 バイトオーダ
2.2 Ethernet
2.2.1 Ethernetの基礎
2.2.2 Ethernetのフレームフォーマットと構造体の定義
2.2.3 Ethernetの基本動作
2.3 ARP(Address Resolution Protocol)
2.3.1 ARPの基礎
2.3.2 ARPのパケットフォーマット
2.3.3 ARPプロトコルの動作
2.4 IP(Internet Protocol)
2.4.1 IPの基礎
2.4.2 IPヘッダとヘッダ構造体について
2.4.3 ルーティングの基礎
2.4.4 IPフラグメント
2.4.5 IPフラグメントの問題点
2.4.6 経路MTU探索
2.5 ICMP(Internet Control Message Protocol)
2.5.1 ICMPとは
2.5.2 ICMPエコー要求、エコー応答
2.5.3 ICMP到達不能
2.5.4 ICMPリダイレクト
2.5.5 ICMP時間超過メッセージ
2.5.6 共用体と実際のicmpヘッダ構造体
2.6 UDP(User Datagram Protocol)
2.6.1 UDPの概要
2.6.2 UDPヘッダとヘッダ構造体について
2.7 TCP(Transmission Control Protocol)
2.7.1 TCPの概要
2.7.2 TCPヘッダとヘッダ構造体について
2.7.3 TCPのコネクションの確立
2.7.4 TCPのコネクションの切断
2.7.5 TCPによる信頼性の提供
2.7.6 バッファサイズとウィンドウ
2.8 チェックサム
2.8.1 チェックサムが保証する内容
2.8.2 チェックサムのアルゴリズム
2.8.3 チェックサム計算プログラム

第3章 ソケット
3.1 ソケットの概要
3.2 ソケットで利用される構造体
3.3 ソケットシステムコールによる処理の流れ
3.3.1 UDPによる通信の場合
3.3.2 TCPによる通信の場合
3.4 ソケットシステムコールの詳細
3.4.1 プロトコルの選択とアドレスの指定
3.4.2 コネクションレス
3.4.3 コネクション指向
3.4.4 ソケットオプション
3.4.5 DNS関連関数
3.4.6 ポート番号関連関数
3.4.7 IPアドレスを操作する関数
3.4.8 raw IP
3.4.9 selectシステムコールによる多重処理
3.5 UDPによる通信
3.5.1 UDPサンプルプログラムの概要と使用方法
3.5.2 実行例とフローチャート
3.5.3 処理の流れ
3.5.4 UDPサーバプログラムソースリスト
3.5.5 UDPサーバプログラムリストの解説
3.5.6 UDPクライアントプログラムソースリスト
3.5.7 UDPクライアントプログラムリストの解説
3.6 TCPによる通信
3.6.1 TCPサンプルプログラムの概要と使用方法
3.6.2 実行例
3.6.3 処理の流れ
3.6.4 TCPサーバプログラムソースリスト
3.6.5 TCPサーバプログラムリストの解説
3.6.6 TCPクライアントプログラムソースリスト
3.6.7 TCPクライアントプログラムリストの解説

第4章 パケットモニタリング実験
4.1 パケットモニタリングの基礎知識
4.1.1 パケットモニタリングとその意味
4.1.2 ハブとアドレス学習機能
4.1.3 promiscuous(無差別)モード
4.2 データリンクアクセスインタフェース
4.2.1 データリンクアクセスインタフェースとは
4.2.2 Linux
4.2.3 BPF
4.3 パケットモニタリングプログラム
4.3.1 ipdumpの概要
4.3.2 ipdumpの使用方法
4.3.3 プログラムリストの構造
4.3.4 プログラムリストの流れ
4.3.5 プログラムリスト
4.3.6 プログラムリストの解説

第5章 TCP/IP通信の識別
5.1 IPアドレスとポート番号
5.1.1 通信の識別
5.1.2 無効なIPアドレスやポート番号への通信
5.1.3 ホストスキャンとポートスキャン
5.2 ホストスキャンプログラム
5.2.1 scanhostの概要
5.2.2 scanhostの使用方法
5.2.3 scanhostプログラムの構造と処理の流れ
5.2.4 scanhostプログラムリスト
5.2.5 scanhostプログラムリストの解説
5.3 TCPポートスキャンプログラム
5.3.1 scanport_tcpの概要
5.3.2 scanport_tcpの使用方法
5.3.3 scanport_tcpの実行例
5.3.4 scanport_tcpの構造と処理の流れ
5.3.5 scanport_tcpプログラムリスト
5.3.6 scanport_tcpプログラムリストの解説
5.4 UDPポートスキャンプログラム
5.4.1 scanport_udpの概要
5.4.2 scanport_udpの使用方法
5.4.3 scanport_udpの実行例
5.4.4 scanport_udpプログラムの処理の流れ
5.4.5 scanport_udpプログラムリスト
5.4.6 scanport_udpプログラムの解説

第6章 ARPの実験
6.1 ARPの詳細
6.1.1 ARPの動作
6.1.2 同じIPアドレスのホストが2つあると何が起きるか
6.2 ARPを使用した実験プログラム
6.2.1 arpupdateの概要
6.2.2 arpupdateの使用方法
6.2.3 arpupdateの実行例
6.2.4 arpupdateプログラムの構造と処理の流れ
6.2.5 arpupdateプログラムリスト
6.2.6 arpupdateプログラムリストの解説

第7章 IPとICMPの実験
7.1 ルーティングテーブルと経路制御
7.1.1 ルーティングテーブル
7.2 redirectプログラム
7.2.1 redirectプログラムの概要と仕組み
7.2.2 redirectプログラムの使用方法
7.2.3 redirectプログラムの実行例
7.2.4 redirectの処理の流れ
7.2.5 redirectプログラムリスト
7.2.6 redirectプログラムリストの解説
7.3 scanrouteプログラム
7.3.1 scanrouteの概要と仕組み
7.3.2 scanrouteプログラムの使用方法
7.3.3 scanrouteの処理の流れ
7.3.4 scanrouteプログラムリスト
7.3.5 scanrouteプログラムリストの解説

第8章 TCPの実験
8.1 TCPの詳細
8.1.1 TCPと状態遷移
8.1.2 状態遷移とコネクションの確立、切断
8.2 TCP SYNプログラム
8.2.1 tcpsynの概要
8.2.2 tcpsynの使用方法
8.2.3 tcpsynの実行例
8.2.4 tcpsynの処理の流れ
8.2.5 tcpsynプログラムリスト
8.2.6 tcpsynプログラムリストの解説
8.3 TCP RSTプログラム
8.3.1 tcprstの概要
8.3.2 tcprstの使用方法
8.3.3 tcprstの使用例
8.3.4 tcprstプログラムリスト
8.3.5 tcprstプログラムリストの解説
8.4 TCP JACKプログラム
8.4.1 tcpjackの概要
8.4.2 tcpjackの使用方法
8.4.3 tcpjackの使用例
8.4.4 tcpjackプログラムリスト
8.4.5 tcpjackプログラムリストの解説

第9章 IPv6による通信実験
9.1 IPv6とは
9.1.1 IPv6とは
9.1.2 IPv6のヘッダ構造
9.1.3 IPv6のために追加された構造体
9.1.4 IPv6をサポートするために追加された関数
9.2 IPv6を使用した実験プログラム
9.2.1 概要
9.2.2 使用方法
9.2.3 IPv6クライアントプログラムリスト
9.2.4 IPv6サーバプログラムリスト
9.2.5 プログラムリストの解説

参考文献
索引