RFC 238 UNKNOWN PROTOCOLS · FILE TRANSFER

Comments on DTP and FTP proposals

Feedback on early draft file transfer and data transfer protocols.

On rfc-editor.org ↗
PUBLISHED
September 1971
AUTHORS
R.T. Braden
STREAM
Legacy
BUILDS ON
RFC 171 — The Data Transfer Protocol, RFC 172 — FTP
DOI
10.17487/RFC0238

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                        R. T. Braden
Request for Comments #238                                    UCLA-CCN
NIC #7663                                                    September 29, 1971
Category:
Updates: RFC #171, RFC #172

                   COMMENTS ON DTP AND FTP PROPOSALS

   Data Transfer Protocol
   ----------------------

   1. In the Descriptor/Count mode, the Information Separators should
   have a transaction sequence number field.  Otherwise, the receiver
   cannot be sure he received all transactions before the separation.
   This requires that there be two forms of information separators, one
   for Descriptor/Count mode, the other for the DLE mode.

   2. The modes-available handshake should not be mandatory, as it makes
   no sense in the simplex case.  The receiver doesn't care what modes
   the transmitter _might_ use; he only cares what mode _is_ used, which
   he discovers when the first data or control transaction arrives.  Even
   in the duplex case, it is not clear what use the receiver should make
   of the modes-available information from the transmitter.

   File Transfer Protocol
   ----------------------

   1. The protocol allows an end-of-file to be indicated by closing the
   connection.  This is the same mistake which we made in an early
   version of NETRJS.  Closing the connection without a File Separator
   transaction should only be used to indicate an error, i.e., to abort
   the transmission; it should never be used to indicate normal
   completion of file transfer.  The reason is obvious: there is no way
   for the receiver to tell whether CLS indicates normal completion or an
   abnormal condition in the other host (e.g. the file transfer program
   died).

   2. There should be two forms of the _store_ request, one which fails
   if a file of the same name already exists, and one which replaces an
   existing file of the same name (as now).

   3. A service center host may be expected to require username and
   password transactions before any others are accepted.

   4. There are no error transactions defined for lost data or lost
   synch.  It is assumed there are handled at the DTP level?

   5. All of the defined error codes should be allowed (and encouraged)
   to have explanatory text following them.

RTB:gjm
       [ This RFC was put into machine readable form for entry ]
       [ into the online RFC archives by BBN Corp. under the   ]
       [ direction of Alex McKenzie.                   12/96   ]

AI ELI5

On this page
PROBLEMEarly drafts of the Data Transfer Protocol and File Transfer Protocol have design issues that could cause problems in practice.
MECHANISMRFC 238 from UCLA-CCN provides detailed comments on specific problems in both protocols, including missing sequence numbers, unnecessary handshakes, and incorrect error signaling.
IMPACTThe feedback led to corrections in later protocol versions, and is cited as an example of the design review process for early internet protocols.

§1Protocol Feedback

R. T. Braden at UCLA's CCN (Communications Control Network) analyzed draft proposals for the Data Transfer Protocol (DTP) and File Transfer Protocol (FTP) and found several design problems. This RFC updates RFC 171 and RFC 172 with detailed comments on what needs to change.

Braden's feedback reflects the collaborative design process of early network protocols, where multiple sites reviewed drafts and raised issues before final adoption.

Someone read the draft rules and found problems that could cause data loss or confusion.

§2Data Transfer Protocol Issues

In the Descriptor/Count mode of DTP, Information Separators should include a transaction sequence number field. Without sequence numbers, a receiver cannot be sure all transactions arrived before a separation marker. This requires two forms of separators: one for Descriptor/Count mode and one for DLE (Data Link Escape) mode.

The second issue is that the modes-available handshake should not be mandatory. In simplex (one-way) transmission, the receiver only cares what mode the transmitter actually uses, discovered when the first data arrives. Even in duplex (two-way) mode, the initial handshake wastes time and protocol complexity.

Separators need numbers so you know no chunks got lost. And both sides do not need to shake hands about which mode to use before sending data.

§3File Transfer Protocol Issues

FTP's most serious problem is allowing an end-of-file to be indicated by closing the connection. Braden notes this is the same mistake made in an early NETRJS implementation. Closing without a File Separator transaction should only signal an error or abort, never normal completion. The receiver has no way to distinguish between a normal close and a host crash.

Braden also recommends two forms of the store request: one that fails if a file exists, one that replaces it. Service hosts should be allowed to demand username and password transactions. Error codes should permit explanatory text, and error transactions should handle lost data and lost synchronization.

Hanging up the phone should mean error, not done. Let the server require passwords. Add numbers to errors so people can explain what went wrong.

§4Design Review

RFC 238 exemplifies the collaborative design process that shaped early internet protocols. Rather than one site imposing a design, the RFC process allowed multiple implementations and sites to review proposals and raise issues.

Braden's specific, practical concerns were based on real implementation experience. The emphasis on signal clarity (close means error, not success) and the inclusion of explanatory text in errors show thinking about operational reliability that would become standard practice.

This is how protocol design worked: one site made a draft, others read it and said what was wrong, then the authors fixed it.

§5References