Tentative proposal for a Unified User Level Protocol
RFC 451

Document Type RFC - Unknown (February 1973; No errata)
Last updated 2013-03-02
Stream Legacy
Formats plain text pdf html bibtex
Stream Legacy state (None)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state RFC 451 (Unknown)
Telechat date
Responsible AD (None)
Send notices to (None)
Network Working Group                                  M.A. Padlipsky
Request for Comments # 451                             MIT-Multics
NIC # 14135                                            February 22, 1973

          Tentative Proposal for a Unified User Level Protocol

Now that proposals for expansions to the Telnet Protocol are in vogue
again (RFC's 426 and 435, for example), I'd like to promote some
discussion of a particular favorite of my own.  Please note that this is
presented as a tentative proposal: it's an attempt to consider the
desirability of a new approach, not a rigorous specification.  To begin
somewhat obliquely, for some time I've felt that we (the NWG) have
fallen into a trap in regard to the Initial Connection Protocol.  The
point is that even though the ICP gives us the ability to define a
"family" of ICPlets by varying the contact socket, there's no compelling
reason why we should do so.  That we have done so in the FTP and RJEP I
view as unfortunate--but also undesirable and unnecessary.

To take the "undesirable" aspects first, consider the following: If we
continue to define a new contact socket for every new "user level"
protocol we come up with, we'll continue to need another new mechanism
(process, procedure, or patch) to respond to requests for connection for
each new protocol.  By Occam's Razor (or the principle of economy of
mechanism, if you prefer), this is a bad thing.  Irrespective of the
relative difficulty of implementing such mechanisms on the various
Hosts, to implement them at all leads to a kind of conceptual clutter.
Further, a different kind of confusion is introduced by the notion which
some of our number seem to be entertaining, that the "later" user level
protocols such as FTP are somehow still another level of abstraction up
from Telnet.  So it seems to me that we could spare ourselves a lot of
bother, both practical and theoretical, if we could avoid spawning
contact sockets needlessly.

Turning to the "unnecessary" aspects, I think that even if the case
against the current approach isn't completely convincing the case for a
particular alternative might be.  So to show that the multiple contact
socket ICP is unnecessary, I'll try to show that what I call the
"unified user level protocol" (UULP) is better.  The first thing to
notice is that all the "later" protocols "speak Telnet".  This is
sensible: Telnet works, by and large.  Why not make use of it?  Right.
But why not make even more use of it?  In view of the fact that FTP,
RJEP, and even the initiating part of the Network Graphics Protocol, are
really just ways of letting a user say to a Server "I don't know what
you call it on your system, but please perform the whatever function
(push or pull a file, start or stop a batch job, funnel some of my
output through the Network Virtual Graphics Terminal module) for me now,

Padlipsky                                                       [Page 1]
RFC 451           Unified User Level Protocol Proposal     February 1973

why not simply put hooks in Telnet to indicate that a Network Generic
Function is wanted instead of a Host-specific one at a given point in
time?  Then everybody can come in through Telnet in ways that are
already known (and usually debugged and optimized) and fan out to other
services through a single mechanism, where that single mechanism can be
whatever is most appropriate to a particular Host.  This view has the
additional virtue of keeping the Host "Answering Service"-equivalent
processes out of the act when new protocols come along -- where by
Answering Service, I mean that process which manages logins in general
for a given Host.  This process is, of course, a particularly sensitive
one on those systems which worry about accounting and security.

That's all probably a bit vague.  Perhaps some idea of how I think the
UULP would work will cast some light on what I think it is.  What's
needed is a way of letting the Server know that it's being given a
generic command (I decline to call it a Network Virtual command, but I'm
afraid that might be what I mean) like "STOR" or "RETR" rather than a
local command like "who" or "sys".  What could be simpler than defining
a Telnet Control Code (TCC) for "Network Generic Function Follows"?  So
if the Server Telnet receives a command line beginning with the NGF TCC
(say, 277 octal), it just feeds the line to the appropriate process or
procedure (depending on the structure of its operating system).  This
approach also offers a handy way of communicating back the fact that a
particular protocol or piece thereof isn't available: define a TCC for
"Unimplemented Generic Function".  This feels a lot cleaner than having
a close on socket 3 mean anything from "no FTP Server exists here" to
"the FTP Server happens to be busy."

Notice that the UULP automatically provides the answer to such
objections as the one Braden raises in RFC 430, that "there is no
mechanism within the FTP for _changing_ a password.  A user shouldn't
Show full document text