JP2002533808A - コンピュータ・ソフトウェア・アプリケーション間通信のためのプロトコル - Google Patents

コンピュータ・ソフトウェア・アプリケーション間通信のためのプロトコル

Info

Publication number
JP2002533808A
JP2002533808A JP2000590053A JP2000590053A JP2002533808A JP 2002533808 A JP2002533808 A JP 2002533808A JP 2000590053 A JP2000590053 A JP 2000590053A JP 2000590053 A JP2000590053 A JP 2000590053A JP 2002533808 A JP2002533808 A JP 2002533808A
Authority
JP
Japan
Prior art keywords
application
message
option
dce
protocol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000590053A
Other languages
English (en)
Inventor
チャールズ キルケニー,
Original Assignee
グローバル ファイナンシャル ネットワークス リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by グローバル ファイナンシャル ネットワークス リミテッド filed Critical グローバル ファイナンシャル ネットワークス リミテッド
Publication of JP2002533808A publication Critical patent/JP2002533808A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】 2つのアプリケーション・プログラムの間のメッセージング互換性が、所定のオプションのイニシエーションとネゴシエーションとを備えるプロトコルを利用した会話を介して確立され、前記オプションが、追加オプションを含むように拡張可能であるオプションの組に属することを特徴とする、コンピュータ・ソフトウェア・アプリケーション間の通信およびメッセージングのプロトコルを開示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、コンピュータ・ソフトウェア・アプリケーション間通信およびメッ
セージング互換性確立のためのプロトコルに関する。このプロトコルは、アプリ
ケーション統合およびe−commerceに関する。
【0002】 [用語の定義] 「メッセージング」とはメッセージの転送のことであり、アプリケーション・
データ、命令、およびアプリケーション間の応答が含まれる。メッセージは、内
容と一定のサイズの両方を有する。しかし、「通信」は、情報をメッセージとみ
なすことができるか否かに無関係に、情報を送受するすべての形態を含むより広
義の概念である。本明細書で使用される用語「アプリケーション間」通信は、「
アプリケーション」(下で定義する)間の通信ならびにアプリケーションの内部
の通信を指す。
【0003】 コンピュータ・アプリケーション(通常は、本明細書において「アプリケーシ
ョン」と呼称する)は、(i)エンド・アプリケーションすなわち、メッセージ
を生成し、解釈し、それに作用するアプリケーション、(ii)(a)エンド・
アプリケーションとして解釈し、生成し、作用するが、主にルーティングおよび
価値の付加/マッピングのために存在するメッセージ・ブローカと、(b)非同
期メッセージ・キューイング・ミドルウェア(「MQM」)(たとえば、IBM
社のMQSeriesまたはMicrosoft社のMSMQなどのMQMシス
テム)と、(c)SWIFT CBT(SWIFT CBTの説明については下
を参照されたい)などのメッセージ・ゲートウェイとを含む「ミドルウェア」ア
プリケーション、(iii)「ミドルウェア」、(iv)リモート・手続呼出し
(RPC)などのメッセージング・プロトコル、(v)メッセージングAPI(
アプリケーション・プログラミング・インターフェース)、(vi)アプリケー
ション内のコンポーネント、および(vii)コンピュータ・システムに関する
コンポーネント(プロセス、スレッド、またはサブルーチンなど)を含むものと
して広く解釈されなければならない。
【0004】 用語「ミドルウェア」は、ハードウェア、ソフトウェア(プロトコル、API
、およびプロシージャ呼出しを含む)、または通信の間で動作するソフトウェア
を記述するために作り出された。
【0005】
【従来の技術】
コンピュータ・ソフトウェアのアプリケーション間通信およびメッセージング
のプロトコルによって、他の用途の中でも、異なるコンピュータ・アプリケーシ
ョンが、互いにメッセージを交換できるようになる。プロトコルは、アプリケー
ション統合、インターフェース相互作用、およびアプリケーション・プラグアン
ドプレイの配布にとって中心となる重要性を有する可能性がある。しかし、現在
、アプリケーション間メッセージングおよびアプリケーション間の相互運用性を
支配する共通の規格は存在しない。したがって、異なるプロトコルおよびアプリ
ケーション・インターフェースの間を、どのように接続するか、接続に合意する
か、又は適合する方法を定義する共通の規格または最適な手法は未だ存在しない
【0006】 簡単な例を挙げると、両方向データ・フローまたは「ウィンドウイング」をサ
ポートするか否かを確立する手順を定義する共通の標準はまだない(「ウィンド
ウイング」は、次のメッセージを送る前に個々の応答の受信を待たずにメッセー
ジを送信する技法であり、したがって、10の「ウィンドウ」は、最大10個の
未解決の応答が許容されることを意味する)。多くのプロトコルには、それを他
のアプリケーションと共に使用できなくする特定の制約も含まれる。
【0007】 したがって、2つの異なるアプリケーションの間で通信を成功裡に送信できる
ようにする標準アプリケーション間通信プロトコルの緊急の必要が存在する。こ
のアプリケーション間通信プロトコルに対する必要は、多くの異なるコンピュー
ティング・セクタに存在するが、この必要は、アプリケーション統合、エンター
プライズ・アプリケーション統合(EAI)、インターネット・アプリケーショ
ン統合(IAI)、e−commerce、およびメッセージングで特に深刻で
ある。
【0008】 たとえば、バンキング/財務分野では、多くの異なるアプリケーションが、S
.W.I.F.T. sc.(「SWIFT」)によって開発されたグローバル
・バンキング・ネットワークと通信する必要がある。S.W.I.F.T.は、
Society for World−wide Interbank Fin
ancial Telecommunicationsの頭字語であるが、金融
機関の間のネットワークを稼動させる共同組織である。SWIFTは、メッセー
ジに関する厳格なフォーマット要件を有し、これによって組織が、参加する機関
との支払い、確認、および他のトランザクションを自動化できるようになる。
【0009】 しかし、バック・オフィス・アプリケーションは、S.W.I.F.T.ネッ
トワークと直接に通信することができない(1998年において)。メッセージ
を送受信するために、所定の銀行のアプリケーションは、SWIFTコンピュー
タ・ベース端末(CBT)と称される銀行内のコンピュータと通信しなければな
らない。そして、そのSWIFT CBTが、SWIFTネットワークと通信す
る。CBTは、厳格な要件を満たさなければならず、SWIFTネットワーク上
で使用される前に証明されなければならない。異なる会社がSWIFT CBT
を作り、その結果、ほとんどのCBTが、それ自体のアプリケーション・インタ
ーフェースを有する。
【0010】 バック・オフィス・アプリケーションがSWIFT CBTと通信する万能の
標準的な方法は、まだ存在しない。バック・オフィス・アプリケーション・ベン
ダは、異なるCBTにリンクしたい場合に、複数の仕様に従わなければならない
。これを回避するために、多くのバック・オフィス・アプリケーション・ベンダ
は、通常はバッチ・タイプのインターフェース(すなわち、複数のメッセージが
後続処理のためにデータ・ファイルに書き込まれるインターフェース)であるそ
れ自体のインターフェースを指定し、CBTとの統合はユーザに委ねる。これは
、満足なものではなく、バンキング産業に毎年数百万の統合コストを課す。
【0011】 SWIFTは、2000年に次世代(NG)製品およびサービスを導入する可
能性が高く、それらが従来のCBTに代わる可能性がある。NGの下では、SW
IFT Net Link(SNL)が、銀行内でアプリケーションと新しいS
WIFTネットワークの間に常駐しなければならない唯一の必須ソフトウェア・
コンポーネントである。しかし、アプリケーションは、SNLを直接に使用する
のではなく、ゲートウェイまたはメッセージング・システムと通信し続ける可能
性が高い。NG単独で、通信およびアプリケーション統合の標準的な方法に対す
る必要がなくなる可能性は低い。
【0012】 この問題のスケールは、ある例から最もよく諒解される。この例では、SWI
FTのスケールおよび成功も示される。SWIFTは、約6354の金融機関を
カバーし、175ヶ国で動作する。この機関には、2984のメンバ、2659
のサブメンバ、および711の参加者が含まれる。1998年のトラヒックは、
9億メッセージを超えると期待される。サブメンバ機関の一部は、SWIFTに
、その中央局または地方局を介して接続される。サブメンバの70%が、SWI
FTに直接に接続されると仮定すると、約5500台のSWIFT CBTがあ
る。また、CBTあたり平均3つのバック・オフィス・アプリケーションがある
と仮定すると、単独でSWIFTと通信する必要がある約16500のバンキン
グ・アプリケーションがある。これらのアプリケーションの多くが、銀行によっ
て内部で開発されたインターフェースを有する。これらは、アプリケーション・
メッセージをSWIFTに通信するための単一の標準に従わない。
【0013】 メッセージ・キューイング・ミドルウェア(MQM)システムおよびメッセー
ジ・ブローカ(MB)システムは、異なるアプリケーションの間でアプリケーシ
ョン・メッセージを送るための部分的な解決策であり、金融市場でかなりの成功
を収めた。MQM/MBシステムは、組織に、メッセージを渡すための標準と、
それを拡充する方法を与える。主要銀行は、現在、メッセージング・インフラス
トラクチャを全世界で標準化するために、MQM/MBシステムに注目し、実装
しつつある。
【0014】 MQM/MBシステムは、通常、アプリケーション・プログラミング・インタ
ーフェース(API)を備え、このAPIによって、putおよびget、スト
ア・アンド・フォワード機能、ルール・ベースのエンジン、およびデータの再フ
ォーマッティングおよびマッピングが可能になる。さらに、その目的位置の結果
、MQM/MBベースのシステムは、それによらなければ不可能であるはずの監
視機能および追加機能を提供することができる。適切に確立されたMQM/MB
システムが複数存在する。たとえば、ストア・アンド・フォワードを備えるpu
tアンドgetインフラストラクチャであるIBM社のMQSeriesは、適
切に確立されている。MQSeriesには、安全で信頼性のあるメッセージン
グが組み込まれている。TIBCO社のTIB/ETXが、IBM社のMQSe
riesに似た、もう1つのputアンドgetインフラストラクチャである。
New Era Of Networks(NEON)社のNEONetが、も
う1つの例であり、この場合、アプリケーションと同期してメッセージのストア
・アンド・フォワードを行うのに関係データベース技術が使用される。NEON
etは、putアンドgetインフラストラクチャも提供する。
【0015】 それぞれが独占的であり、かなりのユーザ・ベースを有する複数の適切に確立
されたMQM/MBシステムがあるので、既存のMQM/MBシステムのどれも
が、アプリケーション間通信、アプリケーション統合、e−commerce、
およびメッセージングのデファクト・スタンダードにならない可能性がある。し
たがって、これらのMQM/MBシステムが、共通のプロトコルを採用し、それ
ら自体の間および他のアプリケーションとの効率的なメッセージングを可能にす
る必要が存在する。
【0016】 標準的なアプリケーション・プログラミング・インターフェース(API)が
、異なるアプリケーションの間でアプリケーション・メッセージを送るための部
分的な解決策でもある。Candle社のRoma BSP製品が、そのような
APIである。最近(1998年以降)、Open Applications
Group(OAG)が、IBM社のApplication Messag
ing Interface(AMI)標準規格を採用した。しかし、AMIの
ような共通のput()およびget()のAPIは、必ずしもsend()お
よびreceive()には向いてはいない。
【0017】 メッセージ指向のミドルウェアは、一般に、非同期式(コネクションレス)ま
たは同期式(コネクション指向)のいずれかとして分類することができる。非同
期メッセージング・キューイング・ミドルウェア(MQM)は、従来、同期式の
解決策、主にRPC(リモート・手続呼出し)よりも柔軟性があり、高機能であ
ると見なされてきた。しかし、MQMシステムは、コストが高く、かなりのイン
フラストラクチャを必要とする。
【0018】 TELNETについても言及することができるが、TELNETは、ある形の
オプション・ネゴシエーションをサポートする端末エミュレーション・プロトコ
ルである。TELNETについて、本明細書の「発明の詳述」の節(「RACE
:TELNETとの比較」)で詳細に述べる。
【0019】
【発明の実施の形態】
本発明の第1の態様によれば、第1コンピュータ・アプリケーションから第2
コンピュータ・アプリケーションにメッセージを通信する方法であって、第1ア
プリケーションと第2アプリケーションの間のメッセージング互換性が、所定の
オプションのイニシエーションとネゴシエーションとを含むプロトコルを使用し
て確立され、オプションが、追加オプションを含むように拡張可能であるオプシ
ョンの組に属することを特徴とする方法が提供される。
【0020】 したがって、本発明は、この第1の態様では、「オプション」のネゴシエーシ
ョンを基礎とするアプリケーション間メッセージング用のプロトコルの利用の洞
察に基づいている。「オプション」は、メッセージを転送するための手法(すな
わち、メッセージの通信の正しい手引き)の特徴または特性となりえる。
【0021】 拡張性は、通常は、一意の識別子を各オプションに割り当てることによって達
成することができる。その一意の識別子(数字であってもよい)が、あらゆるネ
ゴシエーション・ダイアログに利用される。数字を利用してオプションを識別す
ることは、たとえば、オプションの組が簡単に拡張可能であり、無制限であるこ
とを意味する。
【0022】 一意の識別子を、以下のようにイニシエーションに利用してもよい。接続する
当事者が、本質的に、接続される当事者に所定のオプションの実行または受入を
行うかどうかを尋ねる要求を送信する。好ましい実施形態では、これが「DO
(オプション識別子)」のようになる。接続される当事者は、そのオプションを
実行できる場合には「WILL」、そのオプションを実行できない場合には「W
ONT」と言うことができる。
【0023】 次の例が、実際のオプションおよびオプション・ネゴシエーションの概念を最
もよく示す。第1アプリケーションが、メッセージのバッチを送信することを望
み、それらのメッセージが、バッチ・メッセージ・ファイルに既に保管されてい
ると想像されたい。メッセージは、既にバッチ・メッセージ・ファイル内にある
ので、第1アプリケーションは、まず、第2アプリケーションに、バッチ・メッ
セージ・ファイル転送をサポートするかどうかを尋ねる。第2アプリケーション
が、サポートすると言う場合には、第1アプリケーションは、そのメッセージを
バッチ・メッセージ・ファイルとして転送する。第2アプリケーションが、サポ
ートしないと言う場合には、第1アプリケーションは、「put/get」など
、異なるより単純な接続タイプを提案することができる。第2アプリケーション
が合意する場合には、第1アプリケーションは、「put」を使用して各メッセ
ージを個別に送信することができる。第2アプリケーションが合意しない場合に
は、第1アプリケーションは、「send/receive」など、別の接続タ
イプを提案することができる。第2アプリケーションが合意する場合には、第1
アプリケーションは、「send」を使用して各メッセージを個別に送信するこ
とができる。これ以外で第2アプリケーションが合意しない場合には、互換性に
達することができない。
【0024】 この形で、システムに柔軟性が導入される。というのは、本発明の方法が、複
数の通信プロトコルをサポートするだけではなく、アプリケーションが、たとえ
ば1つまたは複数の共通分母が見つかるまでのネゴシエーションおよび妥協のプ
ロセスを介して、実際の1つまたは複数の通信プロトコルのどれを使用するかを
簡単にネゴシエートできるようにするからである。具体的な例は、本発明の方法
によって、上述のオプション・ネゴシエーションの例で説明した形で、異なるC
BTインターフェースがsend/receiveまたはput/getまたは
バッチのどれを使用する場合であっても、そのCBTインターフェースと通信で
きるようにすることである。
【0025】 他の当事者は、提案されたオプションをサポートしない場合に、単に「WON
T」を応答しなければならない。これらの当事者は、異なるオプション・タイプ
に合意することによって妥協することができ、そうでない場合には、メッセージ
ングを確立することができない(基本のデフォルトがない場合)。
【0026】 すべてではないが、一部のオプションは、パラメータ値によって定義される必
要がある。たとえば、次の、パラメータ値を用いるオプション・ネゴシエーショ
ンを検討されたい。第1アプリケーションが、ウィンドウイング、具体的には1
0のパラメータ値を使用するウィンドウイングのオプションを使用することを望
むと想像されたい。この種のメッセージ・ウィンドウイングは、どの時点でも1
0個までのメッセージを未応答にしておくことができるので、第2アプリケーシ
ョンとのメッセージ伝送が高速になる。第1アプリケーションは、第2アプリケ
ーションがウィンドウイングのオプション、具体的には値10のウィンドウをサ
ポートするか否かを要求することによって、第2アプリケーションとのダイアロ
グを開始する。第2アプリケーションが、2のウィンドウをサポートするだけで
あると想像されたい。第2アプリケーションは、ウィンドウイングをサポートす
るが、2までのウィンドウだけであると述べることによって応答する。第1アプ
リケーションは、これを受け入れる。このダイアログ全体を、「ネゴシエーショ
ン」とみなすこともでき、したがって、本明細書ではこの用語を使用する。多く
の従来技術のシステムでは、あるアプリケーションから別のアプリケーションへ
の1メッセージの固定ウィンドウがあり、追加オプションを含むようにシステム
を拡張する余地がない。これは、明らかに、本発明の「拡張可能なネゴシエート
されるオプション」方法より柔軟性が少ない。
【0027】 本発明では、ネゴシエーションが、あらゆる所定のメッセージング・オプショ
ンの許容可能なパラメータ値の範囲内で行われることが好ましい。したがって、
もう一度ウィンドウイングを使用すると、許容可能なパラメータ値の範囲を1か
ら10までとすることができ、前の例では、送信側が10までをサポートし、受
信側が2または2までをサポートする。しかし、オプションの中には、パラメー
タ値を含まないものがある。
【0028】 どのオプション・パラメータ値でも、ネゴシエートするための要求に含めるこ
とができ、これによって、ネゴシエーションが高速になる。というのは、通常、
2「ラウンド・トリップ」ではなく、1「ラウンド・トリップ」だけのネゴシエ
ーションが必要になるからである。必要な場合には、さらに追加パケットを用い
てオプションをネゴシエートすることができる。また、接続する当事者は、単一
のトランザクションで、できる限り多数の、それがサポートするオプションを宣
言することができ、やはりネゴシエーションが高速になる。
【0029】 好ましい実施形態では、接続する当事者が、「DO オプション・タイプ」要
求を送り、接続される当事者が、そのオプション・タイプをサポートする場合に
「WILL」応答を送る。接続する当事者だけが、ネゴシエーションを開始する
ことができる。この手法によって、ネゴシエーションを制御し、妥協することが
できる接続する当事者がもたらされる。
【0030】 「片側イニシエーション」によって、実装がかなり簡単になり、端末をエミュ
レートするためのTELNETプロトコルで発生する、対称ネゴシエーションで
生じる可能性がある無限ループがなくなる(TELNETに関する注釈について
は、「発明の詳述」を参照されたい)。対称ネゴシエーションは、本発明の可能
性でもある。
【0031】 さらに、ネゴシエーションを、アプリケーションの間の会話の初期の限られた
回数または単独の発生だけに制限することができる。これによって、実装がかな
り簡単になり、TELNETで発生する可能性がある無限ネゴシエーション・ル
ープが発生しなくなる。
【0032】 第2アプリケーションを、メッセージ指向のプロトコルまたはAPIとするこ
とができるので、このプロトコルによって、メッセージ指向のプロトコルおよび
アプリケーション・インターフェースへのマッピングが可能になる(すなわち、
相互運用性が達成される)。これは、ストア・アンド・フォワード機能性なしで
達成することができる。
【0033】 第2の態様によれば、第1コンピュータ・アプリケーションから第2コンピュ
ータ・アプリケーションにメッセージを通信する方法であって、第1アプリケー
ションと第2アプリケーションの間のメッセージング互換性が、所定のオプショ
ンのネゴシエーションだけに制限される必須要素を有する言語を使用するプロト
コルを使用して確立され、オプションが、追加オプションを含むように拡張可能
であるオプションの組に属することを特徴とする方法が提供される。
【0034】 この態様でオプション・ネゴシエーション言語によって例示される単純なコア
言語(すなわち「基本プロトコル」)の使用には、より単純なシステムの設計と
、通信の開始点およびメッセージングのデフォルト(ならびにオプション設計フ
ェーズ中のオプション仕様のデフォルト)の構成とのしやすさなどの多数の長所
がある。他のオプションおよびオプションのさまざまな値を含めるための拡張性
があるので、単純さが、より複雑なシステムを設計する能力を損なうことはない
。プロトコル言語に、接続要求を追加することができ、この接続要求は、通常は
、接続される当事者によってサポートされる。定義済みの切断言語を使用するこ
ともできる。
【0035】 好ましい実施形態では、オプション・ネゴシエーションは、ターゲット・サー
ビスおよびターゲット・アプリケーションが接続要求パケットで指定されるまで
発生しない。認証性、暗号化(保護された認証性、機密性、および保全性)、お
よびユーザ・パスワードを、ネゴシエーション中に提供することができる。
【0036】 第3の態様では、第1コンピュータ・アプリケーションから第2コンピュータ
・アプリケーションにメッセージを通信する方法であって、第1アプリケーショ
ンまたは第2アプリケーションもしくはその両方が、上で述べた本発明の第1ま
たは第2の態様で定義されるプロトコルに対する属性を宣言する、方法が提供さ
れる。
【0037】 属性は、アプリケーションの特性であり、アプリケーションがサポートできる
特徴である。すべての属性が、オプションに直接に関連するわけではないが、プ
ロトコルでは、オプションに関連するこれらの宣言された属性を、関連するオプ
ションをネゴシエートするための指示として扱うことができる。
【0038】 好ましい実施形態では、第1アプリケーションまたは第2アプリケーションも
しくはその両方が、属性を宣言する。その後、関連するオプションが、プロトコ
ルを介してネゴシエートされる。最終チェックとして、アプリケーション属性に
従うために、ネゴシエーション結果を検証する。
【0039】 「属性」と「オプション」を区別することが重要である。オプションは、プロ
トコルに属し、ネゴシエートされ、一意のオプション識別子を与えられ、オプシ
ョン仕様として文書化される。オプションは、ネゴシエートすることができる選
択肢を表す。その一方で、属性は、アプリケーションに属し、アプリケーション
の特性である。属性は、オプション・ネゴシエーションを生成し、ネゴシエーシ
ョンの結果の突合せを可能にするために宣言される。属性は、アプリケーション
がサポートすることに合意する特性である。
【0040】 もう1つの態様では、アプリケーション、サービス、接続、またはメッセージ
のアドレスの一部として名前を割り当て、又は、使用する方法であって、メッセ
ージが、前記方法のいずれかを使用して通信される方法がある。もう1つの態様
では、上の発明的方法のいずれかを使用して標準APIを確立する方法がある。
【0041】 本発明のプロトコルは、英国のGlobal Financial Netw
orks Limited社によって開発されたRACE Protocolに
よって例示される。このプロトコルを、以下の「発明の詳述」でさらに説明する
。RACEは、メッセージを転送する際のアプリケーション通信と接続性を扱う
【0042】 もう1つの態様では、上の発明的方法のいずれかを使用するアプリケーション
統合の方法が提供される。ポリシ、アダプタ、およびエージェントも、上述の方
法のいずれかを使用して追加することができる。技術用語「アプリケーション統
合」、「ポリシ」、「アダプタ」、および「エージェント」を以下に定義する。
【0043】 アプリケーション統合とは、データ、情報、ワークフロー、およびプロセスを
、制限なくアプリケーション間において共用することをいう。この規律には、通
信ミドルウェア(メッセージ指向ミドルウェア、メッセージングAPI、同期式
メッセージング、非同期式メッセージング、アプリケーション間通信、およびメ
ッセージングが含まれる)、データベース・ミドルウェア、およびシステム・ミ
ドルウェアなどの技術の組が含まれる。アプリケーション統合は、すべてのレベ
ル(たとえば、ビジネス/ユーザ、アプリケーション、API、トランスポート
/データ)で実行される。エンタープライズ・アプリケーション統合(EAI)
およびインターネット・アプリケーション統合(IAI)は、組織内および組織
間とインターネット上でのアプリケーション統合を説明する専門語である。アプ
リケーション統合内で、主要な目標は、アプリケーション・インターフェースを
、たとえば単純なput/get、send/receive、またはデータベ
ースのwrite/readに簡略化することである。アプリケーション・イン
ターフェースを簡略化することによって、アプリケーションの統合が簡単になり
、統合をより早く行える。もう1つの主要な目標は、アプリケーションをそのメ
ッセージングから疎に結合(または分離)することである。アプリケーション・
インターフェースを簡略化し、分離することによって、以前にはアプリケーショ
ン内にあった機能性を、アプリケーションの外部に移動することができる。アプ
リケーションの外部に移された機能性は、より簡単に変更でき、有用品として提
供することができる。
【0044】 ポリシとは、基礎となる機能(この場合にはアプリケーション間通信)を駆動
するための、アプリケーションの外部に存在する定義である。ポリシは、アプリ
ケーションを変更せずに定義し、変更することができる。ポリシでは、セキュリ
ティなど、機能に影響するが、アプリケーションが知る必要がない特徴が導入さ
れる。
【0045】 アダプタとは、2つの非互換アプリケーション・インターフェースの間の接続
性、変換、および翻訳を提供する、ソフトウェア・コンポーネントである。たと
えば、Global Financial Networks Limited
社は、異なるCBTインターフェース、MQM/MBシステム、API、および
プロトコルの間でメッセージを交換するアダプタを作成する。あるアダプタが、
RACEとLogica社のCBTの間で話すことになる。もう1つのアダプタ
が、RACEとSWIFT自体のCBTのうちの1つとの間で話すことになる。
この場合、アプリケーションは、RACEを使って、Logica社の製品また
はSWIFT製品のいずれかと話すことができる。その代わりに、第3のアダプ
タによって、アプリケーションがいずれかと話すことができる。アダプタは、既
製品または1個限り(注文品)とすることができる。人々は即座の接続を求める
ので、アダプタが有用品になればなるほどよい。アダプタは、使い易さおよび管
理しやすさのために、RACE Services(RACE Service
sの注釈については、「発明の詳述」を参照されたい)などの共通の環境を必要
とする。アダプタは(ほとんどの他のメッセージング製品と同様に)、安全で信
頼性があるものでなければならない。RACEプロトコルを用いると、アダプタ
およびRACEアプリケーションを、シームレスにプラグインすることすなわち
、プラグアンドプレイが可能になる。
【0046】 エージェントとは、アダプタと同様に、アプリケーションの外部で機能性を追
加するソフトウェア・コンポーネントである。たとえば、セキュリティ・アルゴ
リズム、ディレクトリ・サービスなどである。やはり、エージェントは、使い易
さおよび管理しやすさのために、RACE APIおよびRACE Servi
cesなどの共通の環境を必要とする。
【0047】 本発明の最後の態様では、本発明の方法を実行するようにプログラムされたコ
ンピュータ・ハードウェア装置、コンピュータ・ハードウェアが本発明の方法を
実行できるようにするソフトウェアを用いてプログラムされた記憶媒体、および
本発明の方法を使用するかこれに頼って交換されるアプリケーション・メッセー
ジが提供される。
【0048】 [発明の詳述] 本発明を、英国のGlobal Financial Networks L
imited社によって開発され、配布され、実施を許諾される、RACE P
rotocolと称する実施形態に関してさらに説明する。RACEは、Glo
bal Financial Networks Limited社の商標であ
り、Rapid Application Communication an
d Emulationの頭字語である。RACEは、アプリケーション・メッ
セージの転送、メッセージング・インターフェース間の適合、アプリケーション
の結合/分離、アプリケーション統合の支援、相互運用性の使用可能化、および
メッセージングおよびe−commerceの本質的な標準規格の提供のために
、コンピュータ・システム間の通信の共通言語となるように設計されている。
【0049】 RACEは、アプリケーションが互いに通信し、メッセージを渡す方法を標準
化する、アプリケーション間通信プロトコルである。RACEは、インターネッ
トおよび企業ネットワーク用に設計されているが、原則として、どのネットワー
ク上でも使用することができる。付録1に、RACEのより詳細な扱いを示す、
ソフトウェア開発者用のRace Protocol Specificati
on Version 1.1(草案)を示す。
【0050】 RACEの長所は、この頭字語を詳細に検討することによって要約することが
できる。RACEは、開発者がすばやくアプリケーションを統合できるようにし
、メッセージを極端にすばやく転送できるようにするので、「Rapid」(高
速)である。語「Application」(アプリケーション)が使用されて
いるのは、RACEが、アプリケーション間のプロトコルであり、アプリケーシ
ョン・メッセージの転送を扱うからである。「Communication」(
通信)が使用されているのは、RACEが通信プロトコルであるからである。「
Emulation」(エミュレーション)が適用されるのは、RACEを用い
てアプリケーションをエミュレートできるからである。RACEは、現代のコン
ピュータ・システムが簡単に利用することができる。[発明の実施の形態]で定
義される、ネゴシエートされるオプションによって、アプリケーションから独立
の、安全で信頼性があり高速のメッセージングが可能になる。ネゴシエートされ
るオプションを用いて、RACEが、他のすべてのメッセージ転送プロトコルを
肩代わりすることができる、先例のない機能の組を提供することができる。
【0051】 [RACE:TELNETとの比較] RACEは、周知のインターネット・プロトコルであるTELNETに表面上
類似する部分がある。ルータおよびプリンタなどの専用装置を含むコンピュータ
・システムの大多数がTELNETを利用する。TELNETは、端末をエミュ
レートできるようにする汎用プロトコルである。コンピューティングの初期の時
代には、メインフレーム・コンピュータに多数の物理的な端末が接続されていた
。現在、TELNETが物理的接続を置換し、リモート・アクセスを提供するの
に幅広く使用されている。TELNETによって、端末が端末と通信すること、
コンピュータがコンピュータに通信することも可能になる。しかし、TELNE
Tには、メッセージの先頭と末尾を定義するのに本質的に必要な境界の概念が含
まれないので、TELNETを使用してメッセージをすばやく通信することはで
きない。
【0052】 TELNETとRACEは、いくつかの概念的な類似性を共有する。両者は、
たとえば、そのプロトコルが行えることの「基本プロトコル」を前提としている
。TELNETの場合、基本プロトコルは、限られた文字セットを用いた仮想端
末からの通信である。RACEの場合、基本プロトコルは、本明細書で前に説明
した接続および基本オプション・ネゴシエーションである。単純な基本プロトコ
ルは、それを用いてほとんどのコンピュータ・システムで簡単な実装が可能にな
るので、非常に有利である。
【0053】 第2に、TELNETとRACEは、オプションをネゴシエートする方法が基
本プロトコルに組み込まれ、その結果、夫々のプロトコルを「動的に」拡張でき
るようになっている(すなわち、挙動を、プログラム作成時に固定するのではな
く、接続中に変更することができ、新しいアプリケーションを簡単に統合するこ
とができる)。RACEの場合、接続するアプリケーションが、あるオプション
を実行できる場合に、そのアプリケーションは、まず、他方のアプリケーション
がそのオプションをサポートするかどうかを尋ねる。そのアプリケーションは、
自由裁量のパラメータ値と共に「DO」及び/または「WILL」「オプション
」を送信する。「DO」は、オプションを要求するために送信される。「WIL
L」は、オプションを提供するために送信される。他方のアプリケーションは、
そのオプションをサポートしない場合に、それぞれ「WONT」及び/または「
DONT」「オプション」を応答する。そうでない場合には、自由裁量のパラメ
ータ値と共に「DO」及び/または「WILL」「オプション」を応答し、その
後、この2つのアプリケーションは、オプション仕様に応じて、そのオプション
を仮定するか、さらにネゴシエーションを行う。これは、あらゆるアプリケーシ
ョンが、非常に基本的な語彙を用いてRACE会話に参加できることを意味する
。その一方で、これは、ほとんどすべてのことを行うためにこのプロトコルを拡
張できることも意味する。実際、オプションで、基本プロトコルを否定すること
ができる。
【0054】 さらに、TELNETは、インターネット・コミュニティのために公表された
。TCP/IPなどの基礎となるインターネット・プロトコルが一般化するにつ
れて、TELNETも一般化した。RACEでは、同一の信頼性のある8ビット
TCPトランスポートを仮定することができ(実際にはすべての信頼性のあるト
ランスポートが適当であるが)、TELNETに似たInterpret−As
−Command(IAC:コマンドとして解釈される)文字を使用することが
できる(実際には特殊な区切り文字のプレフィックスに使用されるが)。RAC
Eは、インターネット・コミュニティの標準規格として公開することもできる。
【0055】 RACEは、TELNETと多くの重要な相違がある。RACEの目的は、ア
プリケーション・メッセージの転送であるが、TELNETの目的は、端末のエ
ミュレーションである。したがって、RACEは、デフォルトでパケットを使用
する単一方向バイナリ転送を提供するが、TELNETは、デフォルトで、パケ
ット境界のない、テキストおよび端末制御文字の両方向転送を提供する。RAC
Eがこの手法を採用するのは、追加の機能性の範囲を失わずに最初の実装を簡単
にするためである。
【0056】 RACEは、オプション・ネゴシエーションでも異なる。TELNETでは、
オプション・ネゴシエーションが対称であり、接続中のいつでも行うことができ
る。RACEでは、片側すなわち接続する側だけが、ネゴシエーションを開始す
ることができ、これは、会話の開始時においてのみ行うことができる。RACE
のオプション・ネゴシエーションに対する手法によって、接続する当事者の実装
がさらに簡単になる。というのは、ネゴシエーションをサポートする必要がない
からである。接続される当事者も、実装が簡単になる。というのは、ネゴシエー
ションが、基本プロトコル内の1点だけで発生するからである。その後、接続す
る当事者と接続される当事者の両者が、安定した機能セットを想定することがで
きる。さらに、接続される当事者は、WONTまたはDONTをサポートする必
要がない。というのは、接続する当事者が、デフォルトでWONTまたはDON
Tを開始できないからである。この手法によって、そうでなければかなりの考慮
とプログラミングによって防がなければならない無限ネゴシエーション・ループ
が回避される。オプション仕様でこれを否定することができ、したがって、この
手法では、接続中の任意の時点での対称ネゴシエーションが排除されない。RA
CEのオプション・ネゴシエーションは、より高速でもある。というのは、ネゴ
シエーション・パラメータが、ネゴシエーションの要求と共に含まれるからであ
る。TELNETでは、こうなっておらず、ネゴシエーション・パラメータが必
要な場合には、1ラウンド・トリップではなく2ラウンド・トリップが必要であ
る。
【0057】 TELNETによって端末をエミュレートできるのと同様に、RACEでは、
アプリケーションをエミュレートすることができる。アプリケーション・メッセ
ージ標準が確立された後に、アプリケーションを簡単にエミュレートすることが
できる。このエミュレーションは、新しい種類のアプリケーションすなわち、既
存のアプリケーションの間に入り、個々のアプリケーションまたは集合的なアプ
リケーションの価値を拡張でき、強化できるアプリケーションに取って代わられ
る。
【0058】 [RACEの他の特徴] RACEは、コネクション指向とコネクションレスの両方にすることができる
。接続する当事者が、MQMインフラストラクチャ(非同期式のコネクションレ
スである)に接続するのにRACEを使用するが、存在することが保証される(
たとえば、MQMと同一の計算機に常駐するので)場合には、MQMと同一のコ
ネクションレス特性を共有する。その一方で、接続する当事者が、ホスト・アプ
リケーションに直接に接続する場合には、コネクション指向になる(ストア・ア
ンド・フォワード・インフラストラクチャが不要になるので、実際に実装するコ
ストがはるかに安くなる)。
【0059】 RACEは、異なるメッセージ指向のミドルウェア技術およびシステムの間の
接続のための標準も提供する。現在(1998年時点)、RACEに似たプロト
コルを標準として使用するための唯一の代替案は、Candle社のRoma
BSP製品などの標準APIを使用することである。
【0060】 RACEを用いると、RACE接続の他方を変更せずに、アプリケーションお
よびアダプタのスワップ・インおよびスワップ・アウトを行えるようになる、す
なわち、アダプタ、アプリケーション、MQM、およびMBを、真の有用品にす
ることができる。Roma BSPの場合、コード(異なるMQMまたはMBに
接続するための)を、接続の他方に追加しなければならない。これは、アプリケ
ーションが、新しいMQMまたはMBシステムをサポートできるようになる前に
再コンパイルされリンクされる、または新しい実行時モジュールを追加するのい
ずれかが必要であることを意味する。
【0061】 さらに、RACEを用いると、TCP/IPで、割り当てられたTCP/UD
Pポート番号が可能になるように、階層化されたプロトコル、サービス、および
アプリケーションの割り当てられた名前も可能になる。
【0062】 RACEは、インターネットおよび企業ネットワーク上でe−commerc
eを行うのに使用できるのと同様に、SWIFT Net Link(SNL)
の有無を問わずに、新しいSWIFTネットワークと直接に通信し、その上で通
信する方法も提供することができる。
【0063】 [RACEのオプションの一部の説明] RACEでは、オプションが、オプション番号によって一意に識別される。オ
プションの番号付けによって、最初のRACEプロトコル・リリースまたはRA
CE Specificationの一部ではない、将来の番号付けまたは実験
的番号付けが可能になる。
【0064】 NOREPLY:応答を返し、待ち、解釈しなければならない場合の基本プロ
トコルの挙動を否定する。これによって、このプロトコルが、(i)アプリケー
ションが、アプリケーション・レベルで肯定応答/応答/同期化を処理する場合
、または(ii)アプリケーションが、メッセージを発し、メッセージがそこに
到着し、解釈されるかどうかを忘れる/無視する場合のいずれかの異なるアプリ
ケーションに役立つようになる。
【0065】 WINDOW:これは、アプリケーション間のメッセージの伝送を高速化する
のに使用される技法である。応答が必要な場合には、通常は、アプリケーション
は、次のメッセージを送る前に、応答を待つ。ウィンドウイングを使用すること
によって、メッセージ応答を待たずに複数のメッセージを送ることができる。し
たがって、未解決のメッセージのウィンドウがある。これによって、はるかによ
い性能が与えられるが、1)リンクに障害が発生した場合に、未解決のメッセー
ジのすべてを送りなおし、調停しなければならず、2)送信する側でのプログラ
ムが複雑になる。すなわち、送信するプログラムが、送信したものと未解決の応
答を記憶しなければならない。
【0066】 LGRP:LGRPとは、「logical grouping」(論理グル
ープ化)である。これは、単一の作業単位として扱われなければならない、すな
わち、全体として処理される、複数のメッセージを識別する方法である。これは
、1)バッチ指向アプリケーションからのメッセージのバッチの処理、2)トラ
ンザクションを全体として完了するためにトランザクションのすべての部分(メ
ッセージ)を完了しなければならないトランザクションのために重要である。ト
ランザクションの一部が失敗する場合には、トランザクション全体が失敗し、行
われたことがロール・バックされる。
【0067】 追加オプションには、MODE、SEQNO、PDE、RREF、LGIAU
TH、MSGAUTH、MSGLEN、BATCH、NOM、およびBIGFO
OTが含まれる。将来のオプションに、暗号化、圧縮、get/put、ポーリ
ング、メッセージおよびファイルのブロック転送、およびアタッチメントのオプ
ションを含めることができる。
【0068】 RACEオプションの総合的な説明については、付録1を参照されたい。
【0069】 また、RACE APIを用いると、ポリシおよびエージェントによってアプ
リケーション属性およびネゴシエーションを指示することができる。
【0070】 [RACE API] RACE APIは、Global Financial Networks Limited社のRACE Protocolの実装である。RACE A
PIは、開発者のためのRACE Protocolへのアクセスを提供し、す
ばやくポータブルなアプリケーション統合を容易にする。
【0071】 RACE APIは、アプリケーション属性という概念を導入するのでユニー
クである。各アプリケーションは、サポートすることに合意する属性を宣言する
。デフォルトで、これらの属性は、RACE Protocolの「基本プロト
コル」に近い。RACE APIでは、RACE Protocolオプション
をネゴシエート(RACEパートナーと)して、属性に互換性があるかどうかを
調べる。そうである場合には、接続が確立され、アプリケーションが、どの属性
が合意されたかを調べることができる。そうでない場合には、接続がクローズさ
れる。RACE APIでは、ポータブルで極端に柔軟な独自のアプリケーショ
ン・プログラム・インターフェース(API)も提供される。
【0072】 したがって、RACE APIは、デフォルトとして、次のように動作する。 a)アプリケーションにその属性を宣言させ、 b)それに従ってプロトコル・オプションをネゴシエートし、 c)ネゴシエーション結果がアプリケーション属性と一致するかどうかを検
査する。
【0073】 たとえば、接続するアプリケーション(DTE)が以下の属性、NOREPL
Y_OFF、MODE_OUTPUT、PDE_ON、およびPDE_OFFを
宣言する。この場合、RACE APIは、NOREPLYをネゴシエートしな
い。というのは、応答が基本プロトコルに含まれる(すなわち、デフォルトで仮
定される)からである。RACE APIは、パラメータOUTPUTのMOD
Eを提案し、継続するためにはそれを突き合わせなければならない。RACE
APIは、PDEを提案し、PDEが合意されるか否かに関係なく継続する(ア
プリケーションがPDEおよびPDEなしをサポートするので)。APIの第1
の実施形態では、アプリケーションがこのデフォルトを上書きすることができる
。これは、他のプロトコルへのマッピングのために重要である。また、第1のオ
プションが失敗した場合に第2、第3などのオプションをネゴシエートするため
に、アプリケーションがネゴシエーション中に仲裁できるようにすることが必要
になる場合がある。
【0074】 属性がオプションに関連する必要はない。たとえば、「MODE contr
ol」をとりあげる。この属性は、MODE_INPUT、MODE_OUTP
UT、およびMODE_BOTHであり、アプリケーションは、そのうちの1つ
または複数を宣言することができる。オプションは、MODEであり、属性MO
DE_OUTPUTおよびMODE_BOTHのみについてネゴシエートされる
。また、アプリケーションがMODE_INPUTをサポートしない場合に、そ
のアプリケーションが基本プロトコルのMODE制御をサポートしない(まった
く正常である)ことに留意されたい。セキュリティのために、アプリケーション
は、属性SECURE_ONおよびSECURE_OFFを使用することができ
る。セキュリティが必要な場合には、SECURE_ONを宣言する。そうでな
い場合には、SECURE_OFFを宣言する。どちらでも構わない場合には、
SECURE_ONとSECURE_OFFの両方を宣言する。これがネゴシエ
ートされる場合には、RACE APIが、まず最高レベルのセキュリティを選
び、下位レベルへ進む。これには、複数のオプションのネゴシエーションを含め
ることができる。
【0075】 [RACE Connect] RACE Connectは、Global Financial Netw
orks Limited社のRACE Protocol用のソフトウェア開
発キット(SDK)である。このSDKには、RACE APIが含まれる。
【0076】 [RACE Servicesおよびアダプタ] RACE Servicesは、Global Financial Net
works Limited社のエンドユーザ用ソフトウェア製品である。RA
CE Servicesは、ポリシ、ネーミング、セキュリティ、エージェント
、およびアダプタ(Global Financial Networks L
imited社およびサード・パーティからの)を管理する統合フレームワーク
を提供する。RACE Servicesを用いると、アプリケーションをすば
やく展開し、エンタープライズ・レベルでリンケージを中央からリモート管理す
ることができる。Global Financial Networks Li
mited社は、MQSeriesおよびMSMQなどの企業メッセージング・
ストラクチャとバッチ通信と対話型通信の間で切り替えられるようにするための
既製品のアダプタを提供する予定である。アダプタ製品は、RACE技術に基づ
いて作成される。RACEによって、アダプタが、自然に、類似するストア・ア
ンド・フォワード解決策より高速になり、プラグアンドプレイが促進される。
【0077】 [付録1] RACE Protocol Specification Version 1.1(草案) GLOBAL FINANCIAL NETWORKS LIMITED www.gfn.co.uk 英国ハーペンデン 電話:+44 (0)1582 467 486 [著作権] Copyright(C)Global Financial Networ
ks Limited,1999。全権留保。この刊行物のどの部分も、Glo
bal Financial Networks Limited社の書面によ
る事前の許可のない、複写または複製、あらゆる方法または形態または媒体上で
の他の人物への販売または転送を禁止する。
【0078】 [機密性] この刊行物には、Global Financial Networks L
imited社からの所有情報が含まれる。受取人は、Global Fina
ncial Networks Limited社からの書面による許可なくこ
の情報を第三者に開示してはならない。
【0079】 [否認] Global Financial Networks Limited社は
、内容の正確さを保証するために全力を尽くすが、Global Financ
ial Networks Limited社は、この文書に現れる可能性があ
る故意でない誤りまたは脱落について責任を負わない。
【0080】 [概要] 1.01 序 Rapid Application Communication and
Emulation(RACE)Protocolは、アプリケーション間通
信および相互運用性に関する標準規格である。このプロトコルの意図は、共通の
インターフェースを提供し、汎用のアプリケーション間メッセージ転送を容易に
することである。
【0081】 RACE Protocolは、アプリケーションを接続し、メッセージを転
送する、単純で拡張可能な効率的な方法を提供する。アプリケーションは、基本
プロトコルを仮定し、通信中にプロトコルを変更するためにプロトコル・オプシ
ョンをネゴシエートすることができる。実装が単純であり、必要だけに基づくの
で、アプリケーションを簡単に統合することができる。このプロトコルは開放型
なので、あらゆる複雑な通信要件をサポートすることができる。たとえば、この
プロトコルは、保護されたデータ伝送、ウィンドウイング、データ圧縮などをサ
ポートすることができる。単純なプロトコル・オプションを組み合わせることに
よって、RACEは、強力な機能を使用可能にする。このプロトコルは、効率的
であり、最大の転送速度を達成することができる。
【0082】 RACEは、アプリケーション・メッセージ標準を定義せず、アプリケーショ
ン・メッセージ・オブジェクトとインターフェースしない。すべてのバイナリ・
データと、したがって、アプリケーション・メッセージを、RACEを介して渡
すことができる。アプリケーション・レベルのプロトコルは、RACEの上で階
層化するかRACEにマッピングすることができ、RACEがメッセージ応答を
提供するか否かを選択できる。
【0083】 ネゴシエートされるオプションによって、プロトコル・マッピングが容易にな
り、そうでなければ非互換のアプリケーションが、共通のプロトコルに合意でき
るようになる。RACEにマッピングされた後に、プロトコルは、アプリケーシ
ョンが簡単に話すことができ、他のプロトコルにマッピングすることができる。
アプリケーションをそのメッセージングから分離することによって、RACEは
、複数のプロトコルおよび複数のアプリケーション・インターフェースへの単一
のゲートウェイを提供する。通信は、どのアプリケーションも変更せずに変更す
ることができる。
【0084】 RACEは、アプリケーションの置換およびエミュレーションを援助する。メ
ッセージ構文が定義された後に、アプリケーションを置換し、エミュレートする
ことができる。RACEは、メッセージ変換自体を実行するのではなく、メッセ
ージング・アプリケーションおよびアダプタを有用品として使用できるようにす
る。RACEの手法は、標準のアプリケーション・プログラミング・インターフ
ェース(API)だけを使用しては達成できない「プラグアンドプレイ」を与え
る。
【0085】 RACEは、XMLと共に、e−commerceおよびアプリケーション統
合の基礎の標準を提供する。RACEは、企業ネットワークおよびインターネッ
ト上で良好に動作し、現在のSMTPメールおよびHTTPシステムが提供しな
い種類の柔軟性およびスループットを与える。
【0086】 [動機づけ] 現在、アプリケーション間通信の標準はない。
【0087】 メッセージングは、桁はずれに成長し、メッセージング・ミドルウェアは、現
在は主要な技術として受け入れられている。同期式の「put」サービスおよび
「get」サービスを提供するメッセージ・キューイング・ミドルウェア(MQ
M)が、ありふれたものになってきた。たとえば、IBM社のMQSeries
およびMicrosoft Message Queue(MSMQ)である。
メッセージ・ブローカリング(MB)システムは、多数あり、ルーティング、ワ
ークフロー管理、およびデータ・マッピングの役割をレガシ・アプリケーション
から引き継ぎ始めている。ミドルウェアの役割が変化し、完全に新しい手法への
道が開かれた。メッセージングの成長は、自動化、グローバライゼーション、e
−commerce、およびリアルタイム清算の必要によって駆り立てられる。
【0088】 アプリケーション間通信の標準化に対する必要が明らかにある。互いに通信す
る必要があるアプリケーションの数が、劇的に増加し、統合作業が、制御できな
くなりつつある。MQMシステムおよびMBシステムの展開によって、それらの
システムが解決すると思われたものと同数の統合問題が生じる。1つのメッセー
ジング・ミドルウェア解決策だけでは不十分であることは明白である。顧客は、
統合のコストと遅れにいらいらし、だまされたと感じることもしばしばである。
顧客は、一緒に即座に機能することができ、有用品のように使用することができ
るインターオペラブルなアプリケーションを求めている。
【0089】 MQMシステムおよびMBシステムは、アプリケーション間通信の標準を提供
できない。というのは、これらが、独自であり、高価なストア・アンド・フォワ
ード・インフラストラクチャを必要とするからである。メッセージ・キューイン
グ・システムは、キューイングに必要であるが、接続性の標準ではない。既製の
アプリケーションは、すべてのシステムをサポートすることができず、ユーザが
、単一のシステムを採用すると期待することはできない。組織は、互いに合併し
、通信することを必要とする。MQMシステムおよびMBシステムは、互いに通
信することを必要とする。直接アプリケーション通信が十分である時には、第3
のシステムを使用することが非現実的であることがしばしばである。
【0090】 標準化団体が、これらの問題に対処するために形成されたが、決定的な勧告を
期待するには早すぎる。採用されている一般的な手法は、アプリケーション・プ
ログラミング・インターフェース(API)を標準化することであるが、これは
、意味をなすが、「プラグアンドプレイ」解決策を提供しない。「put」AP
Iおよび「get」APIは、必ずしも「send」および「receive」
に向いてはいない。アプリケーションが、異なる形で通信できるようになる前に
、実行時ライブラリをインストールし、テストする必要がある。場合によっては
、アプリケーションをもう一度コンパイルし、リンクする必要がある場合がある
。また、標準APIは、異なるプログラミング言語およびコンピューティング・
プラットフォームで変化する。
【0091】 必要なものは、共通のAPIのほかに、共通のプロトコル(RACE)である
。プロトコルは、APIに似て、オープンで標準的とすることができる仕様であ
る。これには、実装のためのストア・アンド・フォワードのコストが含まれない
。標準プロトコルを用いると、アプリケーションが、そのアプリケーション自体
を変更せずに新しいアプリケーションと通信できるようになる。単純なプロトコ
ルによって、多数による簡単な実装が可能になる。柔軟なプロトコルによって、
他のプロトコルおよびメッセージング・アダプタとの相互運用性が促進される。
【0092】 既存のプロトコルは、オープンなメッセージング用に設計されておらず、適切
でない。リモート・プロシージャ呼出し(RPC)プロトコルは、リモート・プ
ロシージャの呼出しのために企図され、これによって、アプリケーションを分散
することができる。RPCは、よいアプリケーション通信プロトコルであるが、
ネゴシエーションを行う基本的な能力が欠けている。TELNETプロトコルは
、ネゴシエーションを行うが、完全に異なる目的すなわち、専用端末の置換およ
びエミュレーションのために設計されている。TELNETには、メッセージと
いう概念がない。オブジェクトの定義および内容を扱う他のプロトコルは、階層
化された機能であり、一塊にされた標準ではない。
【0093】 最後に、分析家は、一部のアプリケーションが、同期式メッセージング(プロ
トコルを使用するコネクション指向メッセージング)ではなく非同期式メッセー
ジング(MQMを使用するコネクションレス・メッセージング)を必要とすると
信じることがしばしばである。非同期式メッセージングでは、ストア・アンド・
フォワードが用いられ、したがって、ネットワークおよびネットワーク・パート
ナが使用可能でないかどうかに関係ない。その一方で、同期式メッセージングは
、ネットワーク接続とパートナがあることを必要とする。しかし、プロトコルは
、その使用に応じて、非同期式と同期式の両方にすることができる。たとえば、
プロトコルが、MQM(ローカル・システム上)との直接通信に使用される場合
には、メッセージングは非同期式であるが、アプリケーションを変更せずに簡単
に同期式にすることができる。ソフトウェア・コンポーネント間の通信にプロト
コルを使用することは、プロシージャ呼出しの使用と比較して、ディスク・アク
セスを伴う時に、大きな性能低下がないので、効率的である。
【0094】 [一般的な考慮事項] RACE Protocolは、通常は、伝送制御プロトコル(TCP)接続
として実施されるが、あらゆる類似するデータ・トランスポート上で使用するこ
とができる。RACEでは、信頼性のある両方向非同期8ビット順序付きバイト
・ストリームを仮定する。TCPのUrgentデータは使用しない。TCP使
用について、割り当てられるポート番号が、そのうちに必要になる。
【0095】 RACEは、2つのアプリケーションの間の通信プロトコルである。TCPを
使用するRACE接続を形成するために、データ端末装置(DTE)と称する1
つのアプリケーションが、データ通信機器(DCE)と称する第2のアプリケー
ションへの接続を開始し、このDCEは、割り当てられたポートをリスンする。
DTE(接続するアプリケーション)およびDCE(リスンするアプリケーショ
ン)は、どのコンピュータ・システムでも、同一のコンピュータにも常駐するこ
とができる。DTEおよびDCEは、同一のアプリケーションとすることができ
る。DTEアプリケーションおよびDCEアプリケーションが常駐するコンピュ
ータ・システムを、それぞれDTEホストおよびDCEホストと称する。
【0096】 実際には、DCEホストが、単一のTCPポート上で複数のDCEアプリケー
ションをサービスすることができる。この場合、DCEホスト上に、デーモンま
たはサーバ・プログラムが必要である。RACEプロトコルは、異なるDCEア
プリケーションの間のこの種の並行性に向いているが、デーモンの実装およびデ
ーモンとアプリケーションの間のインターフェースの定義は、この文書の範囲外
である。規約によって、DCEデーモンをRACEDと呼ぶ。
【0097】 TCPを介して接続された後に、DTEアプリケーションおよびDCEアプリ
ケーションは、基本プロトコルを仮定する。基本プロトコルでは、接続、プロト
コル・オプションのネゴシエーション、基本的なメッセージ転送、および切断が
可能である。基本プロトコルは、RACEをそこなわずに単純である。
【0098】 基本プロトコルから離れるために、DTEは、1つまたは複数のプロトコル・
オプションのネゴシエーションを開始することができる。これによって、実際の
プロトコルを実行時に合意することができ、プラグアンドプレイが与えられる。
各プロトコル・オプションは、文書化され、一意の番号を割り当てられる。一部
のプロトコル・オプションでは、異なる値および使用法をネゴシエートするため
にパラメータが使用される。
【0099】 RACEでは、単純さのためおよび無限ネゴシエーション・ループを回避する
ために、片側ネゴシエーションを採用する。RACEでは、パラメータ・データ
を初期ネゴシエーション・シーケンスに含めることができ、その結果、通常は1
ラウンド・トリップだけが必要になる。RACEでは、当初は、ネゴシエーショ
ンがセッションの開始時に制限され、その結果、メッセージ転送が一定になる。
DTEまたはDCEのいずれかが、ネゴシエーション結果に合意しない場合には
、そのDTEまたはDCEは、メッセージ転送に入る前に切断することができる
【0100】 RACEでは、可変長パケットを使用してデータおよび制御情報を転送する。
これらのパケットは、効率的な伝送のために設計され、単純な形で組み立て、解
釈することができる。
【0101】 RACEは、階層化されたプロトコルおよびアプリケーションに関する名前の
割当を容易にする。名前は、1文字から64文字までであり、これによって、ネ
ーミングに関してTCPポート番号よりはるかに広い範囲が与えられる。
【0102】 [基本プロトコル] [ダイアログ] デフォルトで、RACEは単一方向メッセージ転送プロトコルである。片側が
DTEであり、もう一方がDCEである。メッセージは、DTEによって準備さ
れ、解釈のためにDCEに転送される。 このプロトコルでは、5つの別個のフェーズが使用される。
【0103】 フェーズ1:接続 TCP接続の後に、DTEが、ターゲットDCEのサービスおよびアプリケー
ションを選択するためにCONNECTを送信する。DCEが接続を受け入れる
ことができる場合には、DCEはREADYを応答する。そうでない場合には、
DCEはDISCONNECTを応答し、これによって、終了の理由(APPN
OTAVA、APPBUSYなど)を示す。
【0104】 DCEがDISCONNECTを応答した場合には、DCEとDTEは、対応
するDISCONNECTがDTEから期待されないので、リンクをクローズし
なければならない。
【0105】 フェーズ2:オプション・ネゴシエーション DCEが接続を受け入れた後に、DTEの優先順序で、プロトコル・オプショ
ンをネゴシエートする。DTEが、ネゴシエートされるプロトコル・オプション
を全く有しない場合には、DTEは、ネゴシエーション・フェーズを完全にスキ
ップすることができる。
【0106】 サポートされるオプションのそれぞれについて、DTEは、オプション仕様に
応じて、オプションの提供、オプションの要求、または提供と要求の両方のいず
れかを行うことができる。オプションを提供するためには、DTEがWILLを
送信する。DCEが、DTEが指定されたオプションを実行することを望む場合
には、DCEはDOを応答する。そうでない場合には、DONTを応答する。オ
プションを要求するためには、DTEがDOを送信する。DCEが指定されたオ
プションを実行できる場合には、DCEはWILLを応答する。そうでない場合
には、DCEはWONTを返す。
【0107】 DCEは、プロトコル・オプションをサポートしない場合に、DONT/WO
NTを応答するだけでよい。
【0108】 オプション・パラメータが必要な場合には、オプション仕様に従って、DO/
WILLにオプション・パラメータを含める。オプションが合意された後に、オ
プション仕様に従って、HERE−ISを使用してさらにネゴシエートすること
ができる。
【0109】 DTEは、DCEからの対応するDO/DONT/WILL/WONT/HE
RE−ISパケットを待たずに、複数のDO/WILL/HERE−ISパケッ
トを送信することができる。しかし、一部のオプションが他のオプションに依存
するので、DTEは、ネゴシエーションの順序について注意しなければならない
。DTEは、オプションで別途指定されない限り、サポートされるオプションの
それぞれについて1つのDO/WILLパケットだけを送信しなければならない
【0110】 ネゴシエーションは、DTEが各DO/WILL要求に対するDO/WILL
/DONT/WONT応答を受信し、追加のネゴシエーションが完了した後に完
了する。
【0111】 フェーズ3:READY、READY ネゴシエーションを終了し、メッセージ転送に入るために、DTEは、REA
DYを送信する。DCEは、ネゴシエーションに満足している場合に、READ
Yを応答し、この2つが、メッセージ転送に入る。そうでなく、DCEが、RE
ADYの受信の後に進行を望まない場合には、DCEは、READYではなくD
ISCONNECTを応答し、これによって終了の理由(INSNEGOPT)
を示す。
【0112】 DTEが、ネゴシエーションの後に進行を望まない場合には、DTEは、RE
ADYではなくDISCONNECTを送信し、これによって終了の理由(IN
SNEGOPT)を示す。
【0113】 DCEまたはDTEがDISCONNECTを送信した場合に、DTEおよび
DCEは、対応するDISCONNECTが期待されないので、リンクをクロー
ズしなければならない。
【0114】 フェーズ4:メッセージ転送 転送されるメッセージのそれぞれについて、DTEは、MESSAGEを組み
立て、送信し、次のメッセージに進む前に、対応するMESSAGE−REPL
Yを待つ。DCEは、このメッセージを受け入れる場合に、肯定のMESSAG
E−REPLY(SUCCESS)を用いて応答する。そうでない場合には、D
CEは、否定のMESSAGE−REPLYを用いて応答し、理由の詳細(IN
VMSG、…)を示す。DCEは、入ってくるメッセージの一部またはすべてを
拒絶する場合であっても、それらのメッセージのサービスを継続する。DCEは
、メッセージを拒絶するのにMESSAGE−REPLYだけを使用しなければ
ならず、DISCONNECTを使用してはならない。
【0115】 認証失敗、リソース障害などの場合に、DCEが、DISCONNECTを送
信することによって接続を打ち切る必要がある場合がある。
【0116】 フェーズ5:シャットダウン ある点で、どちらかの当事者が、接続のクローズを望む。単一方向接続の場合
、「keep alive」タイマが有効でない限り、通常は、メッセージ送信
側が、そのメッセージを転送した後にこれを開始する。
【0117】 安全シャットダウンを達成するために、DTEまたはDCEのいずれかが、コ
ードSUCCESSと共にDISCONNECTを送信することができる。コー
ドSUCCESSと共にDISCONNECTを受信した時に、他方の当事者は
、その処理を完了し、コードSUCCESSと共に対応するDISCONNEC
Tを返さなければならない。第2のDISCONNECTの受信時またはこれの
送信の後に、リンクをクローズすることができる。
【0118】 DCEがシャットダウンを要求し、DISCONNECTが受信されていない
場合には、DCEは、適当な時間の間、メッセージの受け入れを継続し、応答を
返さなければならない。DTEが、メッセージ応答を待っている間にDISCO
NNECTを受信した場合には、DTEは、メッセージ応答を待ち続け、その後
に対応するDISCONNECTを送信しなければならない。DTEは、未解決
のメッセージ応答がない時に限ってシャットダウンを要求しなければならず、そ
の後に追加メッセージの送信に進んではならない。
【0119】 シャットダウン機構でパケットが導入され、基本プロトコルではDCEがこの
パケットを開始できることに留意されたい。さらに、DTEまたはDCEは、い
つでもDISCONNECTを使用して接続を打ち切ることができる。したがっ
て、DTEは、このイベントを処理する準備ができている必要がある。
【0120】 たとえば、基本的なセッションは次の通りである。 DTE DCE −−− −−− CONNECT("race$generic","TESTAPPL",)
→ ← READY() READY() → ← READY() MESSAGE("Hello World!") → ← MESSAGE−REPLY(SUCCESS) DISCONNECT(SUCCESS) → ← DISCONNECT(SUCCESS)
【0121】 たとえば、通常の両方向セッションは次の通りである。 DTE DCE −−− −−− CONNECT("race$generic","TESTAPPL",)
→ ← READY() DO(MODE,BIDIRECTIONAL) → ← WILL(MODE,BIDIRECTIONAL) WILL(WINDOW,3) → DO(WINDOW,3) → ← DONT(WINDOW) ← WONT(WINDOW) READY() → ← READY() MESSAGE("1ST CLIENT MSG") → ← MESSA
GE−REPLY(SUCCESS) MESSAGE("2ND CLIENT MSG") → ← MESSAGE("1ST HOST MSG") ← MESSAGE−REPLY(SUCCESS) MESSAGE−REPLY(SUCCESS) → DISCONNECT(SUCCESS) → ← MESSAGE("2
ND HOST MSG") MESSAGE−REPLY(SUCCESS) → ← DISCONNECT(SUCCESS)
【0122】 たとえば、DTEがオプション・ネゴシエーションを拒絶する。 DTE DCE −−− −−− CONNECT("race$generic","TESTAPPL",)
→ ← READY() DO(MODE,OUTPUT) → ← WONT(MODE) DISCONNECT(INSNEGOPT) →
【0123】 たとえば、DCEがオプション・ネゴシエーションを拒絶する。 DTE DCE −−− −−− CONNECT("race$generic","TESTAPPL",)
→ ← READY() READY() → ← DISCONNECT(INSNEGOPT)
【0124】 これらの例では、MODEプロトコル・オプションおよびWINDOWプロト
コル・オプションと両方向メッセージ転送が、基本プロトコルの一部でない。基
本プロトコルには、ネゴシエートする能力だけが含まれ、オプション自体または
それに関連するプロトコルは含まれない。
【0125】 タイムアウトまたはプロトコル・エラーなど、予期されないエラーの場合には
、プログラムは、可能であれば、エラーの詳細を示すためにDISCONNEC
Tを送信し、その後にリンクをクローズしなければならない。対応するDISC
ONNECTは、DISCONNECTにSUCCESSが含まれる時に、シャ
ットダウン・フェーズ中にのみ期待されるか送信される。対応するDISCON
NECTは、DISCONNECTにSUCCESSが含まれる場合であっても
、メッセージ転送が合意されていない場合には期待されない。
【0126】 [パケットの使用法] すべてのRACEパケットは、パケット・コードから始まり、パケットの終り
(EOP)シーケンスで終わる。パケット・コードは、単一のバイトであり、パ
ケットの先頭とパケット・タイプを示す。EOPシーケンスは、値255のIn
terpret−As−Command(IAC)バイトと、その後の値254
のEOPバイトからなる。例を示す。 <200><255><064>Hello World.<255><25
4> ここで、<200>は、パケットの先頭を示し、そのパケットをMESSAG
Eパケットとして識別する。「<255><064>Hello World.
」が、パケットの内容である。<255><254>は、パケットの終りを示す
【0127】 ほとんどのパケットは、個数が変化する可変長フィールドからなる。各フィー
ルドは、その前にプレフィックスとして2バイトのシーケンスが置かれ、もう1
つのフィールドのプレフィックスまたはEOPシーケンスのいずれかで終わる。
フィールド・プレフィックスは、IACバイトとその後のフィールド識別子から
なり、フィールド識別子のバイト値は、事前に定義され、両端を含む0から25
3までの範囲である。オプションのフィールドは省略することができる。フィー
ルドは、0の長さを有することができ、その場合には、フィールド・プレフィッ
クスだけが指定される。例を示す。 <192><255><031>race$generic<255><0
32>TESTAPPL<255><254> ここで、<192>は、パケットの先頭を示し、そのパケットをCONNEC
Tパケットとして識別する。<255><031>は、フィールド31の先頭を
示し、このフィールド31には、ターゲット・サービス識別子「race$ge
neric」が含まれる。<255><032>は、フィールド31の終りとフ
ィールド32の先頭を示し、このフィールド32には、ターゲット・アプリケー
ション名「TESTAPPL」が含まれる。<255><254>は、パケット
の終りとフィールド32の終りを示す。
【0128】 オプション・ネゴシエーション・パケット、DO/WILL/DONT/WO
NT/HERE−ISは、このフィールド・プレフィックス表記に従わない。そ
うではなくて、オプション・コードとオプション・パラメータが、位置によって
暗黙のうちに識別される。オプション・コードは、パケットの第2バイトであり
、オプション・パラメータは、含まれる時に、その直後(通常は第3バイト)で
あり、EOPシーケンスで終わる。例を示す。 <193><041><255><254>
【0129】 ここで、<193>はDOパケットを識別する。オプション・コード<041
>は、パケットの第2バイトである。存在する場合には、オプション・パラメー
タがオプション・コードに続くが、この例では、パラメータがない。
【0130】 パケット内では、データは、8ビット・バイナリ・データである。バイト25
5が使用される場合には、誤解釈を防ぐために二重にしなければならない。これ
は、オプション・ネゴシエーション・パケットと、フィールド・プレフィックス
表記を使用するパケットの両方にあてはまる。データ・バイト255を二重にす
ることによって、後続データが再編成され、パケット長が増える(送信中、解釈
の前)。例を示す。 <200><255><064>Data byte "<255><2
55>" must be doubled.<255><254>
【0131】 フィールドは、フィールド内またはオプション・ネゴシエーション・パラメー
タ内に埋め込むことができる。これを機能させるために、各サブフィールド・プ
レフィックスのIACバイトを二重にし、その結果、第1レベル・パーサが、そ
れをバイナリ・データとして扱えるようにしなければならない。実装の層ごとに
、各サブフィールド・プレフィックスのIACバイトを二重にしなければならな
い。下記を検討されたい。 <193><116> <255><255><031> <255><255><255><255><020>abcd <255><255><255><255><021>efgh <255><255><032>ijkl<255><254>
【0132】 ここで、<193>は、DOパケットを識別する。オプション・コードは、第
2バイト(116)であり、オプション・パラメータは、第3バイトから始まり
、EOPシーケンスまで続く。<255><255><031>は、第1パラメ
ータのサブフィールドを識別し、<255><255><032>は、第2パラ
メータのサブフィールドを識別する。第1パラメータのサブフィールド、フィー
ルド31には、<255><255><255><255><020>および<
255><255><255><255><021>によって識別される、もう
2つのサブフィールドが含まれる。フィールド31のこの2つのサブフィールド
、フィールド20および21には、それぞれ「abcd」および「efgh」が
含まれる。第2のパラメータ・サブフィールド、フィールド32には、「ijk
l」が含まれる。第1レベルで2つのIACバイトが使用され、第2レベルで4
つのIACバイトが使用されている形に留意されたい。この例は、有効なオプシ
ョン仕様に従っておらず、例示のためにのみ含まれる。
【0133】 RACEでは、最大パケット長が指示されない。MESSAGEパケットおよ
びMESSAGE−REPLYパケット(その長さはアプリケーション固有)を
除くすべてのパケットが、定義された最大長を有する。アプリケーションが最大
メッセージ長に合意するためのオプション仕様が、将来に立案される可能性があ
る。
【0134】 [サービス識別子およびアプリケーション識別子] CONNECTパケットには、ターゲット・サービス識別子およびターゲット
・アプリケーション識別子が含まれる。サービス識別子は、サービスのタイプを
識別し、アプリケーション識別子は、アプリケーション名またはサービス・イン
スタンスを識別する。
【0135】 プレフィックス「race$」が前に付くサービス識別子およびアプリケーシ
ョン名は、RACEプロトコルのために予約済みである。プレフィックス「$」
が前に付くサービス識別子およびアプリケーション名は、割り当てられた名前の
ために予約済みである。現在、次の1つのRACEサービスだけが定義されてい
る。
【0136】 race$generic−汎用メッセージング・アプリケーション 他のサービスが、将来に追加される可能性がある。将来のサービスは、異なる
基本プロトコルを仮定する可能性がある。
【0137】 [応答コードおよび切断コード] コード値は、情況情報を返すためにMESSAGE−REPLYおよびDIS
CONNECTで使用される。コードは、この文書の後で説明するように、符号
なしの短整数(unsigned short integer)(ネットワー
ク・バイト順)である。
【0138】 アプリケーションは、このプロトコルの将来のバージョンをサポートするため
に、まだ定義されていないコードを処理する準備ができていなければならない。
汎用ERRORコードを使用して、認識されないコードを記述することができる
【0139】 コードがSUCCESSの時には、性能を高めるためにそのコードをMESS
AGE−REPLYまたはDISCONNECTから省略することができる。省
略された場合には、SUCCESSが仮定される。たとえば、<201><25
5><254>は、<201><255><021><000><000><0
00><000><255><254>と同等である。
【0140】 [プロトコル・オプション] この章は、RACEプロトコル・オプション仕様が含まれる。
【0141】 Global Financial Networks Limited(G
FN)社が、現在、RACEプロトコル・オプションを保守している。新しいプ
ロトコル・オプションの勧告は、下記の電子メール・アドレスを使用してGFN
社に送信されなければならない。 race@gfn.co.uk すべての勧告は、正当に注意され、受け入れられる場合には、この文書の将来
のバージョンに組み込まれる。
【0142】 下記のプロトコル・オプションが定義済みである。 名前 コード 説明 MODE 33 メッセージ転送方向 NOREPLY 34 メッセージ応答なし WINDOW 37 メッセージ・ウィンドウ SEQNO 38 シーケンス番号付け PDE 53 可能な重複放出フラグ RREF 54 受信側参照 LGIAUTH 65 ログイン認証 MSGAUTH 66 メッセージ認証 LGRP 72 論理グループ化 MSGLEN 78 メッセージ長 BATCH 41 バッチ・ファイル転送 NOM 42 メッセージの数 BIGFOOT 82 ビッグ・コード番号付け
【0143】 近い将来に、以下のプロトコル・オプションが追加される予定である。 ・暗号化 ・データ圧縮 ・チェックサム計算 ・メッセージおよびファイルのゴーアヘッドを伴うポーリング ・メッセージおよびファイルのブロック転送
【0144】 3.01 MODE [メッセージ転送のモード] 識別 名前:MODE、コード=33 依存性: なし
【0145】 概要 MODEプロトコル・オプションによって、DCEからDTEへのメッセージ
の転送または両方向メッセージ転送が可能になる。デフォルトで、基本プロトコ
ルは、DTEからDCEへの単一方向メッセージ転送だけをサポートする。
【0146】 このオプションでは、メッセージ転送の方向を記述するために、下記の用語を
使用する。 − INPUT DTEからDCEへの一方向(デフォルト) − OUTPUT DCEからDTEへの一方向 − BIDIRECTIONAL 両方向(各方向が独立)
【0147】 OUTPUT(DCEからDTEへ)およびBIDIRECTIONALのメ
ッセージ転送は、INPUT(DTEからDCEへ)メッセージ転送に似ている
。メッセージ転送が合意された後に、合意されたモードに応じて、いずれかの当
事者が、メッセージを送信することができる。OUTPUTメッセージ転送の場
合、DCEおよびDTEが、メッセージ送受信の役割を切り替える。BIDIR
ECTIONALメッセージ転送の場合、各方向が独立に動作し、DCEとDT
Eの両方が、送信および受信を行うことができる。安全シャットダウンを達成す
るために、基本プロトコルの規則に従う必要がある。すなわち、送信側は、基本
プロトコルのDTEのように振る舞い、受信側は、基本プロトコルのDCEのよ
うに振る舞う。
【0148】 メッセージが誤った方向で受信される場合には、受信するアプリケーションが
、コードPRTCOLERRを用いて切断しなければならない。このオプション
は、メッセージ転送の方向に依存する他のプロトコル・オプションに影響する。
【0149】 [動機] アプリケーション間通信は、INPUTメッセージ転送だけではなく、OUT
PUTメッセージ転送およびBIDIRECTIONALメッセージ転送を必要
とすることがしばしばである。MODEプロトコル・オプションは、この機能性
をサポートするために基本プロトコルを拡張する。
【0150】 [ネゴシエーション] DTEおよびDCEは、1つまたは複数のモード(INPUT、OUTPUT
、またはBIDIRECTIONAL)をサポートすることができる。結果のモ
ードは、DTEの優先順序でサポートされるモードをネゴシエートすることによ
って得られる。当初は、INPUTが仮定される。その後、両者がネゴシエート
し、DCEによって最後に返されたモードが仮定される。
【0151】 DTEが、INPUTメッセージ転送だけをサポートする場合には、INPU
Tが仮定され、ネゴシエーションは行われない。
【0152】 DTEが、BIDIRECTIONALメッセージ転送を使用することを望む
場合には、DTEは、「DO MODE BIDIRECTIONAL」を送信
する。 <193><033><003><255><254> →
【0153】 DCEが、BIDIRECTIONALメッセージ転送をサポートする場合に
は、DCEは、「WILL MODE BIDIRECTIONAL」を応答し
、BIDIRECTIONALメッセージ転送が合意される。 ← <195><033><003><255><254>
【0154】 そうではなく、DCEがBIDIRECTIONALメッセージ転送をサポー
トしない場合には、DCEは、「WONT MODE」を応答し、INPUTメ
ッセージ転送が合意されたままになる。 ← <196><033><255><254>
【0155】 DTEまたはDCEが、BIDIRECTIONALメッセージ転送をサポー
トせず、DTEが、OUTPUTメッセージ転送を使用したい場合には、DTE
は、「DO MODE OUTPUT」を送信する。 <193><033><002><255><254> →
【0156】 DCEが、OUTPUTメッセージ転送をサポートする場合には、DCEは、
「WILL MODE OUTPUT」を応答し、OUTPUTメッセージ転送
が合意される。 ← <195><033><002><255><254>
【0157】 そうではなく、DCEが、OUTPUTメッセージ転送をサポートしない場合
には、DCEは、「WONT MODE」を応答し、INPUTメッセージ転送
が合意されたままになる。 ← <196><033><255><254>
【0158】 アプリケーションが結果のモードをサポートしない場合には、アプリケーショ
ンは、コードINSNEGOPTを使用して切断しなければならない。
【0159】 [パラメータ] {mode} モードは、メッセージ転送の方向を示す、符号なしのバイトである。可能な値
は、BIDIRECTIONALの3またはOUTPUTの2である。他の値は
、すべて無効である。
【0160】 例 DTEが、BIDIRECTIONAL、OUTPUT、およびINPUTを
サポートする。DCEが、OUTPUTをサポートする。両者は、OUTPUT
に合意する。 <193><033><003><255><254> → ← <196><033><255><254> <193><033><002><255><254> → ← <195><033><002><255><254>
【0161】 DTEが、OUTPUTをサポートする。DCEが、MODEオプションを理
解せず、INPUTだけをサポートする。両者は、INPUTに合意する。DT
Eは、その後、切断する。 <193><033><002><255><254> → ← <196><033><255><254>
【0162】 DTEが、BIDIRECTIONALをサポートする。DCEが、INPU
Tをサポートする。両者は、INPUTに合意する。DTEは、その後、切断す
る。 <193><033><003><255><254> → ← <196><033><255><254>
【0163】 DTEが、INPUTをサポートする。DCEが、BIDIRECTIONA
Lをサポートする。両者は、INPUTに合意する。DCEは、その後、切断す
る。 ネゴシエーションは行われない DTEは、通常、メッセージ転送のうちの1つの方向だけをサポートするので
、2つのネゴシエーションが必要になることは希である。
【0164】 3.02 NOREPLY 識別 名前:NOREPLY、コード=34 依存性:MODE
【0165】 概要 NOREPLYプロトコル・オプションによって、メッセージ応答がオフにな
る。基本プロトコルでは、送信されるすべてのMESSAGEについて、MES
SAGE−REPLYが期待される。このオプションが有効である時には、メッ
セージ応答が使用されない。
【0166】 このオプションは、すべてのモード(INPUT、OUTPUT、またはBI
DIRECTIONAL)と共に使用することができる。BIDIRECTIO
NALメッセージ転送の場合、アプリケーションは、アプリケーション・レベル
で同期化を提供することができる。INPUTメッセージ転送またはOUTPU
Tメッセージ転送の場合、アプリケーションは、発射し、忘れる。配送確認が不
要な場合には、RACEまたはアプリケーション・レベルの応答なしのメッセー
ジ転送が、効率的であるとわかる場合がある。
【0167】 アプリケーション・インターフェースをプログラミングする時には、注意が必
要である。というのは、アプリケーションが、使用可能なメッセージ・バッファ
の数を超えて読み取ることができないからである。使用可能なメッセージ・バッ
ファの数を超えた後には、アプリケーションは、パケット・ストリームの読取を
停止しなければならない。アプリケーションは、1つまたは複数のバッファが使
用可能になった時に、読取をもう一度開始することができる。また、DISCO
NNECTパケットが、パケット・ストリーム内で待っている可能性があること
に留意されたい。
【0168】 応答が使用不能にされているのにメッセージ応答を受信した場合には、受信す
るアプリケーションが、コードPRTCOLERRを用いて切断しなければなら
ない。このオプションは、メッセージ応答の存在に依存する他のプロトコル・オ
プションに影響する。MODEオプションは、NOREPLYオプションの前に
ネゴシエートされなければならない。
【0169】 [動機] 多くのアプリケーション・レベル・プロトコルで、アプリケーション固有の応
答が使用され、一部のアプリケーションは、メッセージを発射し、忘れる。MO
DEオプションとあいまって、このオプションは、RACEをさまざまなアプリ
ケーションおよびアプリケーション・レベル・プロトコルに拡張する。しかし、
選択肢が与えられる時には、RACEメッセージ応答なしでアプリケーション・
レベル・プロトコルをレイヤ化するのではなく、RACEメッセージ応答を用い
てアプリケーション・レベル・プロトコルをマッピングすることが好ましい。
【0170】 [ネゴシエーション] NOREPLYは、入力と出力のメッセージ転送について別々にネゴシエート
される。 DTEが、メッセージ応答を使用不能にしたい(入力ストリームについて)場
合には、DTEは、「DO NOREPLY」を送信する。 <193><034><255><254> → DCEが、メッセージ応答を使用不能にできる(入力ストリームについて)場
合には、DCEは、「WILL NOREPLY」を応答する。 ← <195><034><255><254> そうではなくて、DCEが、メッセージ応答を使用不能にすることができない
(入力ストリームについて)場合には、DCEは、「WONT NOREPLY
」を応答する。 ← <196><034><255><254> DCEが、メッセージ応答を使用不能にすることができる(出力ストリームに
ついて)場合には、DCEは、「WILL NOREPLY」を送信する。 <195><034><255><254> → DCEが、メッセージ応答を使用不能にしたい(出力ストリームについて)場
合には、DCEは、「DO NOREPLY」を応答する。 ← <193><034><255><254> そうではなくて、DCEが、メッセージ応答を使用不能にしたくない(出力ス
トリームについて)場合には、DCEは、「DONT NOREPLY」を応答
する。 ← <194><034><255><254>
【0171】 [パラメータ] なし 例 モードはBIDIRECTIONALである。DTEおよびDCEは、メッセ
ージ応答をオフにすることに合意する。 <193><034><255><254> → <195><034><255><254> → ← <195><034><255><254> ← <193><034><255><254>
【0172】 モードはBIDIRECTIONALである。DTEは、メッセージ応答をオ
フにすることを望むが、DCEはこれらを使用可能にする必要がある。メッセー
ジ応答は、入力ストリームについて使用不能にされ、出力ストリームについて使
用可能にされる。 <193><034><255><254> → <195><034><255><254> → ← <195><034><255><254> ← <194><034><255><254>
【0173】 3.03 WINDOW 識別 名前:WINDOW、コード=37 依存性:MODE、NOREPLY
【0174】 [概要] WINDOWプロトコル・オプションを用いると、メッセージ応答を待たずに
複数のメッセージを送信できるようになる。用語ウィンドウは、メッセージ応答
が受信されていない未解決のメッセージの数を指す。
【0175】 約3個の小さいウィンドウによって、性能が大幅に向上する。大きいウィンド
ウは、それほどの改善をもたらさない。1のウィンドウは、基本プロトコルのデ
フォルトの挙動を表す。
【0176】 応答が使用不能にされている場合には、このオプションは効果がない。リンク
に障害が発生した場合には、他方の当事者が、ウィンドウ内のメッセージのすべ
てを受信してはいない場合がある。
【0177】 [動機づけ] デフォルトで、次のメッセージを送信できるようになる前に、メッセージ応答
を受信しなければならない。これは時間の浪費になる。応答を受信する前に複数
のメッセージを準備し、送信することができるならば、データ転送がはるかに高
速になる。これによって、受信側がメッセージを処理し、その間に、1つまたは
複数のメッセージ応答が移動中である間に送信側がメッセージを準備し、送信す
ることができるようになる。
【0178】 [ネゴシエーション] WINDOWは、入力と出力のメッセージ転送について別々にネゴシエートさ
れる。
【0179】 DTEが、1を超えるウィンドウ・サイズを使用したい(入力ストリームにつ
いて)場合には、DTEは、「DO WINDOW」を送信し、所望のウィンド
ウ・サイズを指定する。 <193><037>{window−size}<255><254>
→ DCEが、ウィンドウイングをサポートする(入力ストリームについて)場合
には、DCEは、実際のウィンドウ・サイズと共に「WILL WINDOW」
を応答する。実際のウィンドウ・サイズは、要求されたウィンドウ・サイズ以下
でなければならない。 ← <195><037>{window−size}<255><254
> そうではなく、DCEが、1を超えるウィンドウをサポートしない(入力スト
リームについて)場合には、DCEは、「WONT WINDOW」を応答する
。 ← <196><037><255><254> DTEが、ウィンドウイングをサポートする(出力ストリームについて)場合
には、DTEは、その最大ウィンドウ・サイズと共に「WILL WINDOW
」を送信する。 <195><037>{window−size}<255><254>
→ DCEが、1を超えるウィンドウ・サイズを使用したい(出力ストリームにつ
いて)場合には、DCEは、実際のウィンドウ・サイズと共に「DO WIND
OW」を応答する。実際のウィンドウ・サイズは、申し出られたウィンドウ・サ
イズ以下でなければならない。 ← <193><037>{window−size}<255><254
> そうではなく、DCEが、ウィンドウイングを使用したくない(出力ストリー
ムについて)場合には、DCEは、「DONT WINDOW」を応答する。 ← <194><037><255><254> どちらかの当事者がウィンドウイングをサポートしない場合には、1のウィン
ドウ・サイズが仮定される(デフォルト)。
【0180】 [パラメータ] {window−size} ウィンドウ・サイズは、両端を含む1から127までの範囲の値を含む符号な
しのバイトである。この範囲の外の値は許容されない。
【0181】 [例] モードはINPUTである。DTEは、10の入力ウィンドウを望む。DCE
は、3の入力ウィンドウをサポートする。両者は、3の入力ウィンドウを使用す
ることに合意する。 <193><037><010><255><254> → ← <195><037><003><255><254> モードはOUTPUTである。DTEは、2の出力ウィンドウをサポートする
。DCEは、このオプションを理解せず、1の出力ウィンドウだけをサポートす
る。両者は、1の出力ウィンドウを使用することに合意する。 <195><037><002><255><254> → ← <194><037><255><254> モードはBIDIRECTIONALである。DTEは、3の入力ウィンドウ
および3の出力ウィンドウをサポートする。DCEは、2の入力ウィンドウおよ
び1の出力ウィンドウをサポートする。両者は、2の入力ウィンドウおよび1の
出力ウィンドウを使用することに合意する。 <193><037><003><255><254> → <195><037><003><255><254> → ← <195><037><002><255><254> ← <193><037><001><255><254> (ここでDO
NTを使用することもできる)
【0182】 3.04 SEQNO [シーケンス番号] 識別 名前:SEQNO、コード=38 依存性:MODE、NOREPLY
【0183】 [概要] シーケンス番号(SEQNO)プロトコル・オプションを用いると、メッセー
ジおよびメッセージ応答に、それらが送信された順序で番号を付けることができ
る。合意される場合に、送信する当事者は、送信されるすべてのメッセージに増
分シーケンス番号を含めなければならず、受信する当事者は、対応するメッセー
ジ応答のそれぞれに同一のシーケンス番号を含めなければならない。メッセージ
のシーケンス番号付けを検査するのは、メッセージ受信側の責任であり、メッセ
ージ応答のシーケンス番号付けを検査するのは、メッセージ送信側の責任である
【0184】 シーケンス番号の詳細を示すために、F10が、MESSAGEパケットおよ
びMESSAGE−REPLYパケットに含まれる。F10には、ネットワーク
・バイト順の符号なし短整数が含まれる。シーケンス番号は、新しい接続の開始
時に1から始まり、1つずつ増分され、65536に達した後に1にラップする
(すなわち、65536、131071、…が1になる)。0は、有効なシーケ
ンス番号ではない。データ・バイト255は、二重にしなければならない。各当
事者は、メッセージ転送の方向ごとに別のシーケンス番号カウンタを維持する。
例を示す。 <200><255><010><000><021><255><064
>MY MESSAGE<255><254> → ← <201><255><010><000><021><255><2
54>
【0185】 ここで、メッセージ番号および肯定のメッセージ応答は、シーケンス番号21
を有する。
【0186】 シーケンス番号は、接続中にメッセージおよびメッセージ応答のシーケンシン
グを検査することだけに使用される。送信後または受信時にメッセージと共にシ
ーケンス番号を保管する点はない。
【0187】 メッセージまたはメッセージ応答について無効なシーケンス番号に遭遇した場
合には、エラーを検出したアプリケーションが、コードINVSEQNOを用い
て切断しなければならない。
【0188】 [動機づけ] RACEでは信頼性のあるトランスポートが仮定されるので、シーケンス番号
付けは、一般に必要ではない。メッセージ応答は、メッセージが受信された順序
で返される。しかし、RACE接続がシーケンス番号付けをサポートすることが
要求または期待されることがしばしばある。したがって、このオプションによっ
てそれを可能にする。デフォルトで、シーケンス番号付けは、送信を効率的に保
つために、使用されない。
【0189】 [ネゴシエーション] DTEが、シーケンス番号付けを提供できる(メッセージ転送のすべての方向
について)場合に、DTEは、「WILL SEQNO」を送信する。 <195><038><255><254> → DCEが、シーケンス番号付けを望む(メッセージ転送のすべての方向につい
て)場合に、DCEは、「DO SEQNO」を応答する。 ← <193><038><255><254> そうでない場合には、DCEは「DONT SEQNO」を応答する。 ← <194><038><255><254> DTEが、シーケンス番号付けを望む(メッセージ転送のすべての方向につい
て)場合に、DTEは、「WILL SEQNO」ではなく「DO SEQNO
」を送信する。 <193><038><255><254> → DCEが、シーケンス番号付けを提供できる(メッセージ転送のすべての方向
について)場合に、DCEは、「WILL SEQNO」を応答する。 ← <195><038><255><254> そうでない場合には、DCEは、「WONT SEQNO」を応答する ← <196><038><255><254> 送信を効率的に保つためには、アプリケーションが、SEQNOを要求せずに
、SEQNOを提供するだけでよい。
【0190】 [パラメータ] なし [例] DTEとDCEの両方が、シーケンス番号付けをサポートするが、どちらもシ
ーケンス番号付けを要求しない。シーケンス番号付けは使用されない。 <195><038><255><254> → ← <194><038><255><254> DTEが、シーケンス番号付けを要求するが、DCEが、それをサポートしな
い。シーケンス番号付けは使用されない。 <193><038><255><254> → ← <196><038><255><254> DTEが、シーケンス番号付けをサポートし、DCEが、それを要求する。シ
ーケンス番号付けが使用される。 <195><038><255><254> → ← <193><038><255><254>
【0191】 3.05 PDE [可能な重複放出] 識別 名前:PDE、コード=53 依存性:MODE [概要] 可能な重複放出(PDE)プロトコル・オプションを用いると、PDEフラグ
の使用が可能になる。使用可能にされた後に、送信側は、メッセージ(既に送信
されたものでもよい)に関するPDEフラグを含めなければならない。同様に、
受信側は、PDEフラグが存在する場合に、可能な重複としてメッセージを扱わ
なければならない。
【0192】 F65が、PDEフラグを示すためにMESSAGEパケットに含まれる。F
65は、バイナリ1を含む符号なしのバイトである。例を示す。 <200><255><064>Testing 123<255><06
5><001><255><254> F65の存在によって、このMESSAGEが可能な重複放出であることが示
される。
【0193】 アプリケーションは、PDEフラグを正しく検出または処理できる場合でなけ
れば、PDEフラグの使用に合意してはならない。このオプションが有効でない
時にF65に遭遇した場合には、受信側のアプリケーションが、コードINVP
KTFIDを用いて切断しなければならない。
【0194】 [動機づけ] このオプションによって、重複送信の検出が容易になる。一部のアプリケーシ
ョン・レベル・プロトコルで、PDEフラグの使用がサポートされている。この
オプションによって、RACEが、これらのプロトコルをよりよくマッピングで
きるようになる。
【0195】 [ネゴシエーション] PDEは、入力と出力のメッセージ転送について別々にネゴシエートされる。 DTEが、PDEフラグを提供できる(入力ストリームについて)場合には、
DTEは、「WILL PDE」を送信する。 <195><053><255><254> → PDE情報が、DCEにとって有用である(入力ストリームについて)場合に
は、DCEは、「DO PDE」を応答する。 ← <193><053><255><254> そうではなく、DCEが、PDE情報の受信を望まない(入力ストリームにつ
いて)場合には、DCEは、「DONT PDE」を応答する。 ← <194><053><255><254> PDE情報が、DTEにとって有用である(出力ストリームについて)場合に
は、DTEは、「DO PDE」を送信する。 <193><053><255><254> → DCEが、PDEフラグを提供できる(出力ストリームについて)場合には、
DCEは、「WILL PDE」を応答する。 ← <195><053><255><254> そうではなく、DCEが、PDEフラグを提供できない(出力ストリームにつ
いて)場合には、DCEは、「WONT PDE」を応答する。 ← <196><053><255><254>
【0196】 [パラメータ] なし [例] モードはBIDIRECTIONALである。DTEとDCEの両方が、PD
Eをサポートする。 <195><053><255><254> → <193><053><255><254> → ← <193><053><255><254> ← <195><053><255><254>
【0197】 モードはINPUTである。DTEがPDEをサポートするが、DCEはサポ
ートしない。 <195><053><255><254> → ← <194><053><255><254>
【0198】 3.06 RREF [受信側参照] 識別 名前:RREF、コード=54 依存性:MODE、NOREPLY
【0199】 [概要] 受信側参照(RREF)プロトコル・オプションを用いると、メッセージの送
信側が、送信したメッセージのそれぞれの受信側から一意の識別子を得ることが
できるようになる。これは、調査および調停の補助になる。合意された後に、メ
ッセージ受信側は、すべてのメッセージについて、MESSAGE−REPLY
パケットを使用して一意のメッセージ参照を返す。
【0200】 一意のメッセージ参照を返すために、F24が、MESSAGE−REPLY
パケットに含まれる。F24には、1個から64個までのASCII文字すなわ
ち、両端を含めて値が32から126までのバイトを含めることができる。よい
習慣の問題として、参照を、先頭または末尾の空白を含まない英数字文字にする
ことが推奨される。例を示す。 <201><255><024>DEF200105106E059<25
5><254>
【0201】 このMESSAGE−REPLYパケットのF24には、受信されたメッセー
ジを一意に識別する「DEF200105106E059」が含まれる。
【0202】 メッセージが拒絶される場合に、やはり一意のメッセージ参照が期待される。
受信するアプリケーションが、拒絶されるメッセージに参照を割り振らない場合
には、擬似参照を使用しなければならない。たとえば、日付と、その日にわたり
、接続に固有のカウンタを使用する。参照は、複数のアプリケーション・インス
タンスが使用される場合であっても、異なる接続で同一のアプリケーションが共
用される場合であっても、一意でなければならない。
【0203】 応答が使用不能にされている場合には、このオプションは効果がない。
【0204】 [動機づけ] 多くのアプリケーションが、主キーまたはトランザクション参照番号を使用し
てトランザクションを保管する。時には、後続の調査および調停のために、送信
するアプリケーションがこの情報を必要とする。一意のメッセージ参照は、メッ
セージ転送が行われたことの証拠である。
【0205】 [ネゴシエーション] RREFは、入力と出力のメッセージ転送について別々にネゴシエートされる
。 DTEが、RREFの受信を望む(入力ストリームについて)場合には、DT
Eは、「DO RREF」を送信する。 <193><054><255><254> → DCEが、RREFを供給できる(入力ストリームについて)場合には、DC
Eは、「WILL RREF」を応答する。 ← <195><054><255><254> そうではなく、DCEがRREFを供給できない(入力ストリームについて)
場合には、DCEは、「WONT RREF」を応答する。 ← <196><054><255><254> DTEが、RREFを供給できる(出力ストリームについて)場合には、DT
Eは、「WILL RREF」を送信する。 <195><054><255><254> → DCEが、RREFの受信を望む(出力ストリームについて)場合には、DC
Eは、「DO RREF」を応答する。 ← <193><054><255><254> そうではなく、DCEが、RREFの受信を望まない(出力ストリームについ
て)場合には、DCEは、「DONT RREF」を応答する。 ← <194><054><255><254>
【0206】 [パラメータ] なし [例] モードはBIDIRECTIONALである。DTEは、RREFを求めるが
、それを提供することができない。DCEは、RREFを求めないが、それを提
供することができる。 <193><054><255><254> → ← <195><054><255><254> モードはINPUTである。DTEは、RREFを求める。DCEは、このオ
プションをサポートせず、提供することができない。 <193><054><255><254> → ← <196><054><255><254> モードはOUTPUTである。DTEは、RREFを提供することができる。
DCEは、RREFを求めない。 <195><054><255><254> → ← <194><054><255><254>
【0207】 3.07 LGIAUTH [ログイン認証] 識別 名前:LGIAUTH、コード=65 依存性: なし
【0208】 [概要] ログイン認証(LGIAUTH)プロトコル・オプションを用いると、アプリ
ケーションが、接続をオープンする時にお互いを認証できるようになる。認証キ
ーおよび認証アルゴリズムの識別は、なんらかの他の手段によって合意され、配
布される。
【0209】 両方のアプリケーションを、別々に認証することができる。要求元のアプリケ
ーションは、他方のアプリケーションに認証のために文字列を送信する。他方の
アプリケーションは、認証コードを計算し、返す。要求元のアプリケーションは
、もう一度認証コードを計算し、受信した認証コードと比較する。コードが一致
する場合には、認証に合格する。
【0210】 認証に失敗する場合には、認証コードを受信すると期待されるアプリケーショ
ンが、接続を即座に打ち切る、またはネゴシエーションの終了まで待つのいずれ
かを行うことができる。どちらの場合でも、認証するアプリケーションは、コー
ドLGIFAILと共にDISCONNECTを送信しなければならない。
【0211】 [動機づけ] デフォルトで、RACE接続は保護されない。このオプションを用いると、2
つの協調動作するアプリケーションが、アクセスを認証できるようになる。
【0212】 [ネゴシエーション] DTEが、ログイン認証をサポートできる場合には、DTEは、「WILL
LGIAUTH」を送信する。 <195><065><255><254> → DCEが、ログイン認証を受けることを望む場合には、DCEは、DTEが認
証する文字列と共に「DO LGIAUTH」を応答する。 ← <193><065>{auth−str}<255><254> そうではなく、DCEが、ログイン認証を受けることを望まない場合には、D
CEは、「DONT LGIAUTH」を応答する。 ← <194><065><255><254> DCEが、ログイン認証を受けることに合意した場合に、DTEは、供給され
た認証文字列について計算した認証コードと共に、「HERE−IS LGIA
UTH」を送信する。 <197><065>{auth−code}<255><254> → DTEが、ログイン認証を受けることを望む場合に、DTEは、DCEが認証
する文字列と共に「DO LGIAUTH」を送信する。 <193><065>{auth−str}<255><254> → DCEが、ログイン認証を供給することができる場合に、DCEは、「WIL
L LGIAUTH」を応答し、その後、供給された認証文字列について計算し
た認証コードと共に「HERE−IS LGIAUTH」を送信する。 ← <195><065><255><254> ← <197><065><{auth−code}<255><254> そうではなく、DCEが、ログイン情報を供給できない場合には、DCEは、
「WONT LGIAUTH」を応答する。 ← <196><065><255><254>
【0213】 [パラメータ] {auth−str} 認証文字列には、認証アルゴリズムに応じて1個から1024個までの符号な
しバイトを含めることができる。データ・バイト255は、二重にしなければな
らない。 {auth−code} 認証コードには、認証アルゴリズムに応じて1個から64個までの符号なしバ
イトを含めることができる。データ・バイト255は、二重にしなければならな
い。
【0214】 [例] DTEが、ログイン認証をDCEに供給する。 <195><065><255><254> → ← <193><065>TODAY IS 20000828<255>
<254> <197><065>E06720587801C331<255><25
4> → DTEが、ログイン認証をDCEに供給するが、DCEがそれを望まない。 <195><065><255><254> → ← <194><065><255><254>
【0215】 3.08 MSGAUTH [メッセージ認証] 識別 名前:MSGAUTH、コード=66 依存性:MODE
【0216】 [概要] メッセージ認証(MSGAUTH)プロトコル・オプションを用いると、アプ
リケーションがメッセージを認証できるようになる。認証キーおよび認証アルゴ
リズムの識別は、なんらかの他の手段によって合意され、配布される。
【0217】 合意された後に、アプリケーションは、すべてのメッセージについて、メッセ
ージの内容、キー、およびアルゴリズムに基づいてメッセージ認証コード(MA
C)を計算する。送信と受信に、別のキーまたは同一のキーを使用することがで
きる。送信するアプリケーションは、MACを計算し、これをMESSAGEパ
ケットに追加する。受信するアプリケーションは、もう一度MACを計算し、受
信したMESSAGEパケット内のMACと比較する。これらが一致する場合に
は、メッセージが認証に合格する。そうでない場合には、メッセージは、認証に
失敗し、処理されない。MACプロトコル・オプションを用いると、協調動作す
るアプリケーションが、メッセージの認証性および保全性を検査できるようにな
る。機密性は保証されない。
【0218】 認証コードを追加するために、F66が、MESSAGEパケットに含まれる
。F66には、認証アルゴリズムに応じて1個から64個までの符号なしバイト
が含まれる。例を示す。 <200><255><064>Hello World! <255><066><134><161><003><255><2
55><201><193><255><254> このメッセージには、48ビットの認証コード、16進値「86A103FF
C9C1」が含まれる。
【0219】 認証に失敗する場合には、メッセージを処理してはならない。受信するアプリ
ケーションは、コードAUTFAILと共にDISCONNECTを送信するこ
とによって接続を打ち切らなければならない。
【0220】 [動機づけ] デフォルトで、RACE接続は保護されない。このオプションを用いると、2
つの協調動作するアプリケーションが、メッセージの認証性および保全性を検査
できるようになる。
【0221】 [ネゴシエーション] DTEが、メッセージ認証を供給できる(入力ストリームについて)場合に、
DTEは、「WILL MSGAUTH」を送信する。 <195><066><255><254> → DCEが、メッセージを認証したい(入力ストリームについて)場合に、DC
Eは、「DO MSGAUTH」を応答する。 ← <193><066><255><254> そうではなく、DCEが、メッセージの認証を望まない(入力ストリームにつ
いて)場合に、DCEは、「DONT MSGAUTH」を応答する。 ← <194><066><255><254> DTEが、メッセージを認証したい(出力ストリームについて)場合に、DT
Eは、「DO MSGAUTH」を送信する。 <193><066><255><254> → DCEが、メッセージ認証を供給できる(出力ストリームについて)場合に、
DCEは、「WILL MSGAUTH」を応答する。 ← <195><066><255><254> そうではなく、DTEが、メッセージ認証を供給できない(出力ストリームに
ついて)場合に、DTEは、「WONT MSGAUTH」を応答する。 ← <196><066><255><254> [パラメータ] なし [例] DTEとDCEが、入力ストリームについてメッセージを認証することに合意
する。 <195><066><255><254> → ← <193><066><255><254>
【0222】 DTEとDCEが、両方向でメッセージを認証することに合意する。 <195><066><255><254> → <193><066><255><254> → ← <193><066><255><254> ← <195><066><255><254>
【0223】 DTEが、両方向でメッセージを認証することを望むが、DCEが、このオプ
ションを理解しない。 <195><066><255><254> → <193><066><255><254> → ← <194><066><255><254> ← <196><066><255><254>
【0224】 3.09 LGRP [論理グループ化] 識別 名前:LGRP、コード=72 依存性:MODE
【0225】 [概要] 論理グループ化(LGRP)プロトコル・オプションを用いると、メッセージ
をグループ化し、単一の作業単位として処理することができるようになる。使用
可能にされた後に、送信側は、連続するメッセージを一緒にグループ化するか、
基本プロトコルの場合のように個別のメッセージを送信することを継続すること
ができる。
【0226】 論理グループ化情報を追加するために、F67が、MESSAGEパケットに
含まれる。F67には、符号なしバイトとして、論理グループ位置が含まれる。
これは、グループの先頭と終りを区切るために、最初のメッセージと最後のメッ
セージに含まれる。最初のメッセージは、位置1を割り当てられ、最後のメッセ
ージは、位置2を割り当てられる。F67は、中間のメッセージには使用されな
い。論理グループ内のシーケンス番号付けは、信頼性のある接続が仮定されるの
で、使用されない。例を示す。 <200><255><064>MSG−1<255><067
><001><255><254> <200><255><064>MSG−2<255><254> <200><255><064>MSG−3<255><254> <200><255><064>MSG−4<255><067><002
><255><254> <200><255><064>MSG−5<255><254> <200><255><064>MSG−6<255><067><001
><255><254> <200><255><064>MSG−7<255><254> <200><255><064>MSG−8<255><067><002
><255><254>
【0227】 この入力には、3つの論理グループが含まれる。第1のグループには、4つの
メッセージ(MSG−1、MSG−2、MSG−3、およびMSG−4)が含ま
れる。第2のグループには、1つのメッセージ(MSG−5)だけが含まれる。
第3のグループには、3つのメッセージ(MSG−6、MSG−7、およびMS
G−8)が含まれる。
【0228】 論理グループに、1つのメッセージだけが含まれる場合には、F67は使用さ
れず、単一のメッセージが、基本プロトコルに従ってputされる。メッセージ
応答は、使用可能にされている場合に、送信されるすべてのメッセージについて
期待される。ウィンドウイングが許容される。論理グループは、グループ内の最
後のメッセージが肯定応答された後に肯定応答される。その後、グループは、単
一の作業単位として処理される。論理グループ内の1つまたは複数のメッセージ
が拒絶される場合には、グループ全体が拒絶され、その後は処理されない。LG
RPプロトコル・オプションは、SEQNOプロトコル・オプションの使用に影
響しない。
【0229】 [動機づけ] メッセージを論理的な全体として処理するために、メッセージを一緒にグルー
プ化することが必要または実用的である場合がある。たとえば、メッセージをバ
ッチ・ファイルから読み取る場合には、それらを一緒に配布することが望ましい
。メッセージのグループがトランザクションを形成する場合には、これらを一緒
に処理する必要があり、その結果、ある部分で障害が発生した場合に、トランザ
クション全体をロール・バックすることができるようにする必要がある。
【0230】 [ネゴシエーション] 論理グループ化の使用は、入力と出力のメッセージ転送について別々にネゴシ
エートされる。
【0231】 DTEが、論理グループ化を使用することを望む(入力ストリームについて)
場合には、DTEは、「DO LGRP」を送信する。 <193><072><255><254> → DCEが、論理グループ化をサポートする(入力ストリームについて)場合に
は、DCEは、「WILL LGRP」を応答する。 ← <195><072><255><254> そうではなく、DCEが、論理グループ化をサポートしない(入力ストリーム
について)場合には、DCEは、「WONT LGRP」を応答する。 ← <196><072><255><254> DTEが、論理グループ化をサポートする(出力ストリームについて)場合に
は、DTEは、「WILL LGRP」を送信する。 <195><072><255><254> → DCEが、論理グループ化を使用することを望む(出力ストリームについて)
場合には、DCEは、「DO LGRP」を応答する。 ← <193><072><255><254> そうではなく、DCEが、論理グループ化を使用することを望まない(出力ス
トリームについて)場合には、DCEは、「DONT LGRP」を応答する。 ← <194><072><255><254>
【0232】 [パラメータ] なし [例] モードはBIDIRECTIONALである。DTEとDCEの両方が、LG
RPをサポートする。 <193><072><255><254> → <195><072><255><254> → ← <195><072><255><254> ← <193><072><255><254>
【0233】 モードはINPUTである。DTEは、LGRPをサポートするが、DCEは
サポートしない。 <193><072><255><254> → ← <196><072><255><254>
【0234】 3.10 MSGLEN [メッセージ長] 識別 名前:MSGLEN、コード=78 依存性:MODE
【0235】 [概要] メッセージ長(MSGLEN)プロトコル・オプションを用いると、MESS
AGEパケットにメッセージ長を含めることができるようになる。ネゴシエーシ
ョンに応じて、メッセージ長を、F64(メッセージ内容)の前または後のいず
れかに含めることができる。
【0236】 メッセージ長を追加するために、F63が、MESSAGEパケットに含まれ
る。F63は、ネットワーク・バイト順の符号なし長整数(unsigned
long integer)である。したがって、最大メッセージ長は、このオ
プションが有効である時に、4294967295バイト(4GB)になる。例
を示す。
【0237】 メッセージ長がプレフィックスになっている。 <200><255><063><000><000><000><016
> <255><064>I HAVE 16 BYTES.<255><
254>
【0238】 メッセージ長がサフィックスになっている。 <200><255><064>I HAVE 16 BYTES. <255><063><000><000><000><016><2
55><254> メッセージ受信側が、実際のメッセージ長がF63で指定されたメッセージ長
と一致しないことを検出した場合には、受信側が、コードINVMSGLENを
用いて切断しなければならない。
【0239】 [動機づけ] メッセージ長が、メッセージと共に送信される場合には、受信するアプリケー
ションが、実際のメッセージ長を検査することができる。メッセージ長が、メッ
セージ内容の前に含まれる場合には、受信するアプリケーションが、前もってメ
ッセーのためのスペースを割り振ることができる。大きいメッセージを転送する
場合、受信するアプリケーションが連続したスペースを事前に割り振ることがで
きるので、これによって性能を高めることができる。
【0240】 しかし、送信するアプリケーションが、前もってメッセージ長を知ることが困
難であるか、送信するアプリケーションが前もってメッセージ長を判定すること
が性能の妨げになる場合がある。さらに、多数の小さいメッセージが転送される
時には、F63のサイズが性能低下を引き起こす可能性がある。
【0241】 [ネゴシエーション] DTEが、メッセージ長を供給することができる(入力ストリームについて)
場合に、DTEは、「WILL MSGLEN」と、それをプレフィックスとサ
フィックスのどちらにすることができるか(1、2)を送信する。 <195><078>{prefix−suffix}<255><254
> →
【0242】 DCEが、メッセージ長を受信することを望む(入力ストリームについて)場
合に、DCEは、「DO MSGLEN」と、それをプレフィックスとサフィッ
クスのどちらにするか(1、2)を応答する。DCEは、DTEがプレフィック
スにすることを提供する場合にかぎって、メッセージ長をプレフィックスにする
ことを要求することができる。DCEは、どの場合でもメッセージ長をサフィッ
クスにすることを要求することができる。 ← <193><078>{prefix−suffix}<255><2
54>
【0243】 そうではなく、DCEが、メッセージ長を受信することを望まない(入力スト
リームについて)場合に、DCEは、「DONT MSGLEN」を応答する。 ← <194><078><255><254> DTEが、メッセージ長を受信することを望む(出力ストリームについて)場
合に、DTEは、「DO MSGLEN」と、それをプレフィックスとサフィッ
クスのどちらにするか(1、2)を送信する。 <193><078>{prefix−suffix}<255><254
> →
【0244】 DCEが、メッセージ長を提供することができる(出力ストリームについて)
場合に、DCEは、「WILL MSGLEN」と、それをプレフィックスとサ
フィックスのどちらにすることができるか(1、2)を応答する。DCEは、D
TEがプレフィックスにすることを要求した場合に限って、メッセージ長をプレ
フィックスにすることを申し出なければならない。DTEが、メッセージ長をプ
レフィックスにすることを要求し、DCEがサフィックスにすることしかできな
い場合には、DTEは、サフィックスにすることに合意しなければならない。そ
の後、DTEは、どのように進行することを望むかを決定することができる。 ← <195><078><{prefix−suffix}<255><
254>
【0245】 そうではなく、DCEが、メッセージ長を提供することができない(出力スト
リームについて)場合に、DCEは、「WONT MSGLEN」を応答する。 ← <196><078><255><254>
【0246】 [パラメータ] {prefix−suffix} prefix−suffixパラメータは、プレフィックスの場合に1、サフ
ィックスの場合に2を含む、符号なしバイトである。
【0247】 [例] モードはBIDIRECTIONALである。DTEは、MSGLENをプレ
フィックスにすることができ、プレフィックスにされたMSGLENを受信する
ことを望む。DCEは、MSGLENをプレフィックスにすることができるが、
それを受信するつもりがない。両者は、DCEからDTEへのMSGLENをプ
レフィックスにすることに合意する。 <195><078><001><255><254> → <193><078><001><255><254> → ← <194><078><255><254> ← <195><078><001><255><254>
【0248】 モードはINPUTである。DTEは、MSGLENをサフィックスにするこ
とができる。DCEは、プレフィックスにされたMSGLENを受信することを
望む。両者は、MSGLENを使用しないことに合意する(DTEがそれをプレ
フィックスにすることができないので)。 <195><078><002><255><254> → ← <194><078><255><254>
【0249】 3.11 BATCH 識別 名前:BATCH、コード=41 依存性:MODE
【0250】 [概要] BATCHプロトコル・オプションは、アプリケーション間のシーケンシャル
・データ・ファイルの転送をサポートする。通常、メッセージは、あるプログラ
ムによってバッチ・ファイルに書き込まれ、その後、そのバッチ・ファイルが、
もう1つのプログラムに転送される。
【0251】 BATCHでは、標準のメッセージ転送が使用不能にされ、バッチ・ファイル
転送が使用可能にされる。MESSAGEパケットが、バッチ・ファイルを運ぶ
のに使用され、MESSAGE−REPLYパケットが、肯定応答に使用される
。内容は、F64を使用して転送され、ヘッダは、F91およびF92を使用し
てプレフィックスを付けられる。F91は、必須であり、ファイル名の詳細を示
す。F92は、任意選択であり、グリニッジ標準時でのファイルの作成の日付お
よび時刻の詳細を示す。
【0252】 可能な場合には、F63すなわちファイル・サイズを含めるために、MSGL
ENプロトコル・オプションをネゴシエートしなければならない。F63が含ま
れる場合には、受信するアプリケーションが、受信したファイルのサイズを検査
することができる。F63が、ファイル内容の前に含まれる場合には、受信する
アプリケーションが、連続したスペースを事前に割り振ることができ、ファイル
転送を高速化することができる。最大ファイル・サイズは、429496729
5バイト(4GB)である。
【0253】 データ・ファイルには、どのようなバイナリ・データでも含めることができる
。データ・バイト255は、二重にしなければならない。しかし、アプリケーシ
ョンは、通常は、ASCIIを使用し、CRLFを使用してレコードを分離する
ことに合意する。他のフォーマットはBATCHの範囲外であるから、シーケン
シャル・ファイルだけがサポートされる。
【0254】 たとえば、次のファイル転送では <200><255><091>PX2061.DAT<255><092
>2002101510241600 <255><064>HERE ARE THE FILE CONT
ENTS.<255><254> → ← <201><255><254>
【0255】 2002年10月15日午前10時24分に作成されたファイルPX2061
.DATが転送される。
【0256】 BATCHプロトコル・オプションは、MODEプロトコル・オプションの前
にネゴシエートされなければならない。
【0257】 [動機づけ] 多数の既存のシステムまたは単純なシステムが、メッセージの処理および転送
にバッチ・ファイルを使用する。
【0258】 [ネゴシエーション] BATCHの使用法は、入力と出力のデータ転送で同一である。使用可能にさ
れた後に、バッチ・ファイル転送が、標準のメッセージ転送と入れ代わる。
【0259】 DTEが、バッチを使用することを望む場合に、DTEは、「DO BATC
H」を送信する。 <193><041><255><254> → DCEが、バッチをサポートする場合に、DCEは、「WILL BATCH
」を応答する。 ← <195><041><255><254> そうではなく、DCEが、バッチをサポートしない場合には、DCEは、「W
ONT BATCH」を応答する。 ← <196><041><255><254> DTEが、バッチを提供できる場合には、DTEは、「WILL BATCH
」を送信する。 <195><041><255><254> → DCEが、バッチを使用することを望む場合には、DCEは「DO BATC
H」を応答する。 ← <193><041><255><254> そうではなく、DCEが、バッチを使用することを望まない場合には、DCE
は、「DONT BATCH」を応答する。 ← <194><041><255><254>
【0260】 [パラメータ] なし [例] DTEが、BATCHを使用することを望む。DCEは、BATCHをサポー
トする。両者は、BATCHを使用することに合意する。 <193><041><255><254> → ← <195><041><255><254> DTEが、BATCHを使用することを望む。DCEは、BATCHをサポー
トしない。両者は、BATCHを使用しない。 <193><041><255><254> → ← <196><041><255><254>
【0261】 3.12 NOM [メッセージ数] 識別 名前:NOM、コード=42 依存性:MODE
【0262】 [概要] メッセージ数(NOM)オプションを用いると、一方の当事者が、ネゴシエー
ションの時点でダウンロードを待っているメッセージの数を判定できるようにな
る。
【0263】 DTEが、保留中のメッセージの数を知りたいか提供できる場合に、DTEは
、DCEとネゴシエートする。合意した場合に、DTEがその保留中のメッセー
ジ数を送信するか、DCEがその保留中のメッセージ数を送信するか、その両方
が行われる。
【0264】 このプロトコル・オプションを使用して返されるメッセージの数は、実際に転
送されるメッセージの数より多い場合も少ない場合もあることに留意されたい。
【0265】 [動機づけ] 実際にダウンロードする前に、ダウンロードを待っているメッセージの数を表
示するか知ることが望ましい場合がある。このオプションを用いると、データ転
送に合意し、転送に入る前に、メッセージの数を知ることができる。保留中のメ
ッセージがない場合には、このオプションによって他の当事者がすばやく切断で
きるようになる。そうでなければ、その当事者はタイマが満了するまで待たなけ
ればならないはずである。
【0266】 たとえば、ユーザの介入を伴うメッセージ出力プログラムを検討されたい。こ
のメッセージ出力プログラムは、出力メッセージ・キューに接続し、保留中のメ
ッセージの数を取り出す。このプログラムは、メッセージの数をユーザに表示し
、ユーザがそれらのメッセージをダウンロードしたいかどうかを尋ねる。ユーザ
が合意する場合に、このプログラムは、メッセージ転送に入る。そうでない場合
には、このプログラムは切断する。この例では、プログラムは、ユーザが即座に
応答しない場合に、接続がタイムアウトになっていないことを監視する必要があ
る。
【0267】 [ネゴシエーション] DTEが、保留中のメッセージの数を知りたい(出力ストリームについて)場
合に、DTEは、「DO NOM」を送信する。 <193><042><255><254> → DCEが、保留中のメッセージの数を提供できる(出力ストリームについて)
場合に、DCEは、「WILL NOM」を応答し、その後、「HERE−IS
NOM」を送信する。 ← <195><042><255><254> ← <197><042>{number−of−messages}<2
55><254> そうではなく、DCEが、保留中のメッセージの数を提供できない(出力スト
リームについて)場合に、DCEは、「WONT NOM」を応答する。 ← <196><042><255><254> DTEが、保留中のメッセージの数を提供できる(入力ストリームについて)
場合に、DTEは、「WILL NOM」を送信する。 <195><042><255><254> → DCEが、保留中のメッセージの数を知りたい(入力ストリームについて)場
合に、DCEは、「DO NOM」を応答する。 ← <193><042><255><254> その後、DTEが、メッセージの数と共に「HERE−IS NOM」を送信
する。 <197><042><{number−of−messages}<25
5><254> そうではなく、DCEが、保留中のメッセージの数を知りたくない(入力スト
リームについて)場合に、DCEは、「DONT NOM」を応答する。 ← <194><042><255><254>
【0268】 [パラメータ] {number−of−messages} 保留中のメッセージの数は、ネットワーク・バイト順の符号なし長整数である
。ある当事者が、このオプションをサポートするが、メッセージの数を判定でき
ない場合には、その当事者は、保留中のメッセージの数として−1(42949
67295)の値を返す。当事者が送信すべきメッセージを有しない、キューが
空である、またはモードがメッセージの送信を許容しない場合には、保留中のメ
ッセージの数として0の値を返す。当事者が、送信すべきメッセージを4294
967295個以上有する場合には、保留中のメッセージの数として42949
67295の値を返す。すなわち、当事者は、保留中のメッセージの数を判定す
ることができない。データ・バイト255は、二重にしなければならない。
【0269】 [例] モードはOUTPUTである。DCEは、DTEに保留中のメッセージの数を
与えることに合意する。 <193><042><255><254> → ← <195><042><255><254> ・ ・ ・ ← <197><042><000><000><000><000><2
55><254> この場合、DCEは、DTEに転送するメッセージを有しない。
【0270】 3.13 BIGFOOT [ビッグ・コード番号付け] 識別 名前:BIGFOOT、コード=82 依存性: なし
【0271】 [概要] ビッグ・コード番号付け(BIGFOOT)プロトコル・オプションによって
、より多数のパケット、フィールド、およびオプション・コードをサポートする
ために基本プロトコルが拡張される。
【0272】 このオプションが有効である時には、パケット、フィールド、およびオプショ
ンの識別が、1バイトまたは2バイトにまたがることができる。第1バイトの2
53の値は、次の2バイトに、ネットワーク・バイト順のコード番号が含まれる
ことを示す。
【0273】 たとえば、次のWILLパケットを検討されたい。 <195><253><003><002><255><254> このWILLパケットでは、オプション・コード770が識別され、パラメー
タ・データは全く含まれない。
【0274】 たとえば、次のMESSAGEパケットを検討されたい。 <200><255><064>HELLO<255><253><201
><255>C256<255><254> このMESSAGEパケットには、2つのフィールドidすなわち、64およ
び51711が含まれる。フィールド64には、「HELLO」が含まれる。フ
ィールド51711には、「C256」が含まれる。
【0275】 たとえば、次のパケットを検討されたい。 <253><001><021><255><254>
【0276】 このパケットは、パケットid722を有するが、フィールドまたはデータは
含まれない。
【0277】 この方式の下で、コード値253、254、および255を、2バイト・コー
ド値を使用して表すことができる。たとえば、<253><000><253>
【0278】 このオプションによって、フィールド、オプション、およびパケット用に65
536個の可能なコード値がもたらされる。2バイト・コード値内で、バイト値
255を二重にしてはならない。
【0279】 [動機づけ] 単一バイトによって提供されるコードの数が、将来に使い果たされることは大
いにありえる。このオプションでは、より多数のコード番号付けの好ましい方法
が推奨される。
【0280】 [ネゴシエーション] DTEが、ビッグ・コード番号付けを提供できる場合に、DTEは、「WIL
L BIGFOOT」を送信する。 <195><082><255><254> → DCEが、ビッグ・コード番号付けを使用したい場合に、DCEは、「DO
BIGFOOT」を応答する。 ← <193><082><255><254> そうではなく、DCEが、ビッグ・コード番号付けを使用したくない場合に、
DCEは、「DONT BIGFOOT」を応答する。 ← <194><082><255><254> DTEが、ビッグ・コード番号付けを使用したい場合には、DTEは、「DO
BIGFOOT」を送信する。 <193><082><255><254> → DCEが、ビッグ・コード番号付けを提供できる場合には、DCEは、「WI
LL BIGFOOT」を応答する。 ← <195><082><255><254> そうではなく、DCEが、ビッグ・コード番号付けを提供できない場合には、
DCEは、「WONT BIGFOOT」を応答する。 ← <196><082><255><254> DTEは、より大きい番号のコードを使用する計画がある場合に限って、この
オプションをネゴシエートする必要がある。
【0281】 [パラメータ] なし [例] DTEとDCEが、ビッグ・コード番号付けを使用することに合意する。 <193><082><255><254> → ← <195><082><255><254>
【0282】 [パケットの構文] 下記のパケット・コードが定義されている。 名前 コード 意味 CONNECT 192 接続要求 DO 193 プロトコル・オプションの要求/合意 DONT 194 プロトコル・オプションの否定 WILL 195 プロトコル・オプションの提供/合意 WONT 196 プロトコル・オプションの拒否 HERE−IS 197 サブ・ネゴシエーション READY 198 レディ DISCONNECT 199 終了/要求のシャットダウン MESSAGE 200 データ・メッセージ MESSAGE−REPLY 201 論理応答
【0283】 この章では、各パケットを説明する。 他のすべてのコードが、将来の使用のために予約されている。 下記のコードは、RACEパケット内でIACバイトがプレフィックスになっ
ている時に特定の意味を有する。 名前 コード 意味 END−OF−PACKET 254 パケットの終り(EOP) IAC 255 データ・バイト255 FIELD−IDENTITY 000から253まで フィールドi
dおよびフィールド区切り(FID)
【0284】 次の章で、各フィールドを説明する すべてのフィールドidコードが使用されているわけではない。未使用のフィ
ールドidコードは、将来の使用のために予約されており、これには、フィール
ド識別以外の用途が含まれる。
【0285】 以下にパケットの説明を示す。
【0286】 [CONNECT] CONNECTは、ターゲットDCEサービスおよびターゲットDCEアプリ
ケーションを指定し、それに接続するために、DTEが送信する。 構文 意味 −− −− <192> パケット(192)の開始 <255><031>{service−id} F31 − ターゲット・
サービス [<255><032>{appl−id} F32 − ターゲット・アプ
リケーション [<255><033>{appl−id}]] F33 − ユーザ識別子
<255><254> EOP − パケットの終り [説明] 基本プロトコルを参照されたい。
【0287】 [DO] DOは、オプション仕様に従ってプロトコル・オプションを要求するためにD
TEによって送信される。
【0288】 DOは、WILLの受信の後に、オプション仕様に従ってプロトコル・オプシ
ョンを受け入れるかさらにネゴシエートするために、DCEによって送信される
。 構文 意味 −− −− <193> パケット(193)の開始 {opt−code} オプション・コード [{opt−params}] オプション・パラメータ <255><254> EOP − パケットの終り
【0289】 [説明] DTEは、オプション仕様の対象になるオプション・ネゴシエーション中にD
Oを送信することができる。DCEは、DTEからWILLを受信した後に限っ
てDOを送信することができる。
【0290】 このパケットでは、フィールド表記を使用しない。フィールド識別子が、オプ
ション・パラメータのために必要な場合には、IACバイトを二重にしなければ
ならない。たとえば、フィールド22は、<255><255><022>とし
て指定する。この場合、デフォルト・パーサは、このフィールド識別をデータと
して解釈し、次の解釈のためのデータとして<255><022>を渡す。その
後、二次パーサが、<255><022>を有効なフィールド識別子として解釈
することができる。 {opt−code}、位置による(第2バイト) 符号なしバイト、値0から255までとしてのオプション・コード。データ・
バイト255は二重にしなければならない。 {opt−params}、位置による({opt−code}の後) オプションのサブネゴシエーションのためのオプション固有パラメータ。オプ
ション仕様に応じて、この引数は任意選択であり、個数が変化するデータ・バイ
トが含まれる。データ・バイト<255>は二重にしなければならない。
【0291】 1.01 DONT DONTは、WILLの受信の後に、WILLによって指定されるオプション
を拒絶するために、DCEによって送信される。 構文 意味 −− −− <194> パケット(194)の開始 {opt−code} オプション・コード <255><254> EOP − パケットの終り
【0292】 [説明] このパケットでは、フィールド表記を使用しない。 {opt−code}、位置による(第2バイト) 符号なしバイト、値0から255までとしてのオプション・コード。データ・
バイト255は二重にしなければならない。
【0293】 [WILL] WILLは、オプション仕様に従ってプロトコル・オプションを申し出るため
に、DTEによって送信される。
【0294】 WILLは、DOの受信の後に、オプション仕様に従ってプロトコル・オプシ
ョンを受け入れるかさらにネゴシエートするために、DCEによって送信される
。 構文 意味 −− −− <195> パケット(195)の開始 {opt−code} オプション・コード [{opt−params}] オプション・パラメータ <255><254> EOP − パケットの終り
【0295】 [説明] DTEは、オプション仕様の対象になるオプション・ネゴシエーション中にW
ILLを送信することができる。DCEは、DTEからDOを受信した後に限っ
てWILLを送信することができる。
【0296】 このパケットでは、フィールド表記を使用しない。フィールド識別子が、オプ
ション・パラメータのために必要な場合には、IACバイトを二重にしなければ
ならない。たとえば、フィールド22は、<255><255><022>とし
て指定する。この場合、デフォルト・パーサは、このフィールド識別をデータと
して解釈し、次の解釈のためのデータとして<255><022>を渡す。その
後、二次パーサが、<255><022>を有効なフィールド識別子として解釈
することができる。 {opt−code}、位置による(第2バイト) 符号なしバイト、値0から255までとしてのオプション・コード。データ・
バイト255は二重にしなければならない。 {opt−params}、位置による({opt−code}の後) オプションのサブネゴシエーションのためのオプション固有パラメータ。オプ
ション仕様に応じて、この引数は任意選択であり、個数が変化するデータ・バイ
トが含まれる。データ・バイト<255>は二重にしなければならない。
【0297】 1.01 WONT WONTは、DOの受信の後に、DOによって指定されるオプションを拒絶す
るために、DCEによって送信される。 構文 意味 −− −− <196> パケット(196)の開始 {opt−code} オプション・コード <255><254> EOP − パケットの終り
【0298】 [説明] このパケットでは、フィールド表記を使用しない。 {opt−code}、位置による(第2バイト) 符号なしバイト、値0から255までとしてのオプション・コード。データ・
バイト255は二重にしなければならない。
【0299】 1.01 HERE−IS HERE−ISは、オプション仕様に従ってオプションをさらにネゴシエート
するために、DTEまたはDCEによって送信される。そのオプションは、HE
RE−ISを使用する前に合意されていなければならない。 構文 意味 −− −− <197> パケット(197)の開始 {opt−code} オプション・コード [{opt−params}] オプション・パラメータ <255><254> EOP − パケットの終り
【0300】 [説明] このパケットでは、フィールド表記を使用しない。フィールド識別子が、オプ
ション・パラメータのために必要な場合には、IACバイトを二重にしなければ
ならない。たとえば、フィールド22は、<255><255><022>とし
て指定する。この場合、デフォルト・パーサは、このフィールド識別をデータと
して解釈し、次の解釈のためのデータとして<255><022>を渡す。その
後、二次パーサが、<255><022>を有効なフィールド識別子として解釈
することができる。 {opt−code}、位置による(第2バイト)
【0301】 符号なしバイト、値0から255までとしてのオプション・コード。データ・
バイト255は二重にしなければならない。 {opt−params}、位置による({opt−code}の後)
【0302】 オプションのサブネゴシエーションのためのオプション固有パラメータ。オプ
ション仕様に応じて、この引数は任意選択であり、個数が変化するデータ・バイ
トが含まれる。データ・バイト<255>は二重にしなければならない。
【0303】 [READY] READYは、CONNECTの受信の後に、接続を受け入れるために、DC
Eによって送信される。
【0304】 READYは、ネゴシエーションの後に、それが終了し、オプション・ネゴシ
エーションに合意可能であることを示すために、DTEによって送信される。
【0305】 READYは、READYの受信の後に、DCEがオプション・ネゴシエーシ
ョンに合意可能であることを示すために、DCEによって送信される。DTEお
よびDCEは、ネゴシエーションに続いてDCEがこのパケットを送信した後に
、即座にデータ転送に入る。 構文 意味 −− −− <198> パケット(198)の開始 <255><254> EOP − パケットの終り
【0306】 [説明] 基本プロトコルを参照されたい。
【0307】 [DISCONNECT] DISCONNECTは、リンクのシャットダウンを要求するために、DTE
またはDCEによって送信される。
【0308】 DISCONNECTは、オプション・ネゴシエーションの最後に、ネゴシエ
ーションを拒絶し、リンクをクローズするために、DTEによって送信される。
【0309】 DISCONNECTは、CONNECTまたはREADYの受信の後に、接
続要求またはネゴシエーションを拒絶し、リンクをクローズするために、DCE
によって送信される。
【0310】 また、DISCONNECTは、プロトコル・エラーまたは予期されないエラ
ーの後に、DTEまたはDCEによって送信される。 構文 意味 −− −− <199> パケット(199)の開始 [<255><021>{code} F21 − 切断コード [<255><023>{text}]] F23 − 追加情報 <255><254> EOP − パケットの終り
【0311】 [説明] シャットダウンの開始または終了に使用される時には、DISCONNECT
がSUCCESS(0)を運ばなければならない。そうでない場合には、DIS
CONNECTは、例外として解釈され、それ以降の通信がブロックされる。
【0312】 切断コード引数F21は、その値がSUCCESS(0)である時には省略す
ることができる。省略された時には、SUCCESS(0)が仮定される。F2
3が存在する場合には、F21も存在しなければならない。
【0313】 [MESSAGE] MESSAGEは、アプリケーション・データ・メッセージを転送するために
送信される。 構文 意味 −− −− <200> パケット(200)の開始 [<255><010>{seqno}] F10 − シーケンス番号 [<255><091>{fname} F91 − ファイル名 [<255><092>{fstamp}]] F92 − ファイル作成日
時 [<255><063>{msglen}] F63 − メッセージ長(プ
レフィックス) <255><064>{msg} F64 − メッセージ [<255><063>{msglen}] F63 − メッセージ長(サ
フィックス) [<255><065>{pde}] F65 − PDEフラグ [<255><066>{mac}] F66 − MAC [<255><067>{lgrp}] F67 − LGRP位置 <255><254> EOP − パケットの終り
【0314】 [説明] デフォルトで、メッセージはDTEからDCEに送信される。MODEプロト
コル・オプションで、出力(DCEからDTEへ)および両方向メッセージ転送
を可能にすることによって、この挙動を変更する。
【0315】 SEQNOプロトコル・オプションによって、F10の使用法が決定される。
SEQNOが使用可能にされている時には、F10は必須である。そうでない場
合には、F10が存在してはならない。
【0316】 PDEプロトコル・オプションによって、F65の使用法が決定される。PD
Eが、メッセージ転送の方向について使用可能にされている時には、可能な重複
放出を示すために、F65が存在する可能性がある。
【0317】 MACプロトコル・オプションによって、F66の使用法が決定される。MA
Cが、メッセージ転送の方向について使用可能にされている時には、F66は必
須である。そうでない場合には、F66が存在してはならない。
【0318】 LGRPプロトコル・オプションによって、F67の使用法が決定される。L
GRPが、メッセージ転送の方向について使用可能にされている時には、論理グ
ループの先頭または終りを示すためにF67が存在する可能性がある。
【0319】 MSGLENプロトコル・オプションによって、F63の使用法が決定される
。MSGLENが、メッセージ転送の方向について使用可能にされている時には
、F63は必須であり、メッセージ長の詳細を示す。MSGLENのネゴシエー
ションに応じて、F63は、メッセージ内容であるF64の前または後のいずれ
かにあることが期待される。
【0320】 BATCHプロトコル・オプションによって、F91およびF92の使用法が
決定される。BATCHが使用可能にされている時には、F91が必須であり、
F92は、任意選択として存在する可能性がある。そうでない場合には、F91
およびF92が存在してはならない。BATCHが使用可能にされている時には
、F64は、特定のアプリケーション・メッセージではなく、ファイルの内容に
なる。
【0321】 [MESSAGE−REPLY] MESSAGE−REPLYは、MESSAGEの受信の後に、データ・メッ
セージの解釈の成功または不成功を示すために送信される。 構文 意味 −− −− <201> パケット(201)の開始 [<255><010>{seqno}] F10 − シーケンス番号 [<255><021>{code} F21 − 応答コード [<255><023>{text}]] F23 − 追加情報 [<255><024>{umr}] F24 − RREF <255><254> EOP − パケットの終り
【0322】 [説明] コードSUCCESSは、肯定のメッセージ応答を示し、メッセージが受け入
れられたことを示す。そうでない場合には、応答は否定であり、メッセージが受
け入れられなかった。
【0323】 デフォルトで、メッセージ応答が、DCEからDTEに返される。NOREP
LYプロトコル・オプションおよびMODEプロトコル・オプションによって、
この挙動が変更される。NOREPLYでは、メッセージ応答がオフになる。M
ODEでは、メッセージ転送の方向に応じて、メッセージ応答をDTEからDC
Eに返すか、両方向で返すことができる。
【0324】 RREFプロトコル・オプションによって、F24の使用法が決定される。R
REFが、メッセージ転送の方向について使用可能にされている時には、F24
は必須であり、F24に、一意のメッセージ参照が含まれる。そうでない場合に
は、F24が存在してはならない。
【0325】 SEQNOプロトコル・オプションによって、F10の使用法が決定される。
SEQNOが使用可能にされている時には、F10は必須である。そうでない場
合には、F10が存在してはならない。
【0326】 応答コード引数であるF21は、性能を高めるために、その値がSUCCES
S(0)である時には省略することができる。省略された時には、SUCCES
Sが仮定される。F23が存在する場合には、F21も存在しなければならない
【0327】 [フィールド構文] F10、シーケンス番号 使用法:SEQNO(MESSAGE、MESSAGE−REPLY) フォーマット:unsigned short int(ネットワーク・バイ
ト順)
【0328】 詳細:シーケンス番号は、メッセージとメッセージ応答の両方に適用される。
入力と出力のメッセージ転送について、別々のカウンタが使用される。シーケン
ス番号は、新しい接続の開始時に1から始まり、1つずつ増分され、65536
に達した後に1にラップする(すなわち、65536、131071、…が1に
なる)。0は、有効なシーケンス番号ではない。
【0329】 F21、応答コードまたは切断コード 使用法:BASIC(DISCONNECT、MESSAGE−REPLY) フォーマット:unsigned short int(ネットワーク・バイ
ト順) 詳細:応答コードおよび切断コードとその意味の詳細については、この文書の
後ろの部分を参照されたい。DISCONNECTまたはMESSAGE−RE
PLYでF21が省略された場合には、SUCCESSが仮定される。
【0330】 F23、追加情報 使用法:BASIC(DISCONNECT、MESSAGE−REPLY) フォーマット:char[256] 詳細:追加情報は、F21のコードを補足するのに使用される。このフィール
ドには1バイトから256バイトまでが含まれ、このフィールドはアプリケーシ
ョン固有である。通常、両端を含むバイト値32から126までのASCIIが
使用される。
【0331】 F24、一意メッセージ参照(UMR) 使用法:RREF(MESSAGE−REPLY) フォーマット:char[32] 詳細:一意メッセージ参照(UMR)は、1個から64個までの、両端を含む
バイト値32から126までのASCII文字からなる。よい習慣の問題として
、参照を、先頭、末尾または中間の空白を含まない英数字文字にすることが推奨
される。
【0332】 F31、ターゲット・サービス 使用法:BASIC(CONNECT) フォーマット:char[64] 詳細:DCEサービス識別子(プロトコル・タイプ)。識別子には、1個から
64個までの、両端を含むバイト値32から126までのASCII文字が含ま
れる。
【0333】 F32、ターゲット・アプリケーション 使用法:BASIC(CONNECT) フォーマット:char[64] 詳細:DCEアプリケーション名(デーモン、接続点、I/Oキュー名)。識
別子には、1個から64個までの、両端を含むバイト値32から126までのA
SCII文字が含まれる。
【0334】 F33、ユーザ識別子 使用法:BASIC(CONNECT) フォーマット:char[64] 詳細:DTEアプリケーション名(ユーザ識別子、接続点、I/Oキュー名)
。F32と同様に、識別子には、1個から64個までの、両端を含むバイト値3
2から126までのASCII文字が含まれる。
【0335】 F63、メッセージ長 使用法:MSGLEN(MESSAGE) フォーマット:unsigned long int(ネットワーク・バイト
順) 詳細:F64(メッセージの内容)の長さ。
【0336】 F64、アプリケーション・データ・メッセージ 使用法:BASIC(MESSAGE) フォーマット:unsigned char[] 詳細:アプリケーション固有の、数が変化する符号なしバイト。MSGLEN
プロトコル・オプションが有効な場合には、最大メッセージ長は4294967
295バイト(4GB)である。
【0337】 F65、可能な重複放出(PDE)フラグ 使用法:PDE(MESSAGE) フォーマット:unsigned char 詳細:F65は、可能な重複放出(PDE)を示す。これには、バイナリ値1
の単一のバイトが含まれなければならない。
【0338】 F66、メッセージ認証コード(MAC) 使用法:MAC(MESSAGE) フォーマット:unsigned char[64] 詳細:F66には、認証アルゴリズムに応じて1個から64個までの符号なし
バイトが含まれる。
【0339】 F67、論理グループ化(LGRP)位置 使用法:LGRP(MESSAGE) フォーマット:unsigned char 詳細:論理グループの最初のメッセージに、位置1が割り当てられ、最後のメ
ッセージに、位置2が割り当てられる。F67は、中間のメッセージには使用さ
れない。論理グループに1つのメッセージだけが含まれる場合には、F67は使
用されず、単一のメッセージが、基本プロトコルに従ってputされる。
【0340】 F91、ファイル名 使用法:BATCH(MESSAGE) フォーマット:char[64] 詳細:バッチ・ファイルのファイル名。F91には、英語の小文字および大文
字;数字;ドル記号;下線文字;ピリオド(終止符)文字に制限される、1個か
ら64個までのASCII文字が含まれる。ピリオド文字は、ファイル名に1回
だけ現れることができ、名前をタイプ・サフィックスから分離するのに使用され
る。
【0341】 F92、ファイル作成日時スタンプ 使用法:BATCH(MESSAGE) フォーマット:char[16] 詳細:グリニッジ標準時でのバッチ・ファイルの作成日時スタンプ。スタンプ
は、16個のASCII数字で、フォーマットはYYYYMMDDHHMMSS
NNであり、ここで、YYYYMMDDは、年月日を表し、HHMMSSNNは
、時、分、秒、1/100秒を表す。スタンプの一部、たとえば1/100秒を
判定できない場合には、その部分にASCIIの0を書き込まなければならない
【0342】 データ・バイト<255>を二重にしなければならないことに注意されたい。
【0343】 [応答コード] 下記のコードが、MESSAGE−REPLYのために定義されている。ユー
ザ・アプリケーションは、このプロトコルの将来のバージョンをサポートするた
めに、まだ定義されていない他のコードをサポートする準備ができていなければ
ならない。
【0344】 0 SUCCESS、通常の成功裡の完了 説明:有効なメッセージが、受信され、解釈され、処理された。これには、後
続処理のための安全な保管を含めることができる。MESSAGE−REPLY
に応答コードが含まれない時には、SUCCESSが仮定される。
【0345】 アクション:送信するアプリケーションは、送信済みとしてメッセージを更新
することができる。メッセージに関する責任は、受信するアプリケーションに渡
される。
【0346】 1001 ERROR、エラー 説明:このエラー・コードは、MESSAGE−REPLYで送信してはなら
ない。そうではなく、これは、ユーザまたは呼出し元ソフトウェアに未知のエラ
ー・コード(この節で現在定義されていない)を説明するのに使用される。
【0347】 アクション:最新のプロトコル・バージョンをサポートするようにユーザ・ソ
フトウェアをアップデートすることを検討する。
【0348】 2001 INVMSG、無効なメッセージ 説明:無効なメッセージが、受信され、したがって、処理できなかった。
【0349】 アクション:エラーについてメッセージを検査する。問題ない場合には、受信
するアプリケーションのロジックを再検討する。追加情報についてF23を調べ
る。 切断コード 下記のコードが、DISCONNECTのために定義されている。ユーザ・ア
プリケーションは、このプロトコルの将来のバージョンをサポートするために、
まだ定義されていない他のコードをサポートする準備ができていなければならな
い。
【0350】 0 SUCCESS、通常の成功裡の完了 説明:DTEまたはDCEのいずれかが、その処理を完了し、リンクのシャッ
トダウンを要求または確認している。DISCONNECTに切断コードが含ま
れない時には、SUCCESSが仮定される。
【0351】 アクション:シャットダウンを開始する場合には、リンクをクローズするため
に、対応するDISCONNECTパケットを待つ。シャットダウン要求を受信
した後には、すべての処理を完了し、対応するDISCONNECTパケットを
返す。その後、リンクをクローズすることができる。
【0352】 1001 ERROR、エラー 説明:このエラー・コードは、DISCONNECTで送信してはならない。
そうではなく、これは、ユーザまたは呼出し元ソフトウェアに未知のエラー・コ
ード(この節で現在定義されていない)を説明するのに使用する。
【0353】 アクション:最新のプロトコル・バージョンをサポートするようにユーザ・ソ
フトウェアをアップデートすることを検討する。
【0354】 3014 SRVNOTAVL、サービス使用不能 説明:DCEが、CONNECT要求を受信したが、要求されたサービスが、
使用不能であるかサポートされていない。
【0355】 アクション:サービスの名前を検査し、それがサポートされているかどうかを
検査する。
【0356】 3025 APPNOTAVL、アプリケーション使用不能 説明:DCEが、CONNECT要求を受信したが、要求されたアプリケーシ
ョンが、使用不能であるかサポートされていない。
【0357】 アクション:ターゲット・アプリケーションの名前を検査する。
【0358】 3036 APPBUSY、アプリケーション使用中、後に再試行せよ 説明:DCEが、CONNECT要求を受信したが、要求されたアプリケーシ
ョンが、現在使用中である。
【0359】 アクション:DCEアプリケーションが共用される場合には、リンクをクロー
ズし、再試行(おそらくは短い遅延の後に)する。DCEアプリケーションが共
用されない場合には、別のDTEインスタンスが走行中でないことを検査する。
【0360】 3047 APPNOTRDY、アプリケーション作動不能、後に再試行せ
よ 説明:DCEが、CONNECT要求を受信したが、要求されたアプリケーシ
ョンが、現在、新しい接続をリスンしていない。
【0361】 アクション:接続をクローズし、再試行する(短い遅延と再試行の最大回数を
使用する)。
【0362】 3058 LGIFAIL、ログイン失敗 説明:ログイン情報が正しくないか不十分であったので、DTEまたはDCE
のいずれかが、継続することができない。
【0363】 アクション:ログイン情報、認証キー、認証アルゴリズム、およびサポートさ
れるプロトコル・オプションを検査する。
【0364】 3069 AUTFAIL、認証失敗 説明:メッセージ認証に失敗したので、DTEまたはDCEのいずれかが、継
続することができない。
【0365】 アクション:認証キー、アルゴリズム、およびサポートされるプロトコル・オ
プションを検査する。
【0366】 3080 INSNEGOPT、ネゴシエートされたオプションが不十分 説明:DTEまたはDCEが、ネゴシエートされたプロトコル・オプションを
用いて継続することができない。すなわち、一方の当事者が、1つまたは複数の
プロトコル機能を必要としたが、他方の当事者がそれをサポートしなかった。
【0367】 アクション:アプリケーションが非互換である。アプリケーションの一方を変
更する。
【0368】 3091 RESFAIL、リソース障害 説明:メッセージが受信されたが、リソースに障害が発生し、メッセージを処
理できなくなった。たとえば、受信するアプリケーションが、ディスク・スペー
スまたはメモリを使い果たした可能性がある。メッセージは、有効である場合と
そうでない場合がある。メッセージは、処理されている場合とそうでない場合が
ある。
【0369】 アクション:オペレータは、受信するアプリケーションが障害を発生した理由
を調査する必要がある可能性が高い。受信するアプリケーションを修復した後に
、リンクを再オープンする。
【0370】 3102 PRTCOLERR、プロトコル・エラー 説明:アプリケーションが、既知のパケット・タイプを受信したが、パケット
が予期されないものであった。たとえば、DTEが、READYまたはDISC
ONNECTを期待していたが、MESSAGEを受信した場合に、これがプロ
トコル・エラーを構成するはずである。
【0371】 アクション:プログラミング・エラーについてユーザ・アプリケーションを検
査する。
【0372】 3113 INVPKTTYP、無効なパケット・タイプ 説明:アプリケーションが、無効なパケット・タイプを受信した。すなわち、
パケットの第1バイトが、有効なパケット識別子ではなかった。
【0373】 アクション:プログラミング・エラーについてユーザ・アプリケーションを検
査する。基礎となるトランスポートに信頼性があることを検査する。
【0374】 3124 PKTOVFBUF、パケットがバッファをオーバーフローした 説明:アプリケーションがパケットを受信し、そのパケットが、内部バッファ
・サイズを超えた。
【0375】 アクション:より小さいパケットを指定するか、アプリケーションの内部バッ
ファ・サイズを増やす。メッセージが、最大メッセージ長(アプリケーション・
レベルで定義される)より大きい場合には、DISCONNECTによってPK
TOVFBUFを返すのではなく、MESSAGE−REPLYによってINV
MSGを返さなければならない。理想的には、アプリケーションが、パケット・
サイズを制限してはならない。
【0376】 3135 TOOMANFLD、パケット内のフィールドが多すぎる 説明:他方のアプリケーションがパケットを受信したが、そのパケットが、内
部バッファに対して多すぎるパケット・フィールドを有していた。
【0377】 アクション:通常、これは、プログラミング・エラーを示し、そのエラーが多
すぎるフィールドをもたらした。ユーザ・アプリケーションを検査する。パケッ
トが正しい場合には、他方のアプリケーションの内部バッファを増やす。
【0378】 3146 INVPKTFID、無効なパケット・フィールド識別子 説明:他方のアプリケーションがパケットを受信したが、そのパケットに無効
なフィールド識別子が含まれていた。
【0379】 アクション:プログラミング・エラーについてアプリケーションを検査する。
基礎となるトランスポートに信頼性があることを検査する。
【0380】 3157 INVPKTSYN、無効なパケット構文 説明:他方のアプリケーションがパケットを受信したが、そのパケットが無効
な構文を有していた。たとえば、あるフィールドが、正しくフォーマットされて
いなかった、順序がずれていた、または脱落していた。
【0381】 アクション:プログラミング・エラーについてアプリケーションを検査する。
【0382】 3168 TIMEOUT、タイムアウト 説明:他方のアプリケーションがパケットを期待していたが、タイムアウト期
間内にパケットを受信しなかった。
【0383】 アクション:プログラミング・エラーについてユーザ・アプリケーションを検
査する。タイムアウト期間が、アプリケーション、基礎となるトランスポート、
およびネットワークについて十分であることを検査する。
【0384】 3179 INVSEQNO、無効なシーケンス番号 説明:SEQNOプロトコル・オプションが合意され、メッセージまたはメッ
セージ応答に遭遇したが、それが無効なシーケンス番号を有した。
【0385】 アクション:シーケンシング・エラーについてアプリケーションを検査する。
【0386】 3190 INVMSGLEN、無効なメッセージ長 説明:MSGLENプロトコル・オプションが合意され、F63のメッセージ
長が、F64の実際のメッセージ長と一致しなかった。
【0387】 アクション:プログラミング・エラーについて検査する。基礎となるトランス
ポートに信頼性があることを検査する。メッセージが、最大メッセージ長(アプ
リケーション・レベルで定義される)より大きい場合には、DISCONNEC
TによってINVMSGLENを返すのではなく、MESSAGE−REPLY
によってINVMSGを返さなければならない。
【0388】 [送信の例] 2つのアプリケーションの間の通信の例を示す。DTEが、出力メッセージ転
送のために接続し、1メッセージをダウンロードする。その後、DTEは、安全
シャットダウンを開始する。 t1: <192><255><031>race$generic<25
5><032>TESTAPPL<255><254> c1: <198><255><254> t2: <193><033><002><255><254> <193><053><255><254> <195><054><255><254> c2: <195><033><002><255><254> <195><053><255><254> <194><054><255><254> t3: <198><255><254> c3: <198><255><254> c4: <200><255><064>HELLO WORLD.<25
5><254> t4: <201><255><254> t5: <199><255><254> c5: <199><255><254> これは、次のように要約することができる。 t1: DTEが、CONNECT、ターゲット・サービス「race$g
e neric」、ターゲット・アプリケーション「TESTAPPL」を送信
する c1: DCEが、READYを応答する t2: DTEが、DO MODE OUTPUT、DO PDE、WIL
L RREFを送信する c2: DCEが、WILL MODE OUTPUT、WILL PDE、
DONT RREFを応答する t3: DTEが、RREFありまたはなしで継続することができるので、D
TEが、READYを送信する c3: DCEが、READYを応答する c4: DCEが、その最初のMESSAGE(「HELLO WORLD.
」)を送信する t4: DTEが、肯定の肯定応答を返す。 t5: keep aliveタイマが満了した後に、DTEが、シャットダ
ウンを要求する c5: DCEが、シャットダウンを確認する
───────────────────────────────────────────────────── フロントページの続き (71)出願人 The Leys, 2C Leyton Road, Harpenden, H erts AL5 2TL, Unite d Kingdom

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】 第1コンピュータ・アプリケーションから第2コンピュータ
    ・アプリケーションにメッセージを通信する方法であって、 前記第1アプリケーションと前記第2アプリケーションとの間のメッセージン
    グ互換性が、所定の種類のオプションのイニシエーションとネゴシエーションと
    を含むプロトコルを使用して確立され、 前記オプションが、追加オプションを含むように拡張可能であるオプションの
    組に属することを特徴とする方法。
  2. 【請求項2】 第1コンピュータ・アプリケーションから第2コンピュータ
    ・アプリケーションにメッセージを通信する方法であって、 前記第1アプリケーションと前記第2アプリケーションとの間のメッセージン
    グ互換性が、所定の種類のオプションのネゴシエーションだけに制限される必須
    要素を有する言語を含むプロトコルを使用して確立され、 前記オプションが、追加オプションを含むように拡張可能であるオプションの
    組に属することを特徴とする方法。
  3. 【請求項3】 前記第1アプリケーション又は前記第2アプリケーション、
    もしくはその両方が、前記プロトコルに対する属性を宣言することを特徴とする
    、請求項1又は請求項2に記載の第1コンピュータ・アプリケーションから第2
    コンピュータ・アプリケーションにメッセージを通信する方法。
  4. 【請求項4】 前記ネゴシエーションが、所定のオプションの許容可能なパ
    ラメータの範囲内で行われることを特徴とする請求項1乃至請求項3のいずれか
    1項に記載の方法。
  5. 【請求項5】 前記ネゴシエーション・パラメータが、ネゴシエート要求に
    含まれることを特徴とする請求項4に記載の方法。
  6. 【請求項6】 アプリケーションがオプションを実行できる場合に、前記ア
    プリケーションが、他方のアプリケーションがそのオプションをサポートするか
    どうかを最初に尋ねることを特徴とする請求項1乃至請求項5のいずれか1項に
    記載の方法。
  7. 【請求項7】 アプリケーションが、自由裁量のオプション・パラメータ値
    を述べるメッセージを他方のアプリケーションに送信することを特徴とする請求
    項6に記載の方法。
  8. 【請求項8】 他方のアプリケーションが、そのオプションをサポートしな
    い場合には、前記他方のアプリケーションが、それに応じて若しくは代替的に応
    答し、前記他方のアプリケーションがそのオプションをサポートする場合には、
    前記他方のアプリケーションが、受け入れ可能な前記自由裁量のパラメータ値を
    述べて応答し、前記2つのアプリケーションが、前記オプションを想定すること
    、若しくはさらにネゴシエートすることを可能にすることを特徴とする請求項6
    に記載の方法。
  9. 【請求項9】 ネゴシエーションが、前記2つのアプリケーションの間の会
    話の初期の限られた発生回数でのみ許容されることを特徴とする請求項1乃至請
    求項8のいずれか1項に記載の方法。
  10. 【請求項10】 追加オプションを含むための拡張が、通信中に発生しても
    よいことを特徴とする請求項1または請求項2に記載の方法。
  11. 【請求項11】 前記第1アプリケーションまたは前記第2アプリケーショ
    ンもしくはその両方が、その属性を宣言し、かつ、あらゆる関連するオプション
    が、ネゴシエートされた結果に達するためにネゴシエートされることを特徴とす
    る請求項3に記載の方法。
  12. 【請求項12】 前記ネゴシエートされた結果が、前記アプリケーションの
    一方若しくは双方によって宣言された前記属性に従うように検証されることを特
    徴とする請求項11に記載の方法。
  13. 【請求項13】 接続するアプリケーションが、全くネゴシエートしないこ
    とを特徴とする請求項1または請求項2に記載の方法。
  14. 【請求項14】 接続されるアプリケーションが、それが提案されるオプシ
    ョンをサポートしない場合に、 DONTタイプまたはWONTタイプのメッセージを用いて応答することを特徴
    とする請求項1または請求項2に記載の方法。
  15. 【請求項15】 サービス識別子およびアプリケーション識別子を、接続要
    求内に追加することができることを特徴とする請求項1または請求項2に記載の
    方法。
  16. 【請求項16】 一意の識別子が、各オプションに割り当てられることを特
    徴とする請求項1または請求項2に記載の方法。
  17. 【請求項17】 請求項1乃至請求項16のいずれか1項に記載の方法のい
    ずれかを使用することを特徴とするアプリケーション統合の方法。
  18. 【請求項18】 請求項1乃至請求項17のいずれか1項に記載の方法を使
    用するポリシ、アダプタ、またはエージェントを追加または使用する方法。
  19. 【請求項19】 請求項1乃至請求項18のいずれか1項に記載の方法を使
    用する標準APIを確立または使用する方法。
  20. 【請求項20】 アプリケーション、サービス、接続、またはメッセージの
    アドレスの一部として名前を割り当てる、若しくは使用する方法であって、前記
    メッセージが、請求項1乃至請求項19のいずれか1項に記載の方法を使用して
    通信されることを特徴とする方法。
  21. 【請求項21】 前記アプリケーションの1または両方が、実際に使用する
    通信プロトコルに合意するためにネゴシエートまたは妥協するように、前記第1
    アプリケーションまたは前記第2アプリケーションのいずれかによってサポート
    される複数の通信プロトコルを使用可能にするプロトコルを利用して、前記第1
    アプリケーションと前記第2アプリケーションとの間のメッセージング互換性が
    確立されることを特徴とする請求項1乃至請求項16のいずれか1項に記載の方
    法。
  22. 【請求項22】 請求項1乃至請求項19のいずれか1項に記載の方法を実
    行するようにプログラムされたコンピュータ・ハードウェア装置。
  23. 【請求項23】 コンピュータ・ハードウェアに請求項1乃至請求項19の
    いずれか1項に記載の方法を実行させることを可能とする、ソフトウェアがプロ
    グラムされた記憶媒体。
  24. 【請求項24】 請求項1乃至請求項19のいずれか1項に記載の方法を利
    用して若しくは、前記方法によって交換されるアプリケーション・メッセージ。
JP2000590053A 1998-12-19 1999-12-20 コンピュータ・ソフトウェア・アプリケーション間通信のためのプロトコル Withdrawn JP2002533808A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB9828159.5A GB9828159D0 (en) 1998-12-19 1998-12-19 Protocol for computer software inter-application communication
GB9828159.5 1998-12-19
PCT/GB1999/004331 WO2000038061A1 (en) 1998-12-19 1999-12-20 Protocol for computer software inter-application communication

Publications (1)

Publication Number Publication Date
JP2002533808A true JP2002533808A (ja) 2002-10-08

Family

ID=10844672

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000590053A Withdrawn JP2002533808A (ja) 1998-12-19 1999-12-20 コンピュータ・ソフトウェア・アプリケーション間通信のためのプロトコル

Country Status (4)

Country Link
EP (1) EP1153345A1 (ja)
JP (1) JP2002533808A (ja)
GB (2) GB9828159D0 (ja)
WO (1) WO2000038061A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007535256A (ja) * 2004-04-28 2007-11-29 ノキア コーポレイション プロトコルパラメータ・ネゴシエーション
US10963543B2 (en) 2017-09-11 2021-03-30 Kabushiki Kaisha Toshiba Secure communication between operating system and processes

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0369961A3 (en) * 1988-11-18 1992-09-02 International Business Machines Corporation Interface device and method in a computer system
DE69329577T2 (de) * 1992-07-01 2001-05-31 Ericsson Telefon Ab L M Verfahren und system für implementierung-unabhängige schnittstellenspezifikation
JPH0981486A (ja) * 1994-11-17 1997-03-28 Texas Instr Inc <Ti> ソフトウェア・アプリケーション・プログラム間の共通の通信インターフェースを与えるオブジェクト指向型方法及び装置
US5761421A (en) * 1996-03-25 1998-06-02 Sun Microsystems, Inc. System and method for secure peer-to-peer communication between downloaded programs

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007535256A (ja) * 2004-04-28 2007-11-29 ノキア コーポレイション プロトコルパラメータ・ネゴシエーション
US8638813B2 (en) 2004-04-28 2014-01-28 Nokia Corporation Protocol parameter negotiation
US10963543B2 (en) 2017-09-11 2021-03-30 Kabushiki Kaisha Toshiba Secure communication between operating system and processes

Also Published As

Publication number Publication date
GB2361338B (en) 2003-03-05
GB0114283D0 (en) 2001-08-01
GB2361338A (en) 2001-10-17
EP1153345A1 (en) 2001-11-14
GB9828159D0 (en) 1999-02-17
WO2000038061A1 (en) 2000-06-29

Similar Documents

Publication Publication Date Title
US5515508A (en) Client server system and method of operation including a dynamically configurable protocol stack
US5548723A (en) Object-oriented network protocol configuration system utilizing a dynamically configurable protocol stack
US5491800A (en) Object-oriented remote procedure call networking system
US7596623B2 (en) Configurable connector
US7962624B2 (en) System and method for collaborative processing of distributed applications
US5499343A (en) Object-oriented networking system with dynamically configurable communication links
US11070626B2 (en) Managing messages sent between services
JP3485219B2 (ja) 遠隔ユーザのクライアントとアプリケーション・サーバとの間の通信を管理する方法、及びシステム
US7089318B2 (en) Multi-protocol communication subsystem controller
EP0381365B1 (en) A system and method for interconnecting applications across different networks of data processing systems
US6938087B1 (en) Distributed universal communication module for facilitating delivery of network services to one or more devices communicating over multiple transport facilities
US20050193056A1 (en) Message transfer using multiplexed connections in an open system interconnection transaction processing environment
JPH10116193A (ja) 通話制御装置および通話を制御する方法
MXPA04002729A (es) Transmision y recepcion de mensajes a traves de un canal de comunicacion y modelo de programacion adaptable.
Groenbaek Conversion between the TCP and ISO transport protocols as a method of achieving interoperability between data communications systems
JPS63205747A (ja) 通信方法及びデータ処理システム
US20040243668A1 (en) Application programming interface for implementing directory service access using directory service markup language
JP2001520486A (ja) オブジェクト指向地点間通信方法およびその方法を行う通信装置
EP0978976A2 (en) An application dispatcher for server application
JP2002533808A (ja) コンピュータ・ソフトウェア・アプリケーション間通信のためのプロトコル
JP4667748B2 (ja) マルチノード・プロセスを制御する方法および装置
KR20010044464A (ko) 지정된 응용 모듈의 기능을 차용하는 그룹-독립형 메시지전송 방법 및 시스템
Mukhopadhyay An approach to realizing interoperability using APPC
AU2012216248B2 (en) Exposing Process Flows and Choreography Controllers as Web Services
Saha et al. Design and implementation of a Network Service Access Point (NSAP) for OSI-compatibility

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20050223

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050223