タイトルおよびコピーライト情報 |
まえがき |
本書の対象読者 |
追加および変更された機能 |
本書の構成 |
関連資料 |
本書で使用する表記法 |
1 | ネットワーク・プログラミング環境の概要 |
1.1 | データ・リンク・インタフェース |
1.2 | ソケット・フレームワークおよび STREAMS フレームワーク |
1.3 | X/Open トランスポート・インタフェース |
1.4 | eSNMP |
1.5 | RSVP アプリケーション・プログラミング・インタフェース |
1.6 | ソケットと STREAMS の間のやりとり |
1.7 | 統合 |
2 | データ・リンク・プロバイダ・インタフェース |
2.1 | 通信モード |
2.2 | サービスの種類 |
2.2.1 | ローカル管理サービス |
2.2.2 | コネクション・モード・サービス |
2.2.3 | コネクションレス・モード・サービス |
2.2.4 | 肯定応答コネクションレス・モード・データ転送 |
2.3 | DLPI アドレッシング |
2.4 | DLPI プリミティブ |
2.5 | 利用できる PPA の識別 |
3 | X/Open トランスポート・インタフェース |
3.1 | XTI の概要 |
3.2 | XTI の機能 |
3.2.1 | サービス・モードと実行モード |
3.2.1.1 | コネクション指向型サービスおよびコネクションレス型サービス |
3.2.1.2 | 非同期実行および同期実行 |
3.2.2 | XTI ライブラリ,TLI ライブラリ,およびヘッダ・ファイル |
3.2.2.1 | XTI および TLI ヘッダ・ファイル |
3.2.2.2 | XTI ライブラリ・コール |
3.2.3 | イベントおよび状態 |
3.2.3.1 | XTI イベント |
3.2.3.2 | XTI の状態 |
3.2.4 | XTI イベントのトラッキング |
3.2.4.1 | 発信イベント |
3.2.4.2 | 着信イベント |
3.2.5 | XTI 関数,イベント,および状態のマップ |
3.2.6 | 複数のプロセスおよび終端の同期 |
3.3 | XTI の使用 |
3.3.1 | 関数の呼び出し順序のガイドライン |
3.3.2 | トランスポート・プロバイダによる状態の管理 |
3.3.3 | コネクション指向型アプリケーションの作成 |
3.3.3.1 | 終端の初期化 |
3.3.3.2 | XTI のオプションの使用 |
3.3.3.3 | 接続の確立 |
3.3.3.4 | データの転送 |
3.3.3.5 | 接続の解放 |
3.3.3.6 | 終端の初期化解除 |
3.3.4 | コネクションレス型アプリケーションの作成 |
3.3.4.1 | 終端の初期化 |
3.3.4.2 | データの転送 |
3.3.4.3 | 終端の初期化解除 |
3.4 | フェーズに依存しない関数 |
3.5 | XTI へのポート |
3.5.1 | プロトコル独立およびポータビリティ |
3.5.2 | XTI と TLI の互換性 |
3.5.3 | ソケット・アプリケーションから XTI 使用アプリケーションへの書き換え |
3.6 | XPG3,XNS4.0,XNS5.0 の相違点 |
3.6.1 | XPG3 と XNS4.0 の主な相違点 |
3.6.2 | XNS4.0 と XNS5.0 の主な相違点 |
3.6.3 | ソース・コードの移行 |
3.6.3.1 | アプリケーションの古いバイナリ・ファイルを使用する場合 |
3.6.3.2 | ソースを変更しないで再コンパイルする場合 |
3.6.3.3 | XNS4.0 に準拠させる場合 |
3.6.3.4 | XNS5.0 に準拠させる場合 |
3.6.4 | バイナリの互換性 |
3.6.5 | パッケージ |
3.6.6 | 相互運用性 |
3.6.7 | XTI のオプションの使用 |
3.6.7.1 | XNS4.0 および XNS5.0 の XTI のオプションの使用 |
3.6.7.2 | XPG3 でのプロトコル・オプションの折衝 |
3.7 | XTI エラー |
3.8 | XTI トランスポート・プロバイダの構成 |
4 | ソケット |
4.1 | ソケット・フレームワークの概要 |
4.1.1 | ソケットの通信プロパティ |
4.1.1.1 | ソケット抽象表現 |
4.1.1.2 | 通信ドメイン |
4.1.1.3 | ソケット・タイプ |
4.1.1.4 | ソケット名 |
4.2 | アプリケーションとソケットとのインタフェース |
4.2.1 | 通信モード |
4.2.1.1 | コネクション指向型通信 |
4.2.1.2 | コネクションレス型通信 |
4.2.2 | クライアント/サーバ・モデル |
4.2.3 | システム・コール,ライブラリ・コール,ヘッダ・ファイル,およびデータ構造体 |
4.2.3.1 | ソケット・システム・コール |
4.2.3.2 | ソケット・ライブラリ・コール |
4.2.3.3 | ヘッダ・ファイル |
4.2.3.4 | ソケットに関連するデータ構造体 |
4.3 | ソケットの使用方法 |
4.3.1 | ソケットの作成 |
4.3.1.1 | 実行モードの設定 |
4.3.2 | 名前とアドレスのバインド |
4.3.3 | 接続の確立 |
4.3.4 | 接続の受け入れ |
4.3.5 | ソケット・オプションの設定と取得 |
4.3.6 | データの転送 |
4.3.6.1 | read システム・コールの使用 |
4.3.6.2 | write システム・コールの使用 |
4.3.6.3 | send, sendto, recv および recvfrom システム・コールの使用 |
4.3.6.4 | sendmsg および recvmsg システム・コールの使用 |
4.3.7 | ソケットのシャットダウン |
4.3.8 | ソケットのクローズ |
4.4 | インターネット・アプリケーションの作成 |
4.4.1 | IPv4 アプリケーションの作成 |
4.4.2 | IPv6 アプリケーションの作成 |
4.4.3 | アドレス・テスト・マクロ |
4.5 | BSD ソケット・インタフェース |
4.5.1 | 可変長ネットワーク・アドレス |
4.5.2 | プロトコル・データとユーザ・データの受信 |
4.6 | 一般的なソケット・エラー |
4.7 | 高度なソケット・プログラミング情報 |
4.7.1 | AF_INET6 ソケットを使用するための,アプリケーションの移植 |
4.7.1.1 | 名前の変更 |
4.7.1.2 | 構造体の変更 |
4.7.1.3 | 関数呼び出しの変更 |
4.7.1.4 | アプリケーションの他の変更 |
4.7.1.5 | ipv6_sniff ユーティリティの使用 |
4.7.2 | IPv6 raw ソケットの使用 |
4.7.2.1 | ICMPv6 メッセージへのアクセス |
4.7.2.2 | IPv6 ヘッダへのアクセス |
4.7.2.3 | IPv6 ルーティング・ヘッダへのアクセス |
4.7.2.4 | IPv6 オプション・ヘッダへのアクセス |
4.7.3 | 特定のプロトコルの選択 |
4.7.4 | 名前とアドレスのバインド |
4.7.4.1 | ワイルドカード・アドレスへのバインド |
4.7.4.2 | UNIX ドメインにおけるバインド |
4.7.5 | 帯域外データ |
4.7.6 | インターネット・プロトコル・マルチキャスト |
4.7.6.1 | IPv4 マルチキャスト・データグラムの送信 |
4.7.6.2 | IPv4 マルチキャスト・データグラムの受信 |
4.7.6.3 | IPv6 マルチキャスト・データグラムの送信 |
4.7.6.4 | IPv6 マルチキャスト・データグラムの受信 |
4.7.7 | ブロードキャストとネットワーク構成の調査 |
4.7.8 | inetd デーモン |
4.7.9 | 入出力の多重化 |
4.7.10 | 割り込み駆動のソケット I/O |
4.7.11 | シグナルおよびプロセス・グループ |
4.7.12 | 擬似端末 |
5 | Tru64 UNIX STREAMS |
5.1 | STREAMS フレームワークの概要 |
5.1.1 | STREAMS の構成要素の概説 |
5.1.2 | ioctl プロセス |
5.2 | STREAMS に対するアプリケーション・インタフェース |
5.2.1 | ヘッダ・ファイルおよびデータ型 |
5.2.2 | STREAMS 関数 |
5.2.2.1 | open 関数 |
5.2.2.2 | close 関数 |
5.2.2.3 | read 関数 |
5.2.2.4 | write 関数 |
5.2.2.5 | ioctl 関数 |
5.2.2.6 | mkfifo 関数 |
5.2.2.7 | pipe 関数 |
5.2.2.8 | putmsg および putpmsg 関数 |
5.2.2.9 | getmsg および getpmsg 関数 |
5.2.2.10 | poll 関数 |
5.2.2.11 | isastream 関数 |
5.2.2.12 | fattach 関数 |
5.2.2.13 | fdetach 関数 |
5.3 | カーネル・レベル関数 |
5.3.1 | モジュール・データ構造体 |
5.3.2 | メッセージ・データ構造体 |
5.3.3 | ドライバおよびモジュールの STREAMS 処理ルーチン |
5.3.3.1 | オープンおよびクローズの処理 |
5.3.3.2 | 構成処理 |
5.3.3.3 | 読み取り側プットおよび書き込み側プットの処理 |
5.3.3.4 | 読み取り側サービスおよび書き込み側サービスの処理 |
5.3.4 | Tru64 UNIX STREAMS の概念 |
5.3.4.1 | 同期 |
5.3.4.2 | タイムアウト |
5.4 | Tru64 UNIX カーネル内へのユーザ作成の STREAMS ベースのモジュールまたはドライバの組み込み |
5.5 | デバイス特殊ファイル |
5.6 | エラーとイベントのロギング |
6 | 拡張 SNMP アプリケーション・プログラミング・インタフェース |
6.1 | eSNMP の概要 |
6.1.1 | eSNMP の構成要素 |
6.1.2 | アーキテクチャ |
6.1.3 | SNMP バージョン |
6.1.4 | AgentX |
6.2 | 拡張 SNMP アプリケーション・プログラミング・インタフェースの概要 |
6.2.1 | MIB サブツリー |
6.2.2 | オブジェクト・テーブル |
6.2.2.1 | subtree_tbl.h ファイル |
6.2.2.2 | subtree_tbl.c ファイル |
6.2.3 | サブエージェントの実現 |
6.2.4 | サブエージェント・プロトコルの操作 |
6.2.4.1 | 操作の順序 |
6.2.4.2 | 関数の戻り値 |
6.3 | 拡張 SNMP アプリケーション・プログラミング・インタフェース |
6.3.1 | 呼び出しインタフェース |
6.3.1.1 | esnmp_init ルーチン |
6.3.1.2 | esnmp_allocate ルーチン |
6.3.1.3 | esnmp_deallocate ルーチン |
6.3.1.4 | esnmp_register ルーチン |
6.3.1.5 | esnmp_unregister ルーチン |
6.3.1.6 | esnmp_register2 ルーチン |
6.3.1.7 | esnmp_unregister2 ルーチン |
6.3.1.8 | esnmp_capabilities ルーチン |
6.3.1.9 | esnmp_uncapabilities ルーチン |
6.3.1.10 | esnmp_poll ルーチン |
6.3.1.11 | esnmp_are_you_there ルーチン |
6.3.1.12 | esnmp_trap ルーチン |
6.3.1.13 | esnmp_term ルーチン |
6.3.1.14 | esnmp_sysuptime ルーチン |
6.3.2 | メソッド・ルーチン呼び出しインタフェース |
6.3.2.1 | *_get ルーチン |
6.3.2.2 | *_set メソッド・ルーチン |
6.3.2.3 | メソッド・ルーチンのアプリケーションでのプログラミング |
6.3.3 | libsnmp サポート・ルーチン |
6.3.3.1 | o_integer ルーチン |
6.3.3.2 | o_octet ルーチン |
6.3.3.3 | o_oid ルーチン |
6.3.3.4 | o_string ルーチン |
6.3.3.5 | str2oid ルーチン |
6.3.3.6 | sprintoid ルーチン |
6.3.3.7 | instance2oid ルーチン |
6.3.3.8 | oid2instance ルーチン |
6.3.3.9 | inst2ip ルーチン |
6.3.3.10 | cmp_oid ルーチン |
6.3.3.11 | cmp_oid_prefix ルーチン |
6.3.3.12 | clone_oid ルーチン |
6.3.3.13 | free_oid ルーチン |
6.3.3.14 | clone_buf ルーチン |
6.3.3.15 | mem2oct ルーチン |
6.3.3.16 | cmp_oct ルーチン |
6.3.3.17 | clone_oct ルーチン |
6.3.3.18 | free_oct ルーチン |
6.3.3.19 | free_varbind_data ルーチン |
6.3.3.20 | set_debug_level ルーチン |
6.3.3.21 | is_debug_level ルーチン |
6.3.3.22 | ESNMP_LOG ルーチン |
7 | RSVP アプリケーション・プログラミング・インタフェース |
7.1 | ネットワークのサービス品質 |
7.2 | ネットワークのサービス品質の構成要素 |
7.2.1 | Traffic Control |
7.2.2 | RSVP |
7.2.3 | RAPI |
7.2.4 | 構成要素の相互運用 |
7.3 | Traffic Control |
7.4 | RSVP |
7.4.1 | RSVP の構成要素 |
7.4.2 | rsvpd デーモン |
7.5 | RSVP アプリケーション・プログラミング・インタフェース |
7.5.1 | サポートされているルーチン |
7.5.2 | RAPI 対応アプリケーションの作成 |
7.5.2.1 | アプリケーションのリンク |
7.5.3 | RAPI アプリケーションのデバッグ |
8 | Tru64 UNIX における STREAMS とソケットの共存 |
8.1 | STREAMS ドライバからソケット・プロトコル・スタックへのブリッジ |
8.1.1 | STREAMS ドライバ |
8.1.1.1 | ifnet STREAMS モジュールの使用 |
8.1.1.2 | データ・リンク・プロバイダ・インタフェース・プリミティブ |
8.2 | BSD ドライバから STREAMS プロトコル・スタックへのブリッジ |
8.2.1 | サポートする DLPI プリミティブおよびメディア・タイプ |
8.2.2 | STREAMS 擬似ドライバの使用 |
A | STREAMS モジュール例 |
B | ソケットおよび XTI プログラム例 |
B.1 | コネクション指向型プログラム |
B.1.1 | ソケット・サーバ・プログラム |
B.1.2 | ソケット・クライアント・プログラム |
B.1.3 | XTI サーバ・プログラム |
B.1.4 | XTI クライアント・プログラム |
B.2 | コネクションレス型プログラム |
B.2.1 | ソケット・サーバ・プログラム |
B.2.2 | ソケット・クライアント・プログラム |
B.2.3 | XTI サーバ・プログラム |
B.2.4 | XTI クライアント・プログラム |
B.3 | 共通コード |
B.3.1 | common.h ヘッダ・ファイル |
B.3.2 | server.h ヘッダ・ファイル |
B.3.3 | serverauth.c ファイル |
B.3.4 | serverdb.c ファイル |
B.3.5 | xtierror.c ファイル |
B.3.6 | client.h ヘッダ・ファイル |
B.3.7 | clientauth.c ファイル |
B.3.8 | clientdb.c ファイル |
C | IPv4 および IPv6 のソケット・プログラムの例 |
C.1 | AF_INET ソケットを使用するプログラム |
C.1.1 | AF_INET ソケットを使用するクライアント・プログラム |
C.1.2 | AF_INET ソケットを使用するサーバ・プログラム |
C.2 | AF_INET6 ソケットを使用するプログラム |
C.2.1 | AF_INET6 ソケットを使用するクライアント・プログラム |
C.2.2 | AF_INET6 ソケットを使用するサーバ・プログラム |
C.3 | プログラムの出力例 |
D | TCP 固有のプログラミング情報 |
D.1 | TCP のスループットとウィンドウ・サイズ |
D.1.1 | TCP ソケット・バッファ・サイズのプログラミング |
D.1.2 | TCP ウィンドウ・スケール・オプション |
D.1.2.1 | システム・ソケット・バッファ・サイズ制限の増加 |
D.2 | TCP の性能とエラー回復 |
D.3 | TCP の性能と往復時間の計測 |
D.4 | TCP の信頼性とシーケンス番号 |
E | トークン・リング・ドライバの開発に関連する情報 |
E.1 | ソース・ルーティング |
E.2 | キャノニカル・アドレス |
E.3 | データの境界合わせ |
E.4 | ドライバの softc 構造体のフィールドの設定 |
F | データ・リンク・インタフェース |
F.1 | DLI プログラミングの前提条件 |
F.2 | DLI 概略 |
F.2.1 | DLI サービス |
F.2.2 | ハードウェア・サポート |
F.2.3 | DLI を使用してのローカル・エリア・ネットワークへのアクセス |
F.2.4 | 高次レベル・サービスのインクルード |
F.3 | DLI ソケット・アドレスのデータ構造体 |
F.3.1 | 標準フレーム・フォーマット |
F.3.2 | sockaddr_dl 構造体の機能 |
F.3.3 | イーサネット・サブ構造体 |
F.3.3.1 | イーサネット・フレーム |
F.3.3.2 | イーサネット・サブ構造体の値の定義 |
F.3.4 | 802.2 サブ構造体 |
F.3.4.1 | 802 サブ構造体値の定義 |
F.4 | DLI プログラムの作成 |
F.4.1 | データ・リンク・サービスの提供 |
F.4.2 | Tru64 UNIX システム・コール |
F.4.3 | ソケットの作成 |
F.4.4 | ソケット・オプションの設定 |
F.4.5 | ソケットのバインド |
F.4.6 | sockaddr_dl 構造体 |
F.4.6.1 | アドレス・ファミリの指定 |
F.4.6.2 | I/O デバイス ID の指定 |
F.4.6.3 | サブ構造体タイプの指定 |
F.4.7 | バッファ・サイズの計算 |
F.4.8 | データ転送 |
F.4.9 | ソケットの非アクティブ化 |
F.5 | DLI プログラミング例 |
F.5.1 | イーサネット・フォーマット・パケットを使用した DLI クライアント・プログラム例 |
F.5.2 | イーサネット・フォーマット・パケットを使用した DLI サーバ・プログラム例 |
F.5.3 | 802.3 フォーマット・パケットを使用した DLI クライアント・プログラム例 |
F.5.4 | 802.3 フォーマット・パケットを使用した DLI サーバ・プログラム例 |
F.5.5 | getsockopt および setsockopt を使用した DLI プログラム例 |
用語集 |
例 |
5-1 | サンプル・モジュール |
B-1 | コネクション指向型ソケット・サーバ・プログラム |
B-2 | コネクション指向型ソケット・クライアント・プログラム |
B-3 | コネクション指向型 XTI サーバ・プログラム |
B-4 | コネクション指向型 XTI クライアント・プログラム |
B-5 | コネクションレス型ソケット・サーバ・プログラム |
B-6 | コネクションレス型ソケット・クライアント・プログラム |
B-7 | コネクションレス型 XTI サーバ・プログラム |
B-8 | コネクションレス型 XTI クライアント・プログラム |
B-9 | common.h ヘッダ・ファイル |
B-10 | server.h ヘッダ・ファイル |
B-11 | serverauth.c ファイル |
B-12 | serverdb.c ファイル |
B-13 | xtierror.c ファイル |
B-14 | client.h ファイル |
B-15 | clientauth.c ファイル |
B-16 | clientdb.c ファイル |
C-1 | クライアント・スタブ・ルーチン |
C-2 | サーバ・スタブ・ルーチン |
C-3 | クライアント・スタブ・ルーチン |
C-4 | サーバ・スタブ・ルーチン |
F-1 | イーサネット用 sockaddr_dl 構造体の代入 |
F-2 | 802.2 用 sockaddr_dl 構造体の代入 |
図 |
1-1 | ソケット・フレームワークおよび STREAMS フレームワーク |
1-2 | XTI,STREAMS,およびソケット間のやりとり |
1-3 | STREAMS ドライバとソケット・プロトコル・スタックのブリッジ |
1-4 | BSD ドライバと STREAMS プロトコル・スタックのブリッジ |
1-5 | ネットワーク・プログラミング環境 |
2-1 | DLPI インタフェース |
2-2 | DLPI サービス・インタフェース |
2-3 | DLPI アドレスの識別構成要素 |
3-1 | X/Open トランスポート・インタフェース |
3-2 | トランスポート終端 |
3-3 | コネクション指向型トランスポート・サービスの状態遷移 |
3-4 | コネクションレス型トランスポート・サービスの状態遷移 |
4-1 | ソケット・フレームワーク |
4-2 | IPv4 通信での AF_INET ソケットの使用 |
4-3 | IPv6 通信での AF_INET6 ソケットの使用 |
4-4 | IPv4 通信での AF_INET6 ソケットの使用 (送信) |
4-5 | IPv4 通信での AF_INET6 ソケットの使用 (受信) |
4-6 | 4.3BSD と 4.4BSD の sockaddr 構造体 |
4-7 | 4.3BSD,4.4BSD,XNS4.0,および POSIX 1003.1g の msghdr 構造体 |
5-1 | STREAMS フレームワーク |
5-2 | ストリームの例 |
8-1 | ifnet STREAMS モジュール |
8-2 | DLPI STREAMS 擬似ドライバ |
E-1 | 典型的なフレーム |
F-1 | DLI とネットワーク・プログラミング環境 |
F-2 | イーサネット・フレーム・フォーマット |
F-3 | 802.3 フレーム・フォーマット |
F-4 | FDDI フレーム・フォーマット |
F-5 | 802.2 構造体 |
表 |
1-1 | ネットワーク・プログラミング環境の構成要素 |
2-1 | サポートされている DLPI プリミティブ |
3-1 | XTI および TLI のヘッダ・ファイル |
3-2 | XTI ライブラリ・コール |
3-3 | 非同期 XTI イベント |
3-4 | 非同期イベントおよび消費関数 |
3-5 | TLOOK を返す XTI 関数 |
3-6 | XTI の状態 |
3-7 | 発信 XTI イベント |
3-8 | 着信 XTI イベント |
3-9 | コネクション指向型またはコネクションレス型トランスポート・サービスの初期化における状態遷移 |
3-10 | コネクションレス型トランスポート・サービスにおける状態遷移 |
3-11 | コネクション指向型トランスポート・サービスにおける状態遷移:パート 1 |
3-12 | コネクション指向型トランスポート・サービスにおける状態遷移:パート 2 |
3-13 | フェーズ独立関数 |
3-14 | XTI 関数とソケット関数の比較 |
3-15 | ソケットと XTI のメッセージの対応 |
4-1 | UNIX 通信ドメインおよびインターネット通信ドメインの特性 |
4-2 | ソケット・システム・コール |
4-3 | ソケット・ライブラリ・コール |
4-4 | ソケット・インタフェースのヘッダ・ファイル |
4-5 | アドレス・テスト・マクロの要約 |
4-6 | 一般的なエラーと診断 |
4-7 | BSD ソケット API に対する IPv6 拡張の要約 |
4-8 | 名前の変更 |
4-9 | IPv4 raw ソケットと IPv6 raw ソケットの相違点 |
4-10 | ICMPv6 フィルタリング・マクロの要約 |
4-11 | オプション情報とソケット・オプション |
4-12 | ルーティング・ヘッダ用のソケット呼び出し |
4-13 | オプション・ヘッダ用のソケット呼び出し |
5-1 | ioctl 処理のI_STR メソッドと透過メソッドの比較 |
5-2 | STREAMS リファレンス・ページ |
7-1 | クライアントのライブラリ・サービス・ルーチン |
7-2 | RAPI フォーマッティング・ルーチン |
F-1 | DLI プログラムの呼び出し順序 |
F-2 | DLI で使用されるデータ転送システム・コール |
索引 |