Visual RFC.
ALL RFCs / RFC 2347
Read the RFC ↗
RFC 2347 / TFTP OPTION NEGOTIATION

Fall back deliberately or terminate negotiation

05

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

RFC 2347 · Negotiation Protocol · p.4EXAMPLE
4 / 4
Fall back deliberately or terminate negotiationOptional new plain request after ERROR has unknown result; no forced success.Separate optional retry after an ERRORClientServerPrior request with options received ERRORnew plain RRQ, without option pairsClient may choose this; success unknownNo permission or missing-file bypassOACK does not authenticate a peer or add encryption/security
04
Optionally retry a failed request without options

Separate request-with-options that received ERROR: the client chooses the permitted new request without option pairs. This is a fresh attempt with an unknown result, not guaranteed recovery.

Source for this drawing: RFC 2347 · Read RFC source: Negotiation Protocol · p.4 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A message needs an address.

Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

For a read request, DATA block 1 instead of OACK starts ordinary TFTP without acknowledged options. For a write request, ACK block 0 instead of OACK does the same. Requested options must not silently become active.

  • For a read request, DATA block 1 instead of OACK starts ordinary TFTP without acknowledged options. For a write request, ACK block 0 instead of OACK does the same. Requested options must not silently become active.
  • Without an acknowledged blksize option, base TFTP data blocks use up to 512 data octets. The four-octet DATA header is additional. A server ignoring extensions is not promising the requested blocksize.
  • A client rejecting an OACK sends ERROR code 8 and terminates. Unsupported options should be omitted by the server; a supported option with an invalid value follows that option’s specification and can have different outcomes.
  • If the server returns ERROR for a request carrying options, the client may attempt a new request without options. That retry is optional and not guaranteed to succeed; it does not bypass permissions or fix a missing file. The extension adds no security.
DETAILS

Fictional picnic.txt in octet mode; chosen sizes and values are examples. Comparisons reset state. This RFC uses lowercase must/should/may; those distinctions are retained. No real files or UDP transfers are used.

Read the RFC section ↗

All chapters in RFC 2347

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗