Annotation of 43BSDReno/contrib/isode-beta/doc/rfcs/rfc1085.txt, revision 1.1

1.1     ! root        1: 
        !             2: 
        !             3: 
        !             4: 
        !             5: 
        !             6: 
        !             7: Network Working Group                                            M. Rose
        !             8: Request for Comments: 1085                                           TWG
        !             9:                                                            December 1988
        !            10: 
        !            11: 
        !            12:                        ISO Presentation Services
        !            13:                     on top of TCP/IP-based internets
        !            14: 
        !            15: Status of this Memo
        !            16: 
        !            17:    This memo proposes a standard for the Internet community.
        !            18:    Distribution of this memo is unlimited.
        !            19: 
        !            20: 1. Introduction
        !            21: 
        !            22:    [RFC1006] describes a mechanism for providing the ISO transport
        !            23:    service on top of the Transmission Control Protocol (TCP) [RFC793]
        !            24:    and Internet Protocol (IP) [RFC791].  Once this method is applied,
        !            25:    one may implement "real" ISO applications on top of TCP/IP-based
        !            26:    internets, by simply implementing OSI session, presentation, and
        !            27:    application services on top of the transport service access point
        !            28:    which is provided on top of the TCP.  Although straight-forward,
        !            29:    there are some environments in which the richness provided by the OSI
        !            30:    application layer is desired, but it is nonetheless impractical to
        !            31:    implement the underlying OSI infrastructure (i.e., the presentation,
        !            32:    session, and transport services on top of the TCP).  This memo
        !            33:    describes an approach for providing "stream-lined" support of OSI
        !            34:    application services on top of TCP/IP-based internets for such
        !            35:    constrained environments.
        !            36: 
        !            37: 2. Terminology
        !            38: 
        !            39:    In as much as this memo is concerned primarily with concepts defined
        !            40:    in the framework of Open Systems Interconnection (OSI) as promulgated
        !            41:    by the International Organization for Standardization (ISO), the
        !            42:    terminology used herein is intended to be entirely consistent within
        !            43:    that domain of discourse.  This perspective is being taken despite
        !            44:    the expressed intent of implementing the mechanism proposed by this
        !            45:    memo in the Internet and other TCP/IP-based internets.  For those
        !            46:    more familiar with the terminology used in this latter domain, the
        !            47:    author is apologetic but unyielding.
        !            48: 
        !            49:    Although no substitute for the "correct" definitions given in the
        !            50:    appropriate ISO documents, here is a short summary of the terms used
        !            51:    herein.
        !            52: 
        !            53: 
        !            54: 
        !            55: 
        !            56: 
        !            57: 
        !            58: Rose                                                            [Page 1]
        !            59: 
        !            60: RFC 1085               ISO Presentation Services           December 1988
        !            61: 
        !            62: 
        !            63:       Application Context:
        !            64:          The collection of application service elements which
        !            65:          cooperatively interact within an application-entity.
        !            66: 
        !            67:       Application Service Element:
        !            68:          A standardized mechanism, defined by both a service and a
        !            69:          protocol, which provides a well-defined capability, e.g.,
        !            70: 
        !            71:          ROSE -  the Remote Operations Service Element,
        !            72:                  which orchestrates the invocation of "total"
        !            73:                  operations between application-entities [ISO9066/2].
        !            74: 
        !            75:          ACSE -  the Association Control Service Element,
        !            76:                  which manages associations between application
        !            77:                  entities [ISO8650].
        !            78: 
        !            79:       Object Identifier:
        !            80:          An ordered set of integers, used for authoritative
        !            81:          identification.
        !            82: 
        !            83:       Presentation Service:
        !            84:          A set of facilities used to manage a connection between two
        !            85:          application-entities.  The fundamental responsibility of the
        !            86:          presentation service is to maintain transfer syntaxes which
        !            87:          are used to serialize application protocol data units for
        !            88:          transmission on the network and subsequent de-serialization
        !            89:          for reception.
        !            90: 
        !            91:       Protocol Data Unit (PDU):
        !            92:          A data object exchanged between service providers.
        !            93: 
        !            94:       Serialization:
        !            95:          The process of applying an abstract transfer notation to an
        !            96:          object described using abstract syntax notation one (ASN.1)
        !            97:          [ISO8824] in order to produce a stream of octets.
        !            98:          De-serialization is the inverse process.
        !            99: 
        !           100:          It is assumed that the reader is familiar with terminology
        !           101:          pertaining to the reference model [ISO7498], to the service
        !           102:          conventions in the model [ISO8509], and to the
        !           103:          connection-oriented presentation service [ISO8822].
        !           104: 
        !           105: 3. Scope
        !           106: 
        !           107:    The mechanism proposed by this memo is targeted for a particular
        !           108:    class of OSI applications, namely those entities whose application
        !           109:    context contains only an Association Control Service Element (ACSE)
        !           110:    and a Remote Operations Service Element (ROSE).  In addition, a
        !           111: 
        !           112: 
        !           113: 
        !           114: Rose                                                            [Page 2]
        !           115: 
        !           116: RFC 1085               ISO Presentation Services           December 1988
        !           117: 
        !           118: 
        !           119:    Directory Services Element (DSE) is assumed for use by the
        !           120:    application-entity, but only in a very limited sense.  The
        !           121:    organization of such an entity is as follows:
        !           122: 
        !           123: 
        !           124:       +------------------------------------------------------------+
        !           125:       |                                                            |
        !           126:       |                     Application-Entity                     |
        !           127:       |                                                            |
        !           128:       |    +------+              +------+              +------+    |
        !           129:       |    | ACSE |              | ROSE |              | DSE  |    |
        !           130:       |    +------+              +------+              +------+    |
        !           131:       |                                                            |
        !           132:       +------------------------------------------------------------+
        !           133:       |                                                            |
        !           134:       |                Presentation Services                       |
        !           135:       |                                                            |
        !           136:       |    P-CONNECT         P-RELEASE         P-DATA              |
        !           137:       |                      P-U-ABORT                             |
        !           138:       |                      P-P-ABORT                             |
        !           139:       |                                                            |
        !           140:       +------------------------------------------------------------+
        !           141: 
        !           142: 
        !           143:    The mechanism proposed by this memo is not applicable to entities
        !           144:    whose application context is more extensive (e.g., contains a
        !           145:    Reliable Transfer Service Element).  The mechanism proposed by this
        !           146:    memo could be modified to support additional elements.  However, such
        !           147:    extensions would, at this time, merely serve to defeat the purpose of
        !           148:    providing the minimal software infrastructure required to run the
        !           149:    majority of OSI applications.
        !           150: 
        !           151:    The motivation for this memo was initially derived from a requirement
        !           152:    to run the ISO Common Management Information Protocol (CMIP) in
        !           153:    TCP/IP-based internets.  In its current definition, CMIP uses
        !           154:    precisely the application service elements provided for herein.  It
        !           155:    may be desirable to offer CMIP users a quality of service different
        !           156:    than the one offered by a connection with a high-quality level of
        !           157:    reliability.  This would permit a reduced utilization of connection-
        !           158:    related resources.  This memo proposes a mechanism to implement this
        !           159:    less robust -- and less costly -- quality of service.
        !           160: 
        !           161: 4. Approach
        !           162: 
        !           163:    The approach proposed by this memo relies on the following
        !           164:    architectural nuances:
        !           165: 
        !           166: 
        !           167: 
        !           168: 
        !           169: 
        !           170: Rose                                                            [Page 3]
        !           171: 
        !           172: RFC 1085               ISO Presentation Services           December 1988
        !           173: 
        !           174: 
        !           175:      - the TCP is a stream-oriented transport protocol
        !           176: 
        !           177:      - ASN.1 objects, when represented as a stream of octets are
        !           178:        self-delimiting
        !           179: 
        !           180:      - The ISO presentation service permits the exchange of ASN.1
        !           181:        objects
        !           182: 
        !           183:      - The ACSE and ROSE require the following presentation
        !           184:        facilities:
        !           185: 
        !           186:            The Connection Establishment Facility
        !           187: 
        !           188:            The Connection Termination Facility
        !           189: 
        !           190:            The Information Transfer Facility (P-DATA
        !           191:            service only)
        !           192: 
        !           193:      - The majority of the parameters used by the services which
        !           194:        provide these facilities can be "hard-wired" to avoid
        !           195:        negotiation
        !           196: 
        !           197:    In principle, these nuances suggest that a "cheap" emulation of the
        !           198:    ISO presentation services could be implemented by simply serializing
        !           199:    ASN.1 objects over a TCP connection.  This approach is precisely what
        !           200:    is proposed by this memo.
        !           201: 
        !           202:    Given this perspective, this memo details how the essential features
        !           203:    of the ISO presentation service may be maintained while using a
        !           204:    protocol entirely different from the one given in [ISO8823]. The
        !           205:    overall composition proposed by this memo is as follows:
        !           206: 
        !           207: 
        !           208:    +-----------+                                       +-----------+
        !           209:    |  PS-user  |                                       |  PS-user  |
        !           210:    +-----------+                                       +-----------+
        !           211:         |                                                     |
        !           212:         | PS interface                           PS interface |
        !           213:         |  [ISO8822]                                          |
        !           214:         |                                                     |
        !           215:    +----------+   ISO Presentation Services on the TCP  +----------+
        !           216:    |  client  |-----------------------------------------|  server  |
        !           217:    +----------+              (this memo)                +----------+
        !           218:         |                                                     |
        !           219:         | TCP interface                         TCP interface |
        !           220:         |  [RFC793]                                           |
        !           221:         |                                                     |
        !           222: 
        !           223: 
        !           224: 
        !           225: 
        !           226: Rose                                                            [Page 4]
        !           227: 
        !           228: RFC 1085               ISO Presentation Services           December 1988
        !           229: 
        !           230: 
        !           231:    In greater detail, the "client" and "server" boxes implement the
        !           232:    protocol described in this memo.  Each box contains three modules:
        !           233: 
        !           234:       - a dispatch module, which provides the presentation services
        !           235:         interface,
        !           236: 
        !           237:       - a serialization module, containing a serializer, which takes
        !           238:         an ASN.1 object and applies the encoding rules of [ISO8825]
        !           239:         to produce a stream of octets, and a de-serializer, which
        !           240:         performs the inverse operation, and
        !           241: 
        !           242:       - a network module, which manages a TCP connection.
        !           243: 
        !           244:    The software architecture used to model a network entity using this
        !           245:    approach is as follows:
        !           246: 
        !           247: 
        !           248:    +---------+    +----------+                                   +-----+
        !           249:    |         |    |          |  output +---------------+  input  |  n  |
        !           250:    |         |    |          |<--------| de-serializer |<--------|  e  |
        !           251:    |         |    |          |   queue +---------------+  queue  |  t  |
        !           252:    | PS-user |----| dispatch |                                   |  w  |
        !           253:    |         |    |          |  input  +---------------+ output  |  o  |
        !           254:    |         |    |          |-------->|   serializer  |-------->|  r  |
        !           255:    |         |    |          |  queue  +---------------+ queue   |  k  |
        !           256:    +---------+    +----------+                                   +-----+
        !           257: 
        !           258:                                  |---- serialization module ----|
        !           259: 
        !           260: 
        !           261:    The ISO presentation layer is concerned primarily with the
        !           262:    negotiation of transfer syntaxes in addition to the transformation to
        !           263:    and from transfer syntax.  However, using the mechanism proposed by
        !           264:    this memo, no negotiation component will be employed.  This memo
        !           265:    specifies the fixed contexts which exist over each presentation
        !           266:    connection offered.  This memo further specifies other constants
        !           267:    which are used in order to eliminate the need for presentation layer
        !           268:    negotiation.
        !           269: 
        !           270: 5. Fundamental Parameters
        !           271: 
        !           272:    There are certain parameters which are used by the presentation
        !           273:    service and are defined here.
        !           274: 
        !           275:       1. Presentation address:
        !           276: 
        !           277:       The structure of a presentation address is presented in Addendum 3
        !           278:       to [ISO7498].  This memo interprets a presentation address as an
        !           279: 
        !           280: 
        !           281: 
        !           282: Rose                                                            [Page 5]
        !           283: 
        !           284: RFC 1085               ISO Presentation Services           December 1988
        !           285: 
        !           286: 
        !           287:       ordered-tuple containing:
        !           288: 
        !           289:          - one or more network addresses
        !           290:          - a transport selector
        !           291:          - a session selector
        !           292:          - a presentation selector
        !           293: 
        !           294:       Each selector is an uninterpreted octet string of possibly zero
        !           295:       length.  The mechanism proposed in this memo completely ignores
        !           296:       the values of these selectors.  Note however that the value of the
        !           297:       presentation selector is preserved by the provider.
        !           298: 
        !           299:       A network address is interpreted as containing three components:
        !           300: 
        !           301:          - a 32-bit IP address
        !           302: 
        !           303:          - a set indicating which transport services are available
        !           304:            at the IP address  (currently only two members are defined:
        !           305:            TCP and UDP; as experience is gained, other transport
        !           306:            services may be added); as a local matter, if a member is
        !           307:            present it may have an "intensity" associated with it:
        !           308:            either "possibly present" or "definitely present"
        !           309: 
        !           310:          - a 16-bit port number
        !           311: 
        !           312:       As a consequence of these interpretations, any application-entity
        !           313:       residing in the network can be identified by its network address.
        !           314: 
        !           315:       2. Presentation context list
        !           316: 
        !           317:       A list of one or more presentation contexts.  Each presentation
        !           318:       context has three components:
        !           319: 
        !           320:          - a presentation context identifier (PCI), an integer
        !           321: 
        !           322:          - an abstract syntax name, an object identifier
        !           323: 
        !           324:          - an abstract transfer name, an object identifier
        !           325: 
        !           326:       The range of values these components may take is severely
        !           327:       restricted by this memo.  In particular, exactly two contexts are
        !           328:       defined: one for association control and the other for the
        !           329:       specific application service element which is being carried as ROS
        !           330:       APDUs (see the section on connection establishment for the precise
        !           331:       values).
        !           332: 
        !           333:       In addition, if the presentation context list appears in a
        !           334:       "result" list (e.g., the Presentation context result list
        !           335: 
        !           336: 
        !           337: 
        !           338: Rose                                                            [Page 6]
        !           339: 
        !           340: RFC 1085               ISO Presentation Services           December 1988
        !           341: 
        !           342: 
        !           343:       parameter for the P-CONNECT service), a fourth component is
        !           344:       present:
        !           345: 
        !           346:          - an acceptance indicator
        !           347: 
        !           348:       which indicates if the context was accepted by both the service
        !           349:       provider and the remote peer.  If the context was not accept, a
        !           350:       brief reason, such as "abstract syntax not supported" is given.
        !           351: 
        !           352:       For the novice reader, one might think of the abstract syntax
        !           353:       notation as defining the vocabulary of some language, that is, it
        !           354:       lists the words which can be spoken.  In contrast, the abstract
        !           355:       transfer notation defines the pronunciation of the language.
        !           356: 
        !           357:       3. User data
        !           358: 
        !           359:       User data passes through the presentation service interface as
        !           360:       ASN.1 objects (in a locally defined form).  Associated with each
        !           361:       object is a presentation context identifier.  The PCI
        !           362:       distinguishes the context for which the data is intended.  The
        !           363:       range of values the PCI may take is severely restricted by this
        !           364:       memo.  Exactly one of two contexts must always be used: either the
        !           365:       value for the ACSE presentation context or the value for the ROSE.
        !           366: 
        !           367:       4. Quality of Service
        !           368: 
        !           369:       Quality of service is a collection of "elements".  Each element
        !           370:       denotes some characteristics of the communication, e.g., desired
        !           371:       throughput, and some value in an arbitrary unit of measure.  For
        !           372:       our purposes, only one quality of service element is interpreted,
        !           373:       "transport-mapping".  Currently, the "transport-mapping" element
        !           374:       takes on one of two values: "tcp-based" or "udp-based".  At
        !           375:       present, the two values may also be referred to as "high-quality"
        !           376:       or "low-quality", respectively.
        !           377: 
        !           378:       As experience is gained, other values may be added.  These values
        !           379:       would correspond directly to the new transport services which are
        !           380:       listed in the network address.
        !           381: 
        !           382:       5. Version of Session Service
        !           383: 
        !           384:       Some application service elements (e.g., the ACSE) invoke
        !           385:       different procedures based on the (negotiated) version of the
        !           386:       session service available.  Implementations of this memo always
        !           387:       indicate that session service version 2 has been negotiated.
        !           388: 
        !           389: 
        !           390: 
        !           391: 
        !           392: 
        !           393: 
        !           394: Rose                                                            [Page 7]
        !           395: 
        !           396: RFC 1085               ISO Presentation Services           December 1988
        !           397: 
        !           398: 
        !           399: 6. Choice of Transport Service
        !           400: 
        !           401:    Discussion thus far has centered along the use of the TCP as the
        !           402:    underlying transport protocol.  However, it has also been noted that
        !           403:    it may be desirable to permit a quality of service with less
        !           404:    reliability in order to take advantage of some other characteristic
        !           405:    of the transport service.
        !           406: 
        !           407:    The introduction of this service has several profound impacts on the
        !           408:    model, and it is beyond the scope of this memo to enumerate these
        !           409:    impacts.  However, this memo does propose a mechanism by which such a
        !           410:    facility is implemented.
        !           411: 
        !           412:    To begin, we use the quality of service parameter for the P-CONNECT
        !           413:    service to select an underlying transport service.  Only one element
        !           414:    is currently interpreted, "transport-mapping" which takes the value
        !           415:    "tcp-based" or "udp-based".  If the value is "tcp-based", then the
        !           416:    presentation provider will use TCP as the underlying transport
        !           417:    service. If, however, the value of "transport-mapping" is "udp-
        !           418:    based", then the presentation provider will use the UDP instead.
        !           419: 
        !           420:    The User Datagram Protocol (UDP) [RFC768] is used to implement the
        !           421:    udp-based service.  Very few transport-level facilities are placed on
        !           422:    top of the UDP service, i.e., it is not the intent of this memo to
        !           423:    "re-invent" the facilities in the TCP.  Hence, It is critical to
        !           424:    understand that
        !           425: 
        !           426:            low-quality means LOW-QUALITY!
        !           427: 
        !           428:    Because the UDP is a packet-oriented protocol, it is necessary to
        !           429:    slightly redefine the role of the serialization module.  For the
        !           430:    serializer, we say that each top-level ASN.1 object placed on the
        !           431:    input queue will form a single UDP datagram on the output queue which
        !           432:    is given to the network.  Similarly, for the de-serializer, we say
        !           433:    that each UDP datagram placed on the input queue from the network
        !           434:    will form a single top-level ASN.1 object placed on the output queue.
        !           435:    The term "top-level ASN.1 object" refers, of course, to the protocol
        !           436:    data units being exchanged by the presentation providers.
        !           437: 
        !           438:    It should be noted that in its current incarnation, this memo permits
        !           439:    the choice of two different transport protocols, e.g., the TCP or the
        !           440:    UDP.  However, as experience is gained and as other transport
        !           441:    protocols are deployed (e.g., the VMTP), then future incarnations of
        !           442:    this memo will permit these transport protocols to be used.  This is
        !           443:    a three step process: first, the set of transport services defined
        !           444:    for the network address is updated; second, a corresponding value is
        !           445:    added to the range of the quality of service element "transport-
        !           446:    mapping"; and, third, the following sections of this memo are
        !           447: 
        !           448: 
        !           449: 
        !           450: Rose                                                            [Page 8]
        !           451: 
        !           452: RFC 1085               ISO Presentation Services           December 1988
        !           453: 
        !           454: 
        !           455:    modified accordingly.
        !           456: 
        !           457: 7. Connection Establishment
        !           458: 
        !           459:    The Connection Establishment facility consists of one service, the
        !           460:    P-CONNECT service.
        !           461: 
        !           462: 7.1. The P-CONNECT Service
        !           463: 
        !           464:    This service is used to bring two identified application-entities
        !           465:    into communication.  Its successful use results in a presentation
        !           466:    connection, with an initial defined context set, being established
        !           467:    between then.  This connection is available for their subsequent
        !           468:    communication.  This is a confirmed service whose effects are
        !           469:    sequenced and non-destructive.
        !           470: 
        !           471:    If the udp-based service is selected, then a presentation connection
        !           472:    is formed which should be used infrequently and will have minimal
        !           473:    reliability characteristics.
        !           474: 
        !           475:    For our purposes, the P-CONNECT service:
        !           476: 
        !           477:       - requests TCP or UDP resources,
        !           478: 
        !           479:       - builds a fixed defined context set, and
        !           480: 
        !           481:       - exchanges initial user data.
        !           482: 
        !           483:    Following are the interpretation of and the defaults assigned to the
        !           484:    parameters of the P-CONNECT service:
        !           485: 
        !           486:       1. Calling Presentation Address
        !           487: 
        !           488:         This is a presentation address.  Although the ISO presentation
        !           489:         service states that this parameter is mandatory, in practice, a
        !           490:         local implementation rule may be used to determine an
        !           491:         "ephemeral" address to use.
        !           492: 
        !           493:       2. Called Presentation Address
        !           494: 
        !           495:         This is a presentation address.  Note that when issuing the P-
        !           496:         CONNECT.REQUEST primitive, this parameter may contain more than
        !           497:         one network address.  In the P-CONNECT.INDICATION primitive
        !           498:         however, only one network address, the one actually used to
        !           499:         establish the presentation connection, is present.  (Appendix C
        !           500:         describes a strategy which might be used to determine the actual
        !           501:         network address).
        !           502: 
        !           503: 
        !           504: 
        !           505: 
        !           506: Rose                                                            [Page 9]
        !           507: 
        !           508: RFC 1085               ISO Presentation Services           December 1988
        !           509: 
        !           510: 
        !           511:       3. Responding Presentation Address
        !           512: 
        !           513:         This parameter is identical to the value of the Called
        !           514:         Presentation Address parameter of the P-CONNECT.INDICATION
        !           515:         primitive.
        !           516: 
        !           517:       4. Multiple defined Contexts
        !           518: 
        !           519:         Always TRUE.  Note that this parameter is present only in the
        !           520:         DIS version of the presentation service.
        !           521: 
        !           522:       5. Presentation context definition list
        !           523: 
        !           524:       Two contexts are defined:
        !           525: 
        !           526:       PCI     Abstract Syntax Name            Abstract Transfer Name
        !           527:       ---     --------------------            ----------------------
        !           528:        1      specific to the application     "iso asn.1 abstract
        !           529:                                               transfer"
        !           530:                                               1.0.8825
        !           531: 
        !           532:        3      "acse pci version 1"            "iso asn.1 abstract
        !           533:                                               transfer"
        !           534:               2.2.1.0.0                       1.0.8825
        !           535: 
        !           536:       The abstract syntax and transfer names for the ACSE PCI are for
        !           537:       use with the DIS version of association control.  If the IS
        !           538:       version is being used, then this PCI is used instead:
        !           539: 
        !           540:        3      "acse pci version 1"            "asn.1 basic encoding"
        !           541:               2.2.1.0.1                       2.1.1
        !           542: 
        !           543:       6. Presentation context result list
        !           544: 
        !           545:         Identical to the Presentation context definition list with the
        !           546:         addition that the acceptance indicator for both contexts is
        !           547:         "accepted".
        !           548: 
        !           549:       7. Default Context Name
        !           550: 
        !           551:         None.
        !           552: 
        !           553:       8. Default Context Result
        !           554: 
        !           555:         Not applicable.
        !           556: 
        !           557: 
        !           558: 
        !           559: 
        !           560: 
        !           561: 
        !           562: Rose                                                           [Page 10]
        !           563: 
        !           564: RFC 1085               ISO Presentation Services           December 1988
        !           565: 
        !           566: 
        !           567:       9. Quality of Service
        !           568: 
        !           569:         The element "transport-mapping" takes the value "tcp-based" or
        !           570:         "udp-based".  In the future the range of values may be extended.
        !           571: 
        !           572:       10. Presentation Requirements
        !           573: 
        !           574:         None (the kernel functional unit is always used).
        !           575: 
        !           576:       11. Session Requirements
        !           577: 
        !           578:         Full duplex.
        !           579: 
        !           580:       12. Initial synchronization point serial number
        !           581: 
        !           582:         None.
        !           583: 
        !           584:       13. Initial Assignment of tokens
        !           585: 
        !           586:         None.
        !           587: 
        !           588:       14. Session connection identifier
        !           589: 
        !           590:         Unlike the "real" presentation service, depending on the quality
        !           591:         of service selected, this parameter may have great significance
        !           592:         to presentation provider.  Hence, the following format of the
        !           593:         session connection identifier is mandated by this memo.
        !           594: 
        !           595:         user data:        a local string encoded as a T.61 string
        !           596:                           using ASN.1, e.g., given string "gonzo":
        !           597: 
        !           598:                           14     05     67   6f   6e   7a   6f
        !           599:                           tag  length   "g"  "o"  "n"  "z"  "o"
        !           600: 
        !           601:         common data:      a universal time encoding using ASN.1, e.g.,
        !           602:                           given time "880109170845":
        !           603: 
        !           604:                           17     0c     38   38   30   31   30   ...
        !           605:                           tag  length   "8"  "8"  "0"  "1"  "0"  ...
        !           606: 
        !           607:         additional data:  any string encoded as a T.61 string using ASN.1
        !           608:                           (optional)
        !           609: 
        !           610:         As a local convention, the presentation provider may disregard
        !           611:         the first two octets of each data component for transmission on
        !           612:         the network as when the session connection identifier is
        !           613:         represented with ASN.1, the tag and length octets will be added
        !           614:         anyway.
        !           615: 
        !           616: 
        !           617: 
        !           618: Rose                                                           [Page 11]
        !           619: 
        !           620: RFC 1085               ISO Presentation Services           December 1988
        !           621: 
        !           622: 
        !           623:       15. User Data
        !           624: 
        !           625:         A single ASN.1 object is present, the appropriate A-ASSOCIATE
        !           626:         PDU, carried in presentation context 3.
        !           627: 
        !           628:       16. Result
        !           629: 
        !           630:         One of the following values: acceptance, user-rejection,
        !           631:         provider-rejection (transient), or provider-rejection
        !           632:         (permanent).
        !           633: 
        !           634: 8. Connection Termination
        !           635: 
        !           636:    The Connection Termination facility consists of three services, the
        !           637:    P-RELEASE, P-U-ABORT, and P-P-ABORT services.
        !           638: 
        !           639: 8.1. The P-RELEASE Service
        !           640: 
        !           641:    This service provides the service user with access to a negotiated
        !           642:    release facility.  This service has effects which are sequenced and
        !           643:    non-destructive.  Either presentation user is permitted to request
        !           644:    this service.  However, in the event of collision, a provider-
        !           645:    initiated abort procedure will be invoked.
        !           646: 
        !           647:    If the udp-based service is selected, then any data in transit may be
        !           648:    discarded.
        !           649: 
        !           650:       For our purposes, the P-RELEASE service:
        !           651: 
        !           652:       - waits for the serialization module to drain,
        !           653: 
        !           654:       - sends release user data, and
        !           655: 
        !           656:       - releases TCP or UDP resources
        !           657: 
        !           658:    Following are the interpretation of and the defaults assigned to the
        !           659:    parameters of the P-RELEASE service:
        !           660: 
        !           661:       1. Result
        !           662: 
        !           663:         Release accepted.
        !           664: 
        !           665:       2. User data
        !           666: 
        !           667:         A single ASN.1 object is present, the appropriate A-RELEASE PDU,
        !           668: 
        !           669: 
        !           670: 
        !           671: 
        !           672: 
        !           673: 
        !           674: Rose                                                           [Page 12]
        !           675: 
        !           676: RFC 1085               ISO Presentation Services           December 1988
        !           677: 
        !           678: 
        !           679: 8.2. The P-U-ABORT Service
        !           680: 
        !           681:    This service can be used by either presentation user to force the
        !           682:    release of a presentation connection at any time and have the
        !           683:    correspondent presentation user informed of this termination.  This
        !           684:    service has effects which are not sequenced with respect to preceding
        !           685:    service invocations and may be destructive.  It does not require the
        !           686:    agreement of both service users.
        !           687: 
        !           688:       For our purposes, the P-U-ABORT service:
        !           689: 
        !           690:       - flushes the serialization module,
        !           691: 
        !           692:       - sends abort user data, and
        !           693: 
        !           694:       - releases TCP or UDP resources
        !           695: 
        !           696:    Following are the interpretation of and the defaults assigned to the
        !           697:    parameters of the P-U-ABORT service:
        !           698: 
        !           699:       1. Presentation context identifier list
        !           700: 
        !           701:         Contained in the ASN.1 objects, if any, that are delivered as
        !           702:         user data.
        !           703: 
        !           704:       2. User data
        !           705: 
        !           706:         A single ASN.1 object is present, an A-ABORT PDU, carried in
        !           707:         presentation context 3.
        !           708: 
        !           709: 8.3. The P-P-ABORT Service
        !           710: 
        !           711:    This service is the means by which the service provider may indicate
        !           712:    the termination of the presentation connection for reasons internal
        !           713:    to the service provider.  This service has effects which are not
        !           714:    sequenced with respect to preceding service invocations.  The
        !           715:    execution of this service disrupts any other concurrently active
        !           716:    service and may thus be destructive.
        !           717: 
        !           718:       For our purposes, the P-P-ABORT service:
        !           719: 
        !           720:       - flushes the serialization module, and
        !           721: 
        !           722:       - releases TCP or UDP resources
        !           723: 
        !           724:    Following are the interpretation of and the defaults assigned to the
        !           725:    parameters of the P-P-ABORT service.
        !           726: 
        !           727: 
        !           728: 
        !           729: 
        !           730: Rose                                                           [Page 13]
        !           731: 
        !           732: RFC 1085               ISO Presentation Services           December 1988
        !           733: 
        !           734: 
        !           735:       1. Provider reason
        !           736: 
        !           737:         An integer code detailing why the connection was aborted. Codes
        !           738:         include, but are not limited to: invalid PPDU parameter,
        !           739:         unexpected PPDU, unrecognized PPDU, and specified reason.
        !           740: 
        !           741:       2. Abort data
        !           742: 
        !           743:         None.
        !           744: 
        !           745: 9. Information Transfer
        !           746: 
        !           747:    Although the Information Transfer facility consists of many services,
        !           748:    only one, the P-DATA service, is provided by this memo.
        !           749: 
        !           750: 9.1. The P-DATA Service
        !           751: 
        !           752:    This services provides the service user with a data transfer
        !           753:    capability.  This service has effects which are sequenced and non-
        !           754:    destructive.
        !           755: 
        !           756:    If the udp-based service is selected, then there is an upper-bound on
        !           757:    the size of the serialized ASN.1 objects which may be transmitted.
        !           758:    This limit, imposed by the UDP, is 65536 octets.  As a practical
        !           759:    matter, it is probably a good idea to keep datagrams less than or
        !           760:    equal to 536 octets in size.
        !           761: 
        !           762:    For our purposes, the P-DATA service:
        !           763: 
        !           764:               - sends user data
        !           765: 
        !           766:    Following are the interpretation of and the defaults assigned to the
        !           767:    parameters of the P-DATA service:
        !           768: 
        !           769:       1. User data
        !           770: 
        !           771:         A single ASN.1 object is present, a remote operations APDU,
        !           772:         carried in presentation context 1.
        !           773: 
        !           774: 10. Elements of Procedure
        !           775: 
        !           776:    The service provider is in one of the following states:
        !           777: 
        !           778:            IDLE, WAIT1, WAIT2, DATA, WAIT3, or WAIT4
        !           779: 
        !           780:         The possible events are:
        !           781: 
        !           782:            PS-user         P-CONNECT.REQUEST
        !           783: 
        !           784: 
        !           785: 
        !           786: Rose                                                           [Page 14]
        !           787: 
        !           788: RFC 1085               ISO Presentation Services           December 1988
        !           789: 
        !           790: 
        !           791:                            P-CONNECT.RESPONSE
        !           792:                            P-RELEASE.REQUEST
        !           793:                            P-RELEASE.RESPONSE
        !           794:                            P-DATA.REQUEST
        !           795:                            P-U-ABORT.REQUEST
        !           796: 
        !           797:            network         TCP closed or errored(*)
        !           798:                            receive ConnectRequest PDU
        !           799:                            receive ConnectResponse PDU
        !           800:                            receive ReleaseRequest PDU
        !           801:                            receive ReleaseResponse PDU
        !           802:                            receive UserData(*) or CL-UserData(**) PDU
        !           803:                            receive user-initiated Abort PDU
        !           804:                            receive provider-initiated Abort PDU
        !           805:                            timer expires(**)
        !           806: 
        !           807: 
        !           808:         The possible actions are:
        !           809: 
        !           810:            PS-user         P-CONNECT.INDICATION
        !           811:                            P-CONNECT.CONFIRMATION
        !           812:                            P-RELEASE.INDICATION
        !           813:                            P-RELEASE.CONFIRMATION
        !           814:                            P-DATA.INDICATION
        !           815:                            P-U-ABORT.INDICATION
        !           816:                            P-P-ABORT.INDICATION
        !           817: 
        !           818:            network         open TCP(*)
        !           819:                            close TCP(*)
        !           820:                            send ConnectRequest PDU
        !           821:                            send ConnectResponse PDU
        !           822:                            send ReleaseRequest PDU
        !           823:                            send ReleaseResponse PDU
        !           824:                            send UserData(*) or CL-UserData(**) PDU
        !           825:                            send user-initiated Abort PDU
        !           826:                            send provider-initiated Abort PDU
        !           827:                            set timer(**)
        !           828: 
        !           829:            (*)   tcp-based service only
        !           830:            (**)  udp-based service only
        !           831: 
        !           832: 10.1. Elements of Procedure specific to the tcp-based service
        !           833: 
        !           834:    The provider maintains the following information for each
        !           835:    presentation connection:
        !           836: 
        !           837:       - a local designator for the PS-user
        !           838: 
        !           839: 
        !           840: 
        !           841: 
        !           842: Rose                                                           [Page 15]
        !           843: 
        !           844: RFC 1085               ISO Presentation Services           December 1988
        !           845: 
        !           846: 
        !           847:       - a local designator for a TCP connection
        !           848: 
        !           849:       - the state of the connection (e.g., IDLE, WAIT1, and so on)
        !           850: 
        !           851:    Upon receiving an event from the network, the provider finds the
        !           852:    associated presentation connection.  Matching is done by simply
        !           853:    comparing local designators for the TCP connection.  Whenever a
        !           854:    connection remains in or returns to the IDLE state, any associated
        !           855:    resources, such as an attachment to a local TCP port, are released.
        !           856: 
        !           857:    In the procedures which follow, outgoing PDUs are "placed on the
        !           858:    input queue for the serializer".  This has a different meaning
        !           859:    depending on the type of PDU being enqueued.  If the PDU is not an
        !           860:    abort PDU (user-initiated or provider-initiated), then the PDU is
        !           861:    simply appended to the input queue regardless of the number of PDUs
        !           862:    present.  If however, the PDU is an abort PDU, then the provider
        !           863:    checks the size of the input queue.  If the input queue is non-empty
        !           864:    or if the serializer is busy transmitting to the network, then the
        !           865:    abort PDU is discarded, and the serializer is flushed, aborting any
        !           866:    output to the network in progress.  However, if the input queue is
        !           867:    empty, then the Abort PDU is appended to the queue, and a small timer
        !           868:    started.  If the timer expires before the PDU has been serialized and
        !           869:    transmitted, then the serializer is flushed, aborting any output to
        !           870:    the network in progress.
        !           871: 
        !           872:    Further, in general, whenever the TCP connection is closed (either
        !           873:    locally by the provider, or remotely by the network) or has errored,
        !           874:    the serializer is flushed.  The one exception to this is if a
        !           875:    ReleaseResponse PDU is being serialized and transmitted to the
        !           876:    network.  In this case, the provider will not close the TCP
        !           877:    connection until after the serializer has finished.
        !           878: 
        !           879: 10.2. Elements of Procedure specific to the udp-based service
        !           880: 
        !           881:    The provider maintains the following information for each
        !           882:    presentation connection:
        !           883: 
        !           884:       - a local designator for the PS-user
        !           885: 
        !           886:       - the 32-bit IP address and 16-bit UDP port number of the
        !           887:         initiating host
        !           888: 
        !           889:       - the 32-bit IP address and 16-bit UDP port number of the
        !           890:         responding host
        !           891: 
        !           892:       - the session connection identifier used to establish the
        !           893:         presentation connection
        !           894: 
        !           895: 
        !           896: 
        !           897: 
        !           898: Rose                                                           [Page 16]
        !           899: 
        !           900: RFC 1085               ISO Presentation Services           December 1988
        !           901: 
        !           902: 
        !           903:       - a local designator for an UDP endpoint
        !           904: 
        !           905:       - the state of the connection (e.g., IDLE, WAIT1, and so on)
        !           906: 
        !           907:       - a retransmission counter
        !           908: 
        !           909:    Upon receiving an event from the network, the provider finds the
        !           910:    associated presentation connection.  Matching is done on the basis of
        !           911:    addresses, ports, and the session connection identifier (i.e., two
        !           912:    different presentation connections may differ only in their session
        !           913:    connection identifier).  If no presentation connection can be found,
        !           914:    then for the purposes of discussion, it may be assumed that a
        !           915:    "vanilla" presentation connection is created and initialized to the
        !           916:    IDLE state.  Further, whenever a connection remains in or returns to
        !           917:    the IDLE state, any associated resources, such as an attachment to a
        !           918:    local UDP port, are released.
        !           919: 
        !           920:    In the procedures which follow, outgoing PDUs are "placed on the
        !           921:    input queue for the serializer".  This means that the ASN.1 object is
        !           922:    serialized and the resulting sequence of octets is sent as a single
        !           923:    UDP datagram.
        !           924: 
        !           925: 10.3. State Transitions
        !           926: 
        !           927:    Following are the rules for transitioning states.  If an event
        !           928:    associated with a user-generated primitive is omitted, then it is an
        !           929:    interface error for the user to issue that primitive in the given
        !           930:    state.  Each state considers all possible incoming PDUs.
        !           931: 
        !           932:    We assume that for the tcp-based service, that some entity starts a
        !           933:    passive TCP open.  When the passive open completes, the entity, using
        !           934:    some local rule, locates a PS-user to be associated with the incoming
        !           935:    presentation connection.  This presentation connection is then placed
        !           936:    in the IDLE state.  The entity then continues listening for other
        !           937:    passive opens to complete.  The mechanisms associated with this
        !           938:    entity are entirely a local matter, the concept of this listener is
        !           939:    introduced solely as a modeling artifact.
        !           940: 
        !           941:    Finally, if the udp-based service is selected, then CL-UserData PDUs
        !           942:    are exchanged by the provider instead of UserData PDUs.
        !           943: 
        !           944: 
        !           945:                                     IDLE state
        !           946: 
        !           947:         Event:     P-CONNECT.REQUEST primitive issued
        !           948: 
        !           949:    Based on the quality of service parameter and the list of network
        !           950:    addresses in the called presentation address parameter, the provider
        !           951: 
        !           952: 
        !           953: 
        !           954: Rose                                                           [Page 17]
        !           955: 
        !           956: RFC 1085               ISO Presentation Services           December 1988
        !           957: 
        !           958: 
        !           959:    selects an address for the use of the presentation connection.  The
        !           960:    method for making this determination is a local matter.  (Appendix C
        !           961:    discusses a strategy which might be used.)  For the discussion that
        !           962:    follows, we assume that a network address supporting the desired
        !           963:    quality of service has been determined.
        !           964: 
        !           965:    Based on the network address chosen from the called presentation
        !           966:    address parameter, the provider selects a compatible network address
        !           967:    from the calling presentation address parameter.  The provider
        !           968:    attaches itself to the port associated with this network address.
        !           969:    (By local determination, this address need not be used, and an
        !           970:    "ephemeral" port may be chosen by the provider.)
        !           971: 
        !           972:    For the tcp-based service, the provider attempts to establish a TCP
        !           973:    connection to the network address listed in the called presentation
        !           974:    address.  If the connection can not be established, the P-
        !           975:    CONNECT.CONFIRMATION(-) primitive is issued with a reason of
        !           976:    provider-rejection, and the provider remains in the IDLE state.
        !           977: 
        !           978:    Regardless, the user data parameter is placed in a ConnectRequest
        !           979:    PDU, which is put on the input queue for the serializer.
        !           980: 
        !           981:    For the udp-based service, the provider sets the retransmission
        !           982:    counter to a small value (e.g., 2), and now starts a small timer.
        !           983: 
        !           984:    Regardless, the provider enters the WAIT1 state.
        !           985: 
        !           986: 
        !           987:         Event:     ConnectRequest PDU received
        !           988: 
        !           989:    The provider issues the P-CONNECT.INDICATION primitive and enters the
        !           990:    WAIT2 state.
        !           991: 
        !           992: 
        !           993:         Event:     any other PDU received
        !           994: 
        !           995:    If the PDU is not an Abort PDU, the provider constructs a provider-
        !           996:    initiated Abort PDU, which is put on the input queue for the
        !           997:    serializer.  Regardless, the provider remains in the IDLE state.
        !           998: 
        !           999: 
        !          1000:                                     WAIT1 state
        !          1001: 
        !          1002:         Event:     P-U-ABORT.REQUEST primitive issued
        !          1003: 
        !          1004:    The user data parameter is placed in an Abort PDU, which is put on
        !          1005:    the input queue for the serializer.  The provider enters the IDLE
        !          1006:    state.
        !          1007: 
        !          1008: 
        !          1009: 
        !          1010: Rose                                                           [Page 18]
        !          1011: 
        !          1012: RFC 1085               ISO Presentation Services           December 1988
        !          1013: 
        !          1014: 
        !          1015:         Event:     ConnectResponse PDU received
        !          1016: 
        !          1017:    For the udp-based service, the timer is cancelled.  If the PDU
        !          1018:    indicates rejection, the P-CONNECT.CONFIRMATION(-) primitive is
        !          1019:    issued and the provider enters the IDLE state.  Otherwise, the P-
        !          1020:    CONNECT.CONFIRMATION(+) primitive is issued and the provider enters
        !          1021:    the DATA state.
        !          1022: 
        !          1023: 
        !          1024:         Event:     user-initiated Abort PDU received
        !          1025: 
        !          1026:    The provider issues the P-U-ABORT.INDICATION primitive and enters the
        !          1027:    IDLE state.
        !          1028: 
        !          1029: 
        !          1030:         Event:     any other PDU received
        !          1031: 
        !          1032:    If the PDU not an Abort PDU, the provider constructs a provider-
        !          1033:    initiated Abort PDU, which is put on the input queue for the
        !          1034:    serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
        !          1035:    primitive and enters the the IDLE state.
        !          1036: 
        !          1037: 
        !          1038:         Event:     timer expires
        !          1039: 
        !          1040:    The provider decrements the retransmission counter.  If the resulting
        !          1041:    value is less than or equal to zero, the provider issues the P-
        !          1042:    CONNECT.CONFIRMATION(-) primitive and enters the IDLE state.
        !          1043:    Otherwise, a ConnectRequest PDU is put on the input queue for the
        !          1044:    serializer, the small timer is started again, and the provider
        !          1045:    remains in the WAIT1 state.
        !          1046: 
        !          1047: 
        !          1048:                                     WAIT2 state
        !          1049: 
        !          1050:         Event:     P-CONNECT.RESPONSE primitive issued
        !          1051: 
        !          1052:    The user data parameter is placed in a ConnectResponse PDU, which is
        !          1053:    put on the input queue for the serializer.  If the result parameter
        !          1054:    had the value user-rejection, the provider enters the IDLE state.
        !          1055:    Otherwise if the parameter had the value acceptance, the provider
        !          1056:    enters the DATA state.
        !          1057: 
        !          1058: 
        !          1059: 
        !          1060: 
        !          1061: 
        !          1062: 
        !          1063: 
        !          1064: 
        !          1065: 
        !          1066: Rose                                                           [Page 19]
        !          1067: 
        !          1068: RFC 1085               ISO Presentation Services           December 1988
        !          1069: 
        !          1070: 
        !          1071:         Event:     P-U-ABORT.REQUEST primitive issued
        !          1072: 
        !          1073:    The user data parameter is placed in an Abort PDU, which is put on
        !          1074:    the input queue for the serializer.  The provider enters the IDLE
        !          1075:    state.
        !          1076: 
        !          1077: 
        !          1078:         Event:     user-initiated Abort PDU received
        !          1079: 
        !          1080:    The provider issues the P-U-ABORT.INDICATION primitive and enters the
        !          1081:    IDLE state.
        !          1082: 
        !          1083: 
        !          1084:         Event:     any other PDU received
        !          1085: 
        !          1086:    If the PDU is not an Abort PDU, the provider constructs a provider-
        !          1087:    initiated Abort PDU, which is put on the input queue for the
        !          1088:    serializer.  Regardless, The provider issues the P-P-ABORT.INDICATION
        !          1089:    primitive and enters the the IDLE state.
        !          1090: 
        !          1091: 
        !          1092:                                     DATA state
        !          1093: 
        !          1094:         Event:     P-DATA.REQUEST primitive issued
        !          1095: 
        !          1096:    The user data parameter is placed in a UserData PDU, which is put on
        !          1097:    the input queue for the serializer.  The provider remains in the DATA
        !          1098:    state.
        !          1099: 
        !          1100: 
        !          1101:         Event:     P-RELEASE.REQUEST primitive issued
        !          1102: 
        !          1103:    The user data parameter is placed in a ReleaseRequest PDU, which is
        !          1104:    put on the input queue for the serializer.
        !          1105: 
        !          1106:    For the udp-based service, the provider sets the retransmission
        !          1107:    counter to a small value (e.g., 2), and now starts a small timer.
        !          1108: 
        !          1109:    Regardless, the provider enters the WAIT3 state.
        !          1110: 
        !          1111: 
        !          1112:         Event:     P-U-ABORT.REQUEST primitive issued
        !          1113: 
        !          1114:    The user data parameter is placed in an Abort PDU, which is put on
        !          1115:    the input queue for the serializer.  The provider enters the IDLE
        !          1116:    state.
        !          1117: 
        !          1118: 
        !          1119: 
        !          1120: 
        !          1121: 
        !          1122: Rose                                                           [Page 20]
        !          1123: 
        !          1124: RFC 1085               ISO Presentation Services           December 1988
        !          1125: 
        !          1126: 
        !          1127:         Event:     UserData PDU received
        !          1128: 
        !          1129:    The provider issues the P-DATA.INDICATION primitive and remains in
        !          1130:    the DATA state.
        !          1131: 
        !          1132: 
        !          1133:         Event:     ReleaseRequest PDU received
        !          1134: 
        !          1135:    The provider issues the P-RELEASE.INDICATION primitive, and enters
        !          1136:    the WAIT4 state.
        !          1137: 
        !          1138: 
        !          1139:         Event:     user-initiated Abort PDU received
        !          1140: 
        !          1141:    The provider issues the P-U-ABORT.INDICATION primitive and enters
        !          1142:     the IDLE state.
        !          1143: 
        !          1144: 
        !          1145:         Event:     any other PDU received
        !          1146: 
        !          1147:    If the PDU is not an Abort PDU, the provider constructs a provider-
        !          1148:    initiated Abort PDU, which is put on the input queue for the
        !          1149:    serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
        !          1150:    primitive and enters the the IDLE state.
        !          1151: 
        !          1152: 
        !          1153:                                     WAIT3 state
        !          1154: 
        !          1155:         Event:     P-U-ABORT.REQUEST primitive issued
        !          1156: 
        !          1157:    The user data parameter is placed in an Abort PDU, which is put on
        !          1158:    the input queue for the serializer.  The provider enters the IDLE
        !          1159:    state.
        !          1160: 
        !          1161: 
        !          1162:         Event:     ReleaseResponse PDU received
        !          1163: 
        !          1164:    For the udp-based service, the timer is cancelled.  The provider
        !          1165:    issues the P-RELEASE.CONFIRMATION primitive and enters the IDLE
        !          1166:    state.
        !          1167: 
        !          1168: 
        !          1169:         Event:     user-initiated Abort PDU received
        !          1170: 
        !          1171:    The provider issues the P-U-ABORT.INDICATION primitive and enters the
        !          1172:    IDLE state.
        !          1173: 
        !          1174: 
        !          1175: 
        !          1176: 
        !          1177: 
        !          1178: Rose                                                           [Page 21]
        !          1179: 
        !          1180: RFC 1085               ISO Presentation Services           December 1988
        !          1181: 
        !          1182: 
        !          1183:         Event:     any other PDU received
        !          1184: 
        !          1185:    If the PDU is not an Abort PDU, the provider constructs a provider-
        !          1186:    initiated Abort PDU, which is put on the input queue for the
        !          1187:    serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
        !          1188:    primitive and enters the the IDLE state.
        !          1189: 
        !          1190: 
        !          1191:         Event:     timer expires
        !          1192: 
        !          1193:    The provider decrements the retransmission counter.  If the resulting
        !          1194:    value is less than or equal to zero, the provider constructs a
        !          1195:    provider-initiated Abort PDU, which is put on the input queue for the
        !          1196:    serializer.  It then issues the P-P-ABORT.INDICATION primitive and
        !          1197:    enters the IDLE state.  Otherwise, a ReleaseRequest PDU is put on the
        !          1198:    input queue for the serializer, the small timer is started again, and
        !          1199:    the provider remains in the WAIT3 state.
        !          1200: 
        !          1201: 
        !          1202:                                     WAIT4 state
        !          1203: 
        !          1204:         Event:     P-RELEASE.RESPONSE primitive issued
        !          1205: 
        !          1206:    The user data parameter is placed in a ReleaseResponse PDU, which is
        !          1207:    put on the input queue for the serializer.  The provider now enters
        !          1208:    the IDLE state.
        !          1209: 
        !          1210:         Event:     P-U-ABORT.REQUEST primitive issued
        !          1211: 
        !          1212:    The user data parameter is placed in an Abort PDU, which is put on
        !          1213:    the input queue for the serializer.  The provider now enters the IDLE
        !          1214:    state.
        !          1215: 
        !          1216: 
        !          1217:         Event:     user-initiated Abort PDU received
        !          1218: 
        !          1219:    The provider issues the P-U-ABORT.INDICATION primitive and enters the
        !          1220:    IDLE state.
        !          1221: 
        !          1222: 
        !          1223:         Event:     any other PDU received
        !          1224: 
        !          1225:    If the PDU is not an Abort PDU, the provider constructs a provider-
        !          1226:    initiated Abort PDU, which is put on the input queue for the
        !          1227:    serializer.  Regardless, the provider issues the P-P-ABORT.INDICATION
        !          1228:    primitive and enters the the IDLE state.
        !          1229: 
        !          1230: 
        !          1231: 
        !          1232: 
        !          1233: 
        !          1234: Rose                                                           [Page 22]
        !          1235: 
        !          1236: RFC 1085               ISO Presentation Services           December 1988
        !          1237: 
        !          1238: 
        !          1239: 11. Directory Services
        !          1240: 
        !          1241:    Although not properly part of the presentation service, this memo
        !          1242:    assumes and specifies a minimal Directory service capability for use
        !          1243:    by the application-entity.
        !          1244: 
        !          1245:    The function of the Directory Service Element is to provide two
        !          1246:    mappings: first, a service name is mapped into an application entity
        !          1247:    title, which is a global handle on the service; and, second, the
        !          1248:    application-entity title is mapped onto a presentation address.
        !          1249: 
        !          1250:    The structure of presentation addresses were defined in Section 5.
        !          1251: 
        !          1252:    The structure of application-entity titles is less solidly agreed
        !          1253:    upon at the present time.  Since objects of this type are not
        !          1254:    interpreted by the presentation service, this memo does not specify
        !          1255:    their structure.  If the DIS version of association control is being
        !          1256:    used, then use of an OBJECT IDENTIFIER will suffice.  If the IS
        !          1257:    version is being employed, then application-entity titles consist of
        !          1258:    two parts: an application-process title and an application-entity
        !          1259:    qualifier.  It is suggested that the AP-Title use an OBJECT
        !          1260:    IDENTIFIER and that the AE-Qualifier use NULL.
        !          1261: 
        !          1262:    This memo requires the following mapping rules:
        !          1263: 
        !          1264:       1.  The service name for an OSI application-entity using the
        !          1265:       mechanisms proposed by this memo is:
        !          1266: 
        !          1267:               <designator> "-" <qualifier>
        !          1268: 
        !          1269:       where <designator> is a string denoting either domain name or a
        !          1270:       32-bit IP address, and <qualifier> is a string denoting the type
        !          1271:       of application-entity desired, e.g.,
        !          1272: 
        !          1273:               "gonzo.twg.com-mgmtinfobase"
        !          1274: 
        !          1275:       2.  Any locally defined mapping rules may be used to map the
        !          1276:       service designation into an application-entity title.
        !          1277: 
        !          1278:       3.  The application-entity title is then mapped into a
        !          1279:       presentation address, with uninterpreted transport, session, and
        !          1280:       presentation selectors, and one or more network addresses, each
        !          1281:       containing:
        !          1282: 
        !          1283:          -the 32-bit IP address resolved from the <designator> portion
        !          1284:           of the service name,
        !          1285: 
        !          1286:          - a set indicating which transport services are available
        !          1287: 
        !          1288: 
        !          1289: 
        !          1290: Rose                                                           [Page 23]
        !          1291: 
        !          1292: RFC 1085               ISO Presentation Services           December 1988
        !          1293: 
        !          1294: 
        !          1295:            at the IP address,
        !          1296: 
        !          1297:          - the 16-bit port number resolved from the <qualifier>
        !          1298:            portion of the service name (using the Assigned Numbers
        !          1299:            document), and
        !          1300: 
        !          1301:          - optionally, a presentation selector, which is an
        !          1302:            uninterpreted sequence of octets.
        !          1303: 
        !          1304:    The method by which the mappings are obtained are straight-forward.
        !          1305:    The directory services element employs the Domain Name System along
        !          1306:    with a local table which may be used to resolve the address employing
        !          1307:    local rules.
        !          1308: 
        !          1309:    In the simplest of implementations, the DNS is used to map the
        !          1310:    <designator> to an IP address, and to fill-in the set of transport
        !          1311:    services available at the IP address.  The port number is found in a
        !          1312:    local table derived from the current Assigned Numbers document.
        !          1313:    Finally, the presentation selector is empty.
        !          1314: 
        !          1315:    A more ambitious implementation would use a local table to perhaps
        !          1316:    provide a presentation selector.  This would be useful, e.g., in
        !          1317:    "proxy" connections.  The network address would resolve to the proxy
        !          1318:    agent for the non-IP device, and the presentation selector would
        !          1319:    indicate to the proxy agent the particular non-IP device desired.
        !          1320:    This implies, of course, that the local table and the proxy agent
        !          1321:    bilaterally agree as to the interpretation of each presentation
        !          1322:    selector.
        !          1323: 
        !          1324: 12. Remarks
        !          1325: 
        !          1326:    To begin, if one really wanted to implement ISO applications in a
        !          1327:    TCP/IP-based network, then the method proposed by [RFC1006] is the
        !          1328:    preferred method for achieving this.  However, in a constrained
        !          1329:    environment, where it is necessary to host an application layer
        !          1330:    entity with a minimal amount of underlying OSI infrastructure, this
        !          1331:    memo proposes an alternative mechanism.  It should be noted that an
        !          1332:    OSI application realized using this approach can be moved directly to
        !          1333:    an [RFC1006]-based environment with no modifications.
        !          1334: 
        !          1335:    A key motivation therefore is to minimize the size of the alternate
        !          1336:    underling infrastructure specified by this memo.  As more and more
        !          1337:    presentation services functionality is added, the method proposed
        !          1338:    herein would begin to approximate the ISO presentation protocol.
        !          1339:    Since this in contrary to the key motivation, featurism must be
        !          1340:    avoided at all costs.
        !          1341: 
        !          1342: 
        !          1343: 
        !          1344: 
        !          1345: 
        !          1346: Rose                                                           [Page 24]
        !          1347: 
        !          1348: RFC 1085               ISO Presentation Services           December 1988
        !          1349: 
        !          1350: 
        !          1351: 13. Acknowledgements
        !          1352: 
        !          1353:    Several individuals contributed to the technical quality of this
        !          1354:    memo:
        !          1355: 
        !          1356:            Karl Auerbach, Epilogue Technologies
        !          1357:            Joseph Bannister, Unisys
        !          1358:            Amatzia Ben-Artzi, Sytek
        !          1359:            Stephen Dunford, Unisys
        !          1360:            Lee Labarre, MITRE
        !          1361:            Keith McCloghrie, The Wollongong Group
        !          1362:            Jim Robertson, Bridge Communications
        !          1363:            Glenn Trewitt, Stanford University
        !          1364: 
        !          1365: 14. References
        !          1366: 
        !          1367:      [ISO7498]  Information Processing Systems - Open Systems
        !          1368:                 Interconnection, "Basic Reference Model", October, 1984.
        !          1369: 
        !          1370:      [ISO8509]  Information Processing Systems - Open Systems
        !          1371:                 Interconnection, " Service Conventions".
        !          1372: 
        !          1373:      [ISO8650]  Information Processing Systems - Open Systems
        !          1374:                 Interconnection, " Protocol Specification for the
        !          1375:                 Association Control Service Element (Final Text
        !          1376:                 of DIS 8650)", January, 1988.
        !          1377: 
        !          1378:      [ISO8822]  Information Processing Systems - Open Systems
        !          1379:                 Interconnection, " Connection Oriented Presentation
        !          1380:                 Service Definition (Final Text of DIS 8822)",
        !          1381:                 April, 1988.
        !          1382: 
        !          1383:      [ISO8823]  Information Processing Systems - Open Systems
        !          1384:                 Interconnection, " Connection Oriented Presentation
        !          1385:                 Protocol Specification (Final Text of DIS 8822)",
        !          1386:                 April, 1988.
        !          1387: 
        !          1388:      [ISO8824]  Information Processing Systems - Open Systems
        !          1389:                 Interconnection, " Specification of Abstract Syntax
        !          1390:                 Notation One (ASN.1)", December, 1987.
        !          1391: 
        !          1392:      [ISO8825]  Information Processing Systems - Open Systems
        !          1393:                 Interconnection, "Specification of basic encoding rules
        !          1394:                 for Abstract Syntax Notation One (ASN.1)",
        !          1395:                 December, 1987.
        !          1396: 
        !          1397:      [ISO9072/2]  Information Processing Systems - Text Communication
        !          1398:                   MOTIS, " Remote Operations Part 2: Protocol
        !          1399: 
        !          1400: 
        !          1401: 
        !          1402: Rose                                                           [Page 25]
        !          1403: 
        !          1404: RFC 1085               ISO Presentation Services           December 1988
        !          1405: 
        !          1406: 
        !          1407:                   Specification (Working Document for DIS 9072/2)",
        !          1408:                   November, 1987.
        !          1409: 
        !          1410:      [RFC768]  Postel, J., "User Datagram Protocol", RFC 768, USC/ISI,
        !          1411:                28 August 1980.
        !          1412: 
        !          1413:      [RFC791]  Postel, J., "Internet Protocol - DARPA Internet Program
        !          1414:                Protocol Specification", RFC 791, USC/ISI,
        !          1415:                September 1981.
        !          1416: 
        !          1417:      [RFC793]  Postel, J., "Transmission Control Protocol - DARPA
        !          1418:                Internet Program Protocol Specification", RFC 793,
        !          1419:                USC/ISI, September 1981.
        !          1420: 
        !          1421:      [RFC1006]  Rose, M., and D. Cass, "ISO Transport 1 on Top of the
        !          1422:                 TCP Version: 3", Northrop Research and Technology
        !          1423:                 Center, May 1987.
        !          1424: 
        !          1425: Appendix A:
        !          1426: 
        !          1427: Abstract Syntax Definitions
        !          1428: 
        !          1429:    RFC1085-PS DEFINITIONS ::=
        !          1430: 
        !          1431:    BEGIN
        !          1432: 
        !          1433:    PDUs ::=
        !          1434:            CHOICE {
        !          1435:                connectRequest
        !          1436:                    ConnectRequest-PDU,
        !          1437: 
        !          1438:                connectResponse
        !          1439:                    ConnectResponse-PDU,
        !          1440: 
        !          1441:                releaseRequest
        !          1442:                    ReleaseRequest-PDU,
        !          1443: 
        !          1444:                releaseResponse
        !          1445:                    ReleaseResponse-PDU,
        !          1446: 
        !          1447:                abort
        !          1448:                    Abort-PDU,
        !          1449: 
        !          1450:                userData
        !          1451:                    UserData-PDU,
        !          1452: 
        !          1453:                cL-userData
        !          1454:                    CL-UserData-PDU
        !          1455: 
        !          1456: 
        !          1457: 
        !          1458: Rose                                                           [Page 26]
        !          1459: 
        !          1460: RFC 1085               ISO Presentation Services           December 1988
        !          1461: 
        !          1462: 
        !          1463:            }
        !          1464: 
        !          1465: 
        !          1466: 
        !          1467:    -- connect request PDU
        !          1468: 
        !          1469:    ConnectRequest-PDU ::=
        !          1470:        [0]
        !          1471:            IMPLICIT SEQUENCE {
        !          1472:                version[0]          -- version-1 corresponds to to this
        !          1473:                                       memo
        !          1474:                    IMPLICIT INTEGER { version-1(0) },
        !          1475: 
        !          1476:                reference
        !          1477:                    SessionConnectionIdentifier,
        !          1478: 
        !          1479:                calling
        !          1480:                    PresentationSelector
        !          1481:                    OPTIONAL,
        !          1482: 
        !          1483:                called[2]
        !          1484:                    IMPLICIT PresentationSelector
        !          1485:                    OPTIONAL,
        !          1486: 
        !          1487:                asn[3]              -- the ASN for PCI #1
        !          1488:                    IMPLICIT OBJECT IDENTIFIER,
        !          1489: 
        !          1490:                user-data
        !          1491:                    UserData-PDU
        !          1492:            }
        !          1493: 
        !          1494:    SessionConnectionIdentifier ::=
        !          1495:        [0]
        !          1496:            SEQUENCE {
        !          1497:                callingSSUserReference
        !          1498:                    T61String,
        !          1499: 
        !          1500:                commonReference
        !          1501:                    UTCTime,
        !          1502: 
        !          1503:                additionalReferenceInformation[0]
        !          1504:                    IMPLICIT T61String
        !          1505:                    OPTIONAL
        !          1506:            }
        !          1507: 
        !          1508:    PresentationSelector ::=
        !          1509:        [1]
        !          1510:            IMPLICIT OCTET STRING
        !          1511: 
        !          1512: 
        !          1513: 
        !          1514: Rose                                                           [Page 27]
        !          1515: 
        !          1516: RFC 1085               ISO Presentation Services           December 1988
        !          1517: 
        !          1518: 
        !          1519:    -- connect response PDU
        !          1520: 
        !          1521:    ConnectResponse-PDU ::=
        !          1522:        [1]
        !          1523:            IMPLICIT SEQUENCE {
        !          1524:                reference           -- present only in the udp-based
        !          1525:                                    -- service
        !          1526:                    SessionConnectionIdentifier
        !          1527:                    OPTIONAL,
        !          1528: 
        !          1529:                responding
        !          1530:                    PresentationSelector
        !          1531:                    OPTIONAL,
        !          1532: 
        !          1533:                reason[2]           -- present only if the connection
        !          1534:                                    -- was rejected
        !          1535:                    IMPLICIT Rejection-reason
        !          1536:                    OPTIONAL,
        !          1537: 
        !          1538:                user-data           -- present only if reason is absent
        !          1539:                                    -- OR has the
        !          1540:                                    -- value rejected-by-responder
        !          1541:                    UserData-PDU
        !          1542:                    OPTIONAL
        !          1543:            }
        !          1544: 
        !          1545:    Rejection-reason ::=
        !          1546:            INTEGER {
        !          1547:                rejected-by-responder(0)
        !          1548:                called-presentation-address-unknown(1),
        !          1549:                local-limit-exceeded(3),
        !          1550:                protocol-version-not-supported(4),
        !          1551:            }
        !          1552: 
        !          1553: 
        !          1554:    -- release request PDU
        !          1555: 
        !          1556:    ReleaseRequest-PDU ::=
        !          1557:        [2]
        !          1558:            IMPLICIT SEQUENCE {
        !          1559:                reference           -- present only in the udp-based
        !          1560:                                    -- service
        !          1561:                    SessionConnectionIdentifier
        !          1562:                    OPTIONAL,
        !          1563: 
        !          1564:                user-data
        !          1565:                    UserData-PDU
        !          1566:            }
        !          1567: 
        !          1568: 
        !          1569: 
        !          1570: Rose                                                           [Page 28]
        !          1571: 
        !          1572: RFC 1085               ISO Presentation Services           December 1988
        !          1573: 
        !          1574: 
        !          1575:    -- release response PDU
        !          1576: 
        !          1577:    ReleaseResponse-PDU ::=
        !          1578:        [3]
        !          1579:            IMPLICIT SEQUENCE {
        !          1580:                reference           -- present only in the udp-based
        !          1581:                                    -- service
        !          1582:                    SessionConnectionIdentifier
        !          1583:                    OPTIONAL,
        !          1584: 
        !          1585:                user-data
        !          1586:                    UserData-PDU
        !          1587:            }
        !          1588: 
        !          1589:    -- abort PDU
        !          1590: 
        !          1591:    Abort-PDU ::=
        !          1592:        [4]
        !          1593:            SEQUENCE {
        !          1594:                reference           -- present only in the udp-based
        !          1595:                                    -- service
        !          1596:                    SessionConnectionIdentifier
        !          1597:                    OPTIONAL,
        !          1598: 
        !          1599:                user-data   -- MAY BE present on user-initiated abort
        !          1600:                    UserData-PDU
        !          1601:                    OPTIONAL,
        !          1602: 
        !          1603:                reason[1]   -- ALWAYS present on provider-initiated abort
        !          1604:                    IMPLICIT Abort-reason
        !          1605:                    OPTIONAL
        !          1606:            }
        !          1607: 
        !          1608:    Abort-reason ::=
        !          1609:            INTEGER {
        !          1610:                unspecified(0),
        !          1611:                unrecognized-ppdu(1),
        !          1612:                unexpected-ppdu(2),
        !          1613:                unrecognized-ppdu-parameter(4),
        !          1614:                invalid-ppdu-parameter(5),
        !          1615:                reference-mismatch(9)
        !          1616:            }
        !          1617: 
        !          1618: 
        !          1619:    -- data PDU
        !          1620: 
        !          1621:    UserData-PDU ::=
        !          1622:        [5]                         -- this is the ASN.1 object
        !          1623: 
        !          1624: 
        !          1625: 
        !          1626: Rose                                                           [Page 29]
        !          1627: 
        !          1628: RFC 1085               ISO Presentation Services           December 1988
        !          1629: 
        !          1630: 
        !          1631:            ANY                     -- if it is a top-level PDU, it
        !          1632:                                    -- is in PCI #1, otherwise PCI #3
        !          1633: 
        !          1634: 
        !          1635:    -- data PDU for the udp-based service
        !          1636: 
        !          1637:    CL-UserData-PDU ::=
        !          1638:        [6]
        !          1639:            IMPLICIT SEQUENCE {
        !          1640:                reference
        !          1641:                    SessionConnectionIdentifier,
        !          1642: 
        !          1643:                user-data[0]                -- this is the ASN.1 object
        !          1644:                    ANY                     -- it is always in PCI #1
        !          1645:            }
        !          1646: 
        !          1647:    END
        !          1648: 
        !          1649: Appendix B:
        !          1650: 
        !          1651: Example of Serialization
        !          1652: 
        !          1653: 
        !          1654:    Consider the following call to ROSE:
        !          1655: 
        !          1656:            RO-INVOKE (operation number      = 5
        !          1657:                       operation class       = synchronous
        !          1658:                       argument              = NONE
        !          1659:                       invocation identifier = 1
        !          1660:                       linked invocation id. = NONE
        !          1661:                       priority              = 0)
        !          1662:                .REQUEST
        !          1663: 
        !          1664:    Ultimately, ROSE will use the P-DATA service:
        !          1665: 
        !          1666:            P-DATA (user data = {
        !          1667:                                  1,        -- this is the PCI
        !          1668:                                  {         -- this is the ASN.1 object
        !          1669:                                     invokeID 1,
        !          1670:                                     operation-value 5,
        !          1671:                                     argument {}
        !          1672:                                  }
        !          1673:                                })
        !          1674:                .REQUEST
        !          1675: 
        !          1676:    The presentation provider will construct a UserData PDU and send this
        !          1677:    via the transport connection:
        !          1678: 
        !          1679: 
        !          1680: 
        !          1681: 
        !          1682: Rose                                                           [Page 30]
        !          1683: 
        !          1684: RFC 1085               ISO Presentation Services           December 1988
        !          1685: 
        !          1686: 
        !          1687:       [5] {
        !          1688:             {
        !          1689:               1,
        !          1690:               5,
        !          1691:               {}
        !          1692:             }
        !          1693:           }
        !          1694: 
        !          1695:    Applying the basic encoding rules for ASN.1, we have an stream of 12
        !          1696:    octets.
        !          1697: 
        !          1698:       a5  0a                                       [5]
        !          1699:       tag len
        !          1700: 
        !          1701:       a0  08                               [0]
        !          1702:       tag len
        !          1703:       02  01  01           invokeID 1
        !          1704:       tag len value
        !          1705: 
        !          1706:       02  01  05           operation-value 5
        !          1707:       tag len value
        !          1708: 
        !          1709:       30  00                       argument NULL
        !          1710:       tag len
        !          1711: 
        !          1712:    Of course, in actual use, the argument would not be NONE and this
        !          1713:    could be expected to dominate the size of the UserData PDU.  However,
        !          1714:    it is worth nothing that the overhead of the encoding mechanism used
        !          1715:    is on the order of 10 octets, hardly a staggering amount!
        !          1716: 
        !          1717: Appendix C:
        !          1718: 
        !          1719: Determination of Network Called Address
        !          1720: 
        !          1721:    As described in Section 10, when the P-CONNECT.REQUEST primitive is
        !          1722:    issued the presentation provider must determine which of the network
        !          1723:    addresses present in the called presentation address parameter to use
        !          1724:    for the presentation connection.  The first step in this
        !          1725:    determination is to examine the quality of service parameter and
        !          1726:    consider only those network addresses which support the corresponding
        !          1727:    transport service.  In practice, it is likely that each network
        !          1728:    address will support exactly the same transport services, so using
        !          1729:    quality of service as a discriminant will either permit all or none
        !          1730:    or the network addresses present to be selected.  This appendix
        !          1731:    describes a local policy which might be employed when deciding which
        !          1732:    network address to use.
        !          1733: 
        !          1734:    The policy distinguishes between "underlying failures" and
        !          1735: 
        !          1736: 
        !          1737: 
        !          1738: Rose                                                           [Page 31]
        !          1739: 
        !          1740: RFC 1085               ISO Presentation Services           December 1988
        !          1741: 
        !          1742: 
        !          1743:    "connection establishment failures".  An "underlying failure" occurs
        !          1744:    when, using the desired transport service, the initiating
        !          1745:    presentation provider is unable to contact the responding
        !          1746:    presentation provider.  For the tcp-based service, this means that a
        !          1747:    TCP connection could not be established for some reason.  For the
        !          1748:    udp-based service, it means that a response was not received before
        !          1749:    final time-out.  In contrast, a "connection establishment failure"
        !          1750:    occurs when the responding presentation provider can be contacted,
        !          1751:    but the presentation connection is rejected by either the
        !          1752:    presentation provider or the correspondent presentation user.
        !          1753: 
        !          1754:    The policy is simple: starting with the first network address
        !          1755:    present, attempt the connection procedure.  If the procedure fails
        !          1756:    due to an "underlying failure", then the next network address in the
        !          1757:    list is tried.  This process is repeated until either an underlying
        !          1758:    connection is established or all network addresses are exhausted.
        !          1759:    If, however, a "connection establishment failure" occurs, then the
        !          1760:    presentation provider immediately indicates this failure to the
        !          1761:    presentation user and no further network addresses are considered.
        !          1762: 
        !          1763:    Note that this is only one conformant policy of many.  For example,
        !          1764:    the presentation provider may wish to order network addresses based
        !          1765:    on the "intensity" associated with the members present in the set of
        !          1766:    transport services for each network address.
        !          1767: 
        !          1768: Author's Address:
        !          1769: 
        !          1770:    Marshall Rose
        !          1771:    The Wollongong Group
        !          1772:    1129 San Antonio Road
        !          1773:    Palo Alto, CA 94303
        !          1774: 
        !          1775:    Phone: (415) 962-7100
        !          1776: 
        !          1777:    EMail: [email protected]
        !          1778: 
        !          1779: 
        !          1780: 
        !          1781: 
        !          1782: 
        !          1783: 
        !          1784: 
        !          1785: 
        !          1786: 
        !          1787: 
        !          1788: 
        !          1789: 
        !          1790: 
        !          1791: 
        !          1792: 
        !          1793: 
        !          1794: Rose                                                           [Page 32]
        !          1795: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.