Linuxネットワークプログラミングバイブル

概 要

C言語とLinuxを使った、ネットワークプログラミングのすべてを学べる解説書です。小俣氏の前著『C for Linux2 超実践Linuxネットワークプログラミング』を大幅に刷新し、IPv6に対応し、新しい環境での実行例や便利なライブラリの紹介などを新たに盛り込みました。本書では、多重化・エラー処理などの必須の実装から、IPv4/IPv6デュアルスタック・RAWソケット・SSLなど定番のテクニックを学べます。また、実際にプログラムを作って動かすことで理解を深めることに重点をおき、C言語によるサンプルを多数収録。高性能で信頼性が高いシステムが構築できるようになります。

著者 小俣光之、種田元樹
価格 本体3800円(税別)
ISBN 978-4-7980-2862-0
発売日 2011/1/26
判型 B5変
色数 1色
ページ数 568
CD/DVD
対象読者 中級
シリーズ
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

Chapter 01 ◆ TCP/IPプログラミング入門

1.1 この章の目的

1.2 この章の概要

1.3 サーバプログラムの作り方

1.4 クライアントプログラムの作り方

1.5 この章のまとめ

Chapter 02 ◆ 通信の仕組み

2.1 この章の目的

2.2 この章の概要

2.3 インターネット・プロトコル・スイート

2.3.1 リンク・レイヤ

2.3.2 インターネット・レイヤ

2.3.3 トランスポート・レイヤ

2.4 パケットの解析

2.4.1 tcpdumpによるパケット解析

2.4.2 パケットのデータ解析

2.4.3 GUIでパケットのデータ解析

2.5 この章のまとめ

Chapter 03 ◆ サーバプログラムのレベルアップ

3.1 この章の目的

3.2 この章の概要

3.3 アドレス情報

3.3.1 sockaddr型構造体

3.3.2 addrinfo型構造体

3.4 アドレスのバインド

3.5 デーモン化

3.6 サーバプログラムの再起動

3.6.1 シグナルと再起動

3.6.2 サーバプログラムへの応用

3.7 シグナルの管理

3.7.1 正常終了

3.7.2 シグナルの無視

3.8 バッファの管理

3.9 この章のまとめ

Chapter 04 ◆ クライアントプログラムのレベルアップ

4.1 この章の目的

4.2 この章の概要

4.3 アドレス解決

4.3.1 sockaddr型構造体

4.3.2 addrinfo型構造体

4.3.3 hostent型構造体

4.4 コネクトのタイムアウト

4.5 この章のまとめ

Chapter 05 ◆ 多重化

5.1 この章の目的

5.2 この章の概要

5.3 多重化の重要性

5.4 マルチクライアント化の方法

5.5 シングルプロセス・シングルスレッドでのマルチクライアント化

5.5.1 select()を使用したマルチクライアント化

5.5.2 poll()を使用した多重化

5.5.3 EPOLLを使用した多重化

5.6 マルチプロセス・マルチスレッドによる多重化

5.6.1 マルチプロセスによる多重化

5.6.2 マルチスレッドによる並列処理

5.7 アクセプト前後の2通りの考え方

5.7.1 マルチプロセスでの実現

5.7.2 マルチスレッドでの実現

5.8 多重化の組み合わせ

5.8.1 スレッド間のデータ受け渡し

5.8.2 キューイング

5.9 各方式での速度比較

5.10 高負荷試験用クライアントプログラムのソース

5.11 クライアントの多重化

5.11.1 select()による多重化

5.11.2 poll()による多重化

5.11.3 ノンブロッキングI/Oによる多重化

5.11.4 マルチプロセスによる並列処理

5.11.5 マルチスレッドによる多重化

5.12 この章のまとめ

Chapter 06 ◆ 送受信のレベルアップ

6.1 この章の目的

6.2 この章の概要

6.3 受信タイムアウト

6.4 サイズの大きなデータの扱い

6.4.1 受信プログラム

6.4.2 送信プログラム

6.5 行単位の受信

6.6 select(), poll(), EPOLL との組み合わせ

6.7 この章のまとめ

Chapter 07 ◆ エラー処理

7.1 この章の目的

7.2 この章の概要

7.3 アクセプト時のエラー

7.4 コネクト時のエラー

7.5 送信時のエラー

7.6 受信時のエラー

7.7 経路切断検知

7.8 この章のまとめ

Chapter 08 ◆ インタフェース情報

8.1 この章の目的

8.2 この章の概要

8.3 情報表示サンプル

8.4 この章のまとめ

Chapter 09 ◆ UDP/IPプログラミング

9.1 この章の目的

9.2 この章の概要

9.3 サーバプログラムの作り方

9.4 クライアントプログラムの作り方

9.5 UDP/IPでのconnect()

9.6 送信可能サイズ

9.7 受信パケットはどのくらいたまるか

9.8 ブロードキャスト

9.9 複数NICがあるホストでの問題

9.10 マルチキャスト

9.10.1 サーバプログラム

9.10.2 クライアントプログラム

9.11 IPv6でマルチキャスト

9.11.1 サーバプログラム

9.11.2 クライアントプログラム

9.12 この章のまとめ

Chapter 10 ◆ RAWソケット

10.1 この章の目的

10.2 この章の概要

10.2.1 tcphdr型構造体

10.2.2 udphdr型構造体

10.2.3 ip型構造体

10.2.4 ip6_hdr型構造体

10.2.5 ether_header型構造体

10.3 パケットキャプチャプログラムの作成

10.4 UDP/IP送受信プログラムの作成

10.4.1 クライアントプログラム

10.4.2 サーバプログラム

10.5 この章のまとめ

Chapter 11 ◆ SSLプログラミング

11.1 この章の目的

11.2 この章の概要

11.3 証明書の作成

11.3.1 前準備

11.3.2 ルートCAの構築

11.3.3 ルートCA証明書の内容の確認

11.4 サーバ証明書の作成

11.4.1 秘密鍵の作成

11.4.2 パスフレーズなしの秘密鍵の作成

11.4.3 証明書署名要求書の作成

11.4.4 ルートCAによる署名

11.5 クライアント証明書の作成

11.5.1 秘密鍵の作成

11.5.2 証明書署名要求書の作成

11.5.3 ルートCAによる署名

11.5.4 PKCS12形式への変換

11.6 CA証明書一覧の作成

11.6.1 CA証明書一覧ファイルの作成

11.6.2 CA証明書一覧ディレクトリの作成

11.7 クライアントプログラム

11.8 サーバプログラム

11.9 実行例

11.9.1 DHパラメータを含むファイルの作成

11.9.2 クライアントの/etc/hostsの編集

11.9.3 実行例を見る

11.10 サブCA署名の証明書での確認

11.10.1 サブCAの構築・サブCAで署名したクライアント証明書の作成

11.10.2 サブCAの構築

11.10.3 秘密鍵・署名要求書の作成

11.10.4 ルートCAでcacsr.pemに署名しcacert.pemを作成

11.10.5 サブCAで署名したクライアント証明書の作成

11.10.6 実行例

11.11 商用CAの利用

11.11.1 サーバプログラムの変更

11.11.2 実行例

11.12 この章のまとめ

Chapter 12 ◆ 目的別テクニック

12.1 この章の目的

12.2 この章の概要

12.3 アドレスファミリに依存しないソケットプログラミング

12.3.1 アドレス情報の決定

12.3.2 IPv4/IPv6両対応のサーバ

12.4 ライブラリの利用

12.5 設定ファイルの読み込み

12.5.1 パーサジェネレータ/レキサ

12.5.2 設定ファイルの構文

12.5.3 字句解析

12.5.4 構文解析

12.5.5 プログラム本体

12.6 この章のまとめ

コラム目次

ネットワークサーバプログラムは信頼性が命!

得意分野にこだわるのも悪くない

ネットワークプログラムを作るときは必ず接続相手も作って確認!

ログ出力について

エディタ

パケットキャプチャ

PR

秀和システム