RFC 2347 / START HERE
TFTP option negotiation, before the details
TFTP means Trivial File Transfer Protocol. The Option Extension adds a request, response and confirmation step for choosing transfer settings.
A client appends named options to its read request (RRQ) or write request (WRQ). A supporting server can send OACK, an Option Acknowledgment, containing accepted settings. Only the returned settings become active when the client confirms.
The idea in one picture
Request options
Acknowledge a subset
Confirm, then transfer
A simplified picture of the idea; the chapters explain the actual mechanisms.
Why it exists
Basic TFTP has fixed transfer conventions. This framework allows separately defined options, such as blocksize, to be agreed before data moves while preserving fallback to ordinary TFTP. RFC 2347 updates RFC 1350 and obsoletes RFC 1782; it does not replace the TFTP file-transfer protocol.
A familiar example
A small device asks for a file with a larger blocksize. The server can accept a smaller permitted value, omit an unsupported option, or start ordinary TFTP. A read confirms OACK with ACK 0; a write confirms with DATA 1. OACK is an agreement about settings, not proof of a trusted peer.
Helpful background
You can start here without reading another RFC. If these ideas are unfamiliar, these short introductions may help.
What you’ll learn next
Begin with chapter one, or choose a topic.
- Append option pairs to a read or write requestTFTP means Trivial File Transfer Protocol. Its client reads a file using RRQ or writes one using WRQ. Options are extra named settings appended to that original request.→
- Use the acknowledged subset, not the whole wish listOACK means Option Acknowledgment. It contains opcode 6 followed by accepted option/value pairs; it does not repeat the filename or mode.→
- Confirm a read with ACK block zeroIn a read, the server sends file data to the client. Before that first data block, the client accepts OACK by sending ACK with block number 0.→
- Confirm a write by sending DATA block oneIn a write, the client sends file data to the server. The first DATA packet, using negotiated values, also confirms the server’s OACK. There is no extra client ACK 0.→
- Fall back deliberately or terminate negotiationAn option request does not force the server to negotiate. Ordinary TFTP replies can start a transfer without those options; an ERROR is a different outcome.→
This introduction explains RFC 2347 (1998). Read the original RFC ↗