分享
 
 
 

RFC722 - Thoughts on Interactions in Distributed Services

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

./ Network Working Group Jack Haverty (MIT)

Request for Comments: 722 Sept 1976

NIC #36806

I. ABSTRACT

This paper addresses some issues concerned with the

design of distributed services. In particular, it is

concerned with the characteristics of the interactions,

between programs which support some service at various

network sites. The ideas presented are derived mainly from

eXPerience with various service protocols [Reference 1]

on the ARPANET.

A model is developed of interactions between programs.

Salient features of this model which promote and simplify

the constrUCtion of reliable, responsive services are

identified. These dualities are motivated by problems

experienced with various ARPANET protocols and in the design

and maintenance of programs which use these protocols in the

performance of some service.

Using this model as a template, the general

architecture of one possible interaction protocol is

presented. This mechanism provides a foundation on which

protocols would be constructed for particular services,

simplifying the process of creating services which are easy

to implement and maintain, and appear reliable and

responsive to the customer. This presentation is meant to

serve as an introduction to a specific instance of such a

protocol, called the RRP, which is defined in one of the

references.

-1-

II. OVERVIEW AND TERMINOLOGY

This paper considers the interaction of two programs

which support some network service. It develops a model of

the interactions of a class of such applications, and

includes some thoughts on desirable goals and

characteristics of implementations. The model is derived

from a proposal [Reference 2] for mail-handling

systems. Terminology, as introduced, is highlighted by

capitalization.

Many uses of computer networks involve communication

directly between programs, without human intervention or

monitoring. Some examples would include an advanced

mail-handling system, or any kind of multi-site data base

manager.

Such programs will be termed SERVERs. They are the

users of some mechanism which provides the needed

communication and synchronization. The particular facility

which the servers implement will be termed a SERVICE.

Servers for any particular service may be written in several

languages, operate in various system environments on

different kinds of computers. The entity which utilizes the

service will be termed the CUSTOMER.

Servers interact during ENCOUNTERs, which are the

periods when two servers are in communication. An encounter

begins when one server establishes a CHANNEL, a

bidirectional communication link with another server. The

interaction between servers is effected by the exchange of

information over the channel. The conventions used in such

an exchange are defined by the PROTOCOLs for the

interaction.

The theme of this paper is a model for a particular

class of process interactions which may be used as a basis

for many possible services, where the interactions are

fairly simple. Services which fit in this category interact

in a manner which can be modeled by a REQUEST-REPLY

DISCIPLINE, which is defined herein.

A set of guidelines and goals is developed, which

address issues relevant to ease or implementation and

reliability of operation of servers. These guidelines may

be used to assist in the formulation of protocols specific

to appropriate services.

-2-

Additionally, the guidelines presented may be used as a

basis for a general process interaction protocol, by

extracting the primitives and operational concepts which

would be common to a protocol constructed for virtually any

such service.

From these ideas, a protocol which provides a

foundation can be constructed, to be extended for particular

services by adding primitives specific to each. The RRP

[Reference 4] is one such possible protocol. It

provides basic primitives to control the interaction between

servers, and a mechanism for extending the primitives to

include service-specific operations.

The discussion here is primarily intended to explain

the basis for the design of the RRP, and to present some

general issues of design of services.

III. THE REQUEST-REPLY DISCIPLINE

The class of services relevant to this discussion are

those whose interactions could be performed in the following

manner.

Two servers have established a channel by some external

means. A single interaction between servers begins with one

server, called the REQUESTER, issuing a request. The server

receiving that request, the RESPONDER, issues a REPLY. The

requester interprets the reply sequence to determine whether

the request was successful, failed, or partially failed, and

takes appropriate action. Such a sequence of events is

termed an EXCHANGE. This is analogous to a subroutine call

in a simple single-processor operating system.

This model is termed a REQUEST-REPLY DISCIPLINE of

program interaction. It should be noted that this is only a

model of program behavior, and does not necessarily exclude

services which require, for example, some measure of

pipelining of requests for efficiency in long-delay

situation;. In fact, most network services would require

such measures, put their interactions can still be reduced

to the request-reply model.

At any time, one of the partners is in control of the

interaction, and is termed the MASTER of the interaction.

The other partner is called the SLAVE. In the simplest

cases, the requester is always the master, although this is

not always true in particular implementations, such as the

RRP [Reference 4].

-3-

IV. CHARACTERISTICS OF AN INTERACTION MECHANISM

The following set of characteristics desirable in an

interaction mechanism is the result of experience with

program communication in various ARPANET applications, such

as message services, file transfer, Datacomputer, and remote

job entry applications.

In attempting to produce such systems, several

qualities recurred which would be desirable in the

substructure upon which the systems are built. These

characteristics would promote ease of writing and debugging

servers, maintaining reliability, and providing services

which are responsive to customer needs, while avoiding

disruptions of service.

The qualities desired in the interaction mechanism are

presented along with a discussion of the effects which they

are intended to produce in the associated services. It must

be emphasized that this discussion is related to a class of

simple services, and might not be appropriate for more

complex applications.

1/ Servers must be able to transfer data in a precise

fashion, retaining the structure and semantic

meaning of the data, despite the dissimilarities of

the computer systems in which they function.

2/ Synchronization and timing problems due to the

characteristics of the communications link must be

isolated and handled separately from any which

might be characteristic of the service itself.

3/ Since services may wish to provide expanded

facilities as they are used and developed, a

mechanism must be included to enable the service

protocol to evolve.

4/ Since various programs which act as servers may

undergo simultaneous development, care must be

taken to insure that servers with different

capabilities interact reliably, maintaining at

least the same level of service as existed

previously.

5/ The mechanisms for extending the facilities must

avoid requiring servers to be modified when new

capabilities are introduced, but not impede

progress by maintainers who are anxious to provide

a new or experimental service.

-4-

These qualities may be placed in three categories, data

precision (1), process synchronization (2), and service

enhancement (3, 4, 5). Each will be discussed separately in

the following sections. The significance of each quality

and its effect on the associated service characteristics

will be included, with some references to related problems

with current and past services.

Since these considerations are common to many possible

services, it is appropriate for the interaction protocol to

include them within its machinery as much as possible. This

permits services to be implemented which, if carefully

designed, inherit these properties from the interaction

substrate.

V. PRECISE DATA TRANSFER

Precision in data transfer permits semantic and

structural information which exists in the sender's instance

of a datum to be reproduced in the receiver's image of the

datum, even though it may be represented in the systems

involved in entirely different fashions.

For programs to provide powerful, reliable

capabilities, they must be able to interact using data which

is meaningful to the particular service involved. The

interaction mechanism must permit services to define their

own relevant data types, and transfer such items efficiently

and precisely. This facility provides a 'standard' for data,

permitting the service's designers to concentrate on

higher-level issues of concern to the service itself.

Data of a given type should be recognizable as such

without need for context. The mechanism should also permit

new data types to be handled by older servers without error,

even though they cannot interpret the semantics of the new

data.

These characteristic permits services to be designed in

terms of the abstract data they need to function, without

continued detailed concern for the particular formats in

which it is represented within various machines.

For example, servers may need to transfer a datum

identifying a particular date, which may be represented

internally within systems in different forms. The data

transfer mechanism should be capable of transferring such a

datum as a date per se, rather than a strict pattern or bits

or characters.

-5-

For example, in current FTP-based mail systems,

messages often contain information with significant semantic

meaning, which is lost or obscured when transferred between

sites. An example might be a file specification, which

effectively loses all identity as such when translated into

a simple character stream. People can usually recognize

such streams as file names, but it is often extremely

difficult, time-consuming, and inefficient to construct a

program to do so reliably. As a result, services which

should be easy to provide to the customer, such as automatic

retrieval of relevant files, become difficult and

unreliable.

Some success has been achieved in handling certain

data, such as dates and times, by defining a particular

character pattern which, if seen in a particular context,

can be recognized as a date or time. Each of these cases

has been done on an individual basis, by defining a format

for the individual data of concern. Generally, the format

depends to some extent on the datum occurring within a

particular context, and is not unique enough to be

identifiable outside of that context.

A particular service can achieve data precision by

meticulous specification of the protocols by which data is

transferred. This need is widespread enough, however, that

it is appropriate to consider inclusion of a facility to

provide data precision within the interaction mechanism

itself.

The major effect of this would be to facilitate the

design of reliable, responsive services, by relieving the

service's designers from the need to consider very low-level

details of data representation, which are usually the least

interesting, but highly critical, ASPects of the design. By

isolating the data transfer mechanism, thIs architecture

also promotes modularity or implementations, which can

reduce the cost and time needed to implement or modify

services.

VI. PROCESS SYNCHRONIZATION

A major source of problems in many services involved

synchronization of server; interacting over a relatively

low-bandwidth, high-delay communications link.

Interactions in most services involve issuing a command

and waiting for a response. The number of responses which

can be elicited by a given command often varies, and there

is usually no way to determine if all replies have arrived.

Programs can easily issue a request before the responses to

a previous request have completed, and get out of

synchronization in a response is incorrectly matched to a

request. Each server program must be meticulously designed

to be capable of recovering if an unexpected reply arrives

after a subsequent command is issued.

-6-

Note that, for reliable operation, it is always

necessary that each response cause a reply to occur, at

least in the sense that the request ts confirmed at some

point. No service should perform a critical operation, such

as deleting a file, which depends on the success of a

previous request unless it has been confirmed. Requests in

current protocols which do not appear to cause a reply may

be viewed as confirmed later when a subsequent request is

acknowledged, while such protocols work, they are more

opaque than desirable, and consequently more difficult to

implement.

These characteristics of protocols have often resulted

in implementation of ad hoc methods for interaction, such as

timeouts or sufficient length to assure correctness in an

acceptably high percentage of situations. Often this has

required careful tuning of programs as experience in using a

protocol shows which commands are most likely to cause

problems. Such methods generally result in a service which

is less responsive, powerful, or efficient than desirable,

and expensive to build and maintain.

Additionally, protocol specifications for services have

often been incomplete, in that an enumeration of the

responses which may occur for a given command is inaccurate

or non-existent. This greatly complicates the task of the

programmer trying to construct an intelligent server. In

most cases, servers are slowly improved over time as

experience shows which responses are common in each

instance.

The synchronization problems mentioned above are in

addition to those which naturally occur as part of the

service operation. Thus, problems of synchronization may

be split into two classes, those inherent in the service,

and those associated with the interaction mechanism itself.

Construction of reliable, responsive servers can be

assisted by careful design of the interaction mechanism and

protocols. An unambiguous, completely specified mapping

between commands and responses is desirable.

Synchronization considerations of the two types can be

attacked separately. An interaction mechanism which handles

its own synchronization can be provided as a base for

service' designers to use, relieving them of considerations

of the low-level, protocol-derived problems, by providing

primitives which encourage the design of reliable services.

To achieve a reasonable effective bandwidth, it is

usually desirable to permit interacting programs to operate

in a full-duplex fashion. Significant amounts of data are

often in transit at any time. This magnifies the problems

associated with interaction by introducing parallelism. The

interaction mechanism can also be structured to provide ways

of handling these problems, and to provide a basis on which

servers which exploit parallelism can be constructed.

-7-

Many of these problems are too complex to warrant their

consideration in any but the most active services. As a

result, services are often constructed which avoid

problems by inefficiencies in their operation, as mentioned

above. Provision of an interaction mechanism and primitives

for use by such services would promote efficiency interaction

even by simple services which do not have the resources to

consider all the problems in detail.

VII. SERVICE ENHANCEMENT

When particular programs implementing a service are

undergoing development simultaneously by several

organizations, or are maintained at many distributed sites.

many problems can develop concerning the compatibility of

dissimilar servers.

This situation occurs in the initial phase of

implementing a service, as well as whenever the protocols

are modified to fix problems or expand the service.

Virtually every interaction protocol is modified from time

to time to add new capabilities. Two particular examples

arc the TELNET protocol and mail header formats.

In most cases, the basic protocol had no facility for

implementing changes in an invisible fashion. This has had

several consequences.

First, it is very difficult to change a protocol unless

the majority of concerned maintainers are interested in the

changes and therefore willing to exert effort to change the

programs involved. This situation has occurred in previous

cases because any change necessarily impacts all servers.

The services involved therefore often stagnate, and it

becomes inappropriately difficult to provide a customer with

a seemingly simple enhancement.

Second, when protocols change by will of the majority,

existing servers often stop working or behave erratically

which they suddenly find their partner speaking a new

language. This is equally disconcerting to the service

customer, as well as annoying to the maintainers of the

servers at the various sites affected.

These problems can be easily avoided, or at least

significantly reduced, by careful design of the interaction

protocols. In particular, the interaction mechanism itself

can be structured to avoid the problem entirely, leaving

only those problems associated with the particular service

operations themselves.

The interaction machinery should be structured so that

the mechanisms of the interaction substrate itself may be

improved or expanded in a fashion which is absolutely

invisible to current servers.

-8-

1/ No server should be required to implement a change

which is unimportant to its customers.

2/ No server should be prevented from utilizing a new

facility when interacting with a willing partner.

3/ Service should not be degraded in any way when a

new protocol facility is made available.

In cases where a single service is provided by

different server programs at many sites, it is desirable for

the various sites to be able to participate at a level

appropriate to them. A new server program should be able to

participate quickly, using only simple mechanisms of the

protocol, and evolve into more advanced, powerful, or

efficient interaction as desired. Sites wishing to utilize

advanced or experimental features must be allowed to do so

without imposing implementation of such features on others.

Conversely, sites wishing to participate in a minimal

fashion must not prevent others from using advanced

features. In all cases, the various servers must be capable

of continued interaction at the highest level supported by

both.

The goal is an evolving system which maintains

reliability as well as both upward and downward

compatibility. The protocol itself should have these

characteristics, and it should provide the mechanisms to

service interaction protocols to be defined which

inherit these qualities.

VIII. STRUCTURING AN INTERACTION MECHANISM

The qualities presented previously should provide at

least a starting point for implementation of services which

avoid the problems mentioned. The rest of this paper

addresses issues of a particular possible architecture of an

interaction mechanism.

The design architecture splits the service-specific

conventions from those of the interaction per se. An

interaction protocol is provided which implements the

machinery of the request-reply model, and includes handling

of the problems of data precision, synchronization, and

enhancement. This protocol is not specific to any service,

but rather provides primitives, in the form of

service-designed requests and replies, on which a particular

service protocol is built.

An actual implementation for a particular service could

merge the code of the interaction protocol with the service

itself, or the interaction protocol could be provided as a

'service' whose customer is the service being implemented.

-9-

The goals of this design architecture follow.

1/ Provision of a general interaction mechanism to be

used by services which follow a request-reply

discipline. Services would design their protocols

using the primitives of the mechanism as a

foundation.

2/ INTERACTION MECHANISM EXTENSIBILITY. The

interaction mechanism may be expanded as desired

without impacting on existing servers unless they

wish to use the new features.

3/ SERVER EXTENSIBILITY. Servers can be implemented

using the most basic primitives. Implementations

may later be extended to utilize additional

capabilities to negate some of the inefficiency

inherent in a strict request-reply structure.

4/ SERVICE EXTENSIBILITY. The primitives permit a

service to be expanded as desired without impacting

on existing servers in any way unless they wish to

use the new features.

5/ SERVER COMPATIBILITY. Within the set of servers of

a given application, it is possible to have

different servers operating at different levels of

sophistication, and still maintain the ability for

any pair of servers to interact successfully.

These goals involve two basic areas of design. First,

the interaction mechanism itself is designed to meet the

goals. Secondly, guidelines for structure of the particular

service' protocols are necessary, in order for it to inherit

the qualities needed to meet the goals.

IX. PARTITIONING THE PROBLEM

In defining the interaction mechanism itself, the

problem may be simplified by considering two areas of

concern separately.

1/ The characteristics and format of the data conveyed

by the channel may be defined.

2/ The conventions used to define the interaction may

be defined, in terms of the available data

supported by the channel.

-10-

For purposes of this paper, the data repertoire and

characteristics of the channel are assumed to be as

described in [Reference 3] and summarized in an

appendix. Discussions of the interaction between servers

will use only the abstract concepts of primitive and

semantic data items, to isolate the issues of interaction

from those of data formats and communication details, and

therefore simplify the problem.

Additionally, actual implementation of a mechanism

following the ideas presented here can be accomplished in a

modular fashion, isolating code which is concerned with the

channel itself from code concerned with the interaction

behavior.

The interaction mechanism provides primitives to the

service' designer which are likewise defined in terms of the

data items available. Service designers are encouraged, but

not required, to define interactions in terms of these data

only.

X. THE PRIMITIVES

The interaction mechanism assumes the existence of a

channel [Reference 3] between two servers. Two

new semantic data types are defined to implement the

interaction. These are, unsurprisingly, called CONTROL

REQUESTs and CONTROL REPLYs. Each of these data items

contains at least two elements.

1/ The TYPE element identifies a particular type of

request or reply.

2/ The SEQUENCE element is used to match replies to

their corresponding request.

Other elements may appear. Their interpretation

depends on the particular type of request or reply in which

they appear.

The interaction protocol itself is defined in terms of

control requests and control replies. A very small number

of request and reply types is defined as the minimal

implementation level. Additional request and reply types

are also defined, for use by more advanced servers, to

Provide additional capabilities to the service, or simply to

increase efficiency of operation.

-11-

Two additional data items are defined, called USER

REQUESTs and USER REPLYs. These are structured like

requests and replies, but the various types are defined by

the service itself, to implement the primitives needed in

its operation.

Control and user requests and replies are generically

referenced as simply REQUESTs and REPLYs.

The protocol of the interaction has several

characteristics which form the basis of the request-reply

model, and attempt to meet the goals mentioned previously.

1/ Every request elicits a reply.

2/ Every reply is associated unambiguously with a

previous request.

3/ Each server always knows the state of the

interaction, such as whether or not more data is

expected from its partner.

4/ The protocol definition includes enumeration of the

possible responses for each request. Service

protocols are encouraged to do likewise for user

requests and user replies.

5/ Servers who receive requests of unknown type issue

a response which effectively refuses the request.

Servers attempting to use advanced features of a

protocol 'rephrase' their requests in simpler terms

where possible to maintain the previous level of

service.

The minimal implementation will support interaction

almost exactly along the lines of the request-reply

discipline.

Extensions to the minimal configuration are defined for

two reasons. First, the strict request-reply discipline

model is inefficient for use in high-volume situations

because of the delays involved. Several extensions are

defined to cope with this problem. Thus, although the

interaction is based on such a discipline, it does not

necessarily implement the interaction in that fashion.

Second, additional primitives are defined which provide some

standard process synchronization operations, for use by the

services.

The protocol architecture presented here is defined in

detail in an associated document. [Reference 4]

-12-

Appendix I -- The Channel

The following discussion is a summary of the ideas

presented in [Reference 3], which should be

consulted for further detail.

The communication link between two servers is termed a

CHANNEL. Channels provide bidirectional communications

capabilities, and will usually be full-duplex. The programs

involved establish the channel as their individual

applications require, using some form of initial connection

protocol.

The channel acts as an interface between servers. It

conveys abstract data items whose semantics are understood

by the programmers involved, such as INTEGERs, STRINGs, FILE

PATH NAMEs, and so on. Because the users of the channel may

operate in dissimilar computer environments, their

communication is defined only in terms of such abstract data

items, which are the atomic units of information carried on

the channel. The program implementing the channel at each

site converts the data between an encoded transmission

format appropriate to the particular communication link

involved, and whatever internal representational form is

appropriate in the computer itself.

The channel protocol provides a mechanism for

definition of various types of data items of semantic value

for the particular service concerned, for example, possibly,

user-name, set, syllable, sentence, and other data items of

interest to the particular service. The channel provides a

mechanism for transportation of such user-defined data from

host to host.

The channel may actually be implemented by one or more

separate encoding mechanisms which would be used in

different conditions, initially, the channel machinery would

provide a rudimentary facility based on a single mechanism

such as the MSDTP [Reference 3].

The mechanism is not dependent on the existence of

actual line-style network connections but will operate in

other environments, such as a message-oriented (as opposed

to connection-oriented) communications architecture, and in

fact is more naturally structured for such an environment.

-13-

XI. REFERENCES

[1] Network Information Center, ARPANET Protocol Handbook,

April, 1976.

[2] Broos, Haverty, Vezza, Message Services Protocol

proposal, December, 1975.

[3] Haverty, Jack, Message Services Data Transfer Protocol,

NWG RFC713, NIC 34729, April, 1976.

[4] Haverty, Jack, RRP, A Process Communication Protocol for

Request-reply Disciplines, NWG RFC723, NIC 36807, (to

be issued)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有