Comments on DTP and FTP proposals
Feedback on early draft file transfer and data transfer protocols.
Braden, R.T., "Comments on DTP and FTP proposals", RFC 238, DOI 10.17487/RFC0238, September 1971, <https://www.rfc-editor.org/info/rfc238>.
@misc{rfc238,
series = {Request for Comments},
number = 238,
howpublished = {RFC 238},
publisher = {RFC Editor},
doi = {10.17487/RFC0238},
url = {https://www.rfc-editor.org/info/rfc238},
author = {R.T. Braden},
title = {{Comments on DTP and FTP proposals}},
pagetotal = 2,
year = 1971,
month = sep,
} RFC text
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
§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.