How the ARPANET Protocols Worked

Nice look at the networking layers at the time.

The ARPANET changed computing forever by proving that computers of wildly different manufacture could be connected using standardized protocols. In my post on the historical significance of the ARPANET, I mentioned a few of those protocols, but didn’t describe them in any detail. So I wanted to take a closer look at them. I also wanted to see how much of the design of those early protocols survives in the protocols we use today.


Fun fact: The code for the IMP (Internet Message Processor), a modified Honeywell 516, was programmed on a PDP-1. Particularly, this was the PDP-1d at BBN and the code was programmed by Bernie Cosell, Will Crowther – yes, this Will Crowther! –, and Dave Walden.
This is really a testament to the versatility of this early workstation/small mainframe, which was first presented in 1959. When the BBN PDP-1d was connected to the ARPANET, new software was loaded into the IMPs via the network itself. This may have been well the first occurrence of update by network downloads.

More information on how the IMP code became to be can be found here:

One of my recent blog post brought me into contact with Marc Ramsey, who had programmed the ELF nodes, which linked up a bunch of mainframes (CDC 6600, 7600, Cray 1, and IBM 360/370). This was a PDP-11/40 running RSX-11M that emulated a variety of remote job entry stations, with a hard-wired interface to an IMP. The interface code was written in Fortran IV-Plus. Marc says, he doesn’t remember what ELF actually stood for, and that seems to have been lost to history.

Indeed, as early as 1978, the J.A. Payne report on Host to Host Access refers slightly embarrassed to the system just as “the PDP-11 operating system known as Elf”.


Oh, I think I’d like to find out more about ELF! It’s an operating system, I suppose, based on this 1979 doc:
“The minigateway is just like the regular gateway except it runs on MOS instead of ELF and eventually will run on an LSI-11 instead of an 11/40.”

And this 1978 “Arpanet Resources Handbook” lists ELF in the same column as Unix, RSX11, Hydra, ANTs and STRUGL:

Oh, and more obviously, a paper from 1976:
Structure of the ELF operating system


The description “PDP-11/40s running RSX-11M that emulated a variety of remote job entry stations” is a direct quote by Marc Ramsey. Maybe, it’s best thought of RSX-11 with the integration of some special drivers?

Regarding the PDP-1, this was really surprising to me. The PDP-1 was a rather humble machine in modern terms and that it could run the required network stack (much of which was admittedly running on the IMP) at all is a testament to the APRPANET protocol. (Well the PDP-1 had interrupts – in DEC terms, “sequence break system” – and DMA, which makes it the NeXt of the early 1960s, I guess, but it’s still a humble machine with just 4K of memory in the standard packaging.) There was also a PDP-1 linked up at Harvard and a PDP-1 in Santa Monica was involved in one of the first messages. Learning that the IMP software originated on a PDP-1 in cross-development and was distributed over the network from it, as well, was quite amazing.

1 Like

PS: As I understand it, the main purpose of ELF was to provide for code upload and remote job execution on the linked mainframes.

Couple more ELF snippets:

This mention:

Also, from Inventing The Internet:


I find two things noteworthy here:
All the computer history books, I know, have it that remote execution was high on Licklider’s priority list, but not much favored by the hosts involved, and then, after a pause, we have telnet. The ELF seems to fill this gap. (This notion of dismissed code upload may be also responsible for there not being that much information on this.)
Then, speech processing was high on the DARPA priority list in the 1970s. That speech systems were originally used for network interfacing may shed some light on why this would have been so.


Seen in Retz’ resumé:

Speech Communications Research Laboratory, Santa Barbara, California (1972-1974) - Was Principal Investigator on a DARPA contract for development of an operating system and utilities for the DEC PDP-11 computer. Named “ELF”, the system provided real-time data acquisition capabilities, terminal access (Telnet), speech input/output, file transfer client, and Internet gateway functions. ELF was installed at approximately 100 locations on the ARPANET as a general-purpose “front-end” to the network. Of special note was its use as a platform for testing of the protocol now known as “TCP/IP” for the Packet Radio network.

Edit: oh dear, from 1975:

This system breaks little or no new ground in the world of operating system design and is structured much the same as a conventional time - sharing system

1 Like

A paper, on page 60 of Berkeley Workshop on Distributed Data Management and Computer Networks, May 1976:

1 . SCOPE OF THE DISCUSSION This paper describes the external specifications of the first of a two stage ARPANET front-end system currently under development at the Courant Institute of Mathematical sciences . It is a preliminary document intended to provide material for discussion to groups which may be considering using this or a similar method for interfacing their HOSTS to the ARPA network.

For those not anxious to get deeply enmeshed, “An Overview of the ELF Operating System”, by David Retz, is perhaps best. However, I will mention a few things about the ELF system which will help with the matter at hand. The ELF system is written in assembly language and runs on the PDP-11. It supports various HOST TO IMP interfaces including the ANTS interface, the A Consultant interface for Very Distant Host Connection, and the DEC interface. The system is hierarchical in design. Its lowest level called the KERNEL is responsible for the management of hardware resources such as the processor, storage and peripherals. The second level includes the EXEC which provides terminal support, and the NCP which supports communications between processes within the ELF and processes in HOSTS at other network sites. Both the EXEC and NCP provide a set of system calls to the next level in the hierarchy which consists of the so-called user programs. The user program of interest here is TELNET, which provides conversational access to the network for ELF …

1 Like

So what I would take from this: the kernel is probably RSX-11M (compare Marc Ramsey) and there are two ring of intra- and inter-communication facilities (I guess, we may call these drivers – the “interface code” – and services nowadays), which are in turn complemented by userland applications (not the least of them telnet).
There seems to be some contradiction in Marc Ramsey claiming he was programming in Fortran IV-Plus and claims (like in this article) regarding the system being written in assembler. I guess, both may still have truth to them, as this may vary with respect to the particular purpose. E.g., it’s certainly easier and much more economical to implement some low-level emulation code for the various host systems (I guess, this may have been Marc Ramsey’s job) in Fortran than in assembler, while there may be substantial gain in performance from writing any intra-communication code in assembler.
(Disclaimer: I still didn’t have an opportuinty to read all of David Retz’ writing on the subject.)