draft-ietf-tftpexts-option-ext-01.txt   draft-ietf-tftpexts-option-ext-02.txt 
draft-ietf-tftpexts-tftp-option-ext-01.txt G. Malkin / Xylogics, Inc. draft-ietf-tftpexts-option-ext-02.txt G. Malkin / Xylogics, Inc.
TFTP Option Extension A. Harkin / Hewlett-Packard Co. TFTP Option Extension A. Harkin / Hewlett-Packard Co.
Updates: RFC 1350 (STD 33) October 1994 Updates: RFC 1350 (STD 33) December 1994
TFTP Option Extension TFTP Option Extension
Abstract Abstract
The Trivial File Transfer Protocol [1] is a simple, lock-step, file 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 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 remote host. This document describes a simple extension to TFTP to
allow option negotiation prior to the file transfer. allow option negotiation prior to the file transfer.
skipping to change at page 1, line 44 skipping to change at page 1, line 44
Introduction Introduction
The option negotiation mechanism proposed in this document is a The option negotiation mechanism proposed in this document is a
backward-compatible extension to the TFTP protocol. It allows file backward-compatible extension to the TFTP protocol. It allows file
transfer options to be negotiated prior to the transfer using a transfer options to be negotiated prior to the transfer using a
mechanism which is consistent with TFTPs Request Packet format. The mechanism which is consistent with TFTPs Request Packet format. The
mechanism is kept simple by enforcing a request-respond-acknowledge mechanism is kept simple by enforcing a request-respond-acknowledge
sequence, similar to the lock-step approach taken by TFTP itself. sequence, similar to the lock-step approach taken by TFTP itself.
While the option negotiation mechanism is general purpose, in that While the option negotiation mechanism is general purpose, in that
many types of options may be negotiated (e.g., timeout values), it many types of options may be negotiated, it was created to support
was created to support the Blocksize option defined in [2]. the Blocksize option defined in [2]. Additional options are defined
in [3].
Packet Formats Packet Formats
TFTP options are appended to the Read Request and Write Request TFTP options are appended to the Read Request and Write Request
packets. A new type of TFTP packet, the Option Acknowledgment packets. A new type of TFTP packet, the Option Acknowledgment
(OACK), is used to acknowledge a client's option negotiation request. (OACK), is used to acknowledge a client's option negotiation request.
A new error code, 8, is hereby defined to indicate that a transfer A new error code, 8, is hereby defined to indicate that a transfer
should be terminated due to option negotiation. should be terminated due to option negotiation.
Options are appended to a TFTP Read Request or Write Request packet Options are appended to a TFTP Read Request or Write Request packet
skipping to change at page 2, line 51 skipping to change at page 2, line 51
The value associated with the first option, in case-insensitive The value associated with the first option, in case-insensitive
ASCII. This is a NULL-terminated field. ASCII. This is a NULL-terminated field.
optN, valueN optN, valueN
The final option/value pair. Each NULL-terminated field is The final option/value pair. Each NULL-terminated field is
specified in case-insensitive ASCII. specified in case-insensitive ASCII.
The options and values are all NULL-terminated, in keeping with the The options and values are all NULL-terminated, in keeping with the
original request format. If multiple options are to be negotiated, original request format. If multiple options are to be negotiated,
they are appended to each other. The order in which options are they are appended to each other. The order in which options are
specified is not significant. specified is not significant. The maximum size of a request packet
is 512 octets.
The OACK packet has the following format: The OACK packet has the following format:
+-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+
| opc | opt1 | 0 | value1 | 0 | optN | 0 | valueN | 0 | | opc | opt1 | 0 | value1 | 0 | optN | 0 | valueN | 0 |
+-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+ +-------+---~~---+---+---~~---+---+---~~---+---+---~~---+---+
opc opc
The opcode field contains a 6, for Option Acknowledgment. The opcode field contains a 6, for Option Acknowledgment.
skipping to change at page 5, line 14 skipping to change at page 5, line 14
Examples Examples
Read Request Read Request
client server client server
------------------------------------------------------- -------------------------------------------------------
|1|foofile|0|octet|0|blksize|0|1432|0| --> RRQ |1|foofile|0|octet|0|blksize|0|1432|0| --> RRQ
<-- |6|blksize|0|1432|0| OACK <-- |6|blksize|0|1432|0| OACK
|4|0| --> ACK |4|0| --> ACK
<-- |3|1| 1432 bytes of data | DATA <-- |3|1| 1432 octets of data | DATA
|4|1| --> ACK |4|1| --> ACK
<-- |3|2| 1432 bytes of data | DATA <-- |3|2| 1432 octets of data | DATA
|4|2| --> ACK |4|2| --> ACK
<-- |3|3|<1432 bytes of data | DATA <-- |3|3|<1432 octets of data | DATA
|4|3| --> ACK |4|3| --> ACK
Write Request Write Request
client server client server
------------------------------------------------------- -------------------------------------------------------
|2|barfile|0|octet|0|blksize|0|2048|0| --> RRQ |2|barfile|0|octet|0|blksize|0|2048|0| --> RRQ
<-- |6|blksize|0|2048|0| OACK <-- |6|blksize|0|2048|0| OACK
|3|1| 2048 bytes of data | --> DATA |3|1| 2048 octets of data | --> DATA
<-- |4|1| ACK <-- |4|1| ACK
|3|2| 2048 bytes of data | --> DATA |3|2| 2048 octets of data | --> DATA
<-- |4|2| ACK <-- |4|2| ACK
|3|3|<2048 bytes of data | --> DATA |3|3|<2048 octets of data | --> DATA
<-- |4|3| ACK <-- |4|3| ACK
Security Considerations Security Considerations
Security issues are not discussed in this memo. Security issues are not discussed in this memo.
References References
[1] Sollins, K., "The TFTP Protocol (Revision 2)", Request for [1] Sollins, K., "The TFTP Protocol (Revision 2)", Request for
Comments 1350 (STD 33), October 1992. Comments 1350 (STD 33), October 1992.
[2] Malkin, G., Harkin, A., "TFTP Blocksize Option", Internet Draft, [2] Malkin, G., Harkin, A., "TFTP Blocksize Option", Internet Draft,
draft-malkin-tftp-blksize-opt-01.txt, September 1994. draft-ietf-tftpexts-blksize-opt-01.txt, September 1994.
[3] Malkin, G., Harkin, A., "TFTP Timeout Interval and Transfer Size
Options", Internet Draft, draft-ietf-tftpexts-options-00.txt,
December 1994.
Authors' Addresses Authors' Addresses
Gary Scott Malkin Gary Scott Malkin
Xylogics, Inc. Xylogics, Inc.
53 Third Avenue 53 Third Avenue
Burlington, MA 01803 Burlington, MA 01803
Phone: (617) 272-8140 Phone: (617) 272-8140
EMail: gmalkin@xylogics.com EMail: gmalkin@xylogics.com
 End of changes. 11 change blocks. 
12 lines changed or deleted 18 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/