UUCP is a system for exchanging data and requesting remote execution. It dates back to 1979, and was primarily used over Modems using telephone landlines for most of its days of popularity. It is an Asynchronous Communication system, which transmits data from one machine to the next on the way to its destination. Each intermediate node may store the data before passing it on to the next.
Before dedicated Internet lines were widely available, UUCP was used to send Usenet and Email messages. The global collection of interlinked UUCP systems, sometimes called UUCPnet, could route email around the world in a day or two for most people; less for some. Early UUCP email addresses didn’t resemble what we now know as domain-based addressing.
As Internet became more popular, UUCP shifted to a “leaf site” approach, which enabled systems that lacked dedicated Internet lines to still participate in Internet email and Usenet. They could have a regular domain for email, and their ISP would run a regular SMTP mail server, queuing up mail for the leaf site’s mail server using UUCP. Since UUCP was efficient over modems, this was often cheaper and more effective than an intermittent SLIP or PPP connection.
As was normal for protocols of that era, UUCP doesn’t have built-in encryption or cryptographic authentication. The NNCP project is a successor to UUCP, adding modern encryption and security practices, more modern options for transit (such as USB sticks, CD-ROMs, radios, etc.), and a more modern approach. NNCP does, however, drop UUCP’s support for modems and dirty serial lines, though it is certainly possible to route NNCP packets across UUCP if one still needs such features.
UUCP is an example of Old and Small Technology.
More at Wikipedia: https://en.wikipedia.org/wiki/UUCP
Links to this note
This started out at a post on my blog. This edited version is intended to be kept more up-to-date.
Inspired by several others (such as Alex Schroeder’s post and Szczeżuja’s prompt), as well as a desire to get this down for my kids, I figure it’s time to write a bit about living through the PC and Internet revolution where I did: outside a tiny town in rural Kansas. And, as I’ve been back in that same area for the past 15 years, I reflect some on the challenges that continue to play out.
Asynchronous communication is communication between two endpoints that doesn’t have to happen in real time or near-real-time.
According to the NNCP documentation, NNCP is intended to help build up small size ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant networks for fire-and-forget secure reliable files, file requests, Internet Email and commands transmission. All packets are integrity checked, end-to-end Encrypted, explicitly authenticated by known participants public keys. Onion encryption is applied to relayed packets. Each node acts both as a client and server, can use push and poll behaviour model. Also there is multicasting area support.
Email is one of the most common examples of Asynchronous Communication people are familiar with today. It is a store-and-forward approach which is tolerant of temporary disruptions to services and supports multiple hops.
The old sense of the word “modem” in computing referred to a device that would let two computers communicate over telephone lines. It was quite slow and unreliable by modern standards. Nowadays, the term is more broad.
When things are difficult – maybe there’s been a disaster, or an invasion (this page is being written in 2022 just after Russia invaded Ukraine), or maybe you’re just backpacking off the grid – there are tools that can help you keep in touch, or move your data around. This page aims to survey some of them, roughly in order from easiest to more complex.
Filespooler lets you request the remote execution of programs, including stdin and environment. It can use tools such as S3, Dropbox, Syncthing, NNCP, ssh, UUCP, USB drives, CDs, etc. as transport; basically, a filesystem is the network for Filespooler. Filespooler is particularly suited to distributed and Asynchronous Communication.
Usenet, of course, originally ran over UUCP in quite a few cases. Since NNCP is quite similar to UUCP – in fact, you can map UUCP commands to NNCP ones – it is quite possible, and not all that hard, to run Usenet over NNCP. In fact, in a number of ways, it works better than Usenet over UUCP!
NNCP lets you securely send files, or request remote execution, between systems. It uses asynchronous communication, so the source and destination need never be online simultaneously. NNCP can route requests via intermediate devices – other NNCP nodes, USB sticks, tapes, radios, phones, cloud services, whatever – leading to a network that is highly resilient and flexible. NNCP makes it much easier to communicate with devices that lack Internet connectivity, or have poor Internet.
Usenet is sometimes said to be the world’s oldest social network. Since 1980, Usenet has been a massive, global discussion system. Participants can read and post messages (called articles) in discussion forums (called newsgroups). Unlike web forums, Usenet newgroups are available from thousands of independently-operated servers worldwide (instead of just one particular site). You can also use the client of your choice to access them.
Sometimes we want better-than-firewall security for things. For instance:
Old technology is any tech that’s, well… old.
This page describes some basic concepts of NNCP.