Visual RFC.
ALL RFCs / RFC 1350
Read the RFC ↗
RFC 1350 / TFTP · ONE BLOCK AT A TIME

Retry without duplicating the file

03

TFTP supplies its own one-block-at-a-time acknowledgment and retry behavior. UDP itself does not promise delivery or duplicate protection.

RFC 1350 · § 2EXAMPLE
5 / 5
Retry without duplicating the fileUpload DATA1 is stored once at512bytes. ACK1 is lost and DATA2 is withheld. Sender timeout retransmits DATA1; receiver keeps512bytes and re-ACKs1. Once ACK1 arrives, new DATA2 is stored and total becomes1024. A delayed duplicate ACK1 does not retransmit DATA2: sender remains waiting for ACK2. Every retry retains block numbers; no fixed retry seconds are asserted.UPLOAD · sender left, receiver rightClientServerdelayed duplicate ACK 1NO DATA 2 resendOld ACK is not a retry triggerfile bytes [0,1024)Sender still waits for ACK 2 or timeout
05
Ignore an old acknowledgment.

A delayed duplicate ACK 1 does not trigger another DATA 2. The sender still waits for ACK 2 or its retry timer.

Source for this drawing: RFC 1350 · Read RFC section 2 ↗

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.

What changed
RFC 1350 §§1–2,5Referenced RFC 1123 §4.2.3.1–2

RFC 1350 directs readers to these host requirements: DATA senders must not resend on duplicate ACKs; implementations must use an adaptive timeout. These are earlier referenced requirements, not a later version of TFTP.

Read the updated RFC section ↗
KEY POINT

Repeat a lost exchange, not the already-written file bytes.

  • Send the next data block only after the current one is acknowledged. Block numbers start at 1 and increase for each new data block; retransmissions keep the same block number.
  • The data sender keeps its unacknowledged block and a retry timer. A repeated DATA block can cause another ACK, but is not appended to the file again.
  • RFC 1123 §4.2.3.1 requires the Sorcerer’s Apprentice fix: the DATA sender MUST NOT resend its current DATA on a duplicate ACK. §4.2.3.2 requires an adaptive timeout; at least exponential backoff is necessary.
DETAILS

Example is an upload of at least 1024 bytes in octet mode. ACK 1 is lost, then a delayed duplicate ACK 1 arrives while block 2 is outstanding. The diagram distinguishes a sender timeout from receipt of an old ACK. No universal timeout seconds or retry limit is invented. Uppercase requirements here are explicitly sourced to RFC 1123, which RFC 1350 references.

Read the RFC section ↗

All chapters in RFC 1350

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 ↗