Annotation of 43BSDReno/contrib/isode-beta/doc/rfcs/rfc1006.txt, revision 1.1.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.