RFC 412
User FTP Documentation
Work Information Center #12404 π
Bestie, this is RFC 412, titled User FTP Documentation, written by G. Hicks from Utah and dated 27-Nov-72 π. It doesn't say what category it's in, and it doesn't obsolete or update anything πΈ.
The whole doc is the HELP file for the Utah-10 implementation of the User FTP Process. It's literally what a user sees on their console when they type HELP<cr>, and it's the only documentation made so far π
.
FTP User Documentation β¨
November 27, 1972
I. Control Characters π¦
okay so there are a few control characters that have a special job in the FTP Process π
. First, the abort character is <control-z> (SUB). For editing, only <control-r>, <control-a>, <control-h>, <control-v>, <control-w>, <alt-mode>, <eol>, <space>, <control-x> and <rub-out> do anything at all π.
<control-a> (SOH) and <control-h> (BS) are the character delete keys. <control-w> is the word delete character. Note: When doing the ' funktion, this character will delete the entire line typed β οΈ.
<control-v> says take the next character literally π§. <alt-mode> (ESC) ends the command and gives helpful noise words. <eol> and <space> are terminators too, but these two give no command completion or noise words. All three echo as a space, however π.
<control-x> (CAN) and <rub-out> (DEL) are the command abort characters π. <control-r> (DC2) retypes the line the way the command interpreter sees it π.
When you use ? as a prompter for initial commands, it types out every command that starts with that particular character string π. If it's typed in a sub-command field, it only types out the prompt message if it's the first character typed. At all other times, it gets accepted as part of the typed string π.
II. General Information π
The FTP user process is designed to make transferring files from one host on the ARPANET to another much easier than it has been up until now β¨. To that end, the command language was designed to feel as natural as possible π«Ά.
The command interpreter is, of course, part of this idea πΈ. So to help the user as much as possible, there are a few ways to find out what's expected in the form of commands, file names, user names, and so on. When the user has typed nothing, typing ? makes the interpreter type out all the commands that are available to them. If the user has typed anything at all, the interpreter responds with all the commands that begin with that particular character string π¦.
To make the command language as easy to learn as possible, the command interpreter will "see" nothing that isn't part of a legal command π. If the user types anything that isn't expected, the character isn't echoed and a bell is echoed instead π.
III. Brief Command Listing πΈ
The commands that are expected, and their syntax, are listed below. NOTE: UPPER and lower case letters are identical π.
<host-name>
D<decimal host number>
<octal host number>
;<any string> (useful for comments to a person that is
linked to you)
MODE <mode name>
RETREIVE <remote file> (to) <local file>
GET <remote file> (to) <local file>
SEND <local file> (to) <remote file>
STORE <local file> (to) <remote file>
APPEND <local file> (to) <remote file>
RENAME <remote file> (to be) <new remote file name>
DELETE <remote file>
BYE
COPY <direction descriptor> <file group> (to) <file group>
(see detailed description below)
LOGOUT
DDT
LIST <file group> (to file) <local file name>
SOCKET (NOT IMPLEMENTED YET)
ALLOCATE <decimal number of bytes>
QUIT
foreign host)
HOST <any valid ARPANET host name or number>
USER <remote user name>
PASSWORD <password for remote user's name>
ACCOUNT <string or number for remote user's name>
STATUS (see description of status command below)
LOGIN <user name> <password> <optional account> <to host>
BYTE <decimal byte size>
TYPE <type descriptor>
STRUCTURE <structure descriptor>
TENEX
ASCII
VERBOSE
IV. Detailed Description of the Commands π§
Okay, here's the deeper dive π. The commands and their syntax are described in more detail below. Words in parentheses are noise words π . NOTE: upper and lower case are identical π. Unless the command description says otherwise, every command described here is implemented β¨.
<host name> or <host number> π
Performs the ICP to the indicated host, with explanatory remarks if the ICP isn't possible π.
MODE <mode descriptor> π¦
Sets the mode of the data transfer connection according to these sub-commands:
STREAM: bit stream. End of file is indicated by the data connection closing π.BLOCK: formats (or expects formatted) data into blocks π§±.TEXT: sends or retrieves text. ForcesTYPE ASCIIandBYTE 8. This command sends the appropriate commands to the foreign host, then sends the data using the TELNET codes for EOR and EOF as per the FTP Protocol π.HASP: compresses data ποΈ.
NOTE: Of the above sub-commands, only MODE STREAM and MODE TEXT are implemented at present π.
RETREIVE (file) <remote file> (to file) <local file name> π₯
Sends the retr command to the remote server, then sets up the data connection according to any previous MODE, TYPE, and BYTE commands π§. The data coming in on the data connection goes into the local file you specify π.
GET (file) <remote file name> (to file) <local file name> π«Ά
See the description of RETREIVE πΈ.
STORE (local file) <file name> (onto file) <remote file> π€
Accepts a local file name, does the formatting according to any previous BYTE, TYPE, and MODE commands, and sends it to the foreign host β¨.
SEND (local file) <file name> (onto file) <remote file> π
See the description of STORE π¦.
APPEND (local file) <file name> (to remote file) <remote file> β
Does the same thing as a STORE, except the file gets appended to the remote file instead of just writing over it π.
RENAME (existing file) <file name> (to be) <new file name> βοΈ
Accepts the name of an old remote file and asks for a new file name. It sends the appropriate commands and names to the foreign host, which causes the old file name to be replaced by the new one π.
DELETE (file) <file name> ποΈ
This command marks the remote file for deletion. It does require that the command be confirmed twice π. Be careful, bestie π.
BYE π
Takes no arguments. Causes the server to end the current session with the user π. The program returns to the EXEC MODE once the remote server has acknowledged the command π.
COPY π
This command does a variety of things π. First, it lets the user describe a file group, e.g. *.mac, *.sav, and so on. The *'s can be for foreign files or local files, depending on these sub-commands:
REMOTE (remote file group) <remote file grouping>: this causes the user FTP to ask the server for the files in <remote file grouping>. Then it asks the user to specify where each file is going. A typical sequence might look like this π§:
!copy remote (remote file group) ftp.*
Please be patient. Getting remote file names.
Got them.
!copy (file) <HICKS>FTP.MAC;| (to file) ftp.mac [New file]
[Messages and etc. follow with the above line being
repeated for each file in the remote file group.]
LOCAL (local file grouping) <local file group>: this causes the user FTP to accept the file group specified, and send the file names to the server, leaving off the <directory name> and version number of the local file ποΈ. The user may not specify *'d devices or *'d directories π«. A line for this might look like this:
!copy local (local file group) ftp.*;*
[Confirm]
Next, if the user doesn't specify any *'s for either the remote file or the local file, this command works exactly like the RETREIVE or STORE command described earlier π«.
LOGOUT πͺ
Takes no arguments. See the description of the BYE command for more details π«Ά.
RESET π
Takes no arguments. Causes the user process to close all connections (if necessary), close all files (if necessary), and reset the program's parameters to their defaults π§Ή.
DDT π
If DDT is loaded, this just starts DDT. If DDT is not loaded, it loads DDT and then starts it at its initial start-up location π. This command causes an abnormal interrupt if DDT is not found π¬.
TYPE (is) <type descriptor> π
okay so TYPE takes one of these subcommands as its argument π and each one does something different:
TENEX: shorthand that setsTYPE IMAGEandBYTE 36β¨EBCDIC: says that the data will be Ebcdic π§PRINT: says that the data is an Ascii print file with ASA vertical format controls π¨οΈLOCAL: forces the user and server FTP to accept whatever byte size the user has specified. for now this type is treated the same asTYPE IMAGEπ¦IMAGE: does the same asLOCAL. it just forces the user and server FTP to accept the specified byte size without doing any translation like ASCII type does πΈ for the most efficient usage, the matching byte size should beBYTE 36when TENEX sites are the servers πASCII: setsTYPE ASCIIand 8 bit bytes. useful for text files π
NOTE: of the subcommands above, onlyEBCDICare not implemented yet π
STRUCTURE (is) <file structure descriptor> π
STRUCTURE takes one of these sub-commands as its argument:
REDORD: says the data on the data connection has record structure information contained in it. NOTE: since TENEX does not support record structured files per se, this mode is only useful for sending text files to or retrieving text files from non-TENEX sites. the<EOL>in these files is converted to the TELNET EOR code for transmission, and EOR goes back to<EOL>etc. for reception πFILE: says the data stream has no record structure information in it π«Ά
TENEX π
see the description under TYPE TENEX β¨
ASCII π¦
see the description under TYPE ASCII π
VERBOSE π₯
this command sets the command completion/no completion flag. the program assumes NO VERBOSE mode, so it does not complete commands when <space> or <eol> is used as a command terminator. it also causes the noise words to be typed if you're in verbose mode π
V. Sample Session using the FTP π
the following scenario shows some uses of the FTP. everything the user types is underlined in the original, so picture the typed bits as underlined π
UTAH-TENEX 1.29.03 EXEC 1.38
LOGIN (USER) HICKS (PASSOWRD) (ACCOUNT #) 1200
JOB 24 ON TTY2 11-NOV-72 1:51
TERMINAL (TYPE IS) 4
ftp
FTP User Process 1.10 5-NOV-72. Type Help<cr> for help.
!login (user) network (password) (account) 4 (to host) case-10
CONNECTION IS OPEN TO CASE-10.
< CASE-10 FTP Server 1.14.0 - at SAT 11-NOV-72 2:00-EST
!tenex ? confirm with carriage return
tenex
!copy remote (remote group) ftp.*
Please be patient. Getting remote file-names.
Got them.
!copy (file) <NETWORK>FTP.MAC:32 (no file) ftp.mac [new file]
< IMAGE retreive of <NETWORK>FTP.MAC;32 startet.
< Transfer completed.
!copy (file) <NETWORK>FTP.SAV;5 (fo file) FTP.SAV;5 [new version]
< IMAGE retreive of <NETWORK>FTP.SAV;5 started.
< Transfer completed.
!copy (file) <NETWORK>FTP.REL;1 (to file) xxx
!copy (file) <NETWORK>FTP.HELP;5 (to file) ftp.help [New version]
copy (file) <NETWORK>FTP.HELP;5 (to file) FTP.HELP;1
< IMAGE retreive of <NETWORK>FTP.HELP;5 started.
< Transfer completed.
Done...
!usc-isi
Closing connections to CASE-10.
CONNECTION IS OPEN TO USC-ISI.
< USC-ISI FTP Server 1.14.0 - at SAT 11-NOV-72 2:15-PST
!log
user hicks
(password)
(account) ? account number or string for remote user's name
log
(user) hicks
(password)
(account) |
!send (local file) ftp.sav;5 (to remote file) ftp.sav
< STORE of <HICKS>FTP.SAV;P777752;a|, IMAGE type, started.
< Transfer completed.
!cp r acs.mac (to local file) acs.mac [new file]
< IMAGE Retreive of <HICKS>ACS.MAC;3 started.
< Transfer completed.
!copy 1 ? Local file group, *'s ok - TENEX sites only,
copy 1 ftp.*
[Confirm]
< Store of <HICKS>FTP.MAC;1;P777752;A1, IMAGE type, Started.
< Transfer completed.
< Store of <HICKS>FTP.SAV;2;P777753;A1, IMAGE type, Started.
< Transfer completed.
< copy of <HICKS>FTP.HELP;1;P777752;A1 IMAGE type, Started,
< Transfer completed.
!bye
!< BYE command recieved.
< Therefore connection terminated.
logout
[logout message go here]
[ This RFC was put into machine readable form for entry ]
[ into the online RFC archives by Gottfried Janik 6/97 ]
and that's the whole thing, bestie! πβ¨ the FTP lives on π¦π
π¦ where this page comes from
- ietf: rfc412 1972-11
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms