RFC 2349 DRAFT STANDARD TFTP · FILE TRANSFER · OPTIONS

TFTP Timeout/Size: TFTP Timeout Interval and Transfer Size Options

Two TFTP options: agree on the retransmission timeout, and learn the file size before the transfer starts.

On rfc-editor.org ↗
PUBLISHED
May 1998
AUTHORS
G. Malkin, A. Harkin
STREAM
Legacy
BUILDS ON
RFC 1784 — TFTP Timeout/Tsize, RFC 1350 — TFTP
TIMEOUT OPTION NAME
timeout
TIMEOUT RANGE
1 to 255 seconds
SIZE OPTION NAME
tsize
SIZE IN READ REQUESTS
0 in the request, real size in the OACK
FILE TOO LARGE
ERROR code 3
DOI
10.17487/RFC2349

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                          G. Malkin
Request for Commments: 2349                                 Bay Networks
Updates: 1350                                                  A. Harkin
Obsoletes: 1784                                      Hewlett Packard Co.
Category: Standards Track                                       May 1998


            TFTP Timeout Interval and Transfer Size Options

Status of this Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (1998).  All Rights Reserved.

Abstract

   The Trivial File Transfer Protocol [1] is a simple, lock-step, file
   transfer protocol which allows a client to get or put a file onto a
   remote host.

   This document describes two TFTP options. The first allows the client
   and server to negotiate the Timeout Interval.  The second allows the
   side receiving the file to determine the ultimate size of the
   transfer before it begins.  The TFTP Option Extension mechanism is
   described in [2].

Timeout Interval Option Specification

   The TFTP Read Request or Write Request packet is modified to include
   the timeout option as follows:

      +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+
      |  opc  |filename| 0 |  mode  | 0 | timeout| 0 |  #secs | 0 |
      +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+

      opc
         The opcode field contains either a 1, for Read Requests, or 2,
         for Write Requests, as defined in [1].

      filename
         The name of the file to be read or written, as defined in [1].
         This is a NULL-terminated field.

      mode
         The mode of the file transfer: "netascii", "octet", or "mail",
         as defined in [1].  This is a NULL-terminated field.

      timeout
         The Timeout Interval option, "timeout" (case in-sensitive).
         This is a NULL-terminated field.

      #secs
         The number of seconds to wait before retransmitting, specified
         in ASCII.  Valid values range between "1" and "255" seconds,
         inclusive.  This is a NULL-terminated field.

   For example:

      +-------+--------+---+--------+---+--------+---+-------+---+
      |   1   | foobar | 0 | octet  | 0 | timeout| 0 |   1   | 0 |
      +-------+--------+---+--------+---+--------+---+-------+---+

   is a Read Request, for the file named "foobar", in octet (binary)
   transfer mode, with a timeout interval of 1 second.

   If the server is willing to accept the timeout option, it sends an
   Option Acknowledgment (OACK) to the client.  The specified timeout
   value must match the value specified by the client.

Transfer Size Option Specification

   The TFTP Read Request or Write Request packet is modified to include
   the tsize option as follows:

      +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+
      |  opc  |filename| 0 |  mode  | 0 | tsize  | 0 |  size  | 0 |
      +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+

      opc
         The opcode field contains either a 1, for Read Requests, or 2,
         for Write Requests, as defined in [1].

      filename
         The name of the file to be read or written, as defined in [1].
         This is a NULL-terminated field.

      mode
         The mode of the file transfer: "netascii", "octet", or "mail",
         as defined in [1].  This is a NULL-terminated field.

      tsize
         The Transfer Size option, "tsize" (case in-sensitive).  This is
         a NULL-terminated field.

      size
         The size of the file to be transfered.  This is a NULL-
         terminated field.

   For example:

      +-------+--------+---+--------+---+--------+---+--------+---+
      |   2   | foobar | 0 | octet  | 0 | tsize  | 0 | 673312 | 0 |
      +-------+--------+---+--------+---+--------+---+--------+---+

   is a Write Request, with the 673312-octet file named "foobar", in
   octet (binary) transfer mode.

   In Read Request packets, a size of "0" is specified in the request
   and the size of the file, in octets, is returned in the OACK.  If the
   file is too large for the client to handle, it may abort the transfer
   with an Error packet (error code 3).  In Write Request packets, the
   size of the file, in octets, is specified in the request and echoed
   back in the OACK.  If the file is too large for the server to handle,
   it may abort the transfer with an Error packet (error code 3).

Security Considerations

   The basic TFTP protocol has no security mechanism.  This is why it
   has no rename, delete, or file overwrite capabilities.  This document
   does not add any security to TFTP; however, the specified extensions
   do not add any additional security risks.

References

   [1] Sollins, K., "The TFTP Protocol (Revision 2)", STD 33, RFC 1350,
       October 92.

   [2] Malkin, G., and A. Harkin, "TFTP Option Extension", RFC 2347,
       May 1998.

Authors' Addresses

   Gary Scott Malkin
   Bay Networks
   8 Federal Street
   Billerica, MA  01821

   Phone:  (978) 916-4237
   EMail:  gmalkin@baynetworks.com


   Art Harkin
   Internet Services Project
   Information Networks Division
   19420 Homestead Road MS 43LN
   Cupertino, CA  95014

   Phone: (408) 447-3755
   EMail: ash@cup.hp.com

Full Copyright Statement

   Copyright (C) The Internet Society (1998).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

AI ELI5

On this page
PROBLEMBasic TFTP gives the two sides no way to agree on how long to wait before retransmitting, and the receiver cannot know the size of the file up front.
MECHANISMThe request carries a timeout option holding seconds (1 to 255), or a tsize option holding the file size in octets. The server confirms with an Option Acknowledgment (OACK).
WHY IT MATTERSA receiver can check that a file fits before accepting it and abort with error code 3 if it is too large, and both sides can use a timeout they agreed on.

§1Two Small Extensions

TFTP is a simple, lock-step protocol that lets a client get or put a file on a remote host. This RFC describes two options for it. The first lets the client and server negotiate the timeout interval. The second lets the side receiving the file learn the final size of the transfer before it begins.

Both use the TFTP option extension mechanism of RFC 2347: extra NULL-terminated name and value fields appended to the read request or write request.

Two little notes you can add to a file request: "wait this long before nagging me" and "the file is this big."

§2The Timeout Interval Option

After the mode, the request carries the option name timeout (case-insensitive) and a number of seconds in ASCII. Valid values are 1 to 255, inclusive. The number says how long to wait before retransmitting.

If the server accepts, it replies with an Option Acknowledgment (OACK), and the timeout value in it must match the value the client sent. The RFC's example is a read request for foobar in octet mode with a timeout of 1 second.

You say how long you will wait before asking again, and the other side has to agree to exactly that number.

§3The Transfer Size Option

The request carries tsize (case-insensitive) and a size in ASCII. In a read request the client sends a size of 0, and the server returns the real file size in octets in its OACK. In a write request the client states the file size in octets, and the server echoes it back in the OACK.

If the file is too large for the receiving side to handle, that side may abort the transfer with an ERROR packet using error code 3. The RFC's example is a write request for the 673312-octet file foobar.

Before the boxes arrive, you learn how many there will be. If your room is too small, you can say no right away.

TSIZE ON A READ REQUEST (RFC 2349)
ClientServer
  1. Read Request, tsize = 0The client asks for the file and sends a size of 0.
  2. OACK, tsize = file sizeThe server returns the file size in octets.
  3. ERROR code 3 (optional)The client may abort if the file is too large for it.

§4Security

The basic TFTP protocol has no security mechanism, which is why it has no rename, delete or file overwrite capabilities. This document adds no security to TFTP. The RFC states that the specified extensions do not add any additional security risks.

TFTP never had locks on its doors, and these notes do not add any, but they do not open any new doors either.

§5References