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