詳細目次
はじめに
本書使用上の注意
ダウンロードサービスから入手できるファイル
第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ソケット(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(BSD Packet Filter)
4.3 パケットモニタリングプログラム
4.3.1 ipdumpの概要
4.3.2 ipdumpの使用方法
4.3.3 ipdumpプログラムの構造
4.3.4 ipdumpプログラムの処理の流れ
4.3.5 ipdumpプログラムリスト
4.3.6 ipdumpプログラムリストの解説
第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対応TCPサーバプログラムリスト
9.2.4 IPv6対応TCPサーバプログラムリストの解説
9.2.5 IPv6対応TCPクライアントプログラムリスト
9.2.6 IPv6対応TCPクライアントプログラムリストの解説
参考文献
索引