分享
 
 
 

RFC707 - High-level framework for network-based resource sharing

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

THE GOAL, RESOURCE SHARING 1

The principal goal of all resource-sharing computer networks,

including the now international ARPA Network (the ARPANET), is to

usefully interconnect geographically distributed hardware, software,

and human resources [1]. Achieving this goal requires the design

and implementation of various levels of support software within each

constituent computer, and the specification of network-wide

"protocols" (that is, conventions regarding the format and the

relative timing of network messages) governing their interaction.

This paper outlines an alternative to the approach that ARPANET

system builders have been taking since work in this area began in

1970, and suggests a strategy for modeling distributed systems

within any large computer network. 1a

The first section of this paper describes the prevailing ARPANET

protocol strategy, which involves specifying a family of

application-dependent protocols with a network-wide inter-process

communication facility as their common foundation. In the second

section, the application-independent command/response discipline

that characterizes this protocol family is identified and its

isolation as a separate protocol proposed. SUCh isolation would

reduce the work of the applications programmer by allowing the

software that implements the protocol to be factored out of each

applications program and supplied as a single,

installation-maintained module. The final section of this paper

proposes an extensible model for this class of network interaction

that in itself would even further encourage the use of network

resources. 1b

-1-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

The Current Software Approach to Resource Sharing

THE CURRENT SOFTWARE APPROACH TO RESOURCE SHARING 2

Function-Oriented Protocols 2a

The current ARPANET software approach to facilitating resource

sharing has been detailed elsewhere in the literature [2, 3, 4].

Briefly, it involves defining a Host-Host Protocol by which the

operating systems of the various "host" computers cooperate to

support a network-wide inter-process communication (IPC) facility,

and then various function-oriented protocols by which processes

deliver and receive specific services via IPC. Each

function-oriented protocol regulates the dialog between a resident

"server process" providing the service, and a "user process" seeking

the service on behalf of a user (the terms "user" and "user process"

will be used consistently throughout this paper to distinguish the

human user from the computer process acting on his behalf). 2a1

The current Host-Host Protocol has been in service since 1970.

Since its initial design and implementation, a variety of

deficiencies have been recognized and several alternative protocols

suggested [5, 6]. Although improvements at this level would surely

have a positive effect upon Network resource sharing, the present

paper simply assumes the existence of some form of IPC and focuses

attention upon higher level protocol design issues. 2a2

Each of the function-oriented protocols mentioned in this paper

constitutes the official ARPANET protocol for its respective

application domain and is therefore implemented at nearly all of the

75 host installations that now comprise the Network. It is

primarily upon this widely implemented protocol family (and the

philosophy it represents) that the present paper focuses. Needless

to say, other important resource sharing tools have also been

constructed within the ARPANET. The Resource Sharing Executive

(RSEXEC), designed and implemented by Bolt, Beranek and Newman, Inc

[7], provides an Excellent example of such work. 2a3

EXPerience with and Limitations of Hands-On Resource Sharing 2b

The oldest and still by far the most heavily used

function-oriented protocol is the Telecommunications Network

protocol (TELNET) [8], which effectively attaches a terminal on one

computer to an interactive time-sharing system on another, and

allows a user to interact with the remote system via the terminal as

if he were one of its local users. 2b1

-2-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

The Current Software Approach to Resource Sharing

As depicted in Figure 1, TELNET specifies the means by which a

user process monitoring the user's terminal is interconnected, via

an IPC communication channel, with a server process with Access to

the target time-sharing system. TELNET also legislates a standard

character set in which the user's commands and the system's

responses are to be represented in transmission between machines.

The syntax and semantics of these interchanges, however, vary from

one system to another and are unregulated by the protocol; the user

and server processes simply shuttle characters between the human

user and the target system. 2b2

Although the hands-on use of remote resources that TELNET makes

possible is a natural and highly visible form of resource sharing,

several limitations severely reduce its long-term utility: 2b3

(1) It forces upon the user all of the trappings of the

resource's own system.

To exploit a remote resource, the user must leave the

familiar working environment provided by his local system and

enter an alien one with its own peculiar system structure

(login, logout, and subsystem entry and exit procedures) and

command language discipline (command recognition and

completion conventions, editing characters, and so on).

Hands-on resource sharing thus fails to provide the user with

the kind of organized and consistent workshop he requires to

work effectively [9].

(2) It provides no basis for bootstrapping new composite

resources from existing ones.

Because the network access discipline imposed by each

resource is a human-engineered command language, rather than a

machine-oriented communication protocol, it is virtually

impossible for one resource to programatically draw upon the

services of others. Doing so would require that the program

deal successfully with complicated echoing and feedback

characteristics; unstructured, even unsolicited system

responses; and so forth. Hands-on resource sharing thus does

nothing to provide an environment in which existing resources

can be used as building blocks to construct new, more powerful

ones.

These inherent limitations of hands-on resource sharing are

removed by a protocol that simplifies and standardizes the dialog

between user and server processes. Given such a protocol, the

-3-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

The Current Software Approach to Resource Sharing

various remote resources upon which a user might wish to draw can

indeed be made to appear as a single, coherent workshop by

interposing between him and them a command language interpreter that

transforms his commands into the appropriate protocol utterances

[10, 11]. The construction of composite resources also becomes

feasible, since each resource is accessible by means of a

machine-oriented protocol and can thus be readily employed by other

processes within the network. 2b4

Standardizing the Inter-Machine Dialog in Specific Application Areas 2c

After the TELNET protocol had been designed and widely

implemented within the ARPANET, work began on a family of

function-oriented protocols designed for use by programs, rather

than human users. Each such protocol standardizes the inter-machine

dialog in a particular application area. While TELNET dictates only

the manner in which user and server processes are interconnected via

the IPC facility, and the character set in which the two processes

communicate once connected, each member of this family specifies in

addition the syntax and semantics of the commands and responses that

comprise their dialog. 2c1

Protocols within this family necessarily differ in substance,

each specifying its own application-specific command set. The File

Transfer Protocol (FTP) [12], for example, specifies commands for

manipulating files, and the Remote Job Entry Protocol (RJE) [13]

specifies commands for manipulating batch jobs. Protocols

throughout the family are, however, similar in form, each successive

family member having simply inherited the physical features of its

predecessors. Thus FTP and RJE enforce the same conventions for

formulating commands and responses. 2c2

This common command/response discipline requires that commands

and responses have the following respective formats: 2c3

command-name <SP> parameter <CRLF>

response-number <SP> text <CRLF>

Each command invoked by the user process is identified by NAME and

is allowed a single PARAMETER. Each response generated by the

server process contains a three-digit decimal response NUMBER (to be

interpreted by the user process) and explanatory TEXT (for

presentation, if necessary, to the user). Response numbers are

assigned in such a way that, for example, positive and negative

acknowledgments can be easily distinguished by the user process. 2c4

-4-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

The Current Software Approach to Resource Sharing

FTP contains, among others, the following commands (each listed

with one of its possible responses) for retrieving, appending to,

replacing, and deleting files, respectively, within the server

process' file system: 2c5

Command Response

RETR <SP> filename <CRLF> 250 <SP> Beginning transfer. <CRLF>

APPE <SP> filename <CRLF> 400 <SP> Not implemented. <CRLF>

STOR <SP> filename <CRLF> 453 <SP> Directory overflow. <CRLF>

DELE <SP> filename <CRLF> 450 <SP> File not found. <CRLF>

The first three commands serve only to initiate the transfer of a

file from one machine to another. The transfer itself occurs on a

separate IPC channel and is governed by what amounts to a separate

protocol. 2c6

Since the general command format admits but a single parameter,

multiparameter operations must be implemented as sequences of

commands. Thus two commands are required to rename a file: 2c7

Command Response

RNFR <SP> oldname <CRLF> 200 <SP> Next parameter. <CRLF>

RNTO <SP> newname <CRLF> 253 <SP> File renamed. <CRLF>

-5-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

A Command/Response Protocol, the Basis for an Alternative Approach

A COMMAND/RESPONSE PROTOCOL, THE BASIS FOR AN ALTERNATIVE APPROACH 3

The Importance of Factoring Out the Command/Response Discipline 3a

That FTP, RJE, and the other protocols within this family share a

common command/response discipline is a fact not formally recognized

within the protocol literature, and each new protocol document

describes it in detail, as if for the first time. Nowhere are these

conventions codified in isolation from the various contexts in which

they find use, being viewed as a necessary but relatively

unimportant facet of each function-oriented protocol. "This common

command/response discipline has thus gone unrecognized as the

important, application-independent protocol that it is." 3a1

This oversight has had two important negative effects upon the

growth of resource sharing within the ARPANET: 3a2

(1) It has allowed the command/response discipline to remain

crude.

As already noted, operations that require more than a

single parameter are consistently implemented as two or more

separate commands, each of which requires a response and thus

incurs the overhead of a full round-trip network delay.

Furthermore, there are no standards for encoding parameter

types other than character strings, nor is there provision for

returning results in a command response.

(2) It has placed upon the applications programmer the burden of

implementing the network "run-time environment (RTE)" that

enables him to access remote processes at the desired,

functional level.

Before he can address remote processes in terms like the

following:

execute function DELE with argument TEXTFILE

on machine X

the applications programmer must first construct (as he

invariably does in every program he writes) a module that

provides the desired program interface while implementing the

agreed upon command/response discipline. This run-time

environment contains the code required to properly format

outgoing commands, to interface with the IPC facility, and to

parse incoming responses. Because the system provides only

-6-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

A Command/Response Protocol, the Basis for an Alternative Approach

the IPC facility as a foundation, the applications programmer

is deterred from using remote resources by the amount of

specialized knowledge and software that must first be

acquired.

If, on the other hand, the command/response discipline were

formalized as a separate protocol, its use in subsequent

function-oriented protocols could rightly be anticipated by

the systems programmer, and a single run-time environment

constructed for use throughout an installation (in the worst

case, one implementation per programming language per machine

might be required). This module could then be placed in a

library and, as depicted in Figure 2, link loaded with (or

otherwise made available to) each new applications program,

thereby greatly simplifying its use of remote resources.

Furthermore, since enhancements to it would pay dividends

to every applications program employing its services, the

run-time environment would gradually be augmented to provide

additional new services to the programmer.

The thesis of the present paper is that one of the keys to

facilitating network resource sharing lies in (1) isolating as a

separate protocol the command/response discipline common to a large

class of applications protocols; (2) making this new,

application-independent protocol flexible and efficient; and (3)

constructing at each installation a RTE that employs it to give the

applications programmer easy and high-level access to remote

resources. 3a3

Specifications for the Command/Response Protocol 3b

Having argued the value of a command/response protocol (hereafter

termed the Protocol) as the foundation for a large class of

applications protocols, there remains the task of suggesting the

form that the Protocol might take. There are eight requirements.

First, it must reproduce the capabilities of the discipline it

replaces: 3b1

(1) Permit invocation of arbitrary, named commands (or functions)

implemented by the remote process.

(2) Permit command outcomes to be reported in a way that aids

both the program invoking the commmand and the user under

whose control it may be executing.

-7-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

A Command/Response Protocol, the Basis for an Alternative Approach

Second, the Protocol should remove the known deficiencies of its

predecessor, that is: 3b2

(3) Allow an arbitrary number of parameters to be supplied as

arguments to a single command.

(4) Provide representations for a variety of parameter types,

including but not limited to character strings.

(5) Permit commands to return parameters as results as well as

accept them as arguments.

And, finally, the Protocol should provide whatever additional

capabilities are required by the more complex distributed systems

whose creation the Protocol seeks to encourage. Although others may

later be identified, the three capabilities below are recognized now

to be important: 3b3

(6) Permit the server process to invoke commands in the user

process, that is, eliminate entirely the often inappropriate

user/server distinction, and allow each process to invoke

commands in the other.

In the workshop environment alluded to earlier, for

example, the user process is the command language interpreter

and the server process is any of the software tools available

to the user. While most commands are issued by the

interpreter and addressed to the tool, occasionally the tool

must invoke commands in the interpreter or in another tool. A

graphical text editor, for example, must invoke commands

within the interpreter to update the user's display screen

after an editing operation.

(7) Permit a process to accept two or more commands for

concurrrent execution.

The text editor may wish to permit the user to initiate a

long formatting operation with one command and yet continue to

issue additional, shorter commands before there is a response

to the first.

(8) Allow the process issuing a command to suppress the response

the command would otherwise elicit.

This feature would permit network traffic to be reduced in

those cases in which the process invoking the command deems a

-8-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

A Command/Response Protocol, the Basis for an Alternative Approach

response unnecessary. Commands that always succeed but never

return results are obvious candidates for this kind of

treatment.

A Formulation of the Protocol That Meets These Specifications 3c

The eight requirements listed above are met by a protocol in

which the following two messages are defined: 3c1

message-type=COMMAND [tid] command-name arguments

message-type=RESPONSE tid outcome results

Here and in subsequent protocol descriptions, elements enclosed in

square brackets are optional. 3c2

The first message invokes the command whose NAME is specified

using the ARGUMENTS provided. The second is issued in eventual

response to the first and returns the OUTCOME and RESULTS of the

completed command. Whenever OUTCOME indicates that a command has

failed, the command's RESULTS are required to be an error number and

diagnostic message, the former to help the invoking program

determine what to do next, the latter for possible presentation to

the user. The protocol thus provides a framework for reporting

errors, while leaving to the applications program the tasks of

assigning error numbers and composing the text of error messages. 3c3

There are several elements of the Protocol that are absent from

the existing command/response discipline: 3c4

(1) RESULTS, in fulfillment of Requirement 5.

(2) A MESSAGE TYPE that distinguishes commands from responses,

arising from Requirement 6.

In the existing discipline, this distinction is implicit,

since user and server processes receive only responses and

commands, respectively.

(3) An optional transaction identifier TID by which a command and

its response are associated, arising from Requirements 7 and

8.

The presence of a transaction identifier in a command

implies the necessity of a response echoing the identifier;

and no two concurrently outstanding commands may bear the same

identifier.

-9-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

A Command/Response Protocol, the Basis for an Alternative Approach

Requirements 3 and 4--the ability to transmit an arbitrary number

of parameters of various types with each command or response--are

most economically and effectively met by defining a small set of

primitive "data types" (for example, booleans, integers, character

strings) from which concrete parameters can be modeled, and a

"transmission format" in which such parameters can be encoded.

Appendix A suggests a set of data types suitable for a large class

of applications; Appendix B defines some possible transmission

formats. 3c5

The protocol description given above is, of course, purely

symbolic. Appendix C explores one possible encoding of the Protocol

in detail. 3c6

Summarizing the Arguments Advanced So Far 3d

The author trusts that little of what has been presented thus far

will be considered controversial by the reader. The following

principal arguments have been made: 3d1

(1) The more effective forms of resource sharing depend upon

remote resources being usefully accessible to other programs,

not just to human users.

(2) Application-dependent protocols providing such access using

the current approach leave to the applications programmer the

task of constructing the additional layer of software (above

the IPC facility provided by the system) required to make

remote resources accessible at the functional level, thus

discouraging their use.

(3) A single, resource-independent protocol providing flexible

and efficient access at the functional level to arbitrary

remote resources can be devised.

(4) This protocol would make possible the construction at each

installation of an application-independent, network run-time

environment making remote resources accessible at the

functional level and thus encouraging their use by the

applications programmer.

A protocol as simple as that suggested here has great potential

for stimulating the sharing of resources within a computer network.

First, it would reduce the cost of adapting existing resources for

network use by eliminating the need for the design, documentation,

and implementation of specialized delivery protocols. Second, it

-10-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

A Command/Response Protocol, the Basis for an Alternative Approach

would encourage the use of remote resources by eliminating the need

for application-specific interface software. And finally, it would

encourage the construction of new resources built expressly for

remote access, because of the ease with which they could be offered

and used within the network software marketplace. 3d2

-11-

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

A HIGH-LEVEL MODEL OF THE NETWORK ENVIRONMENT 4

The Importance of the Model Imposed by the Protocol 4a

The Protocol proposed above imposes upon the applications

programmer a particular model of the network environment. In a

heterogeneous computer network, nearly every protocol intended for

general implementation has this effect, since it idealizes a class

of operations that have concrete but slightly different equivalents

in each system. Thus the ARPANET's TELNET Protocol alluded to

earlier, for example, specifies a Network Virtual Terminal that

attempts to provide a best fit to the many real terminals in use

around the Network. 4a1

As now formulated, the Protocol models a remote resource as an

interactive program with a simple, rigidly specified command

language. This model follows naturally from the fact that the

function-oriented protocols from which the Protocol was extracted

were necessitated by the complexity and diversity of user-oriented

command languages. The Protocol may thus legitimately be viewed as

a vehicle for providing, as an adjunct to the sophisticated command

languages already available to users, a family of simple command

languages that can readily be employed by programs. 4a2

While the command/response model is a natural one, others are

possible. A remote resource might also be modeled as a process that

services and replies to requests it receives from other computer

processes. This request/reply model would emphasize the fact that

the Protocol is a vehicle for inter-process communication and that

no human user is directly involved. 4a3

Substituting the request/reply model for the command/response

model requires only cosmetic changes to the Protocol: 4a4

message-type=REQUEST [tid] op-code arguments

message-type=REPLY tid outcome results

In the formulation above, the terms "REQUEST", "REPLY", and

"op-code" have simply been substituted for "COMMAND", "RESPONSE",

and "command-name", respectively. 4a5

The choice of model need affect neither the content of the

Protocol nor the behavior of the processes whose dialog it governs.

Use of the Word "command" in the command/response model, for

example, is not meant to imply that the remote process can be

coerced into action. Whatever model is adopted, a process has

-12-

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

complete freedom to reject an incoming remote request that it is

incapable of or unwilling to fulfill. 4a6

But even though it has no substantive effect upon the Protocol,

the selection of a model--command/response, request/reply, and so

on--is an important task because it determines the way in which both

applications and systems programmers perceive the network

environment. If the network environment is made to appear foreign

to him, the applications programmer may be discouraged from using

it. The choice of model also constrains the kind and range of

protocol extensions that are likely to occur to the systems

programmer; one model may suggest a rich set of useful extensions,

another lead nowhere (or worse still, in the wrong direction). 4a7

In this final section of the paper, the author suggests a network

model (hereafter termed the Model) that he believes will both

encourage the use of remote resources by the applications programmer

and suggest to the systems programmer a wide variety of useful

Protocol extensions. Unlike the substance of the Protocol, however,

the Model has already proven quite controversial within the ARPANET

community. 4a8

Modeling Resources As Collections of Procedures 4b

Ideally, the goal of both the Protocol and its accompanying RTE

is to make remote resources as easy to use as local ones. Since

local resources usually take the form of resident and/or library

subroutines, the possibility of modeling remote commands as

"procedures" immediately suggests itself. The Model is further

confirmed by the similarity that exists between local procedures and

the remote commands to which the Protocol provides access. Both

carry out arbitrarily complex, named operations on behalf of the

requesting program (the caller); are governed by arguments supplied

by the caller; and return to it results that reflect the outcome of

the operation. The procedure call model thus acknowledges that, in

a network environment, programs must sometimes call subroutines in

machines other than their own. 4b1

Like the request/reply model already described, the procedure

call model requires only cosmetic changes to the Protocol: 4b2

message-type=CALL [tid] procedure-name arguments

message-type=RETURN tid outcome results

In this third formulation, the terms "CALL", "RETURN", and

"procedure-name" have been substituted for "COMMAND, "RESPONSE", and

-13-

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

"command-name", respectively. And in this form, the Protocol might

aptly be designated a "procedure call protocol (PCP)". 4b3

"The procedure call model would elevate the task of creating

applications protocols to that of defining procedures and their

calling sequences. It would also provide the foundation for a true

distributed programming system (DPS) that encourages and facilitates

the work of the applications programmer by gracefully extending the

local programming environment, via the RTE, to embrace modules on

other machines." This integration of local and network programming

environments can even be carried as far as modifying compilers to

provide minor variants of their normal procedure-calling constructs

for addressing remote procedures (for which calls to the appropriate

RTE primitives would be dropped out). 4b4

Finally, the Model is one that can be naturally extended in a

variety of ways (for example, coroutine linkages and signals) to

further enhance the distributed programming environment. 4b5

Clarifying the Procedure Call Model 4c

Although in many ways it accurately portrays the class of network

interactions with which this paper deals, the Model suggested above

may in other respects tend to mislead the applications programmer.

The Model must therefore be clarified: 4c1

(1) Local procedure calls are cheap; remote procedure calls are

not.

Local procedure calls are often effected by means of a

single machine instruction and are therefore relatively

inexpensive. Remote procedure calls, on the other hand, would

be effected by means of a primitive provided by the local RTE

and require an exchange of messages via IPC.

Because of this cost differential, the applications

programmer must exercise discretion in his use of remote

resources, even though the mechanics of their use will have

been greatly simplified by the RTE. Like virtual memory, the

procedure call model offers great convenience, and therefore

power, in exchange for reasonable alertness to the

possibilities of abuse.

(2) Conventional programs usually have a single locus of control;

distributed programs need not.

-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

-21-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

Appendix D: A Look at Some Possible Extensions to the Model

APPENDIX D: A LOOK AT SOME POSSIBLE EXTENSIONS TO THE MODEL 10

The result of the distributed-system-building strategy proposed

in the body of this paper and the preceeding appendices is depicted

in Figure D-1. At the core of each process is the inter-process

communication facility provided by the operating system, which

effects the transmission of arbitrary binary data between distant

processes. Surrounding this core are conventions regarding first

the format in which a few, primitive types of data objects are

encoded in binary for IPC, and then the formats of several composite

data objects (that is, messages) whose transmission either invokes

or acknowledges the previous invocation of a remote procedure.

Immediately above lies an open-ended protocol layer in which an

arbitrary number of enhancements to the distributed programming

environment can be implemented. Encapsulating these various

protocol layers is the installation-provided run-time environment,

which delivers DPS services to the applications program according to

machine- and possibly programming-language-dependent conventions. 10a

The Protocol proposed in the present paper recognizes only the

most fundamental ASPects of remote procedure calling. It permits

the caller to identify the procedure to be called, supply the

necessary arguments, determine the outcome of the procedure, and

recover its results. In a second paper [19], the author proposes

some extensions to this simple procedure call model, and attempts to

identify other common forms of inter-process interaction whose

standardization would enhance the distributed programming

environment. Included among the topics discussed are: 10b

(1) Coroutine linkages and other forms of communication between

the caller and callee. 10b1

(2) Propagation of notices and requests up the thread of control

that results from nested procedure calls. 10b2

(3) Standard mechanisms for remotely reading or writing

system-global data objects within another program. 10b3

(4) Access controls for collections of related procedures. 10b4

(5) A standard means for creating and initializing processes,

that is, for establishing contact with and logging into a

remote machine, identifying the program to be executed, and

so forth. This facility would permit arbitrarily complex

process hierarchies to be created. 10b5

-22-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

Appendix D: A Look at Some Possible Extensions to the Model

(6) A mechanism for introducing processes to one another, that

is, for superimposing more general communication paths upon

the process hierarchy. 10b6

These and other extensions can all find a place in the open-ended

protocol layer of Figure D-1. The particular extensions explored in

[19] are offered not as dogma but rather as a means of suggesting

the possibilities and stimulating further research. 10c

-23-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

References

REFERENCES 11

1. Kahn, R. E., "Resource-Sharing Computer Communications

Networks," Proceedings of the IEEE, Vol. 60, No. 11, pp.

1397-1407, November 1972. 11a

2. Crocker, S. D., Heafner, J. F., Metcalfe, R. M., Postel, J. B.,

"Function-oriented Protocols for the ARPA Computer Network,"

AFIPS Proceedings, Spring Joint Computer Conference, Vol. 40,

pp. 271-279, 1972. 11b

3. Carr, C. S., Crocker, S. D., Cerf, V. G., "Host-Host

Communication Protocol in the ARPA Network," AFIPS Proceedings,

Spring Joint Computer Conference, Vol. 36, pp. 589-597, 1970. 11c

4. Mc Kenzie, A. A., Host/Host Protocol for the ARPA Network, Bolt

Beranek and Newman Inc., Cambridge, Massachusetts, January 1972

(SRI-ARC Catalog Item 8246). 11d

5. Walden, D. C., "A System for Interprocess Communication in a

Resource Sharing Computer Network," Communications of the ACM,

Vol. 15, No. 4, pp. 221-230, April 1972. 11e

6. Cerf, V. G., Kahn, R. E., "A Protocol for Packet Network

Intercommunication," IEEE Transactions on Communications, Vol.

Com-22, No. 5, pp. 637-648, May 1974. 11f

7. Thomas, R. H., "A Resource-Sharing Executive for the ARPANET,"

AFIPS Proceedings, National Computer Conference, Vol. 42, pp.

155-163, 1973. 11g

8. TELNET Protocol Specification, Stanford Research Institute,

Menlo Park, California, August 1973 (SRI-ARC Catalog Item

18639). 11h

9. Engelbart, D. C., Watson, R. W., Norton, J. C., "The Augmented

Knowledge Workshop," AFIPS Proceedings, National Computer

Conference, Vol. 42, pp. 9-21, 1973. 11i

10. Engelbart, D. C., English, W. K., "A Research Center for

Augmenting Human Intellect," AFIPS Proceedings, Fall Joint

Computer Conference, Vol. 33, pp. 395-410, 1968. 11j

11. Irby, C. H., Dornbush, C. F., Victor, K. E., Wallace, D. C., "A

Command Meta Language for NLS," Final Report, Contract

-24-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

References

RADC-TR-75-304, SRI Project 1868, Stanford Research Institute,

Menlo Park, California, December, 1975. 11k

12. Neigus, N. J., File Transfer Protocol, ARPA Network Working

Group Request for Comments 542, Bolt Beranek and Newman Inc.,

Cambridge, Massachusetts, July 1973 (SRI-ARC Catalog Item

17759). 11l

13. Bressler, R. D., Guida, R., Mc Kenzie, A. A., Remote Job Entry

Protocol, ARPA Network Working Group Request for Comments 360,

Dynamic Modeling Group, Massachusetts Institute of Technology,

Cambridge, Massachusetts, (undated) (SRI-ARC Catalog Item

12112). 11m

14. Watson, R. W., Some Thoughts on System Design to Facilitate

Resource Sharing, ARPA Network Working Group Request for

Comments 592, Augmentation Research Center, Stanford Research

Institute, Menlo Park, California, November 20, 1973 (SRI-ARC

Catalog Item 20391). 11n

15. White, J. E., DPS-10 Version 2.5 Implementer's Guide,

Augmentation Research Center, Stanford Research Institute, Menlo

Park, California, August 15, 1975 (SRI-ARC Catalog Item 26282). 11o

16. White, J. E., DPS-10 Version 2.5 Programmer's Guide,

Augmentation Research Center, Stanford Research Institute, Menlo

Park, California, August 13, 1975 (SRI-ARC Catalog Item 26271). 11p

17. White, J. E., DPS-10 Version 2.5 Source Code, Augmentation

Research Center, Stanford Research Institute, Menlo Park,

California, August 13, 1975 (SRI-ARC Catalog Item 26267). 11q

18. Bobrow, D. G., Burchfiel, J. D., Murphy, D. L., Tomlinson, R.

S., "TENEX, a Paged Time Sharing System for the PDP-10,"

Communications of the ACM, Vol. 15, No. 3, pp. 135-143, March

1972. 11r

19. White, J. E., "Elements of a Distributed Programming System,"

Submitted for publication in the Journal of Computer Languages,

1976. 11s

-25-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

NCC 76 A High-Level Framework for Network-Based Resource Sharing

Figure List

FIGURE LIST 12

Figure 1. Interfacing a remote terminal to a local time-sharing

system via the TELNET Protocol. 12a

Figure 2. Interfacing distant applications programs via their

run-time environments. 12b

Figure D-1. Software and protocol layers comprising a process

within the distributed programming system. 12c

-26-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

-27-

NWG/RFC# 707 JEW 14-JAN-76 19:51 34263

A High-Level Framework for Network-Based Resource Sharing

23-DEC-75

James E. White

Augmentation Research Center

Stanford Research Institute

Menlo Park, California 94025

(415) 326-6200 x2960

This paper proposes a high-level, application-independent

protocol and software framework that would extend the local

programming environment to embrace modules in other computers

within a resource sharing computer network, and thereby

facilitate the construction of distributed systems and encourage

the sharing of resources.

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.

This paper has been submitted for publication in the

Proceedings of the 1976 National Computer Conference.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有