Transport Layer Interface

Transport Layer Interface（TLI、トランスポート層インタフェース）とは、1987年にAT&TのUNIX System V Release 3.0で提供されたネットワーク用APIであり、Release 4 (SVR4) でもサポートが継続された。 BSDのソケットに対抗したSystem VのAPIである。TLIは後にThe Open Groupが XTI (X/Open Transport Interface) として標準化した。実装は下位に位置するキャラクタ型入出力機構であるSTREAMSと密接に関連している。 当時、OSIプロトコルが TCP/IP に取って代わると予測されていたため、TLIはOSI参照モデルに準拠したプロトコルから独立した仕様になっており、OSIのトランスポート層に対応している。XTI/TLIを使ったプログラムは、Transmission Control Protocol (TCP)、Xerox Network Systems (XNS)、Systems Network Architecture (SNA)、X.25、Asynchronous Transfer Mode (ATM) などOSI参照モデルの第4層の機能を提供する様々なトランスポート層プロバイダ上で動作可能である。 APIとしてはソケットと同様の機能を提供しているが、ソケットがインターネット・プロトコル・スイートと密接に関連しているのに対し、XTI/TLIはプロトコルから独立している。XTIは、連携するSTREAMSモジュール、ライブラリAPI、ヘッダファイル群、XTIプロセスの動作に関する規則や制限で構成されている。 TLIとXTIはUNIX 98まではPOSIXソケットAPIよりも好まれ、広く使われていた。TLIとXTIは、SolarisなどSVR4から派生したオペレーティングシステム (OS) やUNIXブランド (UNIX 95, UNIX 98, UNIX03 Single UNIX Specification) 準拠のOSでは今もサポートされている。また、Mac OSでもOpen Transportという名称で使われた。UNIX 95 (XPG4) と UNIX 98 (XPG5.2) ではXTIがサポート推奨APIとなっていた。その後Single UNIX SpecificationにおいてSTREAMSを実装していないBSDやLinuxを考慮すべきだという議論が起き、UNIX 03ではSTREAMSとXTIをオプションとし、POSIXソケットをサポート推奨APIとした。 XTI/TLIはプロトコルから独立している。しかし、どのプロトコルを使うかを指定する必要があるため、結局アプリケーションは使用するプロトコルについて知っている必要がある。使用するプロトコルに関する知識もアプリケーションから排除するには、Network Selection Facilities を使用する。これはXTI/TLIライブラリ (libnsl) の一部となっている。 XTI/TLIとBSDソケットは似ているが、完全に同じというわけではなく、同じ役割の関数が異なる振る舞いをすることも多い。UNIX SVR3 とSVR4 ではTLIとソケットがSTREAMSのTransport Service Interfaceの上に実装されている。 下記の表はPOSIXでのXTIとソケットのインタフェースを比較したものである。 ライブラリ関数には呼び出し順序の規定があるため、XTI/TLIは状態インジケータを使用しており、ソケットAPIにも同様の仕組みがある。ただし、ソケットのAPI関数は複数の状態で呼び出せることがあるのに対し、XTIのAPI関数は特定の状態でないと呼び出せないようになっている。 XTI/TLIには非同期モードがあり、リアルタイム性が要求されるアプリケーションで利用できる。非同期モードでない場合、データを待ち続けてずっとブロックされる可能性がある。初期化の際に O_NONBLOCK というパラメータを指定すると非同期モードになる。その場合、接続要求、新規データ到着、タイムアウトなどのイベントを非同期にアプリケーションに通知する。 XTIでTLIから改良した点として、エラーメッセージの追加、フロー制御のためのイベント追加、パラメータ指定の簡素化（オープンの際はデフォルトでリード・ライトとなるなど）がある。また、t_listenでずっとブロックしてしまうのを防ぐためqlenの値をチェックするようになった。さらにt_strerror()とt_getprotaddr()というインタフェースが追加された。 XTI/TLIはUNIX System Vで実装されているが、Linux向けのOpenSS7などの実装例もある。 ^ Goodheart 1994, p. 11 ^ Goodheart 1994, p. 17 ^ Stevens 1994, pp. 17–18 ^ a b Goodheart 1994, pp. 519 ^ a b XNS & 5 ^ a b Goodheart 1994, p. 523 ^ a b XNS & 5.2 ^ Introduction to Networking Technologies IBM redbooks ^ Stevens 1990 ^ Waite 1987, pp. 295–304 Goodheart, Berny; James Cox (1994). The magic garden explained: the internals of UNIX System V Release 4, an open-systems design. Australia: Prentice Hall. ISBN 0-13-098138-9  Open Group (February 1997). Networking Services (XNS) Issue 5. CAE Specification. XNS (5th ed.). Berkshire, U.K.: The Open Group. ISBN 1-85912-165-9.  Open Group (January 2000). Networking Services (XNS) Issue 5.2. CAE Specification. XNS (5.2th ed.). Berkshire, U.K.: The Open Group.  Nuss, Branko (January 2000). RTFM!!! Issue 5.2. CAE Specification. 1 (1.0 ed.). Akron, OH: Addison-Wesley.  Pajari, George (1992) [1991]. Writing UNIX Device Drivers (2nd Printing ed.). Reading, MA: Addison-Wesley. ISBN 0-201-52374-4  Santa Cruz Operation (1997). System V Application Binary Interface — Intel386 Architecture Processor Supplement (4th ed.). Santa Cruz, CA: The Santa Cruz Operation, Inc..  Santa Cruz Operation (1997). System V Application Binary Interface (4.1th ed.). Santa Cruz, CA: The Santa Cruz Operation, Inc..  Stevens, W. Richard (1990). UNIX Network Programming. Englewood Cliffs, N.J.: Prentice-Hall. ISBN 0-13-949876-1  Stevens, W. Richard (1993). Advanced Programming in the UNIX Environment (1st Edition, 15th Printing ed.). Reading, MA: Addison-Wesley. ISBN 0-201-56317-7  Stevens, W. Richard (1994). TCP/IP Illustrated: the protocols. Reading, Mass.: Addison-Wesley. ISBN 0-201-63346-9  Thomas, Rebecca; Lawrence R. Rogers, Jean L. Yates (1986). Advanced Programmers Guide to UNIX System V. Berkeley, CA: Osborne McGraw-Hill. ISBN 0-07-881211-9  UNIX System Laboratories (1995). System V Application Binary Interface (4th ed.). Englewood Cliffs, N.J.: UNIX System Laboratories.  Waite Group (1987). Mitchel Waite. ed. UNIX Papers (2nd Printing ed.). Indianapolis, IN: Howard W. Sams & Company. ISBN 0-672-22578-6  Zucker, Steve; Kari Karhi (1995). System V Application Binary Interface—PowerPc Processor Supplement. Mountain View, CA: SunSoft.  X/Open Protability Guide (XPG) - POSIXの前身 コンピュータネットワーク The Open Group's XTI standard Networking Services (XNS) Issue 5.2, The Open Group, January 2000 Example client-server application working on Solaris and Linux[リンク切れ]