by Darius Kazemi, March 7 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.


RFC-66 is titled “3rd Level Ideas and other Noises” and is authored by Steve Crocker on August 26th, 1970.

The technical content

This RFC is the result of a meeting between Crocker and unnamed representatives from BBN and MIT. The meeting was held a couple weeks before publication of this RFC, on August 12th 1970.

The bulk of the (short) RFC is about a “third level” protocol, essentially detailing what the rules are for a process/socket on one computer to connect to a process/socket on another computer. A detailed sketch is included of the data that eventually must be send back and forth between the sending Host and the receiving Host via their Network Control Programs. (Recall that these programs will be different on every Host so it's important that when the time comes to communicate on the network they speak the same language.)

Crocker and BBN folks agreed that 7-bit ASCII would be used across the network, with the high bit set to 1. This is also what the IMP uses so I think it means that the IMP will need to do minimal processing when it comes to character coding.

There is also the question of a “break” or “interrupt” signal. A lot of terminals have a special character for this built in, in which case that will be used. In the case of those systems where a break is 250 milliseconds of silence on the line (which blew me away when I heard about it), they can send a special INR interrupt control signal.


“Third level” speaks to a concept of “levels” that has appeared a few times in these RFCs. In RFC-57 the “second level protocol” is implied to be the Host-Host protocol. It seems here that “third level” refers to abstractions on top of the Host-Host protocol, in this instance a protocol for connecting two sockets (rather than connecting the NCPs themselves). My assumption is the “first level” would be the internal protocol for the IMPs to talk to each other.

These are conceptually the same idea as the more modern concept of OSI network layers which is sometimes taught in computer science schools.

I spoke with Steve Crocker about this via email and he was very generous in his response, which boils down to: yes, he was thinking about these protocols in terms of levels/layers of abstraction where some protocols would depend on others. That said, in practice these levels tend to be relatively porous and almost fractal, with levels inserted between levels, and “individual” levels consisting of multiple levels themselves.

Further reading

For contemporary reading on their thinking about protocol levels, Crocker, Postel, Heafner, and Metcalfe authored a 1972 Spring Joint Computer Conference paper called Function-oriented protocols for the ARPA Computer Network. It's worth a read, or at least a skim for the diagrams!

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.