基礎からわかるTCP/IP ネットワーク実験プログラミング(第2版)

TCP/IPプロトコルの動作を実験プログラミングで学ぶ!

このような方におすすめ

プロトコルについてプログラムをとおして深く学習したい方、全般。
  • 著者村山 公保 著
  • 定価2,592 (本体2,400 円+税)
  • A5 400頁 2004/10発行
  • ISBN978-4-274-06584-2
  • 定価
  • ポイント0
  • 数量

  • SOLD OUT

※本体価格は変更される場合があります。
※通常2〜3日以内で発送いたします。

  • 概要
  • 主要目次
  • 詳細目次

TCP/IPの動作メカニズムの詳細を理解するには、実際に動作を確認するためのプログラム作成し、解析することが最良の方法といえる。

この本では、IP、TCP、UDP、ICMP、IP(v6)などのヘッダを直接操作したり、生成するプログラムの作成をとおして、これらのプロトコルのもつ性質、メカニズムの本質を理解していく。

プログラムはC言語対応、OSは、FreeBSD、Linux対応。実験プログラムをとおしてプロトコルの詳細を学ぶのに最適の1冊。

2001年8月に発行された初版を、現状に合わせて改訂し、第2版として発行するもの。

https://www.ohmsha.co.jp/book/9784274065842/
第1章 TCP/IPプロトコルスタック入門
第2章 TCP/IPプロトコルとヘッダの構造
第3章 ソケット
第4章 パケットモニタリング実験
第5章 TCP/IP通信の識別
第6章 ARPの実験
第7章 IPとICMPの実験
第8章 TCPの実験
第9章 IPv6による通信実験
はじめに
  本書使用上の注意
  ダウンロードサービスから入手できるファイル

第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クライアントプログラムリストの解説

 参考文献
 索引