Transport_Layer_Interfaceとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > Transport_Layer_Interfaceの意味・解説 

Transport Layer Interface

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/11 03:08 UTC 版)

Transport Layer Interface(TLI、トランスポート層インタフェース)とは、1987年にAT&TUNIX System V Release 3.0で提供されたネットワーク用APIであり[1]、Release 4 (SVR4) でもサポートが継続された[2]

概要

BSDソケットに対抗したSystem VのAPIである。TLIは後にThe Open GroupXTI (X/Open Transport Interface) として標準化した[3]。実装は下位に位置するキャラクタ型入出力機構であるSTREAMSと密接に関連している。

当時、OSIプロトコルTCP/IP に取って代わると予測されていたため、TLIはOSI参照モデルに準拠したプロトコルから独立した仕様になっており、OSIのトランスポート層に対応している[4]。XTI/TLIを使ったプログラムは、Transmission Control Protocol (TCP)、Xerox Network Systems (XNS)、Systems Network Architecture (SNA)、X.25Asynchronous Transfer Mode (ATM) などOSI参照モデルの第4層の機能を提供する様々なトランスポート層プロバイダ上で動作可能である[5]

APIとしてはソケットと同様の機能を提供しているが、ソケットがインターネット・プロトコル・スイートと密接に関連しているのに対し、XTI/TLIはプロトコルから独立している[6]。XTIは、連携するSTREAMSモジュール、ライブラリAPI、ヘッダファイル群、XTIプロセスの動作に関する規則や制限で構成されている[6]

TLIとXTIはUNIX 98まではPOSIXソケットAPIよりも好まれ、広く使われていた[7]。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となっていた[7][5]。その後Single UNIX SpecificationにおいてSTREAMSを実装していないBSDLinuxを考慮すべきだという議論が起き、UNIX 03ではSTREAMSとXTIをオプションとし、POSIXソケットをサポート推奨APIとした。

プロトコル独立性

XTI/TLIはプロトコルから独立している。しかし、どのプロトコルを使うかを指定する必要があるため、結局アプリケーションは使用するプロトコルについて知っている必要がある[8]。使用するプロトコルに関する知識もアプリケーションから排除するには、Network Selection Facilities を使用する。これはXTI/TLIライブラリ (libnsl) の一部となっている[9]

XTI/TLI とソケットの比較

XTI/TLIとBSDソケットは似ているが、完全に同じというわけではなく、同じ役割の関数が異なる振る舞いをすることも多い。UNIX SVR3[10] とSVR4[4] ではTLIとソケットがSTREAMSのTransport Service Interfaceの上に実装されている。

下記の表はPOSIXでのXTIとソケットのインタフェースを比較したものである。

XTI/TLIインタフェース ソケットインタフェース 意味論的に同一か
t_open socket イエス。ただしt_openはオープン時にt_getinfoを実行可能
- socketpair -
t_getinfo - -
t_getprotaddr getsockname, getpeername イエス。しかしt_getprotaddrは対応する2つの機能を1つで実行可能
t_bind bind, listen イエス。ただしt_bindは対応する2つの機能を1回のコールで実施可能
t_optmgmt getsockopt, setsockopt イエス。ただしt_optmgmtはデフォルト値と調停値を取得できるのに対し、getsockoptとsetsockoptは現在値しか取得/更新できない。
t_unbind bind イエス。ソケットの場合AF_UNSPECを指定することでunbind相当になる。
t_close close イエス。ただし、t_closeでは常にアボート的切断になるのに対し、closeは終了を待ち合わせて解放することもある。
t_getstate - -
t_sync - -
t_alloc - -
t_free - -
t_look select, getsockopt selectとgetsockopt (SO_ERROR) はt_lockの全機能をカバーしていない。
t_error perror イエス。ただしXTIは通常のerrnoに追加的にt_errnoを使用し、トランスポート層のエラーだけでなくUNIXシステムのエラーも示すことができる。
t_strerror strerror イエス
t_connect connect t_connectの前にt_bindが必須である。
t_rcvconnect select t_rcvconnectは、selectでO_NONBLOCKを指定した場合と同等である。
t_listen, t_accept, t_snddis accept acceptは接続を拒否できないが、t_listenで受け付けた接続要求はその後のt_acceptで初めて許可され、t_snddisを使えば拒否できる。
t_snd, t_sndv send, sendto, sendmsg イエス。しかし t_snd と t_sndv はコネクションモードのトランスポートでのみ使用。
t_rcv, t_rcvv recv, recvfrom, recvmsg イエス。ただしt_rcvとt_rcvvはコネクションモードのトランスポートでのみ使用。
t_snddis close, shutdown t_snddisを発行後も接続要求をlistenし続けることができ、t_connectで接続を再確立することもできる。closeはソケットのファイル記述子を解放してしまう。通信を続ける場合、ソケットでは新たに接続を確立する準備をしなければならない。
t_rcvdis ENOTCONN, ECONNRESET, EPIPE, SIGPIPE イエス。ただし、ソケットではエラーまたはシグナルで通知。
t_sndrel, t_sndreldata shutdown イエス。しかしshutdownには通常解放時にデータを送信する機能はなく、t_sndreldataは通常解放時にデータを送信できる。t_sndrelは単にシャットダウンだけを行う。
t_rcvrel, t_rcvreldata - -
t_sndudata, t_sndvudata sendmsg イエス。しかしt_sndudataとt_sndvudataはコネクションレス・モードでのみ使用。
t_rcvudata, t_rcvvudata recvmsg イエス。しかしt_rcvudataとt_rcvvudataはコネクションレス・モードでのみ使用。
t_rcvuderr - -
read, write read, write XTI/TLIではread/writeを使用する前にtirdwrモジュールをSTREAMSにプッシュする必要がある。

ライブラリ関数には呼び出し順序の規定があるため、XTI/TLIは状態インジケータを使用しており、ソケットAPIにも同様の仕組みがある。ただし、ソケットのAPI関数は複数の状態で呼び出せることがあるのに対し、XTIのAPI関数は特定の状態でないと呼び出せないようになっている。

XTI/TLI非同期モード

XTI/TLIには非同期モードがあり、リアルタイム性が要求されるアプリケーションで利用できる。非同期モードでない場合、データを待ち続けてずっとブロックされる可能性がある。初期化の際に O_NONBLOCK というパラメータを指定すると非同期モードになる。その場合、接続要求、新規データ到着、タイムアウトなどのイベントを非同期にアプリケーションに通知する。

XTIでの改良点

XTIでTLIから改良した点として、エラーメッセージの追加、フロー制御のためのイベント追加、パラメータ指定の簡素化(オープンの際はデフォルトでリード・ライトとなるなど)がある。また、t_listenでずっとブロックしてしまうのを防ぐためqlenの値をチェックするようになった。さらにt_strerror()t_getprotaddr()というインタフェースが追加された。

実装

XTI/TLIはUNIX System Vで実装されているが、Linux向けのOpenSS7などの実装例もある。

脚注

  1. ^ Goodheart 1994, p. 11
  2. ^ Goodheart 1994, p. 17
  3. ^ Stevens 1994, pp. 17–18
  4. ^ a b Goodheart 1994, pp. 519
  5. ^ a b XNS & 5
  6. ^ a b Goodheart 1994, p. 523
  7. ^ a b XNS & 5.2
  8. ^ Introduction to Networking Technologies IBM redbooks
  9. ^ Stevens 1990
  10. ^ 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. 

関連項目

外部リンク




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Transport_Layer_Interface」の関連用語

Transport_Layer_Interfaceのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Transport_Layer_Interfaceのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのTransport Layer Interface (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS