Visual RFC.
ALL RFCs / RFC 2348
Read the RFC ↗

RFC 2348 / START HERE

TFTP block size, before the details

TFTP means Trivial File Transfer Protocol, a small file-transfer protocol carried over UDP. Its Blocksize Option negotiates how many data bytes go into each DATA packet; one octet is an eight-bit byte.

A client asks for a block size and a willing server acknowledges an equal or smaller value. Read and write transfers confirm that agreement differently, then identify the last packet by its shorter data payload.

The idea in one picture

  1. Ask for a size

  2. Agree before data

  3. Recognize the end

A simplified picture of the idea; the chapters explain the actual mechanisms.

Why it exists

Base TFTP uses 512-byte data blocks and waits for an acknowledgment after each one. This extension can reduce the number of waits by choosing larger blocks, while keeping the option handshake separate from the actual file data.

A familiar example

A device fetching a binary boot file on a managed network might request 1428 data bytes per block and accept a server offer of 1024. An exact multiple still needs an empty final DATA packet; negotiation does not prove path capacity or add authentication.

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.

  1. Ask for a data block size in the requestThe Trivial File Transfer Protocol (TFTP) normally sends up to 512 data octets at a time. A client can append blksize to a Read Request (RRQ) or Write Request (WRQ) before data transfer.
  2. Agree on a size or stop negotiationA willing server returns an Option Acknowledgment (OACK). Its block size cannot be greater than the requested value; the client either accepts the offered size or sends ERROR code 8 to terminate.
  3. Confirm reads and writes differentlyRead acceptance sends ACK block 0 before the server’s first DATA. Write acceptance instead starts with client DATA block 1. These are separate transfers, not one combined sequence.
  4. Finish with a shorter DATA payloadThe receiver recognizes the final DATA packet when its data length is less than the negotiated block size. A full-sized block does not signal the end, even when it exhausts the file.
  5. Balance fewer waits against path limitsBigger blocks can reduce packet overhead and stop-and-wait exchanges, but a negotiated value is not proof that the path can carry the packet without fragmentation.
Start with chapter one →

This introduction explains RFC 2348 (1998). Read the original RFC ↗