rfc1068.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 1,515 行 · 第 1/4 页

TXT
1,515
字号






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 -------->

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?