by Darius Kazemi, March 29 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

Punch cards and printers

RFC-88 is called “NETRJS – A Third Level Protocol for Remote Job Entry”. It's authored by Bob Braden of UCLA (a professor there, not a grad student), and Stephen M. Wolfe, also of UCLA, who was last heard from in RFC-38.

The technical content

Once again we hear about levels, this time about a “third level protocol”, which is essentially a protocol that operates via the Host-Host protocol and the NCPs. NETRJS stands for NETwork Remote Job Service. The normal, non-network RJS is a system at UCLA's Campus Computer Network, or CCN.

This protocol lets you, for example, enter a batch of Fortran commands on a punch card system and then send them over the network to a computer to process as a “job”. You can also log in to the remote computer and ask it for the status of your job. You can submit a “stack of consecutive jobs” as well.

There are five different “channels” in play during a connection, although only two are open the whole time: operator input and operator output. So there's a constant open I/O stream, and then the other channels types are tied to specific devices: card readers, printers, and punches. These devices open connections as needed, only when they are in active use.

There's a section in the document about error checking. The authors assume that the IMP-IMP communications will have basically no errors, and that the IMP-Host interface “will either be reliable or fail catastrophically; it seems unlikely that “drop-outs” or other random failures will occur.” So they provide some crude error checks like a sequence number for each transmitted block of data so you can at least see if things are arriving in order.

The data block format is then laid out in the RFC.


What strikes me the most about this RFC is it seems pretty normal and straightforward. As though defining network protocols is become less experimental and more routine. Login flow and message delivery in this document would be familiar to anyone who's used the Host-Host protocol, and marking is addressed by asking the reader to please be nice and send messages with boundaries at multiples of 8 bits.

There's a note at the end of the document that says:

We use the phrase “starting a session” rather than “logging on” because RJS has its own log on procedure, which is, we suppose, a fourth-level protocol.

This is the first we hear of a potential fourth level protocol!

Further reading

There's a brief instruction manual for the RJS available at the Internet Archive. It's pages 33, 34, and 35 of Scenarios for using ARPANET at the International Conference on Computer Communication, from 1972. The pages are somewhat out of order so make sure you're going by the page numbers at the bottom of each page as you read.

The RFC mentions “Hollerith cards”, which reference Herman Hollerith, who invented the punch card system for mechanical tabulation machines. They weren't using Hollerith's actual cards in 1972 but rather an ANSI standard named in honor of Hollerith. There's a 1980 book by Charles E. Mackenzie called Coded Character Sets: History and Development, which you can read here.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.