summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc264.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc264.txt')
-rw-r--r--doc/rfc/rfc264.txt507
1 files changed, 507 insertions, 0 deletions
diff --git a/doc/rfc/rfc264.txt b/doc/rfc/rfc264.txt
new file mode 100644
index 0000000..19df973
--- /dev/null
+++ b/doc/rfc/rfc264.txt
@@ -0,0 +1,507 @@
+
+
+
+
+
+
+Network Working Group A. Bhushan
+Request for Comments: 264 MIT
+NIC: 7812 B. Braden
+ UCLA
+ W. Crowther
+ BBN
+ E. Harslem
+ J. Heafner
+ Rand
+ A. McKenzie
+ BBN
+ J. Melvin
+ SRI
+ B. Sundberg
+ Harvard
+ D. Watson
+ SRI
+ J. White
+ UCSB
+ 15 November 1971
+
+
+ THE DATA TRANSFER PROTOCOL
+
+ This paper is a revision of RFC 171, NIC 6793. The changes to RFC
+ 171 are given below. The protocol is then restated for your
+ convenience.
+
+CHANGES TO RFC 171
+
+ 1) The sequence number field is changed to 16 bits in the error (Type
+ B5) transactions, thus resolving the ambiguity in the previous
+ specification. In addition, the information separators (Type B4)
+ transactions shall also contain a 16-bit sequence number field.
+
+ 2) The modes available (Type B3) transactions shall define only the
+ modes available for receive, instead of both receive and send. In
+ simplex connections modes available transactions should not be
+ sent as they are meaningless. In full-duplex connections, the
+ modes available transactions are still required.
+
+ 3) The code assignments for "End Code" in information separators and
+ for "function" in abort transactions have been changed to reflect
+ a numerical order rather than "bit-coding".
+
+ 4) Minor editorial changes.
+
+
+
+
+
+Bhushan, et. al. [Page 1]
+
+RFC 264 The Data Transfer Protocol 15 November 1971
+
+
+I. INTRODUCTION
+
+ A common protocol is desirable for data transfer in such diverse
+ applications as remote job entry, file transfer, network mail
+ system, graphics, remote program execution, and communication with
+ block data terminals (such as printers, card, paper tape, and
+ magnetic tape equipment, especially in context of terminal IMPs).
+ Although it would be possible to include some or even all of the
+ above applications in an all-inclusive file transfer protocol, a
+ separation between data transfer and application functions may
+ provide flexibility in implementation, and reduce complexity.
+ Separating the data transfer function from the specific
+ applications functions may also reduce proliferation of programs
+ and protocols.
+
+ We have therefore defined a data transfer protocol (DTP) which
+ should be used for transfer of data in file transfer, remote job
+ entry, and other applications protocols. This paper concerns
+ itself only with the data transfer protocol. A companion paper
+ (RFC 265) describes the file transfer protocol.
+
+II. DISCUSSION
+
+ The data transfer protocol (DTP) serves three basic functions. It
+ provides for convenient separation of NCP messages into "logical"
+ blocks (transactions, units, records, groups, and files), it
+ allows for the separation of data and control information, and it
+ includes some error control mechanisms.
+
+Transfer Modes
+
+ Three modes of separating messages into transactions [1] are
+ allowed by DTP. The first is an indefinite bit stream which
+ terminates only when the connection is closed (i.e., the bit
+ stream represents a single transaction for duration of
+ connection). This mode would be useful in data transfer between
+ hosts and terminal IMPs (TIPs).
+
+ The second mode utilizes a "transparent" block convention, similar
+ to the ASCII DLE (Data Link Escape) convention. In "transparent"
+ mode, transactions (which may be arbitrarily long) end whenever
+ the character sequence DLE ETX is encountered (DLE and ETX are 8-
+ bit character codes). To prevent the possibility of a DLE ETX
+ sequence occurring within data stream, any occurrence of DLE is
+ replaced by DLE DLE on transmission. The extra DLE is stripped on
+ reception. A departure from the ASCII convention is that
+
+
+
+
+
+Bhushan, et. al. [Page 2]
+
+RFC 264 The Data Transfer Protocol 15 November 1971
+
+
+ "transparent" block does not begin with DLE STX, but with a
+ transaction type byte. This mode would be useful in data transfer
+ between terminal IMPs.
+
+ The third mode utilizes a count mechanism. Each transaction
+ begins with a fixed-length descriptor field containing separate
+ binary counts of information bits and filler (i.e., not
+ information) bits. If a transaction has no filler bits, its
+ filler count is zero. This mode would be useful in most host-to-
+ host data transfer applications.
+
+ DTP allows for transfer modes to be intermixed over the same
+ connection (i.e., the transfer mode is not associated with
+ connection, but only with transaction). The transfer modes can
+ represent transfer of either data or control information. The
+ protocol allows for separating data and control information at a
+ lower level, by providing different "type" codes (see
+ SPECIFICATIONS) for data and control transactions. This provision
+ may simplify some implementations.
+
+ The implementation of a subset of transfer modes is specifically
+ permitted by DTP. To provide compatibility between hosts using
+ different subsets of transfer modes, an initial "handshake"
+ procedure may be used. The handshake involves exchanging
+ information on modes available for receive. This will enable host
+ programs to agree on transfer modes acceptable for a connection.
+
+Using DTP
+
+ The manner in which DTP is used would depend largely on the
+ applications protocol. It is the applications protocol which
+ defines the use of transfer modes and the use of information
+ separator and abort functions provided in DTP (see
+ SPECIFICATIONS). For example, in a remote job entry protocol,
+ aborts may be used to stop the execution of a job, while they may
+ not cause any action in another applications protocol.
+
+ It should also be noted that DTP does not define a data transfer
+ service. There is no standard server socket, or initial
+ connection protocol defined for DTP. What DTP defines is a
+ mechanism for data transfer which can be used to provide services
+ for block data transfers, file transfers, remote job entry,
+ network mail and other applications.
+
+ There are to be no restrictions on the manner in which DTP is
+ implemented at various sites. For example, DTP may be imbedded in
+ an applications program such as for file transfer, or it may be a
+ separate service program or subroutine used by several
+
+
+
+Bhushan, et. al. [Page 3]
+
+RFC 264 The Data Transfer Protocol 15 November 1971
+
+
+ applications programs. Another implementation may employ macros
+ or UUO's (unimplemented user operations on PDP-10's), to achieve
+ the functions specified in DTP. It is also possible that in
+ implementation, the separation between the DTP and applications
+ protocols be only at a conceptual level.
+
+III. SPECIFICATIONS
+
+ 1. Byte Size for Network Connection
+
+ The standard byte size for network connections using DTP is 8
+ bits. However, other byte sizes specified by applications
+ protocols are also allowed by DTP. For the purpose of this
+ document bytes are assumed to be 8-bits, unless otherwise
+ stated.
+
+ 2. Transactions
+
+ At DTP level, all information transmitted over a connection is
+ a sequence of transactions. DTP defines the rules for
+ delimiting transactions.
+
+ 2A. Types
+
+ The first 8-bit byte of each transaction shall define a
+ transaction type, as shown below. (Note that code assignments
+ do not conflict with assignments in TELNET protocol.) The
+ transaction types will be referred to by the hexadecimal code
+ assigned to them. (The transaction types are discussed in more
+ detail in Section 2B.)
+
+ Code Transaction Type
+ Hex Octal
+
+ B0 260 Indefinite bit stream -- data.
+ B1 261 Transparent (DLE) block--data.
+ B2 262 Descriptor and counts--data.
+ B3 263 Modes available (handshake).
+ B4 264 Information Separators.
+ B5 265 Error codes.
+ B6 266 Abort.
+ B7 267 No operation (NoOp).
+ B8 270 Indefinite bit stream--control.
+ B9 271 Transparent (DLE) block--control.
+ BA 272 Descriptor and counts--control.
+ BB 273
+ through through Unassigned but reserved for DTP.
+ BF 277
+
+
+
+Bhushan, et. al. [Page 4]
+
+RFC 264 The Data Transfer Protocol 15 November 1971
+
+
+ 2B. Syntax and Semantics
+
+ 2B.1 Type B0 and B8 (indefinite bitstream modes) transactions
+ terminate only when the NCP connection is "closed". There is
+ no other escape convention defined in DTP at this level. It
+ should be noted that the closing of a connection in bitstream
+ mode is an implicit file separator (see Section 2B.5).
+
+ 2B.2 Type B1 and B9 (transparent block modes) transactions terminate
+ when the byte sequence DLE ETX is encountered. The sender
+ shall replace any occurrence of DLE in data stream by the
+ sequence DLE DLE. The receiver shall strip the extra DLE. The
+ transaction is assumed to be byte-oriented. The code for DLE
+ is Hex '90' or Octal '220' (this is different from the ASCII
+ DLE which is Hex '10' or Octal '020). [2] ETX is Hex '03' or
+ Octal '03' (the same as ASCII ETX).
+
+ 2B.3 Type B2 and BA (descriptor and counts modes) transactions have
+ three fields, a 9-byte (72-bit) descriptor field (as shown
+ below) and variable length (including zero) info and filler
+ fields. The total length of a transaction is (72+info+filler)
+ bits.
+
+ |<B2 or BA>|<Info count>| <NUL> <Sequence #>| <NUL> |<filler count>|
+ |<-8-bit-> |<--24-bit-->|<8-bit><--16-bit-->|<8-bit>|<---8-bit---->|
+ |<--------------------72-bit descriptor field--------------------->|
+
+ _Info count_ is a binary count of the number of bits in the
+ info field, not including descriptor or filler bits. The
+ number of info bits is limited to (2**24 - 1), as there are 24
+ bits in info count field.
+
+ _Sequence #_ is a sequential count in round-robin manner of B2,
+ BA, and B4 type transactions. The inclusion of sequence
+ numbers will help in debugging and error control, as sequence
+ numbers may be used to check for missing transactions and aid
+ in locating errors. Hosts not wishing to implement this
+ mechanism should have all 1's in the field. The count shall
+ start from zero and continue sequentially to all 1's, after
+ which it is reset to all zeros. The permitted sequence numbers
+ are one greater than the previous, all 1's, and zero for the
+ first transaction only.
+
+ _Filler count_ is a binary count of bits used as fillers (i.e.,
+ not information) after the end of meaningful data. Number of
+ filler bits is limited to 255, as there are 8 bits in filler
+ count field.
+
+
+
+
+Bhushan, et. al. [Page 5]
+
+RFC 264 The Data Transfer Protocol 15 November 1971
+
+
+ The NUL bytes must contain all 0's.
+
+ 2B.4 Type B3 (modes available) transactions have a fixed length of
+ two bytes, as shown below. First byte defines the transaction
+ type B3, and second byte defines the transfer modes available
+ for receive.
+
+ +-----------------+---------------------+
+ |Type | I receive |
+ | B3 | |
+ | |0|0|BA|B2|B9|B1|B8|B0|
+ +-----------------+---------------------+
+
+ The modes are indicated by bit-coding, as shown above. The
+ particular bits, if set to logical "1", indicate that the
+ corresponding modes are handled by the sender's receive side.
+ The two most significant bits should be set to logical "0".
+ Mode available transactions have no significance in a simplex
+ connection. The use of type B3 transactions is discussed in
+ section 3B.
+
+ 2B.5 Type B4 (information separator) transactions have a fixed
+ length of four bytes, as shown below. First byte defines the
+ transaction type B4, second byte defines the separator, and
+ third and fourth bytes contain a 16-bit sequence number.
+
+ +------------+------------+-------------------------+
+ |Type | End Code | Sequence Number |
+ | B4 | | | |
+ | | | | |
+ +------------+------------+------------+------------+
+
+ The following separator codes are assigned:
+
+ Code Meaning
+ Hex Octal
+
+ 01 001 Unit separator
+ 02 002 Record separator
+ 03 003 Group separator
+ 04 004 File separator
+
+ Files, groups, records, and units may be data blocks that a
+ user defines to be so. The only restriction is that of the
+ hierarchical relationship File>Groups>Records>Units (where '>'
+ means 'contains'). Thus a file separator marks not only the
+ end of file, but also the end of group, record, and unit.
+
+
+
+
+Bhushan, et. al. [Page 6]
+
+RFC 264 The Data Transfer Protocol 15 November 1971
+
+
+ These separators may provide a convenient "logical" separation
+ of data at the data transfer level. Their use is governed by
+ the applications protocol.
+
+ 2B.6 Type B5 (error codes) transactions have a fixed length of four
+ bytes, as shown below. First byte defines the transaction type
+ B5, second byte indicates an error code, and third and fourth
+ bytes may indicate the sequence number of a transaction in
+ which an error occurred.
+
+ +------------+------------+-------------------------+
+ |Type | End Code | Sequence Number |
+ | B5 | | | |
+ | | | | |
+ +------------+------------+------------+------------+
+
+ The following error codes are assigned:
+
+ Error Code Meaning
+ Hex Octal
+
+ 00 000 Undefined error
+ 01 001 Out of sync. (type code other
+ than B0 through BF).
+ 02 002 Broken sequence (the sequence # field
+ contains the first expected but not
+ received sequence number).
+ 03 003 Illegal DLF sequence (other than DLE
+ DLE or DLE FTX).
+ B0 260
+ through through The transaction type (indicated by
+ BF 277 by error code) is not implemented.
+
+ The error code transaction is defined only for the purpose of
+ error control. DTP does not require the receiver of an error
+ code to take any recovery action. The receiver may discard the
+ error code transaction. In addition, DTP does not require that
+ sequence numbers be remembered or transmitted.
+
+ 2B.7 Type B6 (abort) transactions have a fixed length of two bytes,
+ as shown below. First byte defines the transaction type B6,
+ and second byte defines the abort function.
+
+ +------------+------------+
+ |Type | Function |
+ | B6 | |
+ | | |
+ +------------+------------+
+
+
+
+Bhushan, et. al. [Page 7]
+
+RFC 264 The Data Transfer Protocol 15 November 1971
+
+
+ The following abort codes are assigned:
+
+ Abort Code Meaning
+ Hex Octal
+
+ 00 000 Abort preceding transaction
+ 01 001 Abort preceding unit
+ 02 002 Abort preceding record
+ 03 003 Abort preceding group
+ 04 004 Abort preceding file
+
+ DTP does not require the receiver of an abort to take specific
+ action, therefore a sender should not make any assumptions
+ thereof. The manner in which abort is handled is to be
+ specified by higher-level applications protocols.
+
+ 2B.8 Type B7 (NoOp) transactions are one byte (8-bit) long, and
+ indicate no operation. These may be useful as fillers when the
+ byte size used for network connections is other than 8-bits.
+
+ 3. Initial Connection, Handshake and Error Recovery
+
+ 3A. DTP does not specify the mechanism used in establishing
+ connections. It is up to the applications protocol (e.g., file
+ transfer protocol) to choose the mechanism which suits its
+ requirements. [3]
+
+ 3B. The first transaction after a full-duplex connection is made
+ will be type B3 (modes available) indicating the transfer modes
+ available for receive. The modes available (Type B3)
+ transaction is not applicable in simplex connections. It is
+ the sender's responsibility to choose a mode acceptable to the
+ receiver. [4] If an acceptable mode is not available or if
+ mode chosen is not acceptable, the connection may be closed.
+
+ 3C. No error recovery mechanisms are specified by DTP. The
+ applications protocol may implement error recovery and further
+ error control mechanisms.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Bhushan, et. al. [Page 8]
+
+RFC 264 The Data Transfer Protocol 15 November 1971
+
+
+Endnotes
+
+ [1] The term transaction is used here to mean a block of data
+ defined by the transfer mode.
+
+ [2] This assignment was made to be consistent with the TELNET
+ philosophy of maintaining the integrity of the 128 Network ASCII
+ characters.
+
+ [3] It is, however, recommended that the standard Initial Connection
+ Protocol as specified in RFC 165 or any subsequent standard document
+ be adopted where feasible.
+
+ [4] It is suggested that when available, the sender should choose
+ 'descriptor and count' mode (Type B2 or BA). The 'indefinite
+ bitstream' mode (Type B0 or B8) should be chosen only when the other
+ two modes are not available.
+
+
+
+
+
+
+
+
+
+ [ This RFC was put into machine readable form for entry ]
+ [ into the online RFC archives by Ryan Kato 6/01 ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Bhushan, et. al. [Page 9]
+