home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / rfc / 700s / rfc722.txt < prev    next >
Text File  |  1992-10-14  |  29KB  |  801 lines

  1. Network Working Group                                       Jack Haverty  (MIT)
  2. Request for Comments: 722                                             Sept 1976
  3. NIC #36806
  4.  
  5.  
  6. I. ABSTRACT
  7.  
  8.  
  9.      This paper addresses some issues concerned with the
  10. design of distributed services.  In particular, it is
  11. concerned with the characteristics of the interactions,
  12. between programs which support some service at various
  13. network sites.  The ideas presented are derived mainly from
  14. experience with various service protocols [Reference 1]
  15. on the ARPANET.
  16.  
  17.      A model is developed of interactions between programs.
  18. Salient features of this model which promote and simplify
  19. the construction of reliable, responsive services are
  20. identified.  These dualities are motivated by problems
  21. experienced with various ARPANET protocols and in the design
  22. and maintenance of programs which use these protocols in the
  23. performance of some service.
  24.  
  25.      Using this model as a template, the general
  26. architecture of one possible interaction protocol is
  27. presented.  This mechanism provides a foundation on which
  28. protocols would be constructed for particular services,
  29. simplifying the process of creating services which are easy
  30. to implement and maintain, and appear reliable and
  31. responsive to the customer.  This presentation is meant to
  32. serve as an introduction to a specific instance of such a
  33. protocol, called the RRP, which is defined in one of the
  34. references.
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.                                 -1-
  61. II. OVERVIEW AND TERMINOLOGY
  62.  
  63.  
  64.      This paper considers the interaction of two programs
  65. which support some network service.  It develops a model of
  66. the interactions of a class of such applications, and
  67. includes some thoughts on desirable goals and
  68. characteristics of implementations.  The model is derived
  69. from a proposal [Reference 2] for mail-handling
  70. systems.  Terminology, as introduced, is highlighted by
  71. capitalization.
  72.  
  73.      Many uses of computer networks involve communication
  74. directly between programs, without human intervention or
  75. monitoring.  Some examples would include an advanced
  76. mail-handling system, or any kind of multi-site data base
  77. manager.
  78.  
  79.      Such programs will be termed SERVERs.  They are the
  80. users of some mechanism which provides the needed
  81. communication and synchronization.  The particular facility
  82. which the servers implement will be termed a SERVICE.
  83. Servers for any particular service may be written in several
  84. languages, operate in various system environments on
  85. different kinds of computers.  The entity which utilizes the
  86. service will be termed the CUSTOMER.
  87.  
  88.      Servers interact during ENCOUNTERs, which are the
  89. periods when two servers are in communication.  An encounter
  90. begins when one server establishes a CHANNEL, a
  91. bidirectional communication link with another server.  The
  92. interaction between servers is effected by the exchange of
  93. information over the channel.  The conventions used in such
  94. an exchange are defined by the PROTOCOLs for the
  95. interaction.
  96.  
  97.      The theme of this paper is a model for a particular
  98. class of process interactions which may be used as a basis
  99. for many possible services, where the interactions are
  100. fairly simple.  Services which fit in this category interact
  101. in a manner which can be modeled by a REQUEST-REPLY
  102. DISCIPLINE, which is defined herein.
  103.  
  104.      A set of guidelines and goals is developed, which
  105. address issues relevant to ease or implementation and
  106. reliability of operation of servers.  These guidelines may
  107. be used to assist in the formulation of protocols specific
  108. to appropriate services.
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.                                 -2-
  118.      Additionally, the guidelines presented may be used as a
  119. basis for a general process interaction protocol, by
  120. extracting the primitives and operational concepts which
  121. would be common to a protocol constructed for virtually any
  122. such service.
  123.  
  124.      From these ideas, a protocol which provides a
  125. foundation can be constructed, to be extended for particular
  126. services by adding primitives specific to each.  The RRP
  127. [Reference 4] is one such possible protocol.  It
  128. provides basic primitives to control the interaction between
  129. servers, and a mechanism for extending the primitives to
  130. include service-specific operations.
  131.  
  132.      The discussion here is primarily intended to explain
  133. the basis for the design of the RRP, and to present some
  134. general issues of design of services.
  135.  
  136.  
  137. III. THE REQUEST-REPLY DISCIPLINE
  138.  
  139.  
  140.      The class of services relevant to this discussion are
  141. those whose interactions could be performed in the following
  142. manner.
  143.  
  144.      Two servers have established a channel by some external
  145. means.  A single interaction between servers begins with one
  146. server, called the REQUESTER, issuing a request.  The server
  147. receiving that request, the RESPONDER, issues a REPLY.  The
  148. requester interprets the reply sequence to determine whether
  149. the request was successful, failed, or partially failed, and
  150. takes appropriate action.  Such a sequence of events is
  151. termed an EXCHANGE.  This is analogous to a subroutine call
  152. in a simple single-processor operating system.
  153.  
  154.      This model is termed a REQUEST-REPLY DISCIPLINE of
  155. program interaction.  It should be noted that this is only a
  156. model of program behavior, and does not necessarily exclude
  157. services which require, for example, some measure of
  158. pipelining of requests for efficiency in long-delay
  159. situation;.  In fact, most network services would require
  160. such measures, put their interactions can still be reduced
  161. to the request-reply model.
  162.  
  163.      At any time, one of the partners is in control of the
  164. interaction, and is termed the MASTER of the interaction.
  165. The other partner is called the SLAVE.  In the simplest
  166. cases, the requester is always the master, although this is
  167. not always true in particular implementations, such as the
  168. RRP [Reference 4].
  169.  
  170.  
  171.  
  172.  
  173.                                 -3-
  174. IV. CHARACTERISTICS OF AN INTERACTION MECHANISM
  175.  
  176.  
  177.      The following set of characteristics desirable in an
  178. interaction mechanism is the result of experience with
  179. program communication in various ARPANET applications, such
  180. as message services, file transfer, Datacomputer, and remote
  181. job entry applications.
  182.  
  183.      In attempting to produce such systems, several
  184. qualities recurred which would be desirable in the
  185. substructure upon which the systems are built.  These
  186. characteristics would promote ease of writing and debugging
  187. servers, maintaining reliability, and providing services
  188. which are responsive to customer needs, while avoiding
  189. disruptions of service.
  190.  
  191.      The qualities desired in the interaction mechanism are
  192. presented along with a discussion of the effects which they
  193. are intended to produce in the associated services.  It must
  194. be emphasized that this discussion is related to a class of
  195. simple services, and might not be appropriate for more
  196. complex applications.
  197.  
  198.  
  199.      1/ Servers must be able to transfer data in a precise
  200.         fashion, retaining the structure and semantic
  201.         meaning of the data, despite the dissimilarities of
  202.         the computer systems in which they function.
  203.  
  204.      2/ Synchronization and timing problems due to the
  205.         characteristics of the communications link must be
  206.         isolated and handled separately from any which
  207.         might be characteristic of the service itself.
  208.  
  209.      3/ Since services may wish to provide expanded
  210.         facilities as they are used and developed, a
  211.         mechanism must be included to enable the service
  212.         protocol to evolve.
  213.  
  214.      4/ Since various programs which act as servers may
  215.         undergo simultaneous development, care must be
  216.         taken to insure that servers with different
  217.         capabilities interact reliably, maintaining at
  218.         least the same level of service as existed
  219.         previously.
  220.  
  221.      5/ The mechanisms for extending the facilities must
  222.         avoid requiring servers to be modified when new
  223.         capabilities are introduced, but not impede
  224.         progress by maintainers who are anxious to provide
  225.         a new or experimental service.
  226.  
  227.  
  228.  
  229.  
  230.                                 -4-
  231.      These qualities may be placed in three categories, data
  232. precision (1), process synchronization (2), and service
  233. enhancement (3, 4, 5).  Each will be discussed separately in
  234. the following sections.  The significance of each quality
  235. and its effect on the associated service characteristics
  236. will be included, with some references to related problems
  237. with current and past services.
  238.  
  239.      Since these considerations are common to many possible
  240. services, it is appropriate for the interaction protocol to
  241. include them within its machinery as much as possible.  This
  242. permits services to be implemented which, if carefully
  243. designed, inherit these properties from the interaction
  244. substrate.
  245.  
  246.  
  247. V. PRECISE DATA TRANSFER
  248.  
  249.  
  250.      Precision in data transfer permits semantic and
  251. structural information which exists in the sender's instance
  252. of a datum to be reproduced in the receiver's image of the
  253. datum, even though it may be represented in the systems
  254. involved in entirely different fashions.
  255.  
  256.      For programs to provide powerful, reliable
  257. capabilities, they must be able to interact using data which
  258. is meaningful to the particular service involved.  The
  259. interaction mechanism must permit services to define their
  260. own relevant data types, and transfer such items efficiently
  261. and precisely.  This facility provides a 'standard' for data,
  262. permitting the service's designers to concentrate on
  263. higher-level issues of concern to the service itself.
  264.  
  265.      Data of a given type should be recognizable as such
  266. without need for context.  The mechanism should also permit
  267. new data types to be handled by older servers without error,
  268. even though they cannot interpret the semantics of the new
  269. data.
  270.  
  271.      These characteristic permits services to be designed in
  272. terms of the abstract data they need to function, without
  273. continued detailed concern for the particular formats in
  274. which it is represented within various machines.
  275.  
  276.      For example, servers may need to transfer a datum
  277. identifying a particular date, which may be represented
  278. internally within systems in different forms.  The data
  279. transfer mechanism should be capable of transferring such a
  280. datum as a date per se, rather than a strict pattern or bits
  281. or characters.
  282.  
  283.  
  284.  
  285.  
  286.                                 -5-
  287.      For example, in current FTP-based mail systems,
  288. messages often contain information with significant semantic
  289. meaning, which is lost or obscured when transferred between
  290. sites.  An example might be a file specification, which
  291. effectively loses all identity as such when translated into
  292. a simple character stream.  People can usually recognize
  293. such streams as file names, but it is often extremely
  294. difficult, time-consuming, and inefficient to construct a
  295. program to do so reliably.  As a result, services which
  296. should be easy to provide to the customer, such as automatic
  297. retrieval of relevant files, become difficult and
  298. unreliable.
  299.  
  300.      Some success has been achieved in handling certain
  301. data, such as dates and times, by defining a particular
  302. character pattern which, if seen in a particular context,
  303. can be recognized as a date or time.  Each of these cases
  304. has been done on an individual basis, by defining a format
  305. for the individual data of concern.  Generally, the format
  306. depends to some extent on the datum occurring within a
  307. particular context, and is not unique enough to be
  308. identifiable outside of that context.
  309.  
  310.      A particular service can achieve data precision by
  311. meticulous specification of the protocols by which data is
  312. transferred.  This need is widespread enough, however, that
  313. it is appropriate to consider inclusion of a facility to
  314. provide data precision within the interaction mechanism
  315. itself.
  316.  
  317.      The major effect of this would be to facilitate the
  318. design of reliable, responsive services, by relieving the
  319. service's designers from the need to consider very low-level
  320. details of data representation, which are usually the least
  321. interesting, but highly critical, aspects of the design.  By
  322. isolating the data transfer mechanism, thIs architecture
  323. also promotes modularity or implementations, which can
  324. reduce the cost and time needed to implement or modify
  325. services.
  326.  
  327.  
  328. VI. PROCESS SYNCHRONIZATION
  329.  
  330.      A major source of problems in many services involved
  331. synchronization of server; interacting over a relatively
  332. low-bandwidth, high-delay communications link.
  333.  
  334.      Interactions in most services involve issuing a command
  335. and waiting for a response.  The number of responses which
  336. can be elicited by a given command often varies, and there
  337. is usually no way to determine if all replies have arrived.
  338. Programs can easily issue a request before the responses to
  339. a previous request have completed, and get out of
  340. synchronization in a response is incorrectly matched to a
  341. request.  Each server program must be meticulously designed
  342. to be capable of recovering if an unexpected reply arrives
  343. after a subsequent command is issued.
  344.  
  345.                                 -6-
  346.      Note that, for reliable operation, it is always
  347. necessary that each response cause a reply to occur, at
  348. least in the sense that the request ts confirmed at some
  349. point.  No service should perform a critical operation, such
  350. as deleting a file, which depends on the success of a
  351. previous request unless it has been confirmed.  Requests in
  352. current protocols which do not appear to cause a reply may
  353. be viewed as confirmed later when a subsequent request is
  354. acknowledged, while such protocols work, they are more
  355. opaque than desirable, and consequently more difficult to
  356. implement.
  357.  
  358.      These characteristics of protocols have often resulted
  359. in implementation of ad hoc methods for interaction, such as
  360. timeouts or sufficient length to assure correctness in an
  361. acceptably high percentage of situations.  Often this has
  362. required careful tuning of programs as experience in using a
  363. protocol shows which commands are most likely to cause
  364. problems.  Such methods generally result in a service which
  365. is less responsive, powerful, or efficient than desirable,
  366. and expensive to build and maintain.
  367.  
  368.      Additionally, protocol specifications for services have
  369. often been incomplete, in that an enumeration of the
  370. responses which may occur for a given command is inaccurate
  371. or non-existent.  This greatly complicates the task of the
  372. programmer trying to construct an intelligent server.  In
  373. most cases, servers are slowly improved over time as
  374. experience shows which responses are common in each
  375. instance.
  376.  
  377.      The synchronization problems mentioned above are in
  378. addition to those which naturally occur as part of the
  379. service operation.  Thus, problems of synchronization may
  380. be split into two classes, those inherent in the service,
  381. and those associated with the interaction mechanism itself.
  382.  
  383.      Construction of reliable, responsive servers can be
  384. assisted by careful design of the interaction mechanism and
  385. protocols.  An unambiguous, completely specified mapping
  386. between commands and responses is desirable.
  387. Synchronization considerations of the two types can be
  388. attacked separately.  An interaction mechanism which handles
  389. its own synchronization can be provided as a base for
  390. service' designers to use, relieving them of considerations
  391. of the low-level, protocol-derived problems, by providing
  392. primitives which encourage the design of reliable services.
  393.  
  394.      To achieve a reasonable effective bandwidth, it is
  395. usually desirable to permit interacting programs to operate
  396. in a full-duplex fashion.  Significant amounts of data are
  397. often in transit at any time.  This magnifies the problems
  398. associated with interaction by introducing parallelism.  The
  399. interaction mechanism can also be structured to provide ways
  400. of handling these problems, and to provide a basis on which
  401. servers which exploit parallelism can be constructed.
  402.  
  403.  
  404.                                 -7-
  405.      Many of these problems are too complex to warrant their
  406. consideration in any but the most active services.  As a
  407. result, services are often constructed which avoid
  408. problems by inefficiencies in their operation, as mentioned
  409. above.  Provision of an interaction mechanism and primitives
  410. for use by such services would promote efficiency interaction
  411. even by simple services which do not have the resources to
  412. consider all the problems in detail.
  413.  
  414.  
  415. VII. SERVICE ENHANCEMENT
  416.  
  417.  
  418.      When particular programs implementing a service are
  419. undergoing development simultaneously by several
  420. organizations, or are maintained at many distributed sites.
  421. many problems can develop concerning the compatibility of
  422. dissimilar servers.
  423.  
  424.      This situation occurs in the initial phase of
  425. implementing a service, as well as whenever the protocols
  426. are modified to fix problems or expand the service.
  427. Virtually every interaction protocol is modified from time
  428. to time to add new capabilities.  Two particular examples
  429. arc the TELNET protocol and mail header formats.
  430.  
  431.      In most cases, the basic protocol had no facility for
  432. implementing changes in an invisible fashion.  This has had
  433. several consequences.
  434.  
  435.      First, it is very difficult to change a protocol unless
  436. the majority of concerned maintainers are interested in the
  437. changes and therefore willing to exert effort to change the
  438. programs involved.  This situation has occurred in previous
  439. cases because any change necessarily impacts all servers.
  440. The services involved therefore often stagnate, and it
  441. becomes inappropriately difficult to provide a customer with
  442. a seemingly simple enhancement.
  443.  
  444.      Second, when protocols change by will of the majority,
  445. existing servers often stop working or behave erratically
  446. which they suddenly find their partner speaking a new
  447. language.  This is equally disconcerting to the service
  448. customer, as well as annoying to the maintainers of the
  449. servers at the various sites affected.
  450.  
  451.      These problems can be easily avoided, or at least
  452. significantly reduced, by careful design of the interaction
  453. protocols.  In particular, the interaction mechanism itself
  454. can be structured to avoid the problem entirely, leaving
  455. only those problems associated with the particular service
  456. operations themselves.
  457.  
  458.      The interaction machinery should be structured so that
  459. the mechanisms of the interaction substrate itself may be
  460. improved or expanded in a fashion which is absolutely
  461. invisible to current servers.
  462.  
  463.                                 -8-
  464.      1/ No server should be required to implement a change
  465.         which is unimportant to its customers.
  466.  
  467.      2/ No server should be prevented from utilizing a new
  468.         facility when interacting with a willing partner.
  469.  
  470.      3/ Service should not be degraded in any way when a
  471.         new protocol facility is made available.
  472.  
  473.      In cases where a single service is provided by
  474. different server programs at many sites, it is desirable for
  475. the various sites to be able to participate at a level
  476. appropriate to them.  A new server program should be able to
  477. participate quickly, using only simple mechanisms of the
  478. protocol, and evolve into more advanced, powerful, or
  479. efficient interaction as desired.  Sites wishing to utilize
  480. advanced or experimental features must be allowed to do so
  481. without imposing implementation of such features on others.
  482. Conversely, sites wishing to participate in a minimal
  483. fashion must not prevent others from using advanced
  484. features.  In all cases, the various servers must be capable
  485. of continued interaction at the highest level supported by
  486. both.
  487.  
  488.      The goal is an evolving system which maintains
  489. reliability as well as both upward and downward
  490. compatibility.  The protocol itself should have these
  491. characteristics, and it should provide the mechanisms to
  492. service interaction protocols to be defined which
  493. inherit these qualities.
  494.  
  495.  
  496.  
  497. VIII. STRUCTURING AN INTERACTION MECHANISM
  498.  
  499.  
  500.      The qualities presented previously should provide at
  501. least a starting point for implementation of services which
  502. avoid the problems mentioned.  The rest of this paper
  503. addresses issues of a particular possible architecture of an
  504. interaction mechanism.
  505.  
  506.      The design architecture splits the service-specific
  507. conventions from those of the interaction per se.  An
  508. interaction protocol is provided which implements the
  509. machinery of the request-reply model, and includes handling
  510. of the problems of data precision, synchronization, and
  511. enhancement.  This protocol is not specific to any service,
  512. but rather provides primitives, in the form of
  513. service-designed requests and replies, on which a particular
  514. service protocol is built.
  515.  
  516.      An actual implementation for a particular service could
  517. merge the code of the interaction protocol with the service
  518. itself, or the interaction protocol could be provided as a
  519. 'service' whose customer is the service being implemented.
  520.  
  521.                                 -9-
  522.      The goals of this design architecture follow.
  523.  
  524.      1/ Provision of a general interaction mechanism to be
  525.         used by services which follow a request-reply
  526.         discipline.  Services would design their protocols
  527.         using the primitives of the mechanism as a
  528.         foundation.
  529.  
  530.      2/ INTERACTION MECHANISM EXTENSIBILITY.  The
  531.         interaction mechanism may be expanded as desired
  532.         without impacting on existing servers unless they
  533.         wish to use the new features.
  534.  
  535.      3/ SERVER EXTENSIBILITY.  Servers can be implemented
  536.         using the most basic primitives.  Implementations
  537.         may later be extended to utilize additional
  538.         capabilities to negate some of the inefficiency
  539.         inherent in a strict request-reply structure.
  540.  
  541.      4/ SERVICE EXTENSIBILITY.  The primitives permit a
  542.         service to be expanded as desired without impacting
  543.         on existing servers in any way unless they wish to
  544.         use the new features.
  545.  
  546.      5/ SERVER COMPATIBILITY.  Within the set of servers of
  547.         a given application, it is possible to have
  548.         different servers operating at different levels of
  549.         sophistication, and still maintain the ability for
  550.         any pair of servers to interact successfully.
  551.  
  552.      These goals involve two basic areas of design.  First,
  553. the interaction mechanism itself is designed to meet the
  554. goals.  Secondly, guidelines for structure of the particular
  555. service' protocols are necessary, in order for it to inherit
  556. the qualities needed to meet the goals.
  557.  
  558.  
  559.  
  560. IX. PARTITIONING THE PROBLEM
  561.  
  562.  
  563.  
  564.      In defining the interaction mechanism itself, the
  565. problem may be simplified by considering two areas of
  566. concern separately.
  567.  
  568.  
  569.  
  570.      1/ The characteristics and format of the data conveyed
  571.         by the channel may be defined.
  572.  
  573.      2/ The conventions used to define the interaction may
  574.         be defined, in terms of the available data
  575.         supported by the channel.
  576.  
  577.  
  578.                                 -10-
  579.      For purposes of this paper, the data repertoire and
  580. characteristics of the channel are assumed to be as
  581. described in [Reference 3] and summarized in an
  582. appendix.  Discussions of the interaction between servers
  583. will use only the abstract concepts of primitive and
  584. semantic data items, to isolate the issues of interaction
  585. from those of data formats and communication details, and
  586. therefore simplify the problem.
  587.  
  588.      Additionally, actual implementation of a mechanism
  589. following the ideas presented here can be accomplished in a
  590. modular fashion, isolating code which is concerned with the
  591. channel itself from code concerned with the interaction
  592. behavior.
  593.  
  594.      The interaction mechanism provides primitives to the
  595. service' designer which are likewise defined in terms of the
  596. data items available.  Service designers are encouraged, but
  597. not required, to define interactions in terms of these data
  598. only.
  599.  
  600.  
  601.  
  602. X. THE PRIMITIVES
  603.  
  604.  
  605.  
  606.      The interaction mechanism assumes the existence of a
  607. channel [Reference 3] between two servers.  Two
  608. new semantic data types are defined to implement the
  609. interaction.  These are, unsurprisingly, called CONTROL
  610. REQUESTs and CONTROL REPLYs.  Each of these data items
  611. contains at least two elements.
  612.  
  613.  
  614.  
  615.      1/ The TYPE element identifies a particular type of
  616.         request or reply.
  617.  
  618.      2/ The SEQUENCE element is used to match replies to
  619.         their corresponding request.
  620.  
  621.      Other elements may appear.  Their interpretation
  622. depends on the particular type of request or reply in which
  623. they appear.
  624.  
  625.      The interaction protocol itself is defined in terms of
  626. control requests and control replies.  A very small number
  627. of request and reply types is defined as the minimal
  628. implementation level.  Additional request and reply types
  629. are also defined, for use by more advanced servers, to
  630. Provide additional capabilities to the service, or simply to
  631. increase efficiency of operation.
  632.  
  633.  
  634.                                 -11-
  635.      Two additional data items are defined, called USER
  636. REQUESTs and USER REPLYs.  These are structured like
  637. requests and replies, but the various types are defined by
  638. the service itself, to implement the primitives needed in
  639. its operation.
  640.  
  641.      Control and user requests and replies are generically
  642. referenced as simply REQUESTs and REPLYs.
  643.  
  644.      The protocol of the interaction has several
  645. characteristics which form the basis of the request-reply
  646. model, and attempt to meet the goals mentioned previously.
  647.  
  648.      1/ Every request elicits a reply.
  649.  
  650.      2/ Every reply is associated unambiguously with a
  651.         previous request.
  652.  
  653.      3/ Each server always knows the state of the
  654.         interaction, such as whether or not more data is
  655.         expected from its partner.
  656.  
  657.      4/ The protocol definition includes enumeration of the
  658.         possible responses for each request.  Service
  659.         protocols are encouraged to do likewise for user
  660.         requests and user replies.
  661.  
  662.      5/ Servers who receive requests of unknown type issue
  663.         a response which effectively refuses the request.
  664.         Servers attempting to use advanced features of a
  665.         protocol 'rephrase' their requests in simpler terms
  666.         where possible to maintain the previous level of
  667.         service.
  668.  
  669.      The minimal implementation will support interaction
  670. almost exactly along the lines of the request-reply
  671. discipline.
  672.  
  673.      Extensions to the minimal configuration are defined for
  674. two reasons.  First, the strict request-reply discipline
  675. model is inefficient for use in high-volume situations
  676. because of the delays involved.  Several extensions are
  677. defined to cope with this problem.  Thus, although the
  678. interaction is based on such a discipline, it does not
  679. necessarily implement the interaction in that fashion.
  680. Second, additional primitives are defined which provide some
  681. standard process synchronization operations, for use by the
  682. services.
  683.  
  684.      The protocol architecture presented here is defined in
  685. detail in an associated document.  [Reference 4]
  686.  
  687.  
  688.  
  689.  
  690.                                 -12-
  691.  
  692. Appendix I -- The Channel
  693.  
  694.      The following discussion is a summary of the ideas
  695. presented in [Reference 3], which should be
  696. consulted for further detail.
  697.  
  698.      The communication link between two servers is termed a
  699. CHANNEL.  Channels provide bidirectional communications
  700. capabilities, and will usually be full-duplex.  The programs
  701. involved establish the channel as their individual
  702. applications require, using some form of initial connection
  703. protocol.
  704.  
  705.      The channel acts as an interface between servers.  It
  706. conveys abstract data items whose semantics are understood
  707. by the programmers involved, such as INTEGERs, STRINGs, FILE
  708. PATH NAMEs, and so on.  Because the users of the channel may
  709. operate in dissimilar computer environments, their
  710. communication is defined only in terms of such abstract data
  711. items, which are the atomic units of information carried on
  712. the channel.  The program implementing the channel at each
  713. site converts the data between an encoded transmission
  714. format appropriate to the particular communication link
  715. involved, and whatever internal representational form is
  716. appropriate in the computer itself.
  717.  
  718.      The channel protocol provides a mechanism for
  719. definition of various types of data items of semantic value
  720. for the particular service concerned, for example, possibly,
  721. user-name, set, syllable, sentence, and other data items of
  722. interest to the particular service.  The channel provides a
  723. mechanism for transportation of such user-defined data from
  724. host to host.
  725.  
  726.      The channel may actually be implemented by one or more
  727. separate encoding mechanisms which would be used in
  728. different conditions, initially, the channel machinery would
  729. provide a rudimentary facility based on a single mechanism
  730. such as the MSDTP [Reference 3].
  731.  
  732.      The mechanism is not dependent on the existence of
  733. actual line-style network connections but will operate in
  734. other environments, such as a message-oriented (as opposed
  735. to connection-oriented) communications architecture, and in
  736. fact is more naturally structured for such an environment.
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.                              -13-
  746.  
  747. XI. REFERENCES
  748.  
  749.  
  750.  
  751. [1] Network Information Center, ARPANET Protocol Handbook,
  752. April, 1976.
  753.  
  754. [2] Broos, Haverty, Vezza, Message Services Protocol
  755. proposal, December, 1975.
  756.  
  757. [3] Haverty, Jack, Message Services Data Transfer Protocol,
  758. NWG RFC 713, NIC 34729, April, 1976.
  759.  
  760. [4] Haverty, Jack, RRP, A Process Communication Protocol for
  761. Request-reply Disciplines, NWG RFC 723, NIC 36807, (to
  762. be issued)
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.                              -14-
  801.