diff options
Diffstat (limited to 'doc/rfc/rfc2347.txt')
-rw-r--r-- | doc/rfc/rfc2347.txt | 395 |
1 files changed, 395 insertions, 0 deletions
diff --git a/doc/rfc/rfc2347.txt b/doc/rfc/rfc2347.txt new file mode 100644 index 0000000..dbc0f8c --- /dev/null +++ b/doc/rfc/rfc2347.txt @@ -0,0 +1,395 @@ + + + + + + +Network Working Group G. Malkin +Request for Commments: 2347 Bay Networks +Updates: 1350 A. Harkin +Obsoletes: 1782 Hewlett Packard Co. +Category: Standards Track May 1998 + + + TFTP Option Extension + +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 a simple extension to TFTP to + allow option negotiation prior to the file transfer. + +Introduction + + The option negotiation mechanism proposed in this document is a + backward-compatible extension to the TFTP protocol. It allows file + transfer options to be negotiated prior to the transfer using a + mechanism which is consistent with TFTP's Request Packet format. The + mechanism is kept simple by enforcing a request-respond-acknowledge + sequence, similar to the lock-step approach taken by TFTP itself. + + While the option negotiation mechanism is general purpose, in that + many types of options may be negotiated, it was created to support + the Blocksize option defined in [2]. Additional options are defined + in [3]. + +Packet Formats + + TFTP options are appended to the Read Request and Write Request + packets. A new type of TFTP packet, the Option Acknowledgment + (OACK), is used to acknowledge a client's option negotiation request. + A new error code, 8, is hereby defined to indicate that a transfer + + + +Malkin & Harkin Standards Track [Page 1] + +RFC 2347 TFTP Option Extension May 1998 + + + should be terminated due to option negotiation. + + Options are appended to a TFTP Read Request or Write Request packet + as follows: + + +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+--> + | opc |filename| 0 | mode | 0 | opt1 | 0 | value1 | 0 | < + +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+--> + + >-------+---+---~~---+---+ + < optN | 0 | valueN | 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. + + opt1 + The first option, in case-insensitive ASCII (e.g., blksize). + This is a NULL-terminated field. + + value1 + The value associated with the first option, in case- + insensitive ASCII. This is a NULL-terminated field. + + optN, valueN + The final option/value pair. Each NULL-terminated field is + specified in case-insensitive ASCII. + + The options and values are all NULL-terminated, in keeping with the + original request format. If multiple options are to be negotiated, + they are appended to each other. The order in which options are + specified is not significant. The maximum size of a request packet + is 512 octets. + + The OACK packet has the following format: + + + + + + + +Malkin & Harkin Standards Track [Page 2] + +RFC 2347 TFTP Option Extension May 1998 + + + +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ + | opc | opt1 | 0 | value1 | 0 | optN | 0 | valueN | 0 | + +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ + + opc + The opcode field contains a 6, for Option Acknowledgment. + + opt1 + The first option acknowledgment, copied from the original + request. + + value1 + The acknowledged value associated with the first option. If + and how this value may differ from the original request is + detailed in the specification for the option. + + optN, valueN + The final option/value acknowledgment pair. + +Negotiation Protocol + + The client appends options at the end of the Read Request or Write + request packet, as shown above. Any number of options may be + specified; however, an option may only be specified once. The order + of the options is not significant. + + If the server supports option negotiation, and it recognizes one or + more of the options specified in the request packet, the server may + respond with an Options Acknowledgment (OACK). Each option the + server recognizes, and accepts the value for, is included in the + OACK. Some options may allow alternate values to be proposed, but + this is an option specific feature. The server must not include in + the OACK any option which had not been specifically requested by the + client; that is, only the client may initiate option negotiation. + Options which the server does not support should be omitted from the + OACK; they should not cause an ERROR packet to be generated. If the + value of a supported option is invalid, the specification for that + option will indicate whether the server should simply omit the option + from the OACK, respond with an alternate value, or send an ERROR + packet, with error code 8, to terminate the transfer. + + An option not acknowledged by the server must be ignored by the + client and server as if it were never requested. If multiple options + were requested, the client must use those options which were + acknowledged by the server and must not use those options which were + not acknowledged by the server. + + + + + +Malkin & Harkin Standards Track [Page 3] + +RFC 2347 TFTP Option Extension May 1998 + + + When the client appends options to the end of a Read Request packet, + three possible responses may be returned by the server: + + OACK - acknowledge of Read Request and the options; + + DATA - acknowledge of Read Request, but not the options; + + ERROR - the request has been denied. + + When the client appends options to the end of a Write Request packet, + three possible responses may be returned by the server: + + OACK - acknowledge of Write Request and the options; + + ACK - acknowledge of Write Request, but not the options; + + ERROR - the request has been denied. + + If a server implementation does not support option negotiation, it + will likely ignore any options appended to the client's request. In + this case, the server will return a DATA packet for a Read Request + and an ACK packet for a Write Request establishing normal TFTP data + transfer. In the event that a server returns an error for a request + which carries an option, the client may attempt to repeat the request + without appending any options. This implementation option would + handle servers which consider extraneous data in the request packet + to be erroneous. + + Depending on the original transfer request there are two ways for a + client to confirm acceptance of a server's OACK. If the transfer was + initiated with a Read Request, then an ACK (with the data block + number set to 0) is sent by the client to confirm the values in the + server's OACK packet. If the transfer was initiated with a Write + Request, then the client begins the transfer with the first DATA + packet, using the negotiated values. If the client rejects the OACK, + then it sends an ERROR packet, with error code 8, to the server and + the transfer is terminated. + + Once a client acknowledges an OACK, with an appropriate non-error + response, that client has agreed to use only the options and values + returned by the server. Remember that the server cannot request an + option; it can only respond to them. If the client receives an OACK + containing an unrequested option, it should respond with an ERROR + packet, with error code 8, and terminate the transfer. + + + + + + + +Malkin & Harkin Standards Track [Page 4] + +RFC 2347 TFTP Option Extension May 1998 + + +Examples + + Read Request + + client server + ------------------------------------------------------- + |1|foofile|0|octet|0|blksize|0|1432|0| --> RRQ + <-- |6|blksize|0|1432|0| OACK + |4|0| --> ACK + <-- |3|1| 1432 octets of data | DATA + |4|1| --> ACK + <-- |3|2| 1432 octets of data | DATA + |4|2| --> ACK + <-- |3|3|<1432 octets of data | DATA + |4|3| --> ACK + + Write Request + + client server + ------------------------------------------------------- + |2|barfile|0|octet|0|blksize|0|2048|0| --> RRQ + <-- |6|blksize|0|2048|0| OACK + |3|1| 2048 octets of data | --> DATA + <-- |4|1| ACK + |3|2| 2048 octets of data | --> DATA + <-- |4|2| ACK + |3|3|<2048 octets of data | --> DATA + <-- |4|3| ACK + +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 1992. + + [2] Malkin, G., and A. Harkin, "TFTP Blocksize Option", RFC 2348, + May 1998. + + [3] Malkin, G., and A. Harkin, "TFTP Timeout Interval and Transfer + Size Options", RFC 2349, May 1998. + + + + + +Malkin & Harkin Standards Track [Page 5] + +RFC 2347 TFTP Option Extension 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Malkin & Harkin Standards Track [Page 6] + +RFC 2347 TFTP Option Extension May 1998 + + +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. + + + + + + + + + + + + + + + + + + + + + + + + +Malkin & Harkin Standards Track [Page 7] + |