この章で取り上げるインタフェースはマルチスレッドに対して安全です。これは XTI/TLI インタフェース呼び出しを含むアプリケーションがマルチスレッド化されたアプリケーション内で自由に使用できることを意味します。これらのインタフェース呼び出しは再入可能ではないので、スケーラビリティは直線的でありません。
XTI/TLI インタフェースの非同期環境における動作は特定されていません。これらのインタフェースはシグナルハンドラルーチンからは使用しないでください。
TLI は AT&T の System V Release 3 とともに 1986 年に導入されました。TLI は トランスポート層インタフェース API を規定しました。TLI は ISO Transport Service Definition が規定するモデルに基づいています。TLI は OSI トランスポート層とセッション層の間の API を提供します。TLI インタフェースは UNIX の AT&T System V Release 4 バージョンでさらに発展し、SunOS 5.6 オペレーティングシステムインタフェースにも取り入れられました。
XTI インタフェースは TLI インタフェースを発展させたもので、このインタフェースの将来の方向を表しています。TLI を使用するアプリケーションとの互換性が保証されています。ただちに TLI のアプリケーションを XTI のアプリケーションに移行する必要性はありませんが、新しいアプリケーションでは XTI インタフェースを使用し、必要に応じて、TLI アプリケーションを XTI に移行してください。
TLI はライブラリ (libns1) 内のインタフェース呼び出しセットとして実装され、そこにアプリケーションがリンクします。XTI アプリケーションは c89 フロントエンドを使用してコンパイルし、xnet ライブラリ (libxnet) とリンクする必要があります。XTI を使用するコンパイルの詳細についは、standards(5) のマニュアルページを参照してください。
XTI インタフェースを使用するアプリケーションは xti.h ヘッダーファイルを使用するのに対し、TLI インタフェースを使用するアプリケーションは tiuser.h ヘッダーファイルを使用しています。
XTI/TLI コードは第 4 章で説明されている追加のインタフェースとメカニズムと組み合わせと同時に使用することで、現在のトランスポートプロバイダに依存する必要がなくなります。SunOS 5.x はいくつかのトランスポートプロバイダ (たとえば、TCP) をオペレーティングシステムの一部として用意しています。トランスポートプロバイダはサービスを実行し、トランスポートユーザーはサービスを要求します。トランスポートユーザーがトランスポートプロバイダへサービス要求を行います。たとえば、TCP や UDP 上のデータ転送要求などがそれに当たります。
XTI/TLI は次の 2 つの構成要素を利用することによっても、トランスポートに依存しないプログラミングが可能になります。
トランスポート選択や名前からアドレスへの変換 (name-to-address) を始めとするトランスポートサービスを実行するライブラリルーチン。ネットワークサービスライブラリには ユーザープロセスで XTI/TLI を実装するインタフェースセットが用意されています。詳細は第 9 章「トランスポート選択と名前からアドレスへのマッピング」を参照してください。
TLI を使用するプログラムは libnsl ネットワークサービスライブラリにリンクする必要があります(コンパイル時に -l nsl オプションを使用)。
XTI を使用するプログラムは xnet ライブラリにリンクする必要があります (コンパイル時に -l xnet オプションを使用) 。
状態遷移規則は、トランスポートルーチンを呼び出すシーケンスを定義します。状態遷移規則の詳細については、状態遷移を参照してください。状態テーブルは状態およびイベントの処理に基づいて、ライブラリ呼び出しの正当なシーケンス定義します。これらのイベントには、ユーザー生成ライブラリ呼び出し、プロバイダ生成イベントのインジケータが含まれます。XLI/TLI のプログラマはインタフェースを使用する前にすべての状態遷移をよく理解しておく必要があります。