RFC61 日本語訳

0061 Note on Interprocess Communication in a Resource Sharing ComputerNetwork. D.C. Walden. July 1970. (Format: TXT=43946 bytes) (Obsoleted by RFC0062) (Status: UNKNOWN)
プログラムでの自動翻訳です。
RFC一覧
英語原文

Network Working Group                                        Dave Walden
Request for Comments: 61                         Bolt Beranek and Newman
                                                           July 17, 1970

コメントを求めるワーキンググループデーヴウォルデンRequestをネットワークでつないでください: 61 ボルトBeranekと1970年7月17日のニューマン

                  A Note on Interprocess Communication
                in a Resource Sharing Computer Network

リソース・シェアリングコンピュータネットワークのプロセス間通信に関する注

   The attached note is a draft of a study I am still working on.  It
   may be of general interest to network participants.

添付の注意は私がまだ働いている研究の草稿です。 それはネットワーク関係者への一般的興味のものであるかもしれません。

Walden                                                          [Page 1]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[1ページ]RFC61プロセス間通信

                        Interprocess Communication
                                   in a
                     Resource Sharing Computer Network

リソース・シェアリングコンピュータネットワークのプロセス間通信

INTRODUCTION

序論

   "A resource sharing computer network is defined to be a set of
   autonomous, independent computer systems, interconnected so as to
   permit each computer system to utilize all of the resources of each
   other computer system.  That is, a program running in one computer
   system should be able to call on the resources of the other computer
   systems much as it would normally call a subroutine."  This
   definition of a network and the desirability of such a network is
   expounded upon by Roberts and Wessler in [1].

「リソース・シェアリングコンピュータネットワークが各コンピュータ・システムが互いに関するリソースのすべてを利用することを許可するためにインタコネクトされた1セットの自治の、そして、独立しているコンピュータ・システムになるように定義される、コンピュータ・システム、」 「すなわち、1個のコンピュータ・システムへ駆け込むプログラムは通常、サブルーチンを呼び出すように他のコンピュータ・システムに関するリソースを訪問するはずであることができます。」 ネットワークが[1]でロバーツとWesslerによって述べられるネットワークのこの定義とそのようなものの願わしさ。

   The actual act of resource sharing can be performed in two ways: in a
   pairwise ad hoc manner between all pairs of computer systems in the
   network or according to a systematic network wide standard.  This
   paper develops one possible network wide system for resource sharing.

2つの方法でリソース・シェアリングの実際の行為を実行できます: ネットワークにおける、すべての組のコンピュータ・システムの間の対状の臨時の方法か系統的なネットワーク広い規格に従って。 この紙はリソース・シェアリングの1台の可能なネットワーク広いシステムを開発します。

   I believe it is natural to think of resources as being associated
   with processes [2] and therefore view the fundamental problem of
   resource sharing to be the problem of interprocess communication.  I
   also share with Carr, Crocker, and Cerf [3] the view that
   interprocess communication over a network is a subcase of general
   interprocess communication in a multiprogrammed environment.

私は、プロセス[2]に関連しているとリソースを考えて、したがって、プロセス間通信の問題になるようにリソース・シェアリングの基本的な問題を見なすのが当然であると信じています。 また、私はネットワークの上のプロセス間通信がマルチプログラムの環境における一般的なプロセス間通信に関する「副-ケース」であるという意見をカー、クロッカー、およびサーフ[3]と共有します。

   These views pervade this study and have led to a two part study.
   First, a model for a time-sharing system having capabilities
   particularly suitable for enabling interprocess communication is
   constructed.  Next, it is shown that these capabilities can be easily
   used in a generalized manner which permits interprocess communication
   between processes distributed over a computer network.

これらの視点は、この研究を瀰漫させて、2部分研究につながりました。 まず最初に、能力を特にプロセス間通信を可能にするのに適当にする時分割システムのためのモデルは構成されます。 次に、どれがコンピュータネットワークの上に分配されたプロセスの間のプロセス間通信を可能にするかは一般化された方法で容易にこれらの能力を使用できるのが示されます。

   This note contains ideas based on many sources.  Particularly
   influential were -- 1) an early sketch of a Host protocol for the
   ARPA Network [1][3][4] by W. Crowther of Bolt Beranek and Newman Inc.
   (BBN) and S. Crocker of UCLA; 2) Ackerman and Plummer's paper on the
   MIT PDP-1 time sharing system [5]; and 3) discussion with R. Kahn of
   BBN about Host protocol, message control, and routing for the ARPA
   Network.  Hopefully, there are also some original ideas in this note.
   I alone am responsible for the collection of all of these ideas into
   the system described herein, and I am therefore responsible for any
   inconsistencies or bugs in this system.

この注意は多くのソースに基づく考えを含んでいます。 特に有力である、--1) Bolt Beranekとニューマン株式会社(BBN)のW.クラウザーとUCLAのS.クロッカーによるアーパネット[1][3][4]のためのHostプロトコルの早めのスケッチ。 2) MIT PDP-1タイムシェアリングシステム[5]に関するアッカーマンとプラマーの論文。 そして、アーパネットのためのHostプロトコル、メッセージ制御、およびルーティングの周りのBBNのR.カーンとの3)議論。 また、うまくいけば、この注意にはいくつかの着想があります。 私だけがここに説明されたシステムへのこれらの考えのすべての収集に責任があります、そして、したがって、このシステムのどんな矛盾や欠陥にも責任があります。

   It must be emphasized that this note does not represent an official
   BBN position on Host protocol for the ARPA Computer Network.

この注意がARPAコンピュータNetworkのためにHostプロトコルに公式のBBN位置を表さないと強調しなければなりません。

Walden                                                          [Page 2]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[2ページ]RFC61プロセス間通信

A MODEL FOR A TIME-SHARING SYSTEM

時分割システムのためのモデル

   This section describes a model time-sharing system which I think is
   particularly suitable for performing interprocess communication.  The
   basic structure of this model time-sharing system is not original
   [5][9].

このセクションは私が特にプロセス間通信を実行するのに適当であると思うモデル時分割システムについて説明します。 このモデル時分割システムの基本構造はオリジナルの[5][9]ではありません。

   The model time-sharing system has two pieces: the monitor and the
   processes.  The monitor performs several functions, including
   switching control from process to process as appropriate (e.g., when
   a process has used "enough" time or when an interrupt occurs),
   managing core and the swapping medium, controlling the passing of
   control from one process to another (i.e., protection mechanisms),
   creating processes, caring for sleeping processes, etc.

モデル時分割システムには、2つの断片があります: モニターとプロセス。 モニターはいくつかの機能を実行します、適宜(例えば、プロセスがいつ「十分な」時間を費やしたか、そして、または中断はいつ発生しますか)処理するプロセスからコントロールを切り換えるのを含んでいて、コアとスワッピング媒体を管理して、コントロールの1つのプロセスから別のもの(すなわち、保護メカニズム)までの通過を制御して、プロセスを作成して、眠っているプロセスなどを保護していて

   The processes perform most of the functions normally thought of as
   being supervisor functions in a time-sharing system (system
   processes) as well as the normal user functions (user processes).  A
   typical system process is the disc handler or the file system.  For
   efficiency reasons it may be useful to think of system processes as
   being locked in core.

プロセスは通常、正常なユーザ機能(ユーザ・プロセス)と同様に時分割システム(システム工程)での監督機能であるとして考えられた機能の大部分を実行します。 典型的なシステム工程は、ディスク操作者かファイルシステムです。 効率理由に、コアが閉じ込められるとシステム工程を考えるのは役に立つかもしれません。

   A process can call on the monitor to perform several functions: start
   another, equal, autonomous process (i.e., load a program or find a
   copy of a program somewhere that can be shared, start it, and pass it
   some initial parameters); halt the running process; put the current
   process to sleep pending a specified event; send a message to a
   specified process; become available to receive a message from a
   specified process; become available to receive a message from any
   process; send a message to a process able to receive from any
   process; and request a unique number.  There undoubtedly should also
   be other monitor functions.  It is left as an exercise to the reader
   to convince himself that the monitor he is saddled with can be made
   to provide these functions -- most can.

プロセスは、モニターがいくつかの機能を実行するよう呼びかけることができます: 別のものを始めてください、等しいです、自治のプロセス(すなわち、プログラムをロードするか、それを共有できるところでプログラムのコピーを見つけてください、そして、それを始めてください、そして、またはいくつかの初期値パラメタをそれに通過してください)。 実行しているプロセスを止めてください。 指定されたイベントまで現在のプロセスを寝かしてください。 指定されたプロセスにメッセージを送ってください。 指定されたプロセスからメッセージを受け取るために利用可能になってください。 どんなプロセスからもメッセージを受け取るために利用可能になってください。 どんなプロセスからも受信できるプロセスにメッセージを送ってください。 そして、ユニークな数を要求してください。 また、確かに、他のモニター機能があるべきです。 読者への運動として、それが、彼が負わせられているモニターにこれらの機能を提供させることができると自分に納得させるのが残されます--大部分はそうすることができます。

   I will not concern myself with protection considerations here, but
   instead will assume all of the processes are "good" processes which
   never make any mistakes.  If the reader needs a protection structure
   to keep in mind while he reads this note, the _capability_ system
   described in [5][6][7][8] should be satisfying.

私は、ここで保護問題に携わりませんが、プロセスのすべてがどんな誤りも決してしない「良い」プロセスであると代わりに思うつもりです。 読者が彼がこの注意を読んでいる間、念頭に保つために保護構造を必要とするなら、[5][6][7][8]で説明された_能力_システムは満足させられているはずです。

   We now look a little closer at the eight operations listed above that
   a process can ask the monitor to perform.

私たちは今、少しプロセスが、モニターが実行するように頼むことができる上に記載された8つの操作ときの近くを見ます。

Walden                                                          [Page 3]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[3ページ]RFC61プロセス間通信

   START.  This operation starts another process.   It has two
   parameters -- some kind of identification for the program that is to
   be loaded and a parameter list for that program.   Once the program
   is loaded, it is started at its given entry point and passed its
   parameter list in some well known manner.  The process will continue
   to exist until it halts itself.

始まってください。 この操作は別のプロセスを始めます。 それには、2つのパラメタがあります--ロードされていることになっているプログラムのためのある種の識別とそのプログラムのためのパラメータ・リスト。 プログラムがいったんロードされていると、それは何らかのよく知られている方法で与えられたエントリー・ポイントで始められて、パラメータ・リストを渡されます。 それ自体を止めるまで、プロセスは存続するでしょう。

   HALT.  This operation puts the currently running process to sleep
   pending the completion of some event.  The operation has one
   parameter, the event to be waited for.  Sample events are arrival of
   a hardware interrupt, arrival of a message from another process, etc.
   The process is restarted at the instruction after the SLEEP command.
   The monitor never unilaterally puts a process to sleep except when
   the process overflows its quantum.

停止してください。 この操作は何らかのイベントの完成まで現在稼働しているプロセスを寝かします。 操作には、1つのパラメタ、待たれるイベントがあります。 サンプルイベントはハードウェア割込みの到着、別のプロセスからのメッセージの到着ですなど。 SLEEPが命令した後にプロセスは指示のときに再開されます。 プロセスを量子からはみ出させる時以外に、モニターは一方的にプロセスを決して寝かしません。

   RECEIVE.  This operation allows another process to send a message to
   this process.  The operation has four parameters: the port (defined
   below) awaiting the message, the port a message will be accepted
   from, a specification of the buffer available to receive the message,
   and a location of transfer to when the transmission is complete.  [In
   other words, an interrupt location.  Any message port may be used to
   allow interrupts, event channels, etc.  The user programs what he
   wants.]

受信してください。 この操作で、別のプロセスはこのプロセスにメッセージを送ることができます。 操作には、4つのパラメタがあります: メッセージを待つポート(以下では、定義される)、メッセージが受け入れられるポート、メッセージを受け取るために利用可能なバッファの仕様、およびトランスミッションが完全である時への転送の位置。 [言い換えれば、中断位置。 どんなメッセージポートも、中断、イベントチャンネルなどを許容するのに使用されるかもしれません。 ユーザは欲しいものをプログラムします。]

   SEND.  This operation sends a message to some other process.  [I
   suppose a process could also send a message to itself.]  It has four
   parameters: a port to send the message to, the port the message is
   being sent from, the message, and a location to transfer to when the
   transmission is complete.

発信してください。 この操作はある他のプロセスにメッセージを送ります。 [私は、また、プロセスがメッセージをそれ自体に送るかもしれないと思います。] それには、4つのパラメタがあります: トランスミッションが完全である時まで移すメッセージを送るポート、メッセージが送られるポート、メッセージ、および位置。

   RECEIVE ANY.  This operation allows any process to send a message to
   this process.  The operation has four parameters: the port awaiting
   the message, the buffer available to receive the message, a location
   to transfer to when the message is received, and a location where the
   port which sent the message may be noted.

何でも受信してください。 この操作で、どんなプロセスもこのプロセスにメッセージを送ることができます。 操作には、4つのパラメタがあります: メッセージ(メッセージ、メッセージが受信されている時まで移す位置、およびメッセージを送ったポートが述べられるかもしれない位置を受け取るために利用可能なバッファ)を待つポート。

   SEND FROM ANY.  This operation allows a process to send a message to
   a process able to receive a message from any process.  It has the
   same four parameters as SEND.  The necessity for this operation will
   be discussed below.

いずれからも、発信してください。 この操作で、プロセスはどんなプロセスからもメッセージを受け取ることができるプロセスにメッセージを送ることができます。 それには、SENDと同じ4つのパラメタがあります。 以下でこの操作の必要性について議論するでしょう。

   UNIQUE.  This operation obtains a unique number from the monitor.

ユニーク。 この操作はモニターからユニークな数を得ます。

   A _port_ is a particular data path to or from a process.  All ports
   have an associated unique number which is used to identify the port.
   Ports are used in transmitting messages from one process to another
   in the following fashion.  Consider two processes, A and B, wishing
   to communicate.  Process A executes a RECEIVE at port N from port M.

_ポート_はプロセスかプロセスからの特定のデータ経路です。 すべてのポートには、ポートを特定するのに使用される関連ユニークな数があります。 ポートは以下のファッションで1つのプロセスから別のプロセスまでメッセージを送る際に使用されます。 交信することを願っていて、2プロセス、A、およびBを考えてください。 プロセスAはポートNでポートMからRECEIVEを実行します。

Walden                                                          [Page 4]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[4ページ]RFC61プロセス間通信

   Process B executes a SEND to port N from port M.  The monitor matches
   up the port numbers and transfers the message from process B to
   process A.  As soon as the buffer has been fully transmitted out of
   process B, process B is restarted at the location specified in the
   SEND operation.  As soon as the message is fully received at process
   A, process A is restarted at the location specified in the RECEIVE
   operation.  Just how the processes come by the correct port numbers
   with which to communicate with other processes is not the concern of
   the monitor -- this problem is left to the processes.

プロセスBは、モニターがポートナンバーに合わせるポートM.からのNを移植するためにSENDを実行して、バッファがプロセスBから完全に伝えられたようにすぐA.Asを処理するためにプロセスBからメッセージを移して、プロセスBはSEND操作で指定された位置で再開されます。 プロセスAにメッセージを完全に受け取るとすぐに、プロセスAはRECEIVE操作で指定された位置で再開されます。 プロセスはいったい、どう、他のプロセスで交信するのが、モニターの関心でない適度のポートナンバーを得るか--この問題はプロセスに残されます。

   An example.  Suppose that our model time-sharing system is
   initialized to have several processes always running.  Additionally,
   these permanent processes have some universally known and permanently
   assigned ports.  [Or perhaps there is only one permanently known port
   which belongs to a directory-process which keeps a table of
   permanent-process/well-known-port associations.]  Suppose that two of
   the permanently running processes are the logger-process and the
   teletype-scanner-process.  When the teletype-scanner-process first
   starts running, it puts itself to sleep awaiting an interrupt from
   the hardware teletype scanner.  The logger-process initially puts
   itself to sleep awaiting a message from the teletype-scanner-process
   via well-known permanent SEND and RECEIVE ports.  The teletype-
   scanner-process keeps a table indexed by teletype number containing
   in each entry a port to send characters from that teletype to, and a
   port at which to receive characters for that teletype.  If a
   character arrives (waking up the teletype-scanner-process) and the
   process does not have any entry for that teletype, it gets a pair of
   unique numbers from the monitor (via UNIQUE) and sends a message
   containing this pair of numbers to the logger-process using the ports
   that the logger-process is known to have a RECEIVE pending for.
   [Actually, the scanner process could always use the same pair of port
   numbers for a particular teletype as long as they were passed on to
   only one copy of the executive at a time.]  The scanner-process also
   enters the pair of numbers in the teletype table, and sends the
   characters and all future characters from this teletype to the port
   with the first number from the port with the second number.  The
   scanner-process probably also passes a second pair of unique numbers
   to the logger-process for it to use for teletype output and does a
   RECEIVE using these numbers.  The logger-process when it receives the
   message from the scanner-process, starts up a copy of what SDS 940
   TSS [12] users call the executive (that program which prints file
   directories, tells who is on other teletypes, runs subsystems, etc.)
   and passes this copy of the executive, the port numbers so this
   executive-process can also do its in's and out's to the teletype
   using these ports.  If the logger-process wants to get a job number
   and password from the user, it can temporarily use the port numbers
   to communicate with the user before it passes them on to the
   executive.

例。 私たちのモデル時分割システムがいくつかのプロセスをいつも稼働させるように初期化されると仮定してください。 さらに、これらの永久的なプロセスには、いくつかの一般に知られていて、永久に割り当てられたポートがあります。 または、永久に、1つしかありません。[よく知られる永久的なプロセス/ポートのテーブルが協会であることを保つディレクトリプロセスに属すポートを知っている、] 2つの永久に稼働しているプロセスがきこりプロセスとテレタイプスキャナプロセスであると仮定してください。 テレタイプスキャナプロセスが最初に稼働し始めるとき、それはハードウェアテレタイプスキャナから中断を待つ睡眠にそれ自体をつけます。 きこりプロセスは初めは、よく知られる永久的なSENDとRECEIVEポートを通してそれ自体をテレタイプスキャナプロセスからメッセージを待つ睡眠につけます。 テレタイプスキャナプロセスは、各エントリーにそのテレタイプからのキャラクタを送るポート、およびそのテレタイプのためにキャラクタを受けるポートを保管しているテレタイプ番号でテーブルに索引をつけ続けます。 キャラクタが到着して(テレタイプスキャナプロセスで目覚めて)、プロセスにそのテレタイプのためのエントリーが少しのないなら、それは、きこりプロセスが未定のRECEIVEを持つのが知られているポートを使用することでモニター(UNIQUEを通した)から1組のユニークな数を得て、数のこの組を含むメッセージをきこりプロセスに送ります。 [実際に、それらが一度に幹部社員のコピー1部だけに通過された限り、スキャナプロセスは特定のテレタイプにいつもポートナンバーの同じ組を使用するかもしれません。] スキャナプロセスは、また、数の組にテレタイプテーブルに入って、最初の数と共に2番目の数でキャラクタとすべての将来のキャラクタをポートからこのテレタイプからポートに追い出します。 スキャナプロセスは、また、たぶんそれがテレタイプ出力に使用するきこりプロセスにユニークな数の2番目の組を通過して、これらの数を使用することでRECEIVEをします。 それであるときに、また、この幹部社員プロセスがコネのものができるように、きこりプロセスは、スキャナプロセスからメッセージを受け取って、SDS940TSS[12]ユーザが幹部社員(ファイルディレクトリを印刷して、だれが他のテレタイプの上にいるかを言って、サブシステムを実行するなどそのプログラム)と呼ぶことに関するコピーを立ち上げて、幹部社員、ポートナンバーのこのコピーを渡します、そして、外に、テレタイプ使用へのこれらのポートがあります。 ユーザから職務番号とパスワードを得るきこりプロセス必需品であるなら、それは、それらを幹部社員に渡す前にユーザとコミュニケートするのに一時ポートナンバーを使用できます。

Walden                                                          [Page 5]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[5ページ]RFC61プロセス間通信

   _Port numbers_ are often passed among processes.  More rarely, a port
   is transferred to another process.  It is crucial that once a process
   transfers a _port_ to some other process that the first process no
   longer use the port.  We could add a mechanism that enforces this.
   The protected object system of [8] is one such mechanism.  [Of
   course, if the protected object system is available to us, there is
   really no need for two port numbers to be specified before a
   transmission can take place.  The fact that a process knows an
   existing RECEIVE port number is prima facie evidence of the process'
   right to send to that port.  The difference between RECEIVE and
   RECEIVE ANY ports then depends solely on the number of copies of a
   particular port number that have been passed out.  A system based on
   this approach would clearly be preferable to the one described here
   if it was possible to assume all of the autonomous time-sharing
   system in a network would adopt this protection mechanism.  If this
   assumption cannot be made, it seems more practical to require both
   port numbers.]

_ポートナンバー_はプロセスの中でしばしば渡されます。 よりめったに、ポートは別のプロセスに移されません。 プロセスがいったん1番目が処理するある他のプロセスに_ポート_を移すとそれがもうポートを使用しないのは、重要です。 私たちはこれを実施するメカニズムを加えることができました。 [8]の保護されたオブジェクトシステムはそのようなメカニズムの1つです。 [もちろん、私たちにとって、保護されたオブジェクトシステムが利用可能であるなら、トランスミッションが行われることができる前に2つのポートナンバーが指定される必要は本当に全くありません。 プロセスが既存のRECEIVEポートナンバーに知っている事実は一見したところではそのポートに発信する過程の権利に関する証拠です。 そして、RECEIVEとRECEIVE ANYポートの違いは唯一配られた指定港番号のコピーの数に依存します。 このアプローチに基づくシステムはネットワークにおける自動時分割システムのすべてがこの保護メカニズムを採用すると仮定するのが可能であったならここで説明されたものより明確に望ましいでしょう。 この仮定をすることができないなら、両方のポートナンバーを必要とするのは、より実用的に思えます。]

   Note that somewhere in the monitor there must be a table of  port
   numbers associated with processes and restart locations.  The table
   entries are cleared after each SEND/RECEIVE match is made.  Also note
   that if a process is running (perhaps asleep), and has RECEIVE ANY
   pending, then any process knowing the receive port number can talk to
   that process without going through loggers or any of that.  This is
   obviously essential within a local time-sharing system and seems very
   useful in a more general network if the ideal of resource sharing is
   to be reached.

プロセスと再開位置に関連しているポートナンバーのテーブルがそこにモニターのどこかにあるに違いないことに注意してください。 それぞれのSEND/RECEIVEマッチが作られた後にテーブル項目はクリアされます。 また、プロセスが稼働していて(恐らく眠っている)、未定のRECEIVE ANYを持っているならいずれも知っていることを処理することに注意してください、数がそのきこりかいずれも通らないでそのプロセスと話すことができるポートを受けてください。 これは、現地時間の共有しているシステムの中で明らかに不可欠であり、リソース・シェアリングの理想が達することであるなら、より一般的なネットワークで非常に役に立つように見えます。

   When a SEND is executed, nothing happens until a matching RECEIVE is
   executed.  If a proper RECEIVE is not executed for some time the SEND
   is timed out after a while and the SENDing process is notified.  If a
   RECEIVE is executed but the matching SEND does not happen for a long
   time, the RECEIVE is timed out and the RECEIVing process is notified.

SENDが実行されるとき、合っているRECEIVEが実行されるまで、何も起こりません。 適切なRECEIVEがしばらく実行されないなら、SENDはしばらくしてから調節されています、そして、SENDingプロセスは通知されます。 RECEIVEが実行されるか、しかし、合っているSENDは長い間、起こりません、そして、RECEIVEは外で調節されています、そして、RECEIVingプロセスは通知されます。

   A RECEIVE ANY never times out, but may be taken back.  A SEND FROM
   ANY message is always sent immediately and will be discarded if a
   proper receiver does not exist.  An error message is not returned and
   acknowledgment, if any, is up to the processes.  If the table where
   the SEND and RECEIVE are matched up ever overflows, a process
   originating a further SEND or RECEIVE is notified just as if the SEND
   or RECEIVE timed out.

RECEIVE ANY、決して取り戻すかもしれない以外の回のアウトでない。 適切な受信機が存在していないと、SEND FROM ANYメッセージは、すぐに、いつも送られて、捨てられるでしょう。 エラーメッセージは返されません、そして、もしあれば承認はプロセス次第です。 SENDとRECEIVEが今までに合っているテーブルがあふれるなら、まるでまさしくSENDかRECEIVEが外で調節するかのように一層のSENDかRECEIVEを溯源するプロセスは通知されます。

   Generally, well known, permanently assigned ports are used via
   RECEIVE ANY and SEND FROM ANY.  The permanent ports will most often
   be used for starting processes going and consequently little data
   will be sent via them.

一般に、よく知られていて、永久に割り当てられたポートはRECEIVE ANYとSEND FROM ANYを通して使用されます。 プロセスが行き始めるために永久的なポートをたいてい使用するでしょう、そして、その結果、それらを通して小さいデータを送るでしょう。

Walden                                                          [Page 6]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[6ページ]RFC61プロセス間通信

   Still another example, this time a demonstration of the use of the
   FORTRAN compiler.  We have already explained how a user sits down at
   his teletype and gets connected to an executive.  We go on from
   there.  The user is typing in and out of the executive which is doing
   SENDs and RECEIVEs.  Eventually the user types RUN FORTRAN and the
   executive asks the monitor to start up a copy of the FORTRAN compiler
   and passes to FORTRAN as start up parameters the two ports the
   executive was using to talk to the teletype.  FORTRAN is of course
   expecting these parameters and does SENDs and RECEIVEs to these ports
   to discover what input and output files the user wants to use.
   FORTRAN types INPUT FILE? to the user who responds F001.  FORTRAN
   then sends a message to the file-system-process which is asleep
   waiting for something to do.  The message is sent via well-known
   ports and it asks the file system to open F001 for input.  The
   message also contains a pair of ports that the file-system-process
   can use to send its reply.  The file-system looks up F001, opens it
   for input, makes some entries in its open file tables, and sends a
   message back to FORTRAN which contains the ports which FORTRAN can
   use to read the file.  The same procedure is followed for the output
   file.  When the compilation is complete, FORTRAN returns the teletype
   port numbers back to the executive which has been asleep waiting for
   a message from FORTRAN, and then FORTRAN halts itself.  The file-
   system-process goes back to sleep when it has nothing else to do.

別の例、FORTRANコンパイラの使用のこの時間aデモンストレーションを静めてください。 私たちは既にユーザがどう彼のテレタイプに座って、幹部社員に接されるかを説明しました。 私たちはそこから先へ進みます。 ユーザは内外でSENDsとRECEIVEsをしている幹部社員にタイプしています。 結局、ユーザはRUN FORTRANをタイプします、そして、幹部社員は始動パラメタとしてのFORTRANへのFORTRANコンパイラとパスのコピーで幹部社員がテレタイプと話すのに使用していた2つのポートを始動するようにモニターに頼みます。 FORTRANは、ユーザがどんな入力と出力ファイルを使用したがっているかを発見するためにもちろんこれらのパラメタを予想していて、これらのポートにSENDsとRECEIVEsをします。 FORTRANはF001を反応させるユーザにINPUT FILEをタイプします。 そして、FORTRANはすることを待ちながら眠っているファイルシステム工程にメッセージを送ります。 ウェルノウンポートでメッセージを送ります、そして、それは入力のために開いているF001にファイルシステムを招きます。 また、メッセージはファイルシステム工程が回答を送るのに使用できる1組のポートを含んでいます。 ファイルシステムは、ファイルを読むためにF001を見上げて、入力のためにそれを開いて、オープン・ファイルテーブルでいくつかのエントリーをして、FORTRANが使用できるポートを含むFORTRANにメッセージを送り返します。 同じ手順は出力ファイルのために従われています。 編集が完全であるときに、FORTRANはFORTRAN、および次に、FORTRAN停止からのメッセージ自体を待ちながら眠っている幹部社員にテレタイプポートナンバーを返して戻します。 それにしない他に何もがないとき、ファイルシステム工程は活動を休止します。

   [The reader should have noticed by now that I do not like to think of
   a new process (consisting of a new conceptual copy of a program)
   being started up each time another user wishes to use the program.
   Rather, I like to think of the program as a single process which
   knows it is being used simultaneously by many other processes and
   consciously multiplexes among the users or delays service to users
   until it can get around to them.]

[読者は、今ごろ、私が、別のユーザがプログラムを使用したがっているとその都度立ち上げられているニュープロセス(プログラムの新しい概念的なコピーから成る)を考えるのが好きでないのに気付くべきでした。 むしろ、私は、単一のプロセスとしての彼らのひまができることができるまで意識して同時に、他の多くのプロセスによって使用されていて、ユーザの中で多重送信するか、またはユーザに対するサービスを遅らせるのを知っているプログラムを考えるのが好きです。]

   Again, the file-system-process can keep a small collection of port
   numbers which it uses over and over if it can get file system users
   to return the port numbers when they are done with them.  Of course,
   when this collection of port numbers has eventually dribbled away,
   the file system can get some new unique numbers from the monitor.

一方、それらでそれらをするとファイルシステムユーザがそれでポートナンバーを返すことができるなら、ファイルシステム工程はそれが再三使用するポートナンバーのわずかな収集を保管できます。 もちろん、ポートナンバーのこの収集が結局遠くにしたたったとき、ファイルシステムはモニターから数個の新しいユニークな数を得ることができます。

   Note that when two processes wish to communicate they set up the
   connection themselves, and they are free to do it in a mutually
   convenient manner.  For instance, they can exchange port numbers or
   one process can pick all the port numbers and instruct the other
   process which to use.  Of course, in a particular implementation of a
   time-sharing system, the builders of the system might choose to
   restrict the processes' execution of SENDs and RECEIVEs and might
   forbid arbitrary passing around of port numbers, requiring instead
   that the monitor be called (or some other special program) to perform
   these functions.

2つのプロセスが交信したがっているとき、自分たちで接続をセットアップして、互いに便利な方法で自由にそれができることに注意してください。 例えば、彼らは使用にどれを処理できるか交換ポートナンバーか1つのプロセスが、すべてのポートナンバーを選んで、もう片方を命令できる。 もちろん、システムのビルダーは、時分割システムの特定の実装では、プロセスのSENDsとRECEIVEsの実行を制限するのを選んで、ポートナンバーの任意のパスを禁じるかもしれません、代わりにモニターがこれらの機能を実行するために呼ばれるのが(または、ある他の特別なプログラム)必要であることで。

Walden                                                          [Page 7]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[7ページ]RFC61プロセス間通信

   Flow control is provided in this system by the simple method of never
   starting a SEND from one process until a RECEIVE is executed by the
   receiver.  Of course, interprocess messages may be sent back and
   forth suggesting that a process stop sending or that space be
   allocated, etc.

RECEIVEが受信機によって実行されるまで1つのプロセスからSENDを決して始動しないことという簡単なやり方でこのシステムにフロー制御を提供する、もちろん、プロセス停止送付かそのスペースを割り当てるのなどを示しながら、前後にインタプロセスメッセージを送るかもしれません。

INTERPROCESS COMMUNICATION BETWEEN REMOTE PROCESS

リモートプロセスの間のプロセス間通信

   The system described in the previous section easily generalizes to
   allow interprocess communication between processes at geographically
   different locations as, for example, within a computer network.

前項で容易に説明されたシステムは、例えばコンピュータネットワークのように地理的に異なった位置のプロセスの間のプロセス間通信を許容するために広められます。

   Consider first a simple configuration of processes distributed around
   the points of a star.  At each point of the star there is an
   autonomous time-sharing system.  A rather large, smart computer
   system, called the Network Controller, exists at the center of the
   star.  No processes can run in this center system, but rather it
   should be thought of as an extension of the monitor of each time-
   sharing system in the network.

1番目が星のポイントの周りで分配されたプロセスの簡単な構成であると考えてください。 星の各ポイントに、自動時分割システムがあります。 Network Controllerと呼ばれるかなり大きくて、賢いコンピュータ・システムは星のセンターに存在しています。 どんなプロセスもこのセンターシステムに立候補できませんが、むしろそれはネットワークにおける、それぞれの時間共有システムのモニターの拡大として考えられるべきです。

   It should be obvious to the reader that if the Network Controller is
   able to perform the operations SEND, RECEIVE, SEND FROM ANY, RECEIVE
   ANY, and UNIQUE and that if all of the monitors in all of the time-
   sharing systems in the network do not perform these operations
   themselves but rather ask the Network Controller to perform these
   operations for them, then we have solved the problem of interprocess
   communication between remote processes.  We have no further change to
   make.

現代のすべてでのネットワークでシステムを共有しているモニターが皆、これらの操作自体を実行するのではなく、それらのためにこれらの操作を実行するようにNetwork Controllerにむしろ頼むなら私たちがリモートプロセスの間のプロセス間通信の問題を解決したのは、Network Controllerであるなら操作のSEND、RECEIVE、SEND FROM ANY、RECEIVE ANY、およびUNIQUEを実行できる読者とそれに明白であるべきです。 私たちには、行う変更がこれ以上ありません。

   The reason everything continues to work when we postulate the
   existence of the Network Controller is that the Network Controller
   can keep track of which RECEIVEs have been executed and which SENDs
   have been executed and match them up just as the monitor did in the
   model time-sharing system.  A networkwide port numbering scheme is
   also possible with the Network Controller knowing where (i.e., at
   which site) a particular port is at a particular time.

すべてが、私たちがNetwork Controllerの存在を仮定するとき、働き続けている理由はちょうどモニターがモデル時分割システムでしたように、Network ControllerがどのRECEIVEsが実行されるか、そして、どのSENDsが実行されたかに関する道を保って、彼らを合わせることができるということです。 また、Network Controllerが、特定の時に、(すなわち、どのサイトの)指定港がどこにあるかを知っていて、networkwideポートナンバリングスキームも可能です。

   Next, consider a more complex network in which there is no common
   center point making it necessary to distribute the functions
   performed by the Network Controller among the network nodes.  In the
   rest of this section I will show that it is possible to efficiently
   and conveniently distribute the functions performed by the star
   Network Controller among the many network sites and still enable
   general interprocess communication between remote processes.

次に、ネットワーク・ノードの中にNetwork Controllerによって実行された機能を分配するのを必要にするどんな一般的な天元もないより複雑なネットワークを考えてください。 このセクションの残りでは、私は、効率的に便利にNetwork Controllerスターによって実行された機能を多くのネットワークサイトに分配して、リモートプロセスの間でまだ一般的なプロセス間通信を可能にしているのが可能であることを示すつもりです。

   Some changes must be made to each of the four SEND/RECEIVE operations
   described above to adapt them for use in a distributed network.  To
   RECEIVE is added a parameter specifying a site to which the RECEIVE

分配されたネットワークにおける使用のためにそれらを適合させるのをいくつかの変更を上で説明されたそれぞれの4つのSEND/RECEIVE操作にしなければなりません。 RECEIVEには、サイトを指定する付記されたaパラメタがある、どれ、RECEIVE

Walden                                                          [Page 8]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[8ページ]RFC61プロセス間通信

   is to be sent.  To SEND FROM ANY and SEND is added a site to send the
   SEND to although this is normally the local site.  Both RECEIVE and
   RECEIVE ANY have added the provision for obtain the source site of
   any received message.  Thus, when a RECEIVE is executed, the RECEIVE
   is sent to the site specified, possibly a remote site.  Concurrently
   a SEND is sent to the same site, normally the local site of the
   process executing the SEND.  At this site, called the rendezvous
   site, the RECEIVE is matched with the proper SEND and the message
   transmission is allowed to take place to the site from whence the
   RECEIVE came.

送られることになっています。 SEND FROM ANYとSENDには、これが通常ローカル・サイトですが、SENDを送る加えられたaサイトがあります。 RECEIVEとRECEIVE ANYが支給を加えた両方がどんな受信されたメッセージのソースサイトも得ます。 RECEIVEを実行するとき、したがって、指定されたサイト、ことによるとリモートサイトにRECEIVEを送ります。 同時に、同じサイト、通常SENDを実行するプロセスのローカル・サイトにSENDを送ります。 ランデブーサイトと呼ばれるこのサイトでは、RECEIVEは適切なSENDに合わせられています、そして、メッセージ送信は起源からのサイトへのRECEIVEが来た場所を取ることができます。

   A RECEIVE ANY never leaves its originating site and therein lies the
   necessity for SEND FROM ANY.  It must be possible to send a message
   to a RECEIVE ANY port and not have the message blocked waiting for
   RECEIVE at the sending site.  Of course, it would be possible to
   construct the system so the SEND/RECEIVE rendezvous takes place at
   the RECEIVE site and eliminate the SEND FROM ANY operation, but in my
   judgment the ability to block a normal SEND transmission at the
   source site more than makes up for the added complexity.

RECEIVE ANYは送信側サイトを決して出ません、そして、そこに、SEND FROM ANYの必要があります。 RECEIVE ANYポートにメッセージを送って、RECEIVEを待ちながら送付サイトでメッセージを妨げさせないのは可能であるに違いありません。 もちろん、システムを構成するのが可能であるだろう、ランデブーが取るSEND/RECEIVEは、加えられた複雑さの埋め合わせをするよりRECEIVEサイトで入賞するので、SEND FROM ANY操作、ソースサイトで通常のSENDトランスミッションをさらに妨げるしかし、私の意見では能力を根絶します。

   Somewhere at each site a rendezvous table is kept.  This table
   contains an entry for each unmatched SEND or RECEIVE received at that
   site and also an entry for all RECEIVE ANYs given at that site.  A
   matching SEND/RECEIVE pair is cleared from the table as soon as the
   match takes place or perhaps when the transmission is complete.  As
   in the similar table kept in the model time-sharing system, SEND and
   RECEIVE entries are timed out if unmatched for too long and the
   originator is notified.  RECEIVE ANY entries are cleared from the
   table when a fulfilling message arrives.

各サイトのどこかでは、ランデブーテーブルが保たれます。 このテーブルはそのサイトに受け取られた各優れたSENDかRECEIVEのためのエントリーとそのサイトで与えられているすべてのRECEIVE ANYsのためのエントリーも含んでいます。 マッチが行われるとすぐにか恐らくトランスミッションが完全であるときに、合っているSEND/RECEIVE組はテーブルから追い出されます。 あまりに長い間優れているならモデル時分割システム、SEND、およびRECEIVEエントリーが調節されているコネであることが保たれた同様のテーブルと創始者で通知されるように。 実現しているメッセージが到着すると、RECEIVE ANYエントリーはテーブルからクリアされます。

   The final change necessary to distribute the Network Controller
   functions is to give each site a portion of the unique numbers to
   distribute via its UNIQUE operation.  I'll discuss this topic further
   below.

Network Controller機能を分配するのに必要な最終的な変化はUNIQUE操作で分配するユニークな数の部分を各サイトに与えることになっています。 私はさらに以下のこの話題について議論するつもりです。

   To make it clear to the reader how the distributed Network Controller
   works, an example follows.  The details of what process picks port
   numbers, etc.  are only exemplary and are not a standard specified as
   part of the system.

分配されたNetwork Controllerがどう働いているかを読者に断言するために、例は従います。 どんなプロセスがポートナンバーを選ぶかに関する詳細、などは、模範的であるだけであり、システムの一部として指定された規格ではありません。

   Suppose there are two sites in the network: K and L.  Process A at
   site K wishes to communicate with process B at site L.  Process B has
   a RECEIVE ANY pending at port M.

ネットワークには2つのサイトがあると仮定してください: サイトKのAがコミュニケートしたがっているKとL.ProcessはサイトL.でBを処理します。Process Bには、ポートMで未定のRECEIVE ANYがあります。

Walden                                                          [Page 9]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[9ページ]RFC61プロセス間通信

                    SITE K              SITE L
                  ________            ________
                 /        \          /        \
                /          \        /          \
               /            \      /            \
              |  Process A   |    |   Process B  |
              |              |    |              |
              |              |    |              |
               \            /      \            /
                \          /        \   port M /
                 \________/          \____^___/
                                          |
                                      RECEIVE ANY

サイトKサイトL________ ________ / \ / \ / \ / \ / \ / \ | プロセスA| | プロセスB| | | | | | | | | \/\/\/\ポートM/\________/ \____^___/ | 何でも受信してください。

   Process A, fortunately, knows of the existence of port M at site L
   and sends messages using the SEND FROM ANY operation from port N to
   port M.  The message contains two port numbers and instructions for
   process B to SEND messages to process A to port P from port Q.  Site
   K's site number is appended to this message along with the message's
   SEND port N.

プロセスAは、ポートQ.からのPを移植するためにAを処理するSENDメッセージにサイトLで幸いポートMの存在を知って、プロセスBのために、M. メッセージを移植するのにポートNからSEND FROM ANY操作を使用すると2つのポートナンバーと指示が含んでいるというメッセージを送ります。メッセージのSENDポートNに伴うこのメッセージにSite Kのサイト番号を追加します。

                   SITE K                        SITE L
                 ________                      ________
                /        \                    /        \
               /          \                  /          \
              /            \                /            \
             |  Process A   |              |   Process B  |
             |              |              |              |
             |              |              |              |
              \            /                \            /
               \  port N  /--->SEND FROM --->\  port M  /
                \________/       ANY          \________/

サイトKサイトL________ ________ / \ / \ / \ / \ / \ / \ | プロセスA| | プロセスB| | | | | | | | | \/\/\ポートN/--->は発信します。--->\ポートM/\________/はあらゆる\です。________/

                           to port M, site L
                           containing K, N, P, & Q

M、K、N、P、およびQを含むサイトLを移植するために

   Process A now executes a RECEIVE at port P from port Q.  Process A
   specifies the rendezvous site to be site L.

プロセスAは現在、ポートPでポートQ.からRECEIVEを実行します。Process Aは、サイトLになるようにランデブーサイトを指定します。

Walden                                                         [Page 10]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[10ページ]RFC61プロセス間通信

                    SITE K                         SITE L
                  ________                 R    ________
                 /        \                e   /        \
                /          \               n T/          \
               /            \              d a            \
              |              |             e b  Process B |
              |  Process A   |             z l            |
              |              |             v e            |
               \            /              o \            /
                \  port P  /  RECEIVE ---> u  \          /
                 \________/   MESSAGE      s   \________/

サイトKサイトL________ R________ /\e/\/\n T/\/\dは\です。| | e bプロセスB| | プロセスA| z l| | | eに対して| \/o\/\ポートP/RECEIVE--->u\/\________/メッセージs\________/

                                to site L
                                containing P, Q, & K

P、Q、およびKを含むサイトLに

   A RECEIVE message is sent from site K to site L and is entered in the
   rendezvous table at site L.  At some other time, process B executes a
   SEND to port P from port Q specifying site L as the rendezvous site.

RECEIVEメッセージは、サイトKからサイトLに送られて、いつかサイトL.Atのランデブーテーブルに入力されて、プロセスBは、ランデブーサイトとしてサイトLを指定しながらポートQからのPを移植するためにSENDを実行します。

                    SITE K                         SITE L
                  ________                 R    ________
                 /        \                e   /        \
                /          \               n T/          \
               /            \              d a            \
              |              |             e b  Process B |
              |  Process A   |             z l            |
              |              |             v e            |
               \            /              o \            /
                \  port P  /               u <--- port Q /
                 \________/    SEND        s   \________/
                                to site L
                                containing P & Q

サイトKサイトL________ R________ /\e/\/\n T/\/\dは\です。| | e bプロセスB| | プロセスA| z l| | | eに対して| \/o\/\ポートP/u<。--- ポートQ/\________/はs\を送ります。________P&Qを含むサイトLへの/

   A rendezvous is made, the rendezvous table entry is cleared, and the
   transmission to port P at site K takes place.  The SEND site number
   (and conceivably the SEND port number) are appended to the messages
   of the transmission for the edification of the receiving process.

ランデブーをします、そして、ランデブーテーブルエントリーはクリアされます、そして、サイトKでPを移植するトランスミッションは行われます。 SENDサイト番号(多分、SENDは数を移植する)を受信プロセスの啓発のためのトランスミッションに関するメッセージに追加します。

Walden                                                         [Page 11]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[11ページ]RFC61プロセス間通信

                SITE K                                SITE L
              ________                              ________
             /        \                            /        \
            /          \                          /          \
           /            \                        /            \
          |   Process A  |                      |  Process B   |
          |              |                      |              |
          |              |                      |              |
           \  port P    /                        \  port Q    /
            \          / <---- transmission <---- \          /
             \________/    to port T, site K       \________/
                            containing data and L

サイトKサイトL________ ________ / \ / \ / \ / \ / \ / \ | プロセスA| | プロセスB| | | | | | | | | \ポートP/\ポートQ/\/<。---- トランスミッション<。---- \ / \________T、サイトK\を移植する/________データとLを含む/

   Process B may simultaneously wish to execute a RECEIVE from port N at
   port M.

プロセスBは同時に、ポートMのポートNからRECEIVEを実行したがっているかもしれません。

   Note that there is only one important control message in this system
   which moves between sites, the type of message that is called a
   Host/Host protocol message in [3].  This control message is the
   RECEIVE message.  There are two other possible intersite control
   messages: an error message to the originating site when a RECEIVE or
   SEND is timed out, and the SEND message in the rare case when the
   rendezvous site is not the SEND site.

サイト([3]にHost/ホストプロトコルメッセージと呼ばれるメッセージのタイプ)の間で移行するこのシステムには1つの重要なコントロールメッセージしかないことに注意してください。 このコントロールメッセージはRECEIVEメッセージです。 他の2つの可能なintersiteコントロールメッセージがあります: RECEIVEかSENDであるときに、送信側サイトへのエラーメッセージは、調節されたアウトと、ランデブーサイトがSENDサイトでないことのまれなケースの中のSENDメッセージです。

   Of course there must also be a standard format for messages between
   ports.  For example, the following:

また、もちろん、ポートの間には、メッセージのための標準書式があるに違いありません。 例えば、以下、:

Walden                                                         [Page 12]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[12ページ]RFC61プロセス間通信

    +-----------------+  +-----------------+  +-----------------+
    | rendezvous site |  | destination site|  |  source site    |
    +-----------------+  +-----------------+  +-----------------+
    | RECEIVE port    |  | RECEIVE port    |  |  RECEIVE port   |
    +-----------------+  +-----------------+  +-----------------+
    | SEND port       |  | SEND port       |  |   SEND port     |
    +-----------------+  +-----------------+  +-----------------+
    |                 |  | source port     |  |                 |
    |                 |  +-----------------+  |                 |
    |                 |  |                 |  |                 |
    |                 |  |                 |  |                 |
    |                 |  |                 |  |                 |
    |                 |  |                 |  |                 |
    |                 |  |                 |  |                 |
    |     data        |  |      data       |  |     data        |
    |                 |  |                 |  |                 |
    |                 |  |                 |  |                 |
    |                 |  |                 |  |                 |
    |                 |  |                 |  |                 |
    |                 |  |                 |  |                 |
    |                 |  |                 |  |                 |
    +-----------------+  +-----------------+  +-----------------+
       transmitted           transmitted          received
       by SEND               by Network           by RECEIVE
       process               Controller           process

+-----------------+ +-----------------+ +-----------------+ | ランデブーサイト| | 目的地サイト| | ソースサイト| +-----------------+ +-----------------+ +-----------------+ | RECEIVEポート| | RECEIVEポート| | RECEIVEポート| +-----------------+ +-----------------+ +-----------------+ | SENDポート| | SENDポート| | SENDポート| +-----------------+ +-----------------+ +-----------------+ | | | ソースポート| | | | | +-----------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | データ| | データ| | データ| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----------------+ +-----------------+ +-----------------伝えられた状態で伝えられた+はRECEIVEプロセスControllerプロセスによるNetworkによるSENDで受信しました。

   Note: for a SEND FROM ANY message, the rendezvous site is the
   destination site.

以下に注意してください。 SEND FROM ANYメッセージに関しては、ランデブーサイトは目的地サイトです。

   In the model time-sharing system it was possible to pass a port from
   process to process.  This is still possible with a distributed
   Network Controller.  [The reader unconvinced of the utility of port
   passing is directed to read the section on reconnection in [11].]

モデル時分割システムでは、プロセスからプロセスまでポートを通り過ぎるのは可能でした。 これは分配されたNetwork Controllerでまだ可能です。 [ポート通過に関するユーティリティで納得していない読者が[11]の再接続のときにセクションを読むよう指示されます。]

   Remember that for a message to be sent from one process to another, a
   SEND to port M from port N and a RECEIVE at port M from port N must
   rendezvous, normally at the SEND site.  Both processes keep track of
   where they think the rendezvous site is and supply this site as a
   parameter of appropriate operations.  The RECEIVE process thinks it
   is the SEND site and the SEND process normally thinks it is the SEND
   site also.  Since once a SEND and a RECEIVE rendezvous, the
   transmission is sent to the source of the RECEIVE and the entry in
   the rendezvous table is cleared and must be set up again for each
   further transmission from N to M, it is easy for a RECEIVE port to be
   moved.  If a process sends both the port numbers and the rendezvous
   site number to a new process at some other site which executes a
   RECEIVE using these same old port numbers and rendezvous site
   specification, the SENDer never knows the RECEIVEr has moved.  It is

1つのプロセスから別のものに送られるべきメッセージに関してMをポートNとRECEIVEからポートNからポートMに移植するSENDが集合しなければならないのを覚えていてください、通常SENDサイトで。 両方のプロセスはそれらがランデブーサイトがそうであると考えて、適切な操作のパラメタとしてこのサイトを供給するところで動向をおさえます。 RECEIVEプロセスは、それがSENDサイトであると思います、そして、通常、SENDプロセスはまた、それがSENDサイトであると思います。 かつてのSENDとRECEIVEランデブー、RECEIVEの源にトランスミッションを送って、さらなる各NからMまでのトランスミッションのためにランデブーテーブルのエントリーをクリアされて、再びセットアップしなければならないので、RECEIVEポートが動かされるのは、簡単です。 ポートナンバーとランデブーサイト番号の両方がプロセスでこれらのいつものポートナンバーとランデブーサイト仕様を使用することでRECEIVEを実行するある他のサイトのニュープロセスに行くなら、SENDerは、RECEIVErが移行したのを決して知りません。 それはそうです。

Walden                                                         [Page 13]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[13ページ]RFC61プロセス間通信

   slightly harder for a SEND port to move.  However, if it does, the
   pair of port numbers that has been being used for a SEND and the
   original rendezvous site number are passed to the new site.  The
   process at the new SEND site specifies the old rendezvous site with
   the first SEND from the new site.  The RECEIVE process will also
   still think the rendezvous site is the old site, so the SEND and
   RECEIVE will meet at the old site.  When they meet, the entry in the
   table at that site is cleared, the rendezvous site number for the
   SEND message is changed to the site which originated the SEND message
   and both the SEND and RECEIVE messages are sent to the new SEND site
   just as if they had been destined for there in the first place.  The
   SEND and RECEIVE then meet again at the new rendezvous site and
   transmission may continue as if the port had never moved.  Since all
   transmissions contain the source site number, further RECEIVEs will
   be sent to the new rendezvous site.  It is possible to discover that
   this special manipulation must take place because a SEND message is
   received at a site which did not originate the SEND message.
   Everything is so easily changed because there are no permanent
   connections to break and move as in the once proposed reconnection
   scheme for the ARPA network [10][11] that is, connections only exist
   fleetingly in the system described here and can therefore be remade
   between any pair of processes which at any time happen to know each
   other's port numbers and have some clue where they each are.

SENDポートはわずかに動きにくいです。 しかしながら、そうするなら、SENDに使用されているポートナンバーの組と元のランデブーサイト番号は新しいサイトに向かいます。 新しいSENDサイトのプロセスは最初のSENDと共に新しいサイトから古いランデブーサイトを指定します。 また、それでも、RECEIVEプロセスが、ランデブーサイトが古いサイトであると思うので、SENDとRECEIVEは古いサイトで会うでしょう。 彼らが会うと、そのサイトのテーブルのエントリーをクリアします、そして、SENDメッセージのランデブーサイト番号はSENDメッセージを溯源したサイトに変わります、そして、まるでまさしくそれらが第一にそこに運命づけられたかのようにSENDとRECEIVEメッセージの両方を新しいSENDサイトに送ります。 次に、SENDとRECEIVEは再び新しいランデブーサイトで会います、そして、まるでポートが一度も移行したことがなかったかのようにトランスミッションは続くかもしれません。 すべてのトランスミッションがソースサイト番号を含んでいるので、新しいランデブーサイトに一層のRECEIVEsを送るでしょう。 この特別な操作がSENDメッセージを溯源しなかったサイトにSENDメッセージを受け取るので行われなければならないと発見するのは可能です。 ARPAネットワークの一度提案された再接続体系のように調教して、動かす永久接続が全くいないので、すべてが[10] [11] すなわち、接続だけはここで説明されたシステムにはかなく存在していて、したがって、互いのポートナンバーを知って、いつでもたまたま、それぞれそれらがどこにあるかという何らかの手がかりを持っているどんな組のプロセスの間でも作り変えることができるように容易にあまりに変えられます。

   Of course, all of this could have been done by the processes sending
   messages back and forth announcing any potential moves and the new
   site numbers.

もちろん、メッセージを前後に送るプロセスは、どんな潜在的移動と新しいサイト番号も発表しながら、このすべてをしたかもしれません。

Walden                                                         [Page 14]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[14ページ]RFC61プロセス間通信

REFERENCES

参照

   [1]  L. Roberts and B. Wessler, Computer Network Development to
        achieve Resource Sharing, Proceedings 1970 SJCC.

[1] Resource Sharing、Proceedings1970SJCCを達成するL.ロバーツとB.Wessler、コンピュータNetwork Development。

   [2]  V. Vyssotsky, F. F.  Corbato, and R. Graham, Structure of the
        MULTICS Supervisor, Proceedings 1965 FJCC.

[2] V.Vyssotsky、F.F.CorbatoとR.グラハム、MULTICS監督の構造、議事、1965FJCC。

   [3]  C. Carr, S. Crocker, and V. Cerf, Host/Host Communication
        Protocol in the ARPA Network, Proceedings 1970 SJCC.

[3] C.カー、S.クロッカー、およびV.サーフは、アーパネットの通信プロトコルをホスティングするか、またはホスティングして、議事は1970SJCCです。

   [4]  F. Heart, et al, The Interface Message Processor for the ARPA
        Computer Network, Proceedings 1970 SJCC.

[4] F.心臓、他、ARPAコンピュータNetwork、Proceedings1970SJCCのためのInterface Message Processor。

   [5]  W. Ackerman and W. Plummer, An Implementation of Multi-
        processing Computer System, Proceedings Gatlinburg Symposium on
        Operating System Principles.

[5] Multi処理コンピュータSystem、Operating SystemプリンシプルズのProceedings Gatlinburg SymposiumのW.アッカーマンとW.プラマー、An Implementation。

   [6]  J. Dennis and E. Van Horn, Programming Semantics for
        Multiprogramming Computation, Proceedings of the San Dimes
        Conference on Programming Language and Pragmatics.

[6] 多重プログラミング計算、プログラミング言語とプラグマティックスにおけるサン10セント硬貨コンファレンスの議事のために意味論をプログラムするJ.デニスとE.バン・ホーン。

   [7]  B. Lampson, Dynamic Protection Structures, Proceedings FJCC
        1969.

[7] B.ランプソン、ダイナミックな保護構造、議事FJCC1969。

   [8]  B. Lampson, An Overview of the CAL Time-Sharing System, Computer
        Center, University of Calif., Berkeley.

[8] B.ランプソン、CALタイムシェアリングシステム、コンピュータセンター、カリフォルニア、バークレーの大学の概要。

   [9]  P. Hansen, The Nucleus of a Multiprogramming System, CACM, April
        1970.

[9] P.ハンセン、マルチプログラミングシステム、CACM、1970年4月の核。

   [10] S. Crocker, ARPA Network Working Group Note #36.

[10] S.クロッカー、アーパネット作業部会注意#36。

   [11] J. Postel and S. Crocker, ARPA Network Working Group Note #48.

[11] J.ポステルとS.クロッカー、アルパは作業部会注意#48をネットワークでつなぎます。

   [12] B. Lampson, 940 Lectures.

[12] B.ランプソン、940の講演。

Walden                                                         [Page 15]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[15ページ]RFC61プロセス間通信

APPENDIX: AN APPLICATION

付録: アプリケーション

   Only one resource sharing computer network currently exists, the
   aforementioned ARPA network.  In this Appendix, I hope to show that
   the system that was described in this note can be applied to the ARPA
   network.  A significant body of work exists on interprocess
   communication within the ARPA network.  This work comes in several
   almost distinct pieces: the Host/IMP protocol, IMP/IMP protocol, and
   the Host/Host protocol.  I assume familiarity with this work in the
   subsequent discussion.  [See references [1][3][4][10][11];
   Specifications for the Inter-connection of a Host to an IMP, BBN
   Report No. 1822; and ARPA Network Working Group Notes #37, 38, 39,
   42, 44, 46, 47, 48, 49, 50, 54, 55, 56, 57, 56, 59.]

1つのリソース・シェアリングコンピュータネットワークだけが現在存在して、前述のARPAはネットワークです。 このAppendixでは、私は、この注意で説明されたシステムはARPAネットワークに適用できるのを示すことを望んでいます。 仕事の重要なボディーはARPAネットワークの中にプロセス間通信に存在します。 この仕事はいくつかのほとんど異なった断片に入ります: Host/IMPは議定書を作ります、そして、IMP/IMPは議定書を作ります、そして、Host/ホストは議定書を作ります。 私はその後の議論におけるこの仕事への親しみを仮定します。 [参照[1][3][4][10][11](IMP、BBN Report No.1822へのHostのInter-接続のための仕様)とアーパネット作業部会Notes#37、38、39、42、44、46、47、48、49、50、54、55、56、57、56、59を見てください。]

   In the ARPA network, the IMP's have sole responsibility for correctly
   transmitting bits from one site to another.  The Hosts have sole
   responsibility for making interprocess connections.  Both the Host
   and IMP are concerned and take a little responsibility for flow
   control and message sequencing.  Application of the interprocess
   communication system I have described leads me to different
   allocation of responsibility.  The IMP still continues to correctly
   move bits from one site to another, but the Network Controller also
   resides in the IMP, and flow control is completely in the hands of
   the processes running in the Hosts although perhaps they use
   mechanisms provided by the IMPs.

ARPAネットワークでは、IMPのものは正しく伝わっているビットへの唯一の責任を1つのサイトから別のサイトまで持っています。 Hostsには、インタプロセス接続を作ることへの唯一の責任があります。 HostとIMPの両方が、フロー制御とメッセージ配列に関係があって、少しの責任を取ります。 私が説明したプロセス間通信システムの応用は私を責任の異なった配分に導きます。 また、Network ControllerはIMPに住んでいます、そして、IMPは、まだ正しく1つのサイトから別のものへビットを移し続けていますが、フロー制御が、彼らが恐らくIMPsによって提供されたメカニズムを使用しますが、Hostsへ駆け込みながら、完全にプロセスの手にあります。

   The IMPs provide the SEND, RECEIVE, SEND FROM ANY, RECEIVE ANY, and
   UNIQUE operations in slightly altered forms for the Hosts and also
   maintain the rendezvous tables including moving of SEND ports when
   necessary.

IMPsはHostsのためのわずかに変えられたフォームでSEND、RECEIVE、SEND FROM ANY、RECEIVE ANY、およびUNIQUEに操作を供給して、また、必要であるときに、SENDポートを移行させるのを含むランデブーテーブルを維持します。

   It is perhaps easiest to step through the five operations again.

再び5つの操作で踏むのは恐らく最も簡単です。

   SEND.  The Host gives the IMP a SEND port number, a RECEIVE port
   number, the rendezvous site, and a buffer specification=20 (e.g.,
   start and end, beginning and length).  The SEND is sent to the
   rendezvous site, normally the local site.  When the matching RECEIVE
   arrives, the Host is notified of the RECEIVE port of the just arrived
   receive message.  This port number is sufficient to identify the
   SENDing process although a given time-sharing system may have to keep
   internal tables mapping this port number into useful internal process
   identifiers.  Simultaneously, the IMP will begin to ask the Host for
   specific chunks of the data buffer.  These chunks will be sent off to
   the destination as the IMP's RFNM control allows.  If a RFNM is not
   received for too long, implying a message has been lost in the
   network, the Host is asked for the same chunk of data again [which
   also allows messages to be completely thrown away by the IMP network

発信してください。 HostはSENDポートナンバー、RECEIVEポートナンバー、ランデブーサイト、およびバッファ仕様=20(例えば、始め、終わり、始め、および長さ)をIMPに与えます。 ランデブーサイト、通常ローカル・サイトにSENDを送ります。 合っているRECEIVEが到着すると、HostによるRECEIVEについて通知されて、ただ到着していることのポートがメッセージを受け取るということです。 このポートナンバーは、与えられた時分割システムが内部のテーブルに役に立つ内部のプロセス識別子にこのポートナンバーを写像させ続けなければならないかもしれませんが、SENDingプロセスを特定するために十分です。 同時に、IMPはデータバッファの特定の塊をHostに求め始めるでしょう。 IMPのRFNMコントロールが許容するようにこれらの塊を目的地に送るでしょう。 メッセージがネットワークで失われたのを含意して、長い間RFNMを受け取り過ぎるというわけではないと、再びデータの同じ塊をHostに求める、[また、どれがIMPネットワークによって完全に捨てられるべきメッセージを許容するか。

Walden                                                         [Page 16]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[16ページ]RFC61プロセス間通信

   if that should ever be useful], but the Host has the option to abort
   the transmission at this time.  While a transmission is taking place,
   the Host may ask the IMP to perform other operations including other
   SENDs.  A second SEND over a pair of ports already in the act of
   transmission is noted and the SEND becomes active as soon as the
   first transmission is complete.  A third identical SEND results in an
   error message to the Host.  If a SEND times out, an error is returned
   also.

それが役に立つべきである、]、Hostだけには、このときトランスミッションを中止するオプションがあります。 トランスミッションが行われている間、Hostは、他のSENDsを含む他の操作を実行するようにIMPに頼むかもしれません。 既にトランスミッションの行為における、1組のポートにわたる第2のSENDは注意されます、そして、最初のトランスミッションが完全であるとすぐに、SENDはアクティブになります。 第3の同じSENDはHostへのエラーメッセージをもたらします。 また、SEND回のアウトであるなら、誤りは返されます。

   RECEIVE.  The Host gives the IMP a SEND port, a RECEIVE port, a
   rendezvous site, and a buffer description.  The RECEIVE message is
   sent to the rendezvous site.  When chunks of a transmission arrive
   for the RECEIVE port they are passed to the Host along with RECEIVE
   port number (and perhaps the SEND port number), and an indication to
   the Host where to put the data in its input buffer.  When the last of
   the SEND buffer is passed into the Host, it is marked accordingly and
   the Host can then detect this.  A second RECEIVE over the same port
   pair is allowed.  A third results in an error message to the Host.
   The mechanism described in this and the previous paragraphs allows a
   pair of processes to always have both a transmission in progress and
   the next one pending.  Therefore, no efficiency is lost.  On the
   other hand, each transmission must be preceded by a RECEIVE into a
   specified buffer, thus providing complete flow control.  (It is
   conceivable that the RECEIVE message could allocate a piece of
   network bandwidth while making its network traverse to the rendezvous
   site.)

受信してください。 HostはSENDポート、RECEIVEポート、ランデブーサイト、およびバッファ記述をIMPに与えます。 RECEIVEメッセージをランデブーサイトに送ります。 トランスミッションの塊がRECEIVEポートに到着するとき、それらはRECEIVEポートナンバー(そして、恐らくSENDポートナンバー)に伴うHost、およびデータを入れるために、それがバッファを入力したHostへの指示に通過されます。 SENDバッファの最終がHostに通過されるとき、それはそれに従って、マークされます、そして、次に、Hostはこれを検出できます。 同じポート組の上の第2のRECEIVEは許容されています。 3分の1に、Hostへのエラーメッセージをもたらします。 これで説明されたメカニズムと前のパラグラフで、1組のプロセスはいつも進行中のトランスミッションと未定の次のものの両方を持つことができます。 したがって、どんな効率も無くなっていません。 他方では、RECEIVEは指定されたバッファの中に各トランスミッションに先行しなければなりません、その結果、完全なフロー制御を提供します。 (RECEIVEメッセージがネットワーク横断をランデブーサイトにしている間1片のネットワーク回線容量を割り当てるかもしれないのが想像できます。)

   RECEIVE ANY.  The Host gives the IMP a RECEIVE port and a buffer
   descriptor.  This works the same as RECEIVE but assumes the local
   site to be the rendezvous site.

何でも受信してください。 HostはRECEIVEポートとバッファ記述子をIMPに与えます。 これは、RECEIVEとして同じように働いていますが、ローカル・サイトがランデブーサイトであると仮定します。

   SEND FROM ANY.  The Host gives the IMP RECEIVE and SEND ports, the
   destination site, and a buffer descriptor.  The IMP requests and
   transmits the buffer as fast as possible.  A SEND FROM ANY for a
   non-existent port is discarded at the destination site.

いずれからも、発信してください。 Hostはポート、目的地サイト、およびバッファ記述子をIMP RECEIVEとSENDに与えます。 IMPはできるだけ速くバッファを要求して、伝えます。 実在しないポートへのSEND FROM ANYは目的地サイトで捨てられます。

   RFNM's are tied to the transmission of a particular chunk of buffer
   just as acknowledgments are now tied to packets and they perform the
   same function.  If the Hosts allow the IMPs to reassemble buffers in
   the Hosts by the IMP telling the Host where it should put a buffer
   chunk as described above, chunks of a single buffer can be
   transmitted in parallel and several RFNMs can be outstanding
   simultaneously.  Packet reassembly is still done in the IMPs.

ちょうど、承認が現在、パケットに結ばれて、同じ機能を実行するようにRFNMのものはバッファの特定の塊の送信に結ばれます。 HostsがIMPsにそれが上で説明されるようにバッファ塊をどこに置くべきであるかをHostに言うIMPでHostsのバッファを組み立て直させるなら、ただ一つのバッファの塊を平行に伝えることができます、そして、数個のRFNMsが同時に、傑出している場合があります。 IMPsで再アセンブリにまだパケットをしています。

   A final operation must be provided by the IMP -- the UNIQUE
   operation.  There are many ways to maintain unique numbers and three
   are presented here.  The first possibility is for the Hosts to ask
   the IMPs for the unique numbers originally and then guarantee the

IMPは最終的な操作を提供しなければなりません--UNIQUE操作。 ユニークな数と3がここに提示されると主張する多くの方法があります。 最初の可能性がHostsが元々ユニークな数をIMPsに求めることであり、その時は保証です。

Walden                                                         [Page 17]

RFC 61      Interprocess Communication in a Computer Network   July 1970

コンピュータネットワーク1970年7月のウォルデン[17ページ]RFC61プロセス間通信

   integrity of any unique numbers currently owned by local processes
   and programs using whatever means the Host has at its disposal.  In
   this case the IMPs would provide a method for a unique number to be
   sent from one host to another and would vouch for the number's
   identity at the new site.

現在Hostを意味するものなら何でも使用しながら地方のプロセスとプログラムで所有されているどんなユニークな数の保全も自由に攻撃します。 この場合、IMPsはユニークな数が1人のホストから別のものに送られるメソッドを提供して、新しいサイトで数のアイデンティティを保証するでしょう。

   The second method is to simply give the unique numbers to the
   processes that are using them, depending on the non-malicious
   behavior of the processes to preserve the unique numbers, or if an
   accident should happen, the two passwords (SEND and RECEIVE ports)
   that are required to initiate a transmission.  If the unique numbers
   are given out in a non-sequential manner and are reasonably long (say
   32 bits) there is little danger.

2番目のメソッドは単にそれらを使用しているプロセスにユニークな数を与えることです、ユニークな数を保存するためにプロセスの非悪意のある態度によるか、または事故が起こるなら、トランスミッションを開始するのに必要である2つのパスワード(SENDとRECEIVEポート)。 ユニークな数が非連続した方法で配られていて、適度に長いなら(32ビットを示してください)、危険がほとんどありません。

   In the final method, a user identification is included in the port
   numbers and the individual time-sharing systems guarantee the
   integrity of these identification bits.  Thus a process, while not
   able to be sure that the correct port is transmitting to him, can be
   sure that some port of the correct user is transmitting.  This is the
   so-called virtual net concept suggested by W. Crowther [3].

最終的なメソッドで、ユーザ登録名はポートナンバーに含まれています、そして、個々の時分割システムはこれらの識別ビットの保全を保証します。 したがって、正しいポートが彼に伝わっているのを確信できない間、プロセスは正しいユーザのいくらかのポートが伝わっているのを確信している場合があります。 これはW.クラウザー[3]によって提案されたいわゆる仮想のネットの概念です。

   Random Contents.  Putting these operations in the IMP requires the
   Host/Host protocol program to be written only once, rather than many
   times as is currently being done in the ARPA Network.  The IMPs can
   stop a specific host transmission (by not asking for the next chunk
   for a while) if that should seem necessary to alleviate congestion
   problems in the communications subnet.  And the IMP might know the
   approximate time it takes for a RECEIVE to get to a particular other
   site and warn the Host to wake up a process shortly before it becomes
   imminent that a message for that process will be arriving.

無作為のコンテンツ。 これらの操作をIMPに入れるのは、アーパネットでしながら、Host/ホストプロトコルプログラムが現在何回もむしろ一度だけそのままで書かれるのを必要とします。 それがコミュニケーションサブネットにおける混雑問題を軽減するのに必要に見えるなら、IMPsは特定のホストトランスミッション(しばらく次の塊を求めないのによる)を止めることができます。 そして、IMPは、わざわざRECEIVEが他の特定のサイトを始めて、それがプロセスで目覚めるようにHostに警告する大体のすぐ差し迫るようになる前にそのプロセスへのメッセージが到着するのを知るかもしれません。

         [ This RFC was put into machine readable form for entry ]
         [ into the online RFC archives by Katsunori Tanaka 4/99 ]

[このRFCはエントリーのためのマシンに入れられた読み込み可能なフォームでした][Katsunori田中4/99によるオンラインRFCアーカイブへの]

Walden                                                         [Page 18]

ウォルデン[18ページ]

一覧

 RFC 1〜100  RFC 1401〜1500  RFC 2801〜2900  RFC 4201〜4300 
 RFC 101〜200  RFC 1501〜1600  RFC 2901〜3000  RFC 4301〜4400 
 RFC 201〜300  RFC 1601〜1700  RFC 3001〜3100  RFC 4401〜4500 
 RFC 301〜400  RFC 1701〜1800  RFC 3101〜3200  RFC 4501〜4600 
 RFC 401〜500  RFC 1801〜1900  RFC 3201〜3300  RFC 4601〜4700 
 RFC 501〜600  RFC 1901〜2000  RFC 3301〜3400  RFC 4701〜4800 
 RFC 601〜700  RFC 2001〜2100  RFC 3401〜3500  RFC 4801〜4900 
 RFC 701〜800  RFC 2101〜2200  RFC 3501〜3600  RFC 4901〜5000 
 RFC 801〜900  RFC 2201〜2300  RFC 3601〜3700  RFC 5001〜5100 
 RFC 901〜1000  RFC 2301〜2400  RFC 3701〜3800  RFC 5101〜5200 
 RFC 1001〜1100  RFC 2401〜2500  RFC 3801〜3900  RFC 5201〜5300 
 RFC 1101〜1200  RFC 2501〜2600  RFC 3901〜4000  RFC 5301〜5400 
 RFC 1201〜1300  RFC 2601〜2700  RFC 4001〜4100  RFC 5401〜5500 
 RFC 1301〜1400  RFC 2701〜2800  RFC 4101〜4200 

スポンサーリンク

SDカードに保存したファイルをギャラリーなどに反映させる方法

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る