TLI は AT&T の System V Release 3 とともに 1986 年に導入されました。TLI は トランスポート層インタフェース API を規定しました。TLI インタフェースは ISO Transport Service Definition をモデルに設計され、 OSI トランスポート層とセッション層の間の API を提供します。その後 TLI インタフェースは AT&T の System V Release 4 の UNIX バージョンでさらに発展し、 SunOS 5.6 オペレーティングシステムインタフェースにも取り入れられました。
XTI インタフェースは TLI インタフェースを発展させたもので、このインタフェースの将来の方向を表しています。TLI を使用するアプリケーションとの互換性が保証されています。ただちに TLI のアプリケーションを XTI のアプリケーションに移行する必要性はありません。新しいアプリケーションは XTI インタフェースを使用し、古いアプリケーションは必要性が発生した時点で XTI に移行可能です。
TLI はアプリケーションがリンクするライブラリ (libns1) 内の関数呼び出しのセットとして実装されています。XTI アプリケーションは c89 フロントエンドを使用してコンパイルされ、 xnet ライブラリ (libxnet) とリンクされる必要があります。XTI におけるコンパイルに関する詳細は、standards(5) のマニュアルページを参照してください。
XTI インタフェースを使用するアプリケーションは xti.h ヘッダーファイルを使用するのに対し、TLI インタフェースを使用するアプリケーションは tiuser.h ヘッダーファイルを使用しています。
XLI/TLI において必要不可欠なのがトランスポートエンドポイント (transport endpoints) およびトランスポートプロバイダ (transport provider) の概念です。トランスポートエンドポイントは通信を行う 2 つのエンティティであり、トランスポートプロバイダはホスト上の基本的な通信サポートを提供するルーチンのセットです。XTI/TLI はトランスポートプロバイダへのインタフェースであり、プロバイダそのものではありません。図 3-1 を参照してください。
XLI/TLI コードは第 4 章で説明されている追加インタフェースやメカニズムとともに現在のトランスポートプロバイダとは独立した形で作成できます。SunOS 5 にはいくつかのトランスポートプロバイダ (たとえば、TCP) をオペレーティングシステムの一部として用意しています。トランスポートプロバイダはサービスを実行し、トランスポートユーザーはサービスを要求します。トランスポートユーザーがトランスポートプロバイダへサービス要求を発行します。たとえば、TCP や UDP 上のデータ転送要求があります。
また XTI/TLI はトランスポートに依存しないプログラミングにも使用できます。そのために XTI/TLI には 2 つのコンポーネントが用意されています。
トランスポートの選択、名前からアドレスへの変換 (name-to-address) を始めとするトランスポートサービスを実行するライブラリルーチン。ネットワークサービスライブラリには ユーザー処理で XTI/TLI を実装する関数セットが用意されています。第 4 章「トランスポート選択と名前からアドレスへのマッピング」を参照してください。
TLI を使用したプログラムは以下の方法で、ネットワークサービスライブラリ libnsl とリンクを行う必要があります。
% cc prog.c -lnsl |
状態遷移規則は、トランスポートルーチンを呼び出すシーケンス (一連の流れ) を定義します。状態遷移規則の詳細については 「状態遷移」 を参照してください。状態テーブルは状態およびイベントの処理に基づいて、ライブラリ呼び出しの正当なシーケンスの定義を行います。これらのイベントには、ユーザー生成ライブラリ呼び出し、プロバイダ生成イベントのインジケータが含まれます。XLI/TLI のプログラマはインタフェースを使用する前にすべての状態遷移をよく理解しておく必要があります。
XLI/TLI には 2 つのサービスモードが存在します。コネクションモードとコネクションレスモードです。以下のセクションではこれらの 2 つのモードの概要について説明します。