summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1068.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc1068.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc1068.txt')
-rw-r--r--doc/rfc/rfc1068.txt1515
1 files changed, 1515 insertions, 0 deletions
diff --git a/doc/rfc/rfc1068.txt b/doc/rfc/rfc1068.txt
new file mode 100644
index 0000000..23df465
--- /dev/null
+++ b/doc/rfc/rfc1068.txt
@@ -0,0 +1,1515 @@
+
+
+
+
+
+
+Network Working Group A. DeSchon
+Request for Comments: 1068 R. Braden
+ ISI
+ August 1988
+
+ Background File Transfer Program (BFTP)
+
+
+Status of This Memo
+
+ This memo describes an Internet background file transfer service that
+ is built upon the third-party transfer model of FTP. No new
+ protocols are involved. The purpose of this memo is to stimulate
+ discussion on new Internet service modes. Distribution of this memo
+ is unlimited.
+
+1. Introduction
+
+ For a variety of reasons, file transfer in the Internet has generally
+ been implemented as an interactive or "foreground" service. That is,
+ a user runs the appropriate local FTP user interface program as an
+ interactive command and requests a file transfer to occur in real
+ time. If the transfer should fail to complete for any reason, the
+ user must reissue the transfer request. Foreground file transfer is
+ relatively simple to implement -- no subtleties of queuing or stable
+ storage -- and in the early days of networking it provided excellent
+ service, because the Internet/ARPANET was lightly loaded and
+ reasonably reliable.
+
+ More recently, the Internet has become increasingly subject to
+ congestion and long delays, particularly during times of peak usage.
+ In addition, as more of the world becomes interconnected, planned and
+ unplanned outages of hosts, gateways, and networks sometimes make it
+ difficult for users to successfully transfer files in foreground.
+
+ Performing file transfer asynchronously (i.e., in "background"),
+ provides a solution to some of these problems, by eliminating the
+ requirement for a human user to be directly involved at the time that
+ a file transfer takes place. A background file transfer service
+ requires two components: a user interface program to collect the
+ parameters describing the required transfer(s), and a file transfer
+ control (FTC) daemon to carry them out.
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 1]
+
+RFC 1068 August 1988
+
+
+ Background file transfer has a number of potential advantages for a
+ user:
+
+ o No Waiting
+
+ The user can request a large transfer and ignore it until a
+ notification message arrives through some common channel (e.g.,
+ electronic mail).
+
+ o End-to-end Reliability
+
+ The FTC daemon can try a transfer repeatedly until it either
+ succeeds or fails permanently. This provides reliable end-to-
+ end delivery of a file, in spite of the source or destination
+ host being down or poor Internet connectivity during some time
+ period.
+
+ o Multiple File Delivery
+
+ In order for background file transfer to be accepted in the
+ Internet, it may have to include some "value-added" services.
+ One such service would be an implementation of a multiple file
+ transfer capability for all hosts. Such a facility is suggested
+ in RFC-959 (see the description of "NLST") and implemented in
+ some User-FTP programs.
+
+ o Deferred Delivery
+
+ The user may wish to defer a large transfer until an off-peak
+ period. This may become important when parts of the Internet
+ adopt accounting and traffic-based cost-recovery mechanisms.
+
+
+ There is a serious human-engineering problem with background file
+ transfer: if the user makes a mistake in entering parameters, this
+ mistake may not become apparent until much later. This can be the
+ cause of severe user frustration. To avoid this problem, the user
+ interface program ought to verify the correctness of as many of the
+ parameters as possible when they are entered. Of course, such
+ foreground verification of parameters is not possible if the remote
+ host to which the parameters apply is currently unreachable.
+
+ To explore the usefulness of background file transfer in the present
+ Internet, we have implemented a file-mover service which we call the
+ Background File Transfer Program or BFTP.
+
+ Section 2 describes BFTP and Section 3 presents our experience and
+ conclusions. The appendices contain detailed information about the
+
+
+
+DeSchon & Braden [Page 2]
+
+RFC 1068 August 1988
+
+
+ user interface language for BFTP, a description of the program
+ organization, and sample execution scripts.
+
+2. Background File Transfer Program
+
+ 2.1 General Model
+
+ In the present BFTP design, its user interface program and its FTC
+ daemon program must execute on the same host, which we call the
+ BFTP control host.
+
+ Through the user interface program, a BFTP user will supply all of
+ the parameters needed to transfer a file from source host S to
+ destination host D, where S and D may be different from the BFTP
+ control host. These parameters include:
+
+ o S and D host names,
+
+ o login names and passwords on S and D hosts, and
+
+ o S and D file names (and optionally, directories).
+
+
+ The user may also specify a number of optional control parameters:
+
+ * Source file disposition -- Copy, move (i.e., copy and
+ delete), or simply delete the source file. The default is
+ copy.
+
+ * Destination file operation -- Create/Replace, append to, or
+ create a unique destination file. The default is
+ create/replace ("STOR").
+
+ * FTP Parameters -- Explicitly set any of the FTP type, mode,
+ or structure parameters at S and D hosts.
+
+ * Multiple Transfers -- Enable "wildcard" matching to perform
+ multiple transfers.
+
+ * Start Time -- Set the time of day for the first attempt of
+ the transfer. The default is "now" (i.e., make the first
+ attempt as soon as the request has been queued for the FTC
+ daemon).
+
+
+ Finally, the user specifies a mailbox to which a completion
+ notification message will be sent, and "submits" the request to
+ the FTC daemon queue. The user can then exit the BFTP user
+
+
+
+DeSchon & Braden [Page 3]
+
+RFC 1068 August 1988
+
+
+ interface program.
+
+ If the transfer should fail permanently, the FTC daemon will send
+ a notification message to the user's mailbox. In the event of a
+ temporary failure (e.g., a broken TCP connection), the FTC daemon
+ will log the failure and retry the transfer after some timeout
+ period. The retry cycles will be repeated until the transfer
+ succeeds or until some maximum number of tries specified has been
+ reached. In either case, a notification message will then be sent
+ to the user's mailbox.
+
+ The user can check on the progress of the transfer by reentering
+ the BFTP user interface program, supplying a key that was defined
+ with the request, and displaying the current status of the
+ request. The user may then cancel the request or leave it in the
+ queue.
+
+ The BFTP program includes a server-Telnet module, so it can be
+ executed as a remotely-accessible service that can be reached via
+ a Telnet connection to the BFTP well-known port (152). This
+ allows a user on any Internet host to perform background file
+ transfers without running BFTP locally, but instead opening a
+ Telnet connection to port 152 on a BFTP service host. Of course,
+ a user can also run the local BFTP user interface program directly
+ on any host that supports it and for which the user has login
+ privileges.
+
+ The next section discusses how BFTP uses standard FTP servers to
+ perform the transfers, while the following section covers the user
+ interface of BFTP.
+
+ 2.2 File Transfer Mechanics for BFTP
+
+ The BFTP makes use of the "third party" or "Server-Server" model
+ incorporated in the Internet File Transfer Protocol [RFC-959].
+ Thus, the FTC daemon opens FTP control connections to the existing
+ FTP servers on source host S and destination host D and instructs
+ them to transfer the desired file(s) from S to D. The S and D
+ hosts may be any two Internet hosts supporting FTP servers (but at
+ least one of them must support the FTP "PASV" command). This
+ approach allows the implementation of a background file transfer
+ capability for the entire Internet at a very low cost.
+
+ Figure 1 illustrates the BFTP model of operation. Note that the
+ BFTP control host is not necessarily the same as S or D. Figure 2
+ illustrates the FTP command interchange used in a typical Server-
+ Server file transfer operation; this may be compared with the
+ User-Server FTP scenario illustrated in Section 7 of RFC-959.
+
+
+
+DeSchon & Braden [Page 4]
+
+RFC 1068 August 1988
+
+
+ Since BFTP may be asked to transfer files between any two hosts in
+ the Internet, it must support all the file types and transfer
+ modes that are defined in RFC-959, not just a subset implemented
+ by particular hosts.
+
+ BFTP supports the transfer of a set of files in a single request,
+ using the standard technique:
+
+ (1) Send an NLST command to the source host S, specifying a
+ pathname containing "wildcard" characters. The reply will
+ contain a list of matching source file names.
+
+ (2) Execute a separate transfer operation for each file in this
+ list. The destination file name in each case is assumed to
+ be the same as the source file name; this requires that these
+ names be compatible with the naming conventions of D.
+
+ It will typically be necessary to specify working directories for
+ the transfers at S and D, so the file names will be simple,
+ unstructured names on each system.
+
+ This approach depends upon the wildcard matching capability of the
+ source host S. A more general implementation would acquire a
+ complete list of the file names from the source host and do the
+ matching in the FTC daemon, for example using a regular-expression
+ matcher. Another useful extension would be a general pattern-
+ matching file name transformation capability (e.g., like the one
+ included in the 4.3BSD version of FTP) to generate appropriate
+ destination pathnames for multiple requests.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 5]
+
+RFC 1068 August 1988
+
+
+ Figure 1 -- BFTP Model of Operation
+
+
+
+
+
+ --------- Remote
+ | BFTP | (telnet) o User
+ Local | Network | <---------------- -|-
+ User o | Server | / \
+ -|- ---------
+ / \ | |
+ | |
+ | |
+ v v
+ ----------- (Submit +---+
+ | BFTP User | request) |---| Request
+ | Interface | ---------> |---| Queue
+ ----------- |---|
+ . +---+
+ . /
+ . /
+ (foreground . / (try/retry
+ request-- . / request)
+ see 2.3) v v
+ -------- +---+
+ | FTC | -------------> | | User
+ | Daemon | Notify | | Mailbox
+ -------- Message +---+
+ / \
+ / FTP \
+ / Control \
+ / Connections \
+ HOST S v v HOST D
+ -------- --------
+ | FTP | ===========> | FTP |
+ | Server | file | Server |
+ -------- transfer --------
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 6]
+
+RFC 1068 August 1988
+
+
+ Figure 2 -- Server-Server File Transfer
+
+
+
+ Server FTP BFTP Daemon Server FTP
+ HOST S HOST C HOST D
+ ---------- ----------- ----------
+
+ <-------- Open TCP Ctrl conn
+ Open TCP Ctrl conn -------->
+
+ <-------- (log in)
+ (login confirm.) -------->
+ (log in) -------->
+ <-------- (login confirm.)
+
+ <-------- TYPE, STRU, MODE, CWD
+ (confirmations) -------->
+ TYPE, STRU, MODE, CWD -------->
+ <-------- (confirmations)
+
+ <-------- PASV command
+ PASV confirm -------->
+ PORT command -------->
+ <-------- PORT confirm
+
+ RETR file -------->
+ <-------- STOR file
+ <------------------------------ Open TCP Data conn
+ <------------------------------ Send file
+ <------------------------------ Close Data conn
+ <-------- RETR confirm
+ STOR confirm -------->
+
+ <-------- QUIT command
+ QUIT command -------->
+ Close Ctrl conn -------->
+
+ <-------- Close Ctrl conn
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 7]
+
+RFC 1068 August 1988
+
+
+ BFTP currently utilizes the following Server-FTP commands [RFC-
+ 959]: USER, PASS, ACCT, PASV, PORT, RETR, STOR, STOU, CWD, NLST,
+ MODE, STRU, TYPE, and QUIT.
+
+ The FTC daemon attempts to work around FTP servers that fail to
+ support certain commands. For example, if a server does not
+ support the optional command "CWD", the FTC daemon will attempt to
+ construct a complete path name using the source directory name and
+ the source file name. However, it is necessary that at least one
+ of the two hosts support the FTP passive (PASV) command. While
+ many FTP server implementations support do this command, some (in
+ particular, the 4.2BSD FTP) do not. The PASV command was
+ officially listed as being optional in RFC-959.
+
+ 2.3 Reliable Delivery
+
+ The reliable delivery function of BFTP is analogous to reliable
+ delivery in a transport protocol like TCP. Both depend upon
+ repeated delivery attempts until success is achieved, and in both
+ cases the choice of the retry interval requires some care to
+ balance overhead against unresponsiveness.
+
+ Humans are impatient, but even their impatience has a limit. If
+ the file cannot be transferred "soon", a human will turn to
+ another project; typically, there is a tendency for the transfer
+ to become less urgent the longer the wait. The FTC daemon of BFTP
+ therefore starts each transfer request with a very short retry
+ interval -- e.g., 10 minutes -- and then doubles this interval for
+ successive retries, until a maximum interval -- e.g., 4 hours --
+ is reached. This is essentially the exponential backoff algorithm
+ of the Ethernet, which is also used by transport protocols such as
+ TCP, although BFTP and TCP have quite different rationales for the
+ algorithm.
+
+ We must also define the meaning of reliable transmission for a
+ multiple-transfer request. For example, the set of files selected
+ by wildcard characters in a pathname is not well defined; the set
+ may change while the request is pending, as files are created and
+ deleted. Furthermore, it is unreasonable to regard the entire
+ multiple transfer as a single atomic operation. Suppose that
+ transferring a set of files fails part way through; for an atomic
+ operation, the files which had been successfully transferred would
+ have to be deleted pending the next retry of the entire set. This
+ would be ridiculously inefficient and may be impossible (since the
+ communication path may be broken when it is time to issue the
+ deletion requests).
+
+
+
+
+
+DeSchon & Braden [Page 8]
+
+RFC 1068 August 1988
+
+
+ BFTP addresses these issues in the following manner:
+
+ * For a multiple file operation, the FTC daemon saves the file
+ name list returned by the first successful NLST command in
+ the request queue entry. This name list determines the set
+ of source files for the transfer; there can be no later
+ additions to the set.
+
+ * The FTC daemon maintains a transfer status pointer. On each
+ retry cycle, it tries to transfer only those files that have
+ not already been successfully transferred.
+
+ * The request is complete when all the individual file
+ transfers have been successful, a permanent failure has
+ occured, or when the retry limit is reached.
+
+ * The notification message to the user lists the status of each
+ of the multiple files.
+
+
+ 2.4 BFTP User Interface
+
+ The purpose of BFTP is to simplify the file transfer process and
+ to place the burden of reliability on the BFTP control host. We
+ have attempted to provide a "user friendly" command interface to
+ BFTP, similar in flavor to the user interface of the TOPS-20
+ operating system. This interface provides extensive prompting,
+ defaulting, and help facilities for every command.
+
+ For a list of all BFTP commands, the user may enter "?<Return>" at
+ the main BFTP prompt ("BFTP>"). Entering "help<Return>" and
+ "explain<Return>" will provide increasing levels of explanatory
+ material. To obtain information on a particular command, "help
+ <command name><Return>" may be entered. The 'quit' or 'exit'
+ command will exit from BFTP. Command and subcommand names may be
+ abbreviated to the shortest unique sequence for that context;
+ alternatively, a partial name can be automatically completed by
+ typing <Return>.
+
+ The normal procedure for a BFTP user is to set up a set of
+ parameters defining the desired transfer and then submit the
+ request to the FTC daemon. To give the user the maximum
+ flexibility, BFTP supports three modes of submission:
+
+ o Background Operation
+
+ To request a reliable background file transfer, the user will
+ issue the BFTP 'submit' command to the FTC daemon.
+
+
+
+DeSchon & Braden [Page 9]
+
+RFC 1068 August 1988
+
+
+ o Foreground Verification, Background Operation
+
+ The BFTP 'verify' command may be used to ascertain that file
+ transfer parameters are valid. It causes BFTP to connect to
+ the FTP servers on both the source and the destination hosts
+ (if possible), log into both, verify the FTP parameters, and
+ verify that the specified source file is present.
+
+ Once the 'verify' command has successfully completed, the
+ user can issue the 'submit' command to schedule the actual
+ file transfer.
+
+
+ o Foreground Operation
+
+ The BFTP 'transfer' command will perform the specified
+ third-party transfer in foreground mode. This is illustrated
+ by the dotted path bypassing the queue in Figure 1.
+
+
+ The easiest way to set up the parameters is to issue the 'prompt'
+ command, which will prompt the user for all of the basic
+ parameters required for most transfers. Certain unusual
+ parameters must be set with the 'set' command (see Appendix B for
+ details).
+
+ When entering any parameter, the following control characters may
+ be used:
+
+ ? will display help text for the parameter, indicating its
+ meaning, the choices, and the default, and then reprompt for
+ the parameter.
+
+ <ESC> will display the default value (or the last value set) for
+ this parameter. The user can accept this default by entering
+ <Return>, or else erase it with Control-W and enter a
+ different value for the parameter, followed by <Return> to
+ accept the entered value.
+
+ <Control-W>
+ will erase the value typed or displayed for current
+ parameter.
+
+ <Return>
+ will accept the value displayed for this parameter, and
+ continue to the next parameter, if any. If the user has not
+ typed a value or used <ESC> to display the default, <Return>
+ will display the default and then accept it.
+
+
+
+DeSchon & Braden [Page 10]
+
+RFC 1068 August 1988
+
+
+ It is important to provide a means for a user to obtain status
+ information about an earlier request or even to cancel an earlier
+ request. However, these functions, especially cancellation, must
+ be controlled by some user authentication. We did not want to
+ build a user authentication database with each BFTP instance or
+ require login to BFTP itself, and there is no Internet-wide user
+ authentication mechanism. We adopted the following weak
+ authentication mechanism as a compromise:
+
+ * When the 'submit' command is issued, it prompts the user for
+ a character string called a "keyword", which recorded with
+ the request.
+
+ * This keyword can be entered later as the argument to a 'find'
+ command, which will display the status of all requests with
+ matching keywords.
+
+ * Similarly, the keyword may be used to cancel the
+ corresponding request.
+
+ If two different users happen to choose the same keywords, of
+ course, this scheme will not protect each other's requests from
+ accidental or malicious cancellation. However, a notification
+ message will be sent at the time that a cancellation occurs.
+
+ To make a series of similar requests, the user needs only to
+ change the individual parameters that differ from the preceding
+ request and then issue a new 'submit' command, for each request.
+ There are commands for individually setting each of the parameters
+ that 'prompt' sets -- and 'time' -- to provide a shortcut for BFTP
+ experts. A simpler but lengthier procedure is to use the 'prompt'
+ command to run through the current set of parameters, reentering
+ the parameters that must change and using the sequence
+ <ESC><return> to retain the previous value for each of the others.
+ The same procedures may be used to correct a mistake made in
+ entering a particular parameter.
+
+ The current settings of all the BFTP parameters can be displayed
+ at any time with the 'status' command, while the 'clear' command
+ will return all parameters to their initial values. Finally, the
+ 'request' command allows the user to save the current set of
+ parameters in a file or to restore the parameters from a
+ previously-saved file.
+
+ There is also a window-based BFTP user interface for use on a Sun
+ Workstation, described in Appendix A. The complete list of BFTP
+ commands is presented in Appendix B.
+
+
+
+
+DeSchon & Braden [Page 11]
+
+RFC 1068 August 1988
+
+
+3. Experience and Conclusions
+
+ BFTP has been available to users at ISI for some months. Users have
+ reported a number of advantages of using BFTP:
+
+ (a) Some users prefer the prompting style of BFTP to the user
+ interface of the foreground FTP they normally use.
+
+ (b) The BFTP "verify" command allows the user to verify that host
+ names, passwords, and filenames are correct without having to
+ wait for the entire transfer to take place.
+
+ (c) Since results are returned through the mail system, a transfer
+ can occur without tying up a terminal line, a phone line, or
+ even a window.
+
+
+ BFTP must be able to communicate with a variety of Server-FTP
+ implementations, and we have observed much variation in the commands
+ supported, error handling, and the timing in these servers. Some of
+ the problems we have encountered are:
+
+ (1) Some systems (e.g., 4.2BSD) do not support the PASV command.
+
+ (2) 4.2/3BSD systems return a non-standard response to the NLST
+ command. Instead of returning a list of complete path-names,
+ they use an ad hoc format consisting of a directory name
+ followed by a list of files.
+
+ (3) 4.2/3BSD systems may return a "permanent negative completion
+ reply" (a 5xx FTP reply code) as a result of a communications
+ failure such as a broken TCP connection. According to RFC-959,
+ the appropriate response is a "transient negative completion
+ reply" (a 4xx FTP reply code), which would inform the BFTP that
+ the transfer should be retried.
+
+ (4) A number of servers return badly formatted responses. An
+ example of this is the 4.2/3BSD response to an NLST command for
+ a non-existent file name: an error string which is not preceded
+ by a numerical response code.
+
+
+ To diagnose problems that do occur, we have found it very useful to
+ have a complete record of the interchange between the FTC daemon and
+ the two FTP servers. This record is saved and is currently always
+ included in the notification message mailed to the user (see Appendix
+ D for an example). As we get more experience with this program, some
+ of the details of the transfer may be omitted from this log.
+
+
+
+DeSchon & Braden [Page 12]
+
+RFC 1068 August 1988
+
+
+ The use of library routines shared between modules makes it
+ relatively easy to implement additional user interface programs. We
+ are currently experimenting with a window version of BFTP, the
+ "bftptool", which runs in the SunView environment, and is described
+ in Appendix A. Some additional interfaces that might be useful are:
+
+ o A command line interface for use in shell scripts and
+ "Makefiles".
+
+ o A more general library interface which would make it easy to
+ invoke BFTP from a variety of programs.
+
+ o Additional full-screen form based interfaces, for example a tool
+ running in X-Window system environment.
+
+
+ Lastly, BFTP would benefit from the resolution of the following open
+ protocol issues:
+
+ o There currently exist no provisions for Internet-wide user
+ authentication. In the BFTP context, this means that passwords
+ required for a file transfer must be present in BFTP request
+ files. The security of these passwords is subject to the
+ limitations of the file system security on the BFTP control
+ host. Anonymous file transfer provides a partial solution, but
+ a more general, long term solution is needed.
+
+ o Better mechanisms are needed to cope with the diversity of real
+ file systems in the Internet.
+
+ For example, an extension could be made to the FTP protocol to
+ allow the daemon to learn the delimiter conventions of each host
+ file system. This could allow a more flexible and powerful
+ multiple-file facility in BFTP. This could include the
+ automatic transfer of directory subtrees, for example.
+
+
+4. References
+
+ [RFC-959] Postel, J., and J. Reynolds, "File Transfer Protocol
+ (FTP)", RFC-959, USC/Information Sciences Institute,
+ October 1985.
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 13]
+
+RFC 1068 August 1988
+
+
+Appendix A -- BFTP Implementation Structure
+
+ BFTP has been implemented on both a Sun workstation running Sun OS
+ 3.4 (based on 4.2BSD) and a VAX running 4.3BSD. The program modules
+ are: the local user interface programs "bftp", the Internet server
+ program "bftpd", and the FTC daemon "fts". BFTP makes use of the
+ "at" command, a UNIX batch job facility, to submit requests and
+ execute the daemon. An additional user interface program, the
+ "bftptool", is available for Sun OS 3.4, and runs in the SunView
+ environment.
+
+ BFTP keeps its state in a set of control files: request files,
+ command files, and message files. These files are stored in the home
+ directory specified for the environment of the process running
+ "bftp". If a user is running "bftp" directly, this will typically be
+ the user's home directory. In the case where a user has made a
+ Telnet connection to the well-known port 152 on a BFTP service host,
+ "bftp" is started by "bftpd" (or "inetd", indirectly). As a result,
+ the control files will be owned by the user-id under which "inetd"
+ was started, normally "root", and stored in the top level directory
+ "/". Note, however, that under BFTP all user files are written by
+ the FTP servers, which are presumed to enforce the operating systems'
+ access control conventions. Hence, BFTP does not constitute a system
+ integrity exposure.
+
+ A.1 User Interface Program
+
+ The BFTP user interface program "bftp" may be run directly via a
+ UNIX shell. Once the program has been started, the prompt "BFTP>"
+ will appear and commands may be entered. These commands are
+ described in detail in Appendix B.
+
+ A.2 Tool-Style User Interface Program
+
+ The BFTP user interface program "bftptool" may be started from a
+ shell window in the SunView environment on a Sun workstation. The
+ BFTP commands may be selected via the left mouse button. The
+ various file transfer parameters appear in a form-style interface;
+ defaults and multiple-choice style parameter values can be filled
+ in via menus. An advantage of this form-style interface program
+ is that it is possible to view all of the file transfer parameters
+ simultaneously, providing the user with a sense for which
+ parameter values might be mutually exclusive.
+
+ Help information can be displayed in a text subwindow by
+ positioning the on-screen mouse pointer over a command or a
+ parameter, and clicking the center mouse button. (No standard
+ mechanism for displaying help information is currently included in
+
+
+
+DeSchon & Braden [Page 14]
+
+RFC 1068 August 1988
+
+
+ the SunView package.)
+
+ The commands used in the "bftptool" are for the most part very
+ similar to the commands described in Appendix B. Request
+ submittal and the execution of the FTC daemon are identical for
+ the "bftp" and the "bftptool" interface programs.
+
+ A.3 Internet Server
+
+ The Internet server program "bftpd" can be invoked by opening a
+ Telnet connection to a well-known port, and does not require
+ login. The "bftpd" program runs under "inetd", the standard
+ BSD4.x well-known port dispatcher. When a SYN arrives for the
+ BFTP well-known port, "bftpd" opens the TCP connection and
+ performs Telnet negotiations. It then passes control to the user
+ interface "bftp" which allows the user to enter file transfer
+ requests.
+
+ A.4 BFTP Server Daemon
+
+ The BFTP file transfer control daemon program is named "fts" (for
+ "File Transfer Service"). This module contains code to actually
+ cause a single file transfer operation using the FTP server-server
+ model as shown in Figures 1 and 2. It is invoked with the command
+ "fts <request-file>". The <request-file> contains the necessary
+ parameters for the file transfer, in ASCII format, separated by
+ linefeeds. Such a request file may be created by the user
+ interface program, "bftp".
+
+ As a byproduct of the development of BFTP, "fts" represents a
+ server-server FTP driver that can be run independent of the "bftp"
+ program. Parameters used in the file transfer are read from a
+ request file, which is created and accessed via library routines
+ which can be shared between modules. This could be used to
+ perform FTP's under program control.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 15]
+
+RFC 1068 August 1988
+
+
+Appendix B: BFTP Command Summary
+
+ B.1 Special Editing Characters
+
+ In the "bftp" program, the special editing characters for command
+ words, subcommands, and parameter fields are as follows:
+
+ <return> Accept current command/field.
+ <escape> Complete current command/field, or display default.
+ <space> Complete and delimit current command.
+ <delete> Erase last character.
+ control-L Refresh screen.
+ control-R Refresh line.
+ control-U Erase line.
+ control-W Erase current token.
+ ? List legal options.
+
+ B.2 BFTP Commands
+
+ The remainder of Appendix B consists of a list of the BFTP
+ commands. Each command should be followed by a carriage-return.
+ In the description of the syntax for each command, square brackets
+ "[]" are used to indicate a ssubcommand, or a list of possible
+ subcommands, which are separated by the "|" character. Angle
+ brackets "<>" are used to indicate a description of a parameter
+ where the choices would be too numerous to list, for example
+ "<host name/number>".
+
+ B.2.1 Clear Command
+
+
+ Return all parameters to their default values.
+
+ clear
+
+ B.2.2 Destination Commands
+
+ Set the destination directory.
+
+ ddir <directory name>
+
+ Set the destination file name.
+
+ dfile <file name>
+
+ Set the destination host, user, and password.
+
+ dhost <host name/number> <login> <password>
+
+
+
+DeSchon & Braden [Page 16]
+
+RFC 1068 August 1988
+
+
+ B.2.3 Explain Command
+
+ Display a short explanation of how to use BFTP.
+
+ explain
+
+ B.2.4 Find Command
+
+ Find and display a previous request.
+
+ find
+
+ BFTP will prompt for the request id, which is printed when the
+ request is first submitted. An example of a request id is
+ "bftp583101774". BFTP also prompts for the request keyword, which
+ was determined by the user when the request was first submitted.
+ If no keyword was specified, a <CR> should be typed. If no
+ request id is entered, BFTP will display all requests which
+ contain a matching keyword.
+
+ RequestID (optional): <bftp-request-id>
+ RequestKeyword: <keyword>
+
+ After BFTP has displayed a summary of a matching request, it asks
+ whether the request is to be changed, or canceled.
+
+ Do you wish to change this request? [yes | no]
+ Do you wish to cancel this request? [yes | no]
+
+ If the user indicates that the request is to be changed, BFTP will
+ read in the parameters and cancel the existing request. At this
+ point the user may make any desired changes and use the "submit"
+ command to requeue the request. At this point a new request id
+ will be assigned and displayed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 17]
+
+RFC 1068 August 1988
+
+
+ Although this may happen extremely rarely, if at all, it is
+ possible that a system crash (or the interruption of the BFTP
+ program) at a particularly inopportune moment may leave a request
+ which is not queued. When the "find" command locates such a
+ request, it displays the warning:
+
+ Your request is NOT currently queued.
+
+ If this happens, the request may be read in and resubmitted using
+ the following procedure:
+
+ Your request is NOT currently queued.
+ Do you wish to change this request? yes
+
+ (BFTP displays the parameters that have been read in.)
+
+ Previous request canceled.
+ Use the 'submit' command to submit a new request.
+
+ B.2.5 Help Command
+
+ Print local help information.
+
+ help
+ help <command>
+
+ B.2.6 Quit Command
+
+ Clear parameters and exit the BFTP program.
+
+ quit
+
+ B.2.7 Prompt Command
+
+ Prompt for commonly-used parameters.
+
+ prompt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 18]
+
+RFC 1068 August 1988
+
+
+ The following are the parameters that BFTP prompts for:
+
+ copy/move/delete: [copy | move | delete]
+ ascii/ebcdic/image/local:
+ [ascii|ebcdic] [nonprint|telnet|carriage-control]
+ or
+ [image]
+ or
+ [local] <byte size>
+ (see "set type" for additional information)
+
+ Source --
+ Host: <host name/number>
+ User: <login>
+ Password: <password>
+ Dir: <directory including a delimiter, e.g., "/" or ">">
+ (either an absolute path, or relative to the login)
+ File: <file name>
+
+ Destination --
+ Host: <host name/number>
+ User: <login>
+ Password: <password>
+ Dir: <directory>
+ File: <file name>
+
+ Once the prompting has been completed, the current values of all
+ parameters will be displayed. Parameters not mentioned in the
+ prompting will be initialized with default values, and may be
+ changed via the "set" commands.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 19]
+
+RFC 1068 August 1988
+
+
+ B.2.8 Request Commands
+
+ The request commands enable the user to save a set of BFTP
+ parameters in a "request-file" for future use. Subcommands are
+ provided to to list all available request-files, or to read,
+ write, or delete a request-file. All request-files are stored in
+ the user's home directory. Therefore, this facility is not
+ available when the user is accessing BFTP by telneting to port
+ 152.
+
+ Delete request file "bftp-save.name".
+
+ request delete <name>
+
+ List all bftp-save files.
+
+ request list
+
+ Read a request file in as the current request.
+
+ request load <name>
+
+ Save the current request in a file named "bftp-save.name".
+
+ request store <name>
+
+ B.2.9 Set Commands
+
+ The "set" commands have complex subcommand structures and are used
+ to set many of the less commonly used FTP parameters. The
+ subcommands of "set" are as follows:
+
+ Set the account for the source/destination login.
+
+ set account [source | destination] <account string>
+
+ Set to true to append to destination file.
+
+ set append [true | false]
+
+ The source file will be copied to the destination file name.
+
+ set copy
+
+ The source file will be deleted after the file has been moved or
+ copied.
+
+ set delete
+
+
+
+DeSchon & Braden [Page 20]
+
+RFC 1068 August 1988
+
+
+ Set the mailbox to which the results will be returned. The
+ mailbox should be in standard internet format, for example:
+ "deschon@isi.edu".
+
+ set mailbox <mailbox string>
+
+ Set the FTP transfer mode.
+
+ set mode [stream | block | compress]
+
+ The source file will be deleted after it has been copied.
+
+ set move
+
+ Set to true to transfer multiple files.
+
+ set multiple [true | false]
+
+ Set the port for the source/destination FTP connection.
+
+ set port [source | destination] <port number>
+
+ Set the FTP structure.
+
+ set structure [file | record | page]
+
+ Set the FTP type and format / byte size parameters. Note that a
+ normal text file is usually "ascii", and a "binary" file is often
+ the same as an "image" file.
+
+ set type [ascii|ebcdic] [nonprint|telnet|carriage-control]
+ or
+ set type [image]
+ or
+ set type [local] <byte size>
+
+ Set to true if the STOU command is to be used. If the STOU
+ command is supported by the destination host, the file will be
+ stored into a file having a unique file name.
+
+ set unique [true | false]
+
+ Set to true to display full FTP conversations for "verify" and
+ "transfer" commands.
+
+ set verbose [true | false]
+
+
+
+
+
+DeSchon & Braden [Page 21]
+
+RFC 1068 August 1988
+
+
+ B.2.10 Source Commands
+
+ Set the source directory.
+
+ sdir <directory name>
+
+ Set the source file name.
+
+ sfile <file name>
+
+ Set the source host, user, and password.
+
+ shost <host name/number> <login> <password>
+
+ B.2.11 Status Command
+
+ Display the current parameter values.
+
+ status
+
+ B.2.12 Submit Command
+
+ Submit the current request for background FTP.
+
+ submit
+
+ BFTP prompts for the following information:
+
+ StartTime: <date and/or time>
+ ReturnMailbox: <internet mailbox>
+ RequestKeyword: <made-up keyword>
+
+ B.2.13 Time Command
+
+ Set the start time, the starting retry interval, and the maximum
+ number of tries.
+
+ time <date and/or time> <minutes between tries>
+ <maximum number of tries>
+
+ B.2.14 Transfer Command
+
+ Perform the current request in the foreground.
+
+ transfer
+
+
+
+
+
+
+DeSchon & Braden [Page 22]
+
+RFC 1068 August 1988
+
+
+ B.2.15 Verify Command
+
+ Make the connections now to check parameters.
+
+ verify
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 23]
+
+RFC 1068 August 1988
+
+
+Appendix C: Example BFTP User Script
+
+ deschon.isi.edu 1% telnet hobgoblin.isi.edu 152
+ Trying 128.9.0.42 ...
+ Connected to hobgoblin.isi.edu.
+ Escape character is '^]'.
+
+ BFTP Server (hobgoblin.isi.edu)
+
+ Background File Transfer: For help, type '?', 'help', or 'explain'.
+
+ BFTP> prompt
+
+ Copy/Move/Delete: copy
+
+ Source --
+ Host: deschon.isi.edu
+ User: deschon
+ Password:
+ Dir: ./
+ File: foo*
+
+ Destination --
+ Host: venera.isi.edu
+ User: deschon
+ Password:
+ Dir: ./temp/
+ File: foo*
+
+ StartTime: Tue Oct 6 10:14:43 1987 (interval) 60 (tries) 5
+ ReturnMailbox: deschon@isi.edu
+ RequestPassword:
+
+ BFTP> set multiple true
+ BFTP> status
+ Request type: COPY
+
+ Source --
+ Host: 'deschon.isi.edu'
+ User: 'deschon'
+ Pass: SET
+ Acct: ''
+ Dir: './'
+ File: 'foo*'
+ Port: 21
+
+ Destination --
+ Host: 'venera.isi.edu'
+
+
+
+DeSchon & Braden [Page 24]
+
+RFC 1068 August 1988
+
+
+ User: 'deschon'
+ Pass: SET
+ Acct: ''
+ Dir: './temp/'
+ File:'foo*'
+ Port: 21
+
+ Structure: file, Mode: stream, Type: ascii, Format: nonprint
+ Multiple matching: TRUE
+ Return mailbox: 'deschon@isi.edu', Password: SET
+ Remaining tries: 5, Retry interval: 60 minutes
+
+ Start after Tue Oct 6 10:14:43 1987.
+
+ BFTP> submit
+ Checking parameters...
+
+ Request bftp560538880 submitted to run at 10:14 Oct 6.
+
+ BFTP> quit
+ bye
+ Connection closed by foreign host.
+ deschon.isi.edu 2%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 25]
+
+RFC 1068 August 1988
+
+
+Appendix D: Sample BFTP Notification Message
+
+ Received-Date: Tue, 6 Oct 87 10:15:52 PDT
+ Date: Tue, 6 Oct 87 10:15:47 PDT
+ From: root (Operator)
+ Posted-Date: Tue, 6 Oct 87 10:15:47 PDT
+ To: deschon
+ Subject: BFTP Results: bftp560538880
+
+ Request bftp560538880 submitted to run at 10:14 Oct 6.
+
+ Tue Oct 6 10:15:22 1987: starting...
+
+ Request type: COPY
+ Source: deschon.isi.edu-deschon-XXX--21-./-foo*
+ Destination: venera.isi.edu-deschon-XXX--21-./temp/-
+ Stru: F, Mode: S, Type: A N, Creation: STOR
+ Multiple matching: TRUE
+ Return mailbox: 'deschon@isi.edu', Password: SET
+ Remaining tries: 5, Retry interval: 60 minutes
+
+ Connect to: deschon.isi.edu, 21
+ deschon.isi.edu ==> 220 deschon.isi.edu FTP server (Version 4.7
+ Sun Sep 14 12:44:57 PDT 1986) ready.
+ Connect to: venera.isi.edu, 21
+ venera.isi.edu ==> 220 venera.isi.edu FTP server (Version 4.107
+ Thu Mar 19 20:54:37 PST 1987) ready.
+ deschon.isi.edu <== USER deschon
+ deschon.isi.edu ==> 331 Password required for deschon.
+ deschon.isi.edu <== PASS XXX
+ deschon.isi.edu ==> 230 User deschon logged in.
+ venera.isi.edu <== USER deschon
+ venera.isi.edu ==> 331 Password required for deschon.
+ venera.isi.edu <== PASS XXX
+ venera.isi.edu ==> 230 User deschon logged in.
+ deschon.isi.edu <== CWD ./
+ deschon.isi.edu ==> 200 CWD command okay.
+ venera.isi.edu <== CWD ./temp/
+ venera.isi.edu ==> 250 CWD command successful.
+ deschon.isi.edu <== PORT 128,9,1,56,4,106
+ deschon.isi.edu ==> 200 PORT command okay.
+ deschon.isi.edu <== NLST foo*
+ deschon.isi.edu ==> 150 Opening data connection for /bin/ls
+ (128.9.1.56,1130) (0 bytes).
+ deschon.isi.edu ==> 226 Transfer complete.
+ deschon.isi.edu <== PASV
+ deschon.isi.edu ==> 502 PASV command not implemented.
+ venera.isi.edu <== PASV
+
+
+
+DeSchon & Braden [Page 26]
+
+RFC 1068 August 1988
+
+
+ venera.isi.edu ==> 227 Entering Passive Mode (128,9,0,32,6,200)
+ deschon.isi.edu <== PORT 128,9,0,32,6,200
+ deschon.isi.edu ==> 200 PORT command okay.
+ deschon.isi.edu <== RETR foo
+ venera.isi.edu <== STOR foo
+ deschon.isi.edu ==> 150 Opening data connection for foo
+ (128.9.0.32,1736) (0 bytes).
+ deschon.isi.edu ==> 226 Transfer complete.
+ venera.isi.edu ==> 150 Openning data connection for foo
+ (128.9.1.56,20).
+ venera.isi.edu ==> 226 Transfer complete.
+ venera.isi.edu <== PASV
+ venera.isi.edu ==> 227 Entering Passive Mode (128,9,0,32,6,201)
+ deschon.isi.edu <== PORT 128,9,0,32,6,201
+ deschon.isi.edu ==> 200 PORT command okay.
+ deschon.isi.edu <== RETR foo1
+ venera.isi.edu <== STOR foo1
+ deschon.isi.edu ==> 150 Opening data connection for foo1
+ (128.9.0.32,1737) (4 bytes).
+ deschon.isi.edu ==> 226 Transfer complete.
+ venera.isi.edu ==> 150 Openning data connection for foo1
+ (128.9.1.56,20).
+ venera.isi.edu ==> 226 Transfer complete.
+ deschon.isi.edu <== QUIT
+ venera.isi.edu <== QUIT
+
+ Tue Oct 6 10:15:39 1987: completed successfully.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+DeSchon & Braden [Page 27]
+ \ No newline at end of file