rfc722.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 801 行 · 第 1/2 页
TXT
801 行
-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 RFC 713, NIC 34729, April, 1976.
[4] Haverty, Jack, RRP, A Process Communication Protocol for
Request-reply Disciplines, NWG RFC 723, NIC 36807, (to
be issued)
-14-
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?