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

1.1     ! root        1: 
        !             2: 
        !             3: 
        !             4: Network Working Group                    Marshall T. Rose, Dwight E. Cass
        !             5: Request for Comments: RFC 1006    Northrop Research and Technology Center
        !             6:                                                                  May 1987
        !             7: 
        !             8: 
        !             9: 
        !            10:                 ISO Transport Service on top of the TCP
        !            11:                                Version: 3
        !            12: 
        !            13: 
        !            14: Status of this Memo
        !            15: 
        !            16:    This memo specifies a standard for the Internet community. Hosts
        !            17:    on the Internet that choose to implement ISO transport services
        !            18:    on top of the TCP are expected to adopt and implement this
        !            19:    standard.  TCP port 102 is reserved for hosts which implement this
        !            20:    standard.  Distribution of this memo is unlimited.
        !            21: 
        !            22:    This memo specifies version 3 of the protocol and supersedes
        !            23:    [RFC983].  Changes between the protocol as described in Request for
        !            24:    Comments 983 and this memo are minor, but are unfortunately
        !            25:    incompatible.
        !            26: 
        !            27: 
        !            28: 
        !            29: 
        !            30: 
        !            31: 
        !            32: 
        !            33: 
        !            34: 
        !            35: 
        !            36: 
        !            37: 
        !            38: 
        !            39: 
        !            40: 
        !            41: 
        !            42: 
        !            43: 
        !            44: 
        !            45: 
        !            46: 
        !            47: 
        !            48: 
        !            49: 
        !            50: 
        !            51: 
        !            52: 
        !            53: 
        !            54: 
        !            55: 
        !            56: 
        !            57: 
        !            58: M. Rose & D. Cass                                               [Page 1]
        !            59: 
        !            60: RFC 1006                                                        May 1987
        !            61: 
        !            62: 
        !            63: 1.  Introduction and Philosophy
        !            64: 
        !            65: 
        !            66:       The Internet community has a well-developed, mature set of
        !            67:       transport and internetwork protocols (TCP/IP), which are quite
        !            68:       successful in offering network and transport services to
        !            69:       end-users. The CCITT and the ISO have defined various session,
        !            70:       presentation, and application recommendations which have been
        !            71:       adopted by the international community and numerous vendors.
        !            72:       To the largest extent possible, it is desirable to offer these
        !            73:       higher level directly in the ARPA Internet, without disrupting
        !            74:       existing facilities.  This permits users to develop expertise
        !            75:       with ISO and CITT applications which previously were not
        !            76:       available in the ARPA Internet.  It also permits a more
        !            77:       graceful convergence and transition strategy from
        !            78:       TCP/IP-based networks to ISO-based networks in the
        !            79:       medium-and long-term.
        !            80: 
        !            81:       There are two basic approaches which can be taken when "porting"
        !            82:       an ISO or CCITT application to a TCP/IP environment.  One
        !            83:       approach is to port each individual application separately,
        !            84:       developing local protocols on top of the TCP.  Although this is
        !            85:       useful in the short-term (since special-purpose interfaces to the
        !            86:       TCP can be developed quickly), it lacks generality.
        !            87: 
        !            88:       A second approach is based on the observation that both the ARPA
        !            89:       Internet protocol suite and the ISO protocol suite are both
        !            90:       layered systems (though the former uses layering from a more
        !            91:       pragmatic perspective).  A key aspect of the layering principle
        !            92:       is that of layer-independence.  Although this section is
        !            93:       redundant for most readers, a slight bit of background material
        !            94:       is necessary to introduce this concept.
        !            95: 
        !            96:       Externally, a layer is defined by two definitions:
        !            97: 
        !            98:          a service-offered definition, which describes the services
        !            99:          provided by the layer and the interfaces it provides to
        !           100:          access those services; and,
        !           101: 
        !           102:          a service-required definitions, which describes the services
        !           103:          used by the layer and the interfaces it uses to access those
        !           104:          services.
        !           105: 
        !           106:       Collectively, all of the entities in the network which co-operate
        !           107:       to provide the service are known as the service-provider.
        !           108:       Individually, each of these entities is known as a service-peer.
        !           109: 
        !           110:       Interally, a layer is defined by one definition:
        !           111: 
        !           112:           a protocol definition, which describes the rules which each
        !           113:           service-peer uses when communicating with other service-peers.
        !           114: 
        !           115: 
        !           116: 
        !           117: M. Rose & D. Cass                                               [Page 2]
        !           118: 
        !           119: RFC 1006                                                        May 1987
        !           120: 
        !           121: 
        !           122:       Putting all this together, the service-provider uses the protocol
        !           123:       and services from the layer below to offer the its service to the
        !           124:       layer above.  Protocol verification, for instance, deals with
        !           125:       proving that this in fact happens (and is also a fertile field
        !           126:       for many Ph.D. dissertations in computer science).
        !           127: 
        !           128:       The concept of layer-independence quite simply is:
        !           129: 
        !           130:           IF one preserves the services offered by the service-provider
        !           131: 
        !           132:           THEN the service-user is completely naive with respect to the
        !           133:           protocol which the service-peers use
        !           134: 
        !           135: 
        !           136:       For the purposes of this memo, we will use the layer-independence
        !           137:       to define a Transport Service Access Point (TSAP) which appears
        !           138:       to be identical to the services and interfaces offered by the
        !           139:       ISO/CCITT TSAP (as defined in [ISO8072]), but we will in fact
        !           140:       implement theISO TP0 protocol on top of TCP/IP (as defined in
        !           141:       [RFC793,RFC791]), not on top of the the ISO/CCITT network
        !           142:       protocol.  Since the transport class 0 protocol is used over the
        !           143:       TCP/IP connection, it achieves identical functionality as
        !           144:       transport class 4.  Hence, ISO/CCITT higher level layers (all
        !           145:       session, presentation, and application entities) can operate
        !           146:       fully without knowledge of the fact that they are running on a
        !           147:       TCP/IP internetwork.
        !           148: 
        !           149: 
        !           150: 
        !           151: 
        !           152: 
        !           153: 
        !           154: 
        !           155: 
        !           156: 
        !           157: 
        !           158: 
        !           159: 
        !           160: 
        !           161: 
        !           162: 
        !           163: 
        !           164: 
        !           165: 
        !           166: 
        !           167: 
        !           168: 
        !           169: 
        !           170: 
        !           171: 
        !           172: 
        !           173: 
        !           174: 
        !           175: 
        !           176: M. Rose & D. Cass                                               [Page 3]
        !           177: 
        !           178: RFC 1006                                                        May 1987
        !           179: 
        !           180: 
        !           181: 2.  Motivation
        !           182: 
        !           183: 
        !           184:       In migrating from the use of TCP/IP to the ISO protocols, there
        !           185:       are several strategies that one might undertake.  This memo was
        !           186:       written with one particular strategy in mind.
        !           187: 
        !           188:       The particular migration strategy which this memo uses is based
        !           189:       on the notion of gatewaying between the TCP/IP and ISO ptotocol
        !           190:       suites at the transport layer.  There are two strong arguments
        !           191:       for this approach:
        !           192: 
        !           193:       1.  Experience teaches us that it takes just as long to get good
        !           194:       implementations of the lower level protocols as it takes to get
        !           195:       implementations of the higher level ones.  In particular, it has
        !           196:       been observed that there is still a lot of work being done at the
        !           197:       ISO network and transport layers.  As a result, implementations
        !           198:       of protocols above these layers are not being aggressively
        !           199:       pursued. Thus, something must be done "now" to provide a medium
        !           200:       in which the higher level protocols can be developed.  Since
        !           201:       TCP/IP is mature, and essentially provides identical
        !           202:       functionality, it is an ideal medium to support this development.
        !           203: 
        !           204:       2.  Implementation of gateways at the IP and ISO IP layers are
        !           205:       probably not of general use in the long term.  In effect, this
        !           206:       would require each Internet host to support both TP4 and TCP.
        !           207:       As such, a better strategy is to implement a graceful migration
        !           208:       path from TCP/IP to ISO protocols for the ARPA Internet when the
        !           209:       ISO protocols have matured sufficiently.
        !           210: 
        !           211:       Both of these arguments indicate that gatewaying should occur at
        !           212:       or above the transport layer service access point.  Further, the
        !           213:       first argument suggests that the best approach is to perform the
        !           214:       gatewaying exactly AT the transport service access point to
        !           215:       maximize the number of ISO layers which can be developed.
        !           216: 
        !           217:         NOTE:     This memo does not intend to act as a migration or
        !           218:                   intercept document.  It is intended ONLY to meet the
        !           219:                   needs discussed above.  However, it would not be
        !           220:                   unexpected that the protocol described in this memo
        !           221:                   might form part of an overall transition plan.  The
        !           222:                   description of such a plan however is COMPLETELY
        !           223:                   beyond the scope of this memo.
        !           224: 
        !           225:       Finally, in general, building gateways between other layers in the
        !           226:       TCP/IP and ISO protocol suites is problematic, at best.
        !           227: 
        !           228:       To summarize: the primary motivation for the standard described in
        !           229:       this memo is to facilitate the process of gaining experience with
        !           230:       higher-level ISO protocols (session, presentation, and
        !           231:       application). The stability and maturity of TCP/IP are ideal for
        !           232: 
        !           233: 
        !           234: 
        !           235: M. Rose & D. Cass                                               [Page 4]
        !           236: 
        !           237: RFC 1006                                                        May 1987
        !           238: 
        !           239: 
        !           240:       providing solid transport services independent of actual
        !           241:       implementation.
        !           242: 
        !           243: 
        !           244: 
        !           245: 
        !           246: 
        !           247: 
        !           248: 
        !           249: 
        !           250: 
        !           251: 
        !           252: 
        !           253: 
        !           254: 
        !           255: 
        !           256: 
        !           257: 
        !           258: 
        !           259: 
        !           260: 
        !           261: 
        !           262: 
        !           263: 
        !           264: 
        !           265: 
        !           266: 
        !           267: 
        !           268: 
        !           269: 
        !           270: 
        !           271: 
        !           272: 
        !           273: 
        !           274: 
        !           275: 
        !           276: 
        !           277: 
        !           278: 
        !           279: 
        !           280: 
        !           281: 
        !           282: 
        !           283: 
        !           284: 
        !           285: 
        !           286: 
        !           287: 
        !           288: 
        !           289: 
        !           290: 
        !           291: 
        !           292: 
        !           293: 
        !           294: M. Rose & D. Cass                                               [Page 5]
        !           295: 
        !           296: RFC 1006                                                        May 1987
        !           297: 
        !           298: 
        !           299: 3.  The Model
        !           300: 
        !           301: 
        !           302:       The [ISO8072] standard describes the ISO transport service
        !           303:       definition, henceforth called TP.
        !           304: 
        !           305:           ASIDE:    This memo references the ISO specifications rather
        !           306:                     than the CCITT recommendations.  The differences
        !           307:                     between these parallel standards are quite small,
        !           308:                     and can be ignored, with respect to this memo,
        !           309:                     without loss of generality.  To provide the reader
        !           310:                     with the relationships:
        !           311: 
        !           312:                          Transport service    [ISO8072]       [X.214]
        !           313:                          Transport protocol   [ISO8073]       [X.224]
        !           314:                          Session protocol     [ISO8327]       [X.225]
        !           315: 
        !           316: 
        !           317:       The ISO transport service definition describes the services
        !           318:       offered by the TS-provider (transport service) and the interfaces
        !           319:       used to access those services.  This memo focuses on how the ARPA
        !           320:       Transmission Control Protocol (TCP) [RFC793] can be used to offer
        !           321:       the services and provide the interfaces.
        !           322: 
        !           323: 
        !           324:       +-----------+                                       +-----------+
        !           325:       |  TS-user  |                                       |  TS-user  |
        !           326:       +-----------+                                       +-----------+
        !           327:            |                                                     |
        !           328:            | TSAP interface                       TSAP interface |
        !           329:            |  [ISO8072]                                          |
        !           330:            |                                                     |
        !           331:       +----------+   ISO Transport Services on the TCP     +----------+
        !           332:       |  client  |-----------------------------------------|  server  |
        !           333:       +----------+              (this memo)                +----------+
        !           334:            |                                                     |
        !           335:            | TCP interface                         TCP interface |
        !           336:            |  [RFC793]                                           |
        !           337:            |                                                     |
        !           338: 
        !           339: 
        !           340:       For expository purposes, the following abbreviations are used:
        !           341: 
        !           342:          TS-peer      a process which implements the protocol described
        !           343:                       by this memo
        !           344: 
        !           345:          TS-user      a process talking using the services of a TS-peer
        !           346: 
        !           347: 
        !           348: 
        !           349: 
        !           350: 
        !           351: 
        !           352: 
        !           353: M. Rose & D. Cass                                               [Page 6]
        !           354: 
        !           355: RFC 1006                                                        May 1987
        !           356: 
        !           357: 
        !           358:          TS-provider  the black-box entity implementing the protocol
        !           359:                       described by this memo
        !           360: 
        !           361: 
        !           362:       For the purposes of this memo, which describes version 2 of the
        !           363:       TSAP protocol, all aspects of [ISO8072] are supported with one
        !           364:       exception:
        !           365: 
        !           366:           Quality of Service parameters
        !           367: 
        !           368: 
        !           369:       In the spirit of CCITT, this is left "for further study".  A
        !           370:       future version of the protocol will most likely support the QOS
        !           371:       parameters for TP by mapping these onto various TCP parameters.
        !           372: 
        !           373:       The ISO standards do not specify the format of a session port
        !           374:       (termed a TSAP ID).  This memo mandates the use of the GOSIP
        !           375:       specification [GOSIP86] for the interpretation of this field.
        !           376:       (Please refer to Section 5.2, entitled "UPPER LAYERS ADDRESSING".)
        !           377: 
        !           378:       Finally, the ISO TSAP is fundamentally symmetric in behavior.
        !           379:       There is no underlying client/server model.  Instead of a server
        !           380:       listening on a well-known port, when a connection is established,
        !           381:       the TS-provider generates an INDICATION event which, presumably
        !           382:       the TS-user catches and acts upon.  Although this might be
        !           383:       implemented by having a server "listen" by hanging on the
        !           384:       INDICATION event, from the perspective of the ISO TSAP, all TS-
        !           385:       users just sit around in the IDLE state until they either generate
        !           386:       a REQUEST or accept an INDICATION.
        !           387: 
        !           388: 
        !           389: 
        !           390: 
        !           391: 
        !           392: 
        !           393: 
        !           394: 
        !           395: 
        !           396: 
        !           397: 
        !           398: 
        !           399: 
        !           400: 
        !           401: 
        !           402: 
        !           403: 
        !           404: 
        !           405: 
        !           406: 
        !           407: 
        !           408: 
        !           409: 
        !           410: 
        !           411: 
        !           412: M. Rose & D. Cass                                               [Page 7]
        !           413: 
        !           414: RFC 1006                                                        May 1987
        !           415: 
        !           416: 
        !           417: 4.  The Primitives
        !           418: 
        !           419: 
        !           420:       The protocol assumes that the TCP[RFC793] offers the following
        !           421:       service primitives:
        !           422: 
        !           423:                                     Events
        !           424: 
        !           425:          connected       - open succeeded (either ACTIVE or PASSIVE)
        !           426: 
        !           427:          connect fails   - ACTIVE open failed
        !           428: 
        !           429:          data ready      - data can be read from the connection
        !           430: 
        !           431:          errored         - the connection has errored and is now closed
        !           432: 
        !           433:          closed          - an orderly disconnection has started
        !           434: 
        !           435:                                      Actions
        !           436: 
        !           437:          listen on port  - PASSIVE open on the given port
        !           438: 
        !           439:          open port       - ACTIVE open to the given port
        !           440: 
        !           441:          read data       - data is read from the connection
        !           442: 
        !           443:          send data       - data is sent on the connection
        !           444: 
        !           445:          close           - the connection is closed (pending data is
        !           446:                            sent)
        !           447: 
        !           448: 
        !           449: This memo describes how to use these services to emulate the following
        !           450: service primitives, which are required by [ISO8073]:
        !           451: 
        !           452:                                  Events
        !           453: 
        !           454:          N-CONNECT.INDICATION
        !           455:                           - An NS-user (responder) is notified that
        !           456:                             connection establishment is in progress
        !           457: 
        !           458: 
        !           459:          N-CONNECT.CONFIRMATION
        !           460:                           - An NS-user (responder) is notified that
        !           461:                             the connection has been established
        !           462: 
        !           463:          N-DATA.INDICATION
        !           464:                           - An NS-user is notified that data can be
        !           465:                             read from the connection
        !           466: 
        !           467: 
        !           468: 
        !           469: 
        !           470: 
        !           471: M. Rose & D. Cass                                               [Page 8]
        !           472: 
        !           473: RFC 1006                                                        May 1987
        !           474: 
        !           475: 
        !           476:          N-DISCONNECT.INDICATION
        !           477:                           - An NS-user is notified that the connection
        !           478:                             is closed
        !           479: 
        !           480:                                 Actions
        !           481: 
        !           482:          N-CONNECT.REQUEST
        !           483:                           - An NS-user (initiator) indicates that it
        !           484:                             wants to establish a connection
        !           485: 
        !           486:          N-CONNECT.RESPONSE
        !           487:                           - An NS-user (responder) indicates that it
        !           488:                             will honor the request
        !           489: 
        !           490:          N-DATA.REQUEST   - An NS-user sends data
        !           491: 
        !           492:          N-DISCONNECT.REQUEST
        !           493:                           - An NS-user indicates that the connection
        !           494:                             is to be closed
        !           495: 
        !           496:       The protocol offers the following service primitives, as defined
        !           497:       in [ISO8072], to the TS-user:
        !           498: 
        !           499:                                     Events
        !           500: 
        !           501:          T-CONNECT.INDICATION
        !           502:                           - a TS-user (responder) is notified that
        !           503:                             connection establishment is in progress
        !           504: 
        !           505:          T-CONNECT.CONFIRMATION
        !           506:                           - a TS-user (initiator) is notified that the
        !           507:                             connection has been established
        !           508: 
        !           509:          T-DATA.INDICATION
        !           510:                           - a TS-user is notified that data can be read
        !           511:                             from the connection
        !           512: 
        !           513:          T-EXPEDITED DATA.INDICATION
        !           514:                           - a TS-user is notified that "expedited" data
        !           515:                             can be read from the connection
        !           516: 
        !           517:          T-DISCONNECT.INDICATION
        !           518:                           - a TS-user is notified that the connection
        !           519:                             is closed
        !           520: 
        !           521: 
        !           522: 
        !           523: 
        !           524: 
        !           525: 
        !           526: 
        !           527: 
        !           528: 
        !           529: 
        !           530: M. Rose & D. Cass                                               [Page 9]
        !           531: 
        !           532: RFC 1006                                                        May 1987
        !           533: 
        !           534: 
        !           535:                                 Actions
        !           536: 
        !           537:          T-CONNECT.REQUEST
        !           538:                           - a TS-user (initiator) indicates that it
        !           539:                             wants to establish a connection
        !           540: 
        !           541:          T-CONNECT.RESPONSE
        !           542:                           - a TS-user (responder) indicates that it
        !           543:                             will honor the request
        !           544: 
        !           545:          T-DATA.REQUEST   - a TS-user sends data
        !           546: 
        !           547:          T-EXPEDITED DATA.REQUEST
        !           548:                           - a TS-user sends "expedited" data
        !           549: 
        !           550:          T-DISCONNECT.REQUEST
        !           551:                           - a TS-user indicates that the connection
        !           552:                             is to be closed
        !           553: 
        !           554: 
        !           555: 
        !           556: 
        !           557: 
        !           558: 
        !           559: 
        !           560: 
        !           561: 
        !           562: 
        !           563: 
        !           564: 
        !           565: 
        !           566: 
        !           567: 
        !           568: 
        !           569: 
        !           570: 
        !           571: 
        !           572: 
        !           573: 
        !           574: 
        !           575: 
        !           576: 
        !           577: 
        !           578: 
        !           579: 
        !           580: 
        !           581: 
        !           582: 
        !           583: 
        !           584: 
        !           585: 
        !           586: 
        !           587: 
        !           588: 
        !           589: M. Rose & D. Cass                                              [Page 10]
        !           590: 
        !           591: RFC 1006                                                        May 1987
        !           592: 
        !           593: 
        !           594: 5.  The Protocol
        !           595: 
        !           596: 
        !           597:       The protocol specified by this memo is identical to the protocol
        !           598:       for ISO transport class 0, with the following exceptions:
        !           599: 
        !           600:             - for testing purposes, initial data may be exchanged
        !           601:               during connection establishment
        !           602: 
        !           603:             - for testing purposes, an expedited data service is
        !           604:               supported
        !           605: 
        !           606:             - for performance reasons, a much larger TSDU size is
        !           607:               supported
        !           608: 
        !           609:             - the network service used by the protocol is provided
        !           610:               by the TCP
        !           611: 
        !           612: 
        !           613:       The ISO transport protocol exchanges information between peers in
        !           614:       discrete units of information called transport protocol data units
        !           615:       (TPDUs).  The protocol defined in this memo encapsulates these
        !           616:       TPDUs in discrete units called TPKTs.  The structure of these
        !           617:       TPKTs and their relationship to TPDUs are discussed in the next
        !           618:       section.
        !           619: 
        !           620:       PRIMITIVES
        !           621: 
        !           622:          The mapping between the TCP service primitives and the service
        !           623:          primitives expected by transport class 0 are quite straight-
        !           624:          forward:
        !           625: 
        !           626:                    network service              TCP
        !           627:                    ---------------              ---
        !           628:                    CONNECTION ESTABLISHMENT
        !           629: 
        !           630:                        N-CONNECT.REQUEST        open completes
        !           631: 
        !           632:                        N-CONNECT.INDICATION     listen (PASSIVE open)
        !           633:                                                 finishes
        !           634: 
        !           635:                        N-CONNECT.RESPONSE       listen completes
        !           636: 
        !           637:                        N-CONNECT.CONFIRMATION   open (ACTIVE open)
        !           638:                                                 finishes
        !           639: 
        !           640:                    DATA TRANSFER
        !           641: 
        !           642:                        N-DATA.REQUEST           send data
        !           643: 
        !           644:                        N-DATA.INDICATION        data ready followed by
        !           645: 
        !           646: 
        !           647: 
        !           648: M. Rose & D. Cass                                              [Page 11]
        !           649: 
        !           650: RFC 1006                                                        May 1987
        !           651: 
        !           652: 
        !           653:                                                 read data
        !           654: 
        !           655:                    CONNECTION RELEASE
        !           656: 
        !           657:                        N-DISCONNECT.REQUEST     close
        !           658: 
        !           659:                        N-DISCONNECT.INDICATION  connection closes or
        !           660:                                                 errors
        !           661: 
        !           662:           Mapping parameters is also straight-forward:
        !           663: 
        !           664:                      network service             TCP
        !           665:                      ---------------             ---
        !           666:                      CONNECTION RELEASE
        !           667: 
        !           668:                          Called address          server's IP address
        !           669:                                                  (4 octets)
        !           670: 
        !           671:                          Calling address         client's IP address
        !           672:                                                  (4 octets)
        !           673: 
        !           674:                          all others              ignored
        !           675: 
        !           676:                       DATA TRANSFER
        !           677: 
        !           678:                          NS-user data (NSDU)     data
        !           679: 
        !           680:                       CONNECTION RELEASE
        !           681: 
        !           682:                          all parameters          ignored
        !           683: 
        !           684: 
        !           685: 
        !           686:       CONNECTION ESTABLISHMENT
        !           687: 
        !           688:           The elements of procedure used during connection establishment
        !           689:           are identical to those presented in [ISO8073], with three
        !           690:           exceptions.
        !           691: 
        !           692:           In order to facilitate testing, the connection request and
        !           693:           connection confirmation TPDUs may exchange initial user data,
        !           694:           using the user data fields of these TPDUs.
        !           695: 
        !           696:           In order to experiment with expedited data services, the
        !           697:           connection request and connection confirmation TPDUs may
        !           698:           negotiate the use of expedited data transfer using the
        !           699:           negotiation mechanism specified in [ISO8073] is used (e.g.,
        !           700:           setting the "use of transport expedited data transfer service"
        !           701:           bit in the "Additional Option Selection" variable part). The
        !           702:           default is not to use the transport expedited data transfer
        !           703:           service.
        !           704: 
        !           705: 
        !           706: 
        !           707: M. Rose & D. Cass                                              [Page 12]
        !           708: 
        !           709: RFC 1006                                                        May 1987
        !           710: 
        !           711: 
        !           712:           In order to achieve good performance, the default TPDU size is
        !           713:           65531 octets, instead of 128 octets.  In order to negotiate a
        !           714:           smaller (standard) TPDU size, the negotiation mechanism
        !           715:           specified in [ISO8073] is used (e.g., setting the desired bit
        !           716:           in the "TPDU Size" variable part).
        !           717: 
        !           718:           To perform an N-CONNECT.REQUEST action, the TS-peer performs
        !           719:           an active open to the desired IP address using TCP port 102.
        !           720:           When the TCP signals either success or failure, this results
        !           721:           in an N-CONNECT.INDICATION action.
        !           722: 
        !           723:           To await an N-CONNECT.INDICATION event, a server listens on
        !           724:           TCP port 102.  When a client successfully connects to this
        !           725:           port, the event occurs, and an implicit N-CONNECT.RESPONSE
        !           726:           action is performed.
        !           727: 
        !           728:               NOTE:      In most implementations, a single server will
        !           729:                          perpetually LISTEN on port 102, handing off
        !           730:                          connections as they are made
        !           731: 
        !           732: DATA TRANSFER
        !           733: 
        !           734:       The elements of procedure used during data transfer are identical
        !           735:       to those presented in [ISO8073], with one exception: expedited
        !           736:       data may be supported (if so negotiated during connection
        !           737:       establishment) by sending a modified ED TPDU (described below).
        !           738:       The TPDU is sent on the same TCP connection as all of the other
        !           739:       TPDUs. This method, while not faithful to the spirit of [ISO8072],
        !           740:       is true to the letter of the specification.
        !           741: 
        !           742:       To perform an N-DATA.REQUEST action, the TS-peer constructs the
        !           743:       desired TPKT and uses the TCP send data primitive.
        !           744: 
        !           745:       To trigger an N-DATA.INDICATION action, the TCP indicates that
        !           746:       data is ready and a TPKT is read using the TCP read data
        !           747:       primitive.
        !           748: 
        !           749: CONNECTION RELEASE
        !           750: 
        !           751:    To perform an N-DISCONNECT.REQUEST action, the TS-peer simply closes
        !           752:    the TCP connection.
        !           753: 
        !           754:    If the TCP informs the TS-peer that the connection has been closed or
        !           755:    has errored, this indicates an N-DISCONNECT.INDICATION event.
        !           756: 
        !           757: 
        !           758: 
        !           759: 
        !           760: 
        !           761: 
        !           762: 
        !           763: 
        !           764: 
        !           765: 
        !           766: M. Rose & D. Cass                                              [Page 13]
        !           767: 
        !           768: RFC 1006                                                        May 1987
        !           769: 
        !           770: 
        !           771: 6.  Packet Format
        !           772: 
        !           773: 
        !           774:       A fundamental difference between the TCP and the network service
        !           775:       expected by TP0 is that the TCP manages a continuous stream of
        !           776:       octets, with no explicit boundaries.  The TP0 expects information
        !           777:       to be sent and delivered in discrete objects termed network
        !           778:       service data units (NSDUs).  Although other classes of transport
        !           779:       may combine more than one TPDU inside a single NSDU, transport
        !           780:       class 0 does not use this facility.  Hence, an NSDU is identical
        !           781:       to a TPDU for the purposes of our discussion.
        !           782: 
        !           783:       The protocol described by this memo uses a simple packetization
        !           784:       scheme in order to delimit TPDUs.  Each packet, termed a TPKT, is
        !           785:       viewed as an object composed of an integral number of octets, of
        !           786:       variable length.
        !           787: 
        !           788:           NOTE:       For the purposes of presentation, these objects are
        !           789:                       shown as being 4 octets (32 bits wide).  This
        !           790:                       representation is an artifact of the style of this
        !           791:                       memo and should nto be interpreted as requiring
        !           792:                       that a TPKT be a multiple of 4 octets in length.
        !           793: 
        !           794:       A TPKT consists of two parts:  a packet-header and a TPDU.  The
        !           795:       format of the header is constant regardless of the type of packet.
        !           796:       The format of the packet-header is as follows:
        !           797: 
        !           798:         0                   1                   2                   3
        !           799:         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
        !           800:        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        !           801:        |      vrsn     |    reserved   |          packet length        |
        !           802:        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        !           803: 
        !           804:       where:
        !           805: 
        !           806:       vrsn                         8 bits
        !           807: 
        !           808:       This field is always 3 for the version of the protocol described in
        !           809:       this memo.
        !           810: 
        !           811:       packet length                16 bits (min=7, max=65535)
        !           812: 
        !           813:       This field contains the length of entire packet in octets,
        !           814:       including packet-header.  This permits a maximum TPDU size of
        !           815:       65531 octets.  Based on the size of the data transfer (DT) TPDU,
        !           816:       this permits a maximum TSDU size of 65524 octets.
        !           817: 
        !           818:       The format of the TPDU is defined in [ISO8073].  Note that only
        !           819:       TPDUs formatted for transport class 0 are exchanged (different
        !           820:       transport classes may use slightly different formats).
        !           821: 
        !           822: 
        !           823: 
        !           824: 
        !           825: M. Rose & D. Cass                                              [Page 14]
        !           826: 
        !           827: RFC 1006                                                        May 1987
        !           828: 
        !           829: 
        !           830:       To support expedited data, a non-standard TPDU, for expedited data
        !           831:       is permitted.  The format used for the ED TPDU is nearly identical
        !           832:       to the format for the normal data, DT, TPDU.  The only difference
        !           833:       is that the value used for the TPDU's code is ED, not DT:
        !           834: 
        !           835:        0                   1                   2                   3
        !           836:        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
        !           837:       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        !           838:       | header length | code  |credit |TPDU-NR and EOT|   user data   |
        !           839:       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        !           840:       |      ...      |      ...      |      ...      |      ...      |
        !           841:       |      ...      |      ...      |      ...      |      ...      |
        !           842:       |      ...      |      ...      |      ...      |      ...      |
        !           843:       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        !           844: 
        !           845:       After the credit field (which is always ZERO on output and ignored
        !           846:       on input), there is one additional field prior to the user data.
        !           847: 
        !           848:       TPDU-NR and EOT         8 bits
        !           849: 
        !           850:       Bit 7 (the high-order bit, bit mask 1000 0000) indicates the end
        !           851:       of a XSDU (expedited TSDU).  All other bits should be ZERO on
        !           852:       output and ignored on input.
        !           853: 
        !           854:       Note that the TP specification limits the size of an expedited
        !           855:       transport service data unit (XSDU) to 16 octets.
        !           856: 
        !           857: 
        !           858: 
        !           859: 
        !           860: 
        !           861: 
        !           862: 
        !           863: 
        !           864: 
        !           865: 
        !           866: 
        !           867: 
        !           868: 
        !           869: 
        !           870: 
        !           871: 
        !           872: 
        !           873: 
        !           874: 
        !           875: 
        !           876: 
        !           877: 
        !           878: 
        !           879: 
        !           880: 
        !           881: 
        !           882: 
        !           883: 
        !           884: M. Rose & D. Cass                                              [Page 15]
        !           885: 
        !           886: RFC 1006                                                        May 1987
        !           887: 
        !           888: 
        !           889: 7.  Comments
        !           890: 
        !           891: 
        !           892:       Since the release of RFC983 in April of 1986, we have gained much
        !           893:       experience in using ISO transport services on top of the TCP.  In
        !           894:       September of 1986, we introduced the use of version 2 of the
        !           895:       protocol, based mostly on comments from the community.
        !           896: 
        !           897:       In January of 1987, we observed that the differences between
        !           898:       version 2 of the protocol and the actual transport class 0
        !           899:       definition were actually quite small.  In retrospect, this
        !           900:       realization took much longerr than it should have:  TP0 is is
        !           901:       meant to run over a reliable network service, e.g., X.25. The TCP
        !           902:       can be used to prrvide a service of this type, and, if no one
        !           903:       complains to loudly, one could state that this memo really just
        !           904:       describes a method for encapsulating TPO inside of TCP!
        !           905: 
        !           906:       The changes in going from version 1 of the protocol to version 2
        !           907:       and then to version 3 are all relatively small. Initially, in
        !           908:       describing version 1, we decided to use the TPDU formats from the
        !           909:       ISO transport protocol.  This naturally led to the evolution
        !           910:       described above.
        !           911: 
        !           912: 
        !           913: 
        !           914: 
        !           915: 
        !           916: 
        !           917: 
        !           918: 
        !           919: 
        !           920: 
        !           921: 
        !           922: 
        !           923: 
        !           924: 
        !           925: 
        !           926: 
        !           927: 
        !           928: 
        !           929: 
        !           930: 
        !           931: 
        !           932: 
        !           933: 
        !           934: 
        !           935: 
        !           936: 
        !           937: 
        !           938: 
        !           939: 
        !           940: 
        !           941: 
        !           942: 
        !           943: M. Rose & D. Cass                                              [Page 16]
        !           944: 
        !           945: RFC 1006                                                        May 1987
        !           946: 
        !           947: 
        !           948: 8. References
        !           949: 
        !           950: 
        !           951:    [GOSIP86]    The U.S. Government OSI User's Committee.
        !           952:                 "Government Open Systems Interconnection Procurement
        !           953:                 (GOSIP) Specification for Fiscal years 1987 and
        !           954:                 1988." (December, 1986) [draft status]
        !           955: 
        !           956:    [ISO8072]    ISO.
        !           957:                 "International Standard 8072.  Information Processing
        !           958:                 Systems -- Open Systems Interconnection: Transport
        !           959:                 Service Definition."
        !           960:                 (June, 1984)
        !           961: 
        !           962:    [ISO8073]    ISO.
        !           963:                 "International Standard 8073.  Information Processing
        !           964:                 Systems -- Open Systems Interconnection: Transport
        !           965:                 Protocol Specification."
        !           966:                 (June, 1984)
        !           967: 
        !           968:    [ISO8327]    ISO.
        !           969:                 "International Standard 8327.  Information Processing
        !           970:                 Systems -- Open Systems Interconnection: Session
        !           971:                 Protocol Specification."
        !           972:                 (June, 1984)
        !           973: 
        !           974:    [RFC791]     Internet Protocol.
        !           975:                 Request for Comments 791 (MILSTD 1777)
        !           976:                 (September, 1981)
        !           977: 
        !           978:    [RFC793]     Transmission Control Protocol.
        !           979:                 Request for Comments 793 (MILSTD 1778)
        !           980:                 (September, 1981)
        !           981: 
        !           982:    [RFC983]     ISO Transport Services on Top of the TCP.
        !           983:                 Request for Comments 983
        !           984:                 (April, 1986)
        !           985: 
        !           986:    [X.214]      CCITT.
        !           987:                 "Recommendation X.214.  Transport Service Definitions
        !           988:                 for Open Systems Interconnection (OSI) for CCITT
        !           989:                 Applications."
        !           990:                 (October, 1984)
        !           991: 
        !           992:    [X.224]      CCITT.
        !           993:                 "Recommendation X.224.  Transport Protocol
        !           994:                 Specification for Open Systems Interconnection (OSI)
        !           995:                 for CCITT Applications." (October, 1984)
        !           996: 
        !           997: 
        !           998: 
        !           999: 
        !          1000: 
        !          1001: 
        !          1002: M. Rose & D. Cass                                              [Page 17]
        !          1003: 
        !          1004: RFC 1006                                                        May 1987
        !          1005: 
        !          1006: 
        !          1007:    [X.225]      CCITT.
        !          1008:                 "Recommendation X.225.  Session Protocol Specification
        !          1009:                 for Open Systems Interconnection (OSI) for CCITT
        !          1010:                 Applications."
        !          1011:                 (October, 1984)
        !          1012: 
        !          1013: 
        !          1014: 
        !          1015: 
        !          1016: 
        !          1017: 
        !          1018: 
        !          1019: 
        !          1020: 
        !          1021: 
        !          1022: 
        !          1023: 
        !          1024: 
        !          1025: 
        !          1026: 
        !          1027: 
        !          1028: 
        !          1029: 
        !          1030: 
        !          1031: 
        !          1032: 
        !          1033: 
        !          1034: 
        !          1035: 
        !          1036: 
        !          1037: 
        !          1038: 
        !          1039: 
        !          1040: 
        !          1041: 
        !          1042: 
        !          1043: 
        !          1044: 
        !          1045: 
        !          1046: 
        !          1047: 
        !          1048: 
        !          1049: 
        !          1050: 
        !          1051: 
        !          1052: 
        !          1053: 
        !          1054: 
        !          1055: 
        !          1056: 
        !          1057: 
        !          1058: 
        !          1059: 
        !          1060: 
        !          1061: M. Rose & D. Cass                                              [Page 18]
        !          1062: 

unix.superglobalmegacorp.com

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