⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc707.txt

📁 RFC 的详细文档!
💻 TXT
📖 第 1 页 / 共 4 页
字号:


                                  -14-

NWG/RFC# 707                                  JEW 14-JAN-76 19:51  34263
NCC 76         A High-Level Framework for Network-Based Resource Sharing
                           A High-Level Model of the Network Environment



         Conventional programs are usually implemented as a single
      process with exactly one locus of control.  A procedure call,
      therefore, traditionally implies a transfer of control from
      caller to callee.  Distributed systems, on the other hand, are
      implemented as two or more processes, each of which is capable
      of independent execution.  In this new environment, a remote
      procedure call need not suspend the caller, which is capable
      of continuing execution in parallel with the called procedure.

         The RTE can therefore be expected to provide, for
      convenience, two modes of remote procedure invocation:  a
      blocking mode that suspends the caller until the procedure
      returns; and a non-blocking mode that releases the caller as
      soon as the CALL message has been sent or queued.  Most
      conventional operating systems already provide such a mode
      choice for I/O operations.  For non-blocking calls, the RTE
      must also, of course, either arrange to asynchronously notify
      the program when the call is complete, or provide an
      additional primitive by which the applications program can
      periodically test for that condition.

   Finally, the applications programmer must recognize that by no
means all useful forms of network communication are effectively
modeled as procedure calls.  The lower level IPC facility that
remains directly accessible to him must therefore be employed in
those applications for which the procedure call model is
inappropriate and RTE-provided primitives simply will not do.        4c2
























                                  -15-

NWG/RFC# 707                                  JEW 14-JAN-76 19:51  34263
NCC 76         A High-Level Framework for Network-Based Resource Sharing
                                                       Some Expectations



SOME EXPECTATIONS                                                      5

   Both the Procedure Call Protocol and its associated Run-Time
Environment have great potential for facilitating the work of the
network programmer; only a small percentage of that potential has
been discussed in the present paper.  Upon the foundation provided
by PCP can be erected higher level application-independent protocol
layers that further enhance the distributed programming environment
by providing even more powerful capabilities (see Appendix D).        5a

   As the importance of the RTE becomes fully evident, additional
tasks will gradually be assigned to it, including perhaps those of:   5b

   (1) Converting parameters between the format employed internally
       by the applications program, and that imposed by the
       Protocol.                                                     5b1

   (2) Automatically selecting the most appropriate inter-process
       transmission format on the basis of the two machines' word
       sizes.                                                        5b2

   (3) Automatically substituting for network IPC a more efficient
       form of communication when both processes reside on the same
       machine.                                                      5b3

The RTE will eventually offer the programmer a wide variety of
application-independent, network-programming conveniences, and so,
by means of the Protocol, become an increasingly powerful
distributed-system-building tool.                                     5c






















                                  -16-

NWG/RFC# 707                                  JEW 14-JAN-76 19:51  34263
NCC 76         A High-Level Framework for Network-Based Resource Sharing
                                                         Acknowledgments



ACKNOWLEDGMENTS                                                        6

   Many individuals within both SRI's Augmentation Research Center
(ARC) and the larger ARPANET community have contributed their time
and ideas to the development of the Protocol and Model described in
this paper.  The contributions of the following individuals are
expressly acknowledged:  Dick Watson, Jon Postel, Charles Irby, Ken
Victor, Dave Maynard, and Larry Garlick of ARC; and Bob Thomas and
Rick Schantz of Bolt, Beranek and Newman, Inc.                        6a

   ARC has been working toward a high-level framework for
network-based distributed systems for a number of years now [14].
The particular Protocol and Model described here result from
research begun by ARC in July of 1974.  This research included
developing the Model; designing and documenting the Protocol
required to support it [15]; and designing, documenting, and
implementing a prototype run-time environment for a particular
machine [16, 17], specifically a PDP-10 running the Tenex operating
system developed by Bolt, Beranek and Newman, Inc [18].  Three
design iterations were carried out during a 12-month period, and the
resulting specification implemented for Tenex.  The Tenex RTE
provides a superset of the capabilities presented in the body of
this paper and Appendices A through C as well as those alluded to in
Appendix D.                                                           6b

   The work reported here was supported by the Advanced Research
Projects Agency of the Department of Defense, and by the Rome Air
Development Center of the Air Force.                                  6c























                                  -17-

NWG/RFC# 707                                  JEW 14-JAN-76 19:51  34263
NCC 76         A High-Level Framework for Network-Based Resource Sharing
                                       Appendix A:  Suggested Data Types



APPENDIX A:  SUGGESTED DATA TYPES                                      7

   The Protocol requires that every parameter or "data object" be
represented by one of several primitive data types defined by the
Model.  The set of data types below is sufficient to conveniently
model a large class of data objects, but since the need for
additional data types (for example, floating-point numbers) will
surely arise, the set must remain open-ended.  Throughout the
descriptions below, N is confined to the range [0, 2**15-1]:          7a

      LIST:  A list is an ordered sequence of N data objects called
   "elements".  A LIST may contain other LISTs as elements, and can
   therefore be employed to construct arbitrarily complex composite
   data objects.                                                     7a1

      CHARSTR:  A character string is an ordered sequence of N ASCII
   characters, and conveniently models a variety of textual
   entities, from short user names to whole paragraphs of text.      7a2

      BITSTR:  A bit string is an ordered sequence of N bits and,
   therefore, provides a means for representing arbitrary binary
   data (for example, the contents of a word of memory).             7a3

      INTEGER:  An integer is a fixed-point number in the range
   [-2**31, 2**31-1], and conveniently models various kinds of
   numerical data, including time intervals, distances, and so on.   7a4

      INDEX:  An index is an integer in the range [1, 2**15-1].  As
   its name and value range suggest, an INDEX can be used to address
   a particular bit or character within a string, or element within
   a list.  INDEXes have other uses as well, including the modeling
   of handles or identifiers for open files, created processes, and
   the like.  Also, because of their restricted range, INDEXes are
   more compact in transmission than INTEGERs (see Appendix B).      7a5

      BOOLEAN:  A boolean represents a single bit of information,
   and has either the value true or false.                           7a6

      EMPTY:  An empty is a valueless place holder within a LIST or
   parameter list.                                                   7a7











                                  -18-

NWG/RFC# 707                                  JEW 14-JAN-76 19:51  34263
NCC 76         A High-Level Framework for Network-Based Resource Sharing
                             Appendix B:  Suggested Transmission Formats



APPENDIX B:  SUGGESTED TRANSMISSION FORMATS                            8

   Parameters must be encoded in a standard transmission format
before they can be sent from one process to another via the
Protocol.  An effective strategy is to define several formats and
select the most appropriate one at run-time, adding to the Protocol
a mechanism for format negotiation.  Format negotiation would be
another responsibility of the RTE and could thus be made completely
invisible to the applications program.                                8a

   Suggested below are two transmission formats.  The first is a
36-bit binary format for use between 36-bit machines, the second an
8-bit binary, "universal" format for use between dissimilar
machines.  Data objects are fully typed in each format to enable the
RTE to automatically decode and internalize incoming parameters
should it be desired to provide this service to the applications
program.                                                              8b

PCPB36, For Use Between 36-Bit Machines                               8c

   Bits  0-13 Unused (zero)                                          8c1
   Bits 14-17 Data type                                              8c2
      EMPTY  =1  INTEGER=4  LIST=7
      BOOLEAN=2  BITSTR =5
      INDEX  =3  CHARSTR=6
   Bits 18-20 Unused (zero)                                          8c3
   Bits 21-35 Value or length N                                      8c4
      EMPTY    unused (zero)
      BOOLEAN  14 zero-bits + 1-bit value (TRUE=1/FALSE=0)
      INDEX    unsigned value
      INTEGER  unused (zero)
      BITSTR   unsigned bit count N
      CHARSTR  unsigned character count N
      LIST     unsigned element count N
   Bits 36-   Value                                                  8c5
      EMPTY    unused (nonexistent)
      BOOLEAN  unused (nonexistent)
      INDEX    unused (nonexistent)
      INTEGER  two's complement full-word value
      BITSTR   bit string + zero padding to word boundary
      CHARSTR  ASCII string + zero padding to word boundary
      LIST     element data objects









                                  -19-

NWG/RFC# 707                                  JEW 14-JAN-76 19:51  34263
NCC 76         A High-Level Framework for Network-Based Resource Sharing
                             Appendix B:  Suggested Transmission Formats



PCPB8, For Use Between Dissimilar Machines                            8d

   Byte    0  Data type                                              8d1
      EMPTY  =1  INTEGER=4  LIST=7
      BOOLEAN=2  BITSTR =5
      INDEX  =3  CHARSTR=6
   Bytes 1-   Value                                                  8d2
      EMPTY     unused (nonexistent)
      BOOLEAN   7 zero-bits + 1-bit value (TRUE=1/FALSE=0)
      INDEX     2-byte unsigned value
      INTEGER   4-byte two's complement value
      BITSTR    2-byte unsigned bit count N + bit string
                 + zero padding to byte boundary
      CHARSTR   2-byte unsigned character count N + ASCII string
      LIST      2-byte element count N + element data objects




































                                  -20-

NWG/RFC# 707                                  JEW 14-JAN-76 19:51  34263
NCC 76         A High-Level Framework for Network-Based Resource Sharing
         Appendix C:  A Detailed Encoding of the Procedure Call Protocol



APPENDIX C:  A DETAILED ENCODING OF THE PROCEDURE CALL PROTOCOL        9

   Although the data types and transmission formats detailed in the
previous appendixes serve primarily as vehicles for representing the
arguments and results of remote procedures, they can just as readily
and effectively be employed to represent the commands and responses
by which those parameters are transmitted.                            9a

   Taking this approach, one might model each of the two Protocol
messages as a PCP data object, specifically a LIST whose first
element is an INDEX message type.  The following concise statement
of the Protocol then results:                                         9b

   LIST (CALL,   tid,        procedure, arguments)
         INDEX=1 INDEX/EMPTY CHARSTR    LIST                         9b1
   LIST (RETURN, tid,        outcome,   results)
         INDEX=2 INDEX       BOOLEAN    LIST                         9b2

The RESULTS of an unsuccessful procedure would be represented as
follows:                                                              9c

   LIST (error, diagnostic)
         INDEX  CHARSTR                                              9c1

























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -