In the Linux‐based operating system world, there are curl and wget for downloading things from HTTP servers.
Neither of those, being suitably licenced but very late to the party as far as the BSD world is concerned, are part of the base operating system in any BSD.
The BSD world took the view that it already had a program that was called the ‘file transfer program’, for so long (since 4.2BSD in 1983) that its early 1990s manuals actually called it the ‘ARPANET file transfer program’. It dated from only a couple of years after the invention of the File Transfer Protocol (c.f. RFC 765) itself. It was part of a whole load of (what the doco then called) ARPA Internet tooling that came out in 4.2BSD, which was when Berkeley sockets first appeared.
What was simply needed was to teach it to speak an additional protocol, HTTP.
So in 1996 Luke Mewburn of NetBSD took the old BSD ftp utility and taught it how to speak HTTP.
This was originally known as lukemftp, fairly prosaically.
As can be seen from the source tarball archive in 2003 it became tnftp, standing for ‘the NetBSD ftp’.
The GNU world has long since packaged it for Debian and other operating systems under that name, and that is sometimes the name that one has to use to invoke it.
Debian %tnftp -\?|head -n 10
usage: tnftp [-46AadefginpRtVv] [-b BUFSIZE] [-H HEADER] [-N NETRC] [-o OUTPUT]
[-P PORT] [-q QUITTIME] [-r RETRY] [-s SRCADDR] [-T DIR,MAX[,INC]]
[-x XFERSIZE]
[[USER@]HOST:[PATH][/]]
[file:///PATH]
[ftp://[USER[:PASSWORD]@]HOST[:PORT]/PATH[/][;type=TYPE]]
[http://[USER[:PASSWORD]@]HOST[:PORT]/PATH]
[https://[USER[:PASSWORD]@]HOST[:PORT]/PATH]
...
Debian %
In the BSD world the command itself is always just ftp of course.
FreeBSD %ftp http://jdebp.info./index.html Requesting http://jdebp.info./index.html 2628 65.95 MiB/s 2628 bytes retrieved in 00:00 (17.16 MiB/s) FreeBSD %
It isn't a separate project in the BSD world, but a part of the base operating systems and in their source trees.
In NetBSD it is simply in /usr/src/usr.bin/ftp.
OpenBSD also puts it in /usr/src/usr.bin/ftp.
The other BSDs — FreeBSD, DragonFlyBSD, and GhostBSD — have it under /usr/src/contrib/tnftp.
All that said, someone (several someones, in fact, as it was rewritten twice) did a few years later go and write a second file fetching utility for FreeBSD, named fetch.
This never got taken up by NetBSD and OpenBSD.
© Copyright 2026
Jonathan de Boyne Pollard.
"Moral" rights asserted.
Permission is hereby granted to copy and to distribute this web page in its original, unmodified form as long as its last modification datestamp is preserved.