Read the packet bytes
02A two-byte opcode selects a request, data, acknowledgment or error. Zero bytes terminate request strings; they are not printed characters.
00 05 is ERROR, code 1 means File not found, and Not found is a chosen human-readable message.
Source for this drawing: RFC 1350 · Read RFC section 5 ↗
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.
Terms in this drawing
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
Read the opcode, then the fields for that packet type.
- Base opcodes are 1 RRQ, 2 WRQ, 3 DATA, 4 ACK and 5 ERROR. DATA and ACK carry a two-byte block number.
- Requests carry a filename, zero byte, mode and zero byte. Mode names are case-insensitive. Octet sends raw 8-bit bytes; netascii uses the specified text representation and requires local-format translation when receiving netascii.
- DATA holds 0–512 data bytes in this base protocol. ERROR carries a two-byte code and zero-terminated human-readable message; its code is not a block number.
All dumps are complete fictional TFTP payloads, excluding UDP/IP headers. Field widths are schematic except labeled byte counts. The three-byte abc DATA is a separate tiny-file example, not the full 512-byte block used later. Octet return preserves the original bytes. Mail mode is obsolete and should not be implemented or used (§1); no mail transfer is illustrated.
Read the RFC section ↗