NETBLT: A bulk data transfer protocol
RFC 969

Document Type RFC - Unknown (December 1985; No errata)
Obsoleted by RFC 998
Last updated 2013-03-02
Stream Legacy
Formats plain text html pdf htmlized bibtex
Stream Legacy state (None)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state RFC 969 (Unknown)
Telechat date
Responsible AD (None)
Send notices to (None)
Network Working Group                                     David D. Clark
Request for Comments: 969                                Mark L. Lambert
                                                             Lixia Zhang
                                M. I. T. Laboratory for Computer Science
                                                           December 1985

                 NETBLT: A Bulk Data Transfer Protocol


   This RFC suggests a proposed protocol for the ARPA-Internet
   community, and requests discussion and suggestions for improvements.
   This is a preliminary discussion of the NETBLT protocol.  It is
   published for discussion and comment, and does not constitute a
   standard.  As the proposal may change, implementation of this
   document is not advised.  Distribution of this memo is unlimited.


   NETBLT (Network Block Transfer) is a transport level protocol
   intended for the rapid transfer of a large quantity of data between
   computers. It provides a transfer that is reliable and flow
   controlled, and is structured to provide maximum throughput over a
   wide variety of networks.

   The protocol works by opening a connection between two clients the
   sender and the receiver), transferring the data in a series of large
   data aggregates called buffers, and then closing the connection.
   Because the amount of data to be transferred can be arbitrarily
   large, the client is not required to provide at once all the data to
   the protocol module.  Instead, the data is provided by the client in
   buffers.  The NETBLT layer transfers each buffer as a sequence of
   packets, but since each buffer is composed of a large number of
   packets, the per-buffer interaction between NETBLT and its client is
   far more efficient than a per-packet interaction would be.

   In its simplest form, a NETBLT transfer works as follows.  The
   sending client loads a buffer of data and calls down to the NETBLT
   layer to transfer it.  The NETBLT layer breaks the buffer up into
   packets and sends these packets across the network in Internet
   datagrams.  The receiving NETBLT layer loads these packets into a
   matching buffer provided by the receiving client.  When the last
   packet in the buffer has been transmitted, the receiving NETBLT
   checks to see that all packets in that buffer have arrived.  If some
   packets are missing, the receiving NETBLT requests that they be
   resent.  When the buffer has been completely transmitted, the
   receiving client is notified by its NETBLT layer.  The receiving
   client disposes of the buffer and provides a new buffer to receive
   more data.  The receiving NETBLT notifies the sender that the buffer
   arrived, and the sender prepares and sends the next buffer in the

Clark & Lambert & Zhang                                         [Page 1]

RFC 969                                                    December 1985
NETBLT: A Bulk Data Transfer Protocol

   same manner.  This continues until all buffers have been sent, at
   which time the sender notifies the receiver that the transmission has
   been completed.  The connection is then closed.

   As described above, the NETBLT protocol is "lock-step"; action is
   halted after a buffer is transmitted, and begins again after
   confirmation is received from the receiver of data.  NETBLT provides
   for multiple buffering, in which several buffers can be transmitted
   concurrently.  Multiple buffering makes packet flow essentially
   continuous and can improve performance markedly.

   The remainder of this document describes NETBLT in detail.  The next
   sections describe the philosophy behind a number of protocol
   features: packetization, flow control, reliability, and connection
   management. The final sections describe the protocol format.


   NETBLT is designed to permit transfer of an essentially arbitrary
   amount of data between two clients.  During connection setup the
   sending NETBLT can optionally inform the receiving NETBLT of the
   transfer size; the maximum transfer length is imposed by the field
   width, and is 2**32 bytes.  This limit should permit any practical
   application.  The transfer size parameter is for the use of the
   receiving client; the receiving NETBLT makes no use of it.  A NETBLT
   receiver accepts data until told by the sender that the transfer is

   The data to be sent must be broken up into buffers by the client.
   Each buffer must be the same size, save for the last buffer.  During
   connection setup, the sending and receiving NETBLTs negotiate the
   buffer size, based on limits provided by the clients.  Buffer sizes
   are in bytes only; the client is responsible for breaking up data
   into buffers on byte boundaries.

   NETBLT has been designed and should be implemented to work with
   buffers of arbitrary size.  The only fundamental limitation on buffer
   size should be the amount of memory available to the client.  Buffers
Show full document text