1. Ports
  2. Port 69

Port 69 carries TFTP traffic: the Trivial File Transfer Protocol. Every time a device wakes up with no operating system, no hard drive, nothing but a network connection and the electronic equivalent of hope, port 69 is how it receives its first instructions.

This is the port of genesis. The protocol of first breath.

What TFTP Does

TFTP is a file transfer protocol stripped to its absolute essentials.1 It can read files. It can write files. That's it. No directory listings. No authentication. No encryption. No features that would make it "complete" by any reasonable standard.

And that's exactly the point.

When a VoIP phone powers on in an office, it has no idea who it is. It doesn't know its extension number, its user's name, or what firmware it should be running. It sends a request to port 69, and a TFTP server responds with everything it needs to become itself: the firmware image, the configuration file, its identity.

When a diskless workstation boots in a data center, it has no storage at all. Its entire operating system arrives over the network, packet by packet, through port 69.2

This is what TFTP was built for: giving machines that have nothing the bootstrap they need to become something.

How the Protocol Works

TFTP runs on UDP, not TCP.3 This matters. TCP requires a three-way handshake, sequence numbers, connection state. TFTP's target machines often don't have enough memory or code to implement TCP. They need something simpler.

The protocol defines exactly five packet types:4

  1. RRQ (Read Request): "I need this file"
  2. WRQ (Write Request): "I have this file for you"
  3. DATA: The actual file contents, 512 bytes at a time
  4. ACK: "Got it, send the next one"
  5. ERROR: Something went wrong

That's the entire vocabulary. Five words.

A transfer works like this: the client sends an RRQ or WRQ to port 69 on the server. The server responds from a different, randomly chosen port. From then on, the conversation happens between that ephemeral port and the client. Every DATA packet gets exactly one ACK. Every ACK triggers exactly one DATA packet. This is called "lock-step" transfer: only one packet is ever in flight at a time.

A DATA packet smaller than 512 bytes signals the end of the file. No explicit "transfer complete" message. Just: this packet is small, so we're done.

The elegant constraint: a TFTP implementation needs to buffer exactly one packet. That's 516 bytes maximum (4 bytes of header plus 512 bytes of data). You can implement TFTP in the boot ROM of a network card. And people do.

The History

In the mid-1970s, researchers at Xerox PARC created EFTP (Experimental/Ether File Transfer Protocol) as part of their PARC Universal Packet (PUP) protocol suite.5 It was a simple, lock-step file transfer protocol designed for bootstrapping machines over Ethernet.

In 1980, Noel Chiappa at MIT needed a way to boot machines over the nascent Internet. According to Chiappa himself: "Shortly thereafter I did TFTP (which was simply a ripoff of EFTP) to give us a way to get bits into and out of the machine."6

The protocol was first defined in IEN 133 in 1980. Karen Sollins at MIT formalized it as RFC 783 in June 1981.7 The design team included Chiappa, Bob Baldwin, and Dave Clark, with the error mechanism directly inspired by PARC's EFTP abort message.

But there was a bug. A serious one with a beautiful name.

The Sorcerer's Apprentice Syndrome

In Goethe's 1797 poem "Der Zauberlehrling" (popularized in Disney's 1940 Fantasia), an apprentice enchants a broom to carry water, but can't stop it. When he chops the broom in half, both halves continue carrying water. The problem multiplies.

The original TFTP specification had exactly this problem.8

Here's what happened: if a packet was delayed (not lost, just slow), the sender would timeout and resend. Eventually, the delayed packet would arrive. Now the receiver gets two copies of the same packet. Under the original spec, receiving any packet required sending an acknowledgment. So the receiver sends two ACKs.

Those two ACKs cause two DATA packets to be sent. Each of those triggers an ACK. The traffic doubles with every round trip. Two packets become four become eight become sixteen. The brooms keep multiplying.

The fix, implemented in RFC 1350 in 1992, was elegant: the sender must ignore duplicate ACKs.9 Only the first acknowledgment for a given block triggers the next transmission. Duplicates are simply discarded. The brooms stop multiplying.

Noel Chiappa, who designed the original protocol, also designed the fix.

The Security Reality

TFTP has no authentication. None. You connect, you request a file, you get it (if the server has it and permits access). There's no username, no password, no encryption. Every byte travels in plaintext.10

This is not a bug. This is the design.

When your machine has no operating system, it can't perform cryptographic operations. When it has no persistent storage, it can't store credentials. TFTP exists precisely for machines that have nothing. You can't require authentication from something that doesn't have the code to authenticate.

But this creates obvious risks:

Information disclosure: Anyone who can reach a misconfigured TFTP server can read its files. Configuration files often contain passwords, network topology information, authentication keys.

Arbitrary file write: If a server allows writes, attackers can potentially replace firmware images or configuration files with malicious versions.

DDoS amplification: In 2016, researchers documented that TFTP could be abused for amplification attacks with a factor of approximately 60x.11 A small spoofed request could generate 60 times more traffic directed at the victim. With an estimated 600,000 publicly accessible TFTP servers at the time, this was a significant attack vector.

The mitigations are straightforward but often ignored:

  • Never expose TFTP to the public Internet
  • Restrict read access to only the files that need to be served
  • Disable write access entirely unless absolutely necessary
  • Use firewall rules to limit which IP addresses can connect
  • Deploy TFTP servers behind proper network segmentation

TFTP was designed for trusted local networks in 1980. The Internet of 2025 is not a trusted local network.

Where Port 69 Lives Today

Despite its age and limitations, TFTP remains essential in several domains:

PXE Boot: The Preboot Execution Environment, standardized by Intel in the late 1990s, uses TFTP to deliver boot images to diskless machines.12 When a computer powers on with network boot enabled, it gets an IP address via DHCP, learns the TFTP server address (usually via DHCP Option 66 or 150), and downloads its operating system kernel via port 69.

VoIP Phone Provisioning: Cisco IP phones, and many others, use TFTP for firmware updates and configuration file distribution.13 When a phone boots, it contacts the TFTP server specified by DHCP and downloads its configuration file (named after its MAC address) plus the appropriate firmware image.

Network Equipment: Routers, switches, and access points from virtually every vendor support TFTP for firmware updates and configuration backup/restore. It's often the only protocol available in a device's emergency recovery mode.

High-Performance Computing: HPC clusters with hundreds or thousands of compute nodes often boot from PXE/TFTP. This ensures every node runs identical software and simplifies maintenance.

The pattern is consistent: TFTP thrives wherever machines need to bootstrap with minimal onboard capability, where simplicity trumps security, where the network is trusted.

PortProtocolRelationship
20FTP DataFull-featured file transfer (data channel)
21FTP ControlFull-featured file transfer (control channel)
67DHCP ServerOften provides TFTP server address for PXE boot
68DHCP ClientWorks with TFTP in the boot sequence
4011PXEAlternative TFTP port for Proxy DHCP environments

Frequently Asked Questions

The Weight of Simplicity

There's something profound about a protocol that has survived 45 years essentially unchanged. TFTP was designed in 1980 for a problem that still exists in 2025: machines need to bootstrap, and they need to do it with almost nothing.

The protocol has five packet types. It transfers data 512 bytes at a time. It keeps one packet in flight. It has no authentication.

And every day, millions of VoIP phones wake up and become themselves through port 69. Thousands of servers in data centers boot operating systems they don't have stored locally. Network equipment that has lost its configuration recovers through this ancient, minimal, deliberately trivial protocol.

Port 69 is the port of first words. The channel through which machines receive their identity before they're capable of asking for it. It carries the simplest possible answer to the most fundamental question a networked device can ask: Who am I, and how do I become that?

The answer arrives, 512 bytes at a time, through a protocol that Noel Chiappa freely admits he "ripped off" from Xerox PARC in 1980. Sometimes the best engineering isn't invention. It's knowing what to steal, and what to keep simple.

Was this page helpful?

😔
🤨
😃