365 RFCs

Commenting on one RFC a day in honor of the 50th anniversary of the first RFC.

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

Atlantic City efficiency

RFC-116 is titled “Structure of the May NWG Mtg.”. It's dated April 12, 1971 and authored by Steve Crocker.

The technical content

The yearly meeting of the Network Working Group in Atlantic City is coming up and Crocker would like the group to be as productive as possible. He proposes three broad categories of activity at the meeting.

  1. Site status reports, including plans for attaching to the network and using the network. This also includes updates on network infrasctrute projects like the IMP. Five to ten minutes per site along with a written status report.
  2. Discussion of current hot topics like file transfer, telnet, logger protocols, and so on. Each topic should have a committee attached to it.
  3. Discussion of the future of the Network Working Group and what changes, if any, should be made to its organization and mission.

Crocker highly encourages as much related written material as possible to published in RFC form before May 1st, in about twenty days' time.

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

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

The NIC

RFC-115 is titled “Some Network Information Center Policies on Handling Documents”. It's authored by Richard Watson and Jeanne B. North (aka Reddy Dively and dated April 16, 1971.

The technical content

This document is about the Network Information Center, which is essentially a library (containing both physical and electronic records) held at Stanford Research Institute.

This RFC describes what a “NIC Number” is. If you've been reading original RFCs as you read along with this blog, you probably have seen that a document like RFC-90 is not just numbered “90” but is also “NIC 5707”. In short: when the NIC collects a new document that it decides is of use to the general network community, they apply a unique number to it for their filing system. Documents that the NIC might care about include but are not limited to “technical reports, RFC's, brief network memos, journal articles, and letters”.

The document describes a rather complex encoding system for records in their computerized catalog, but fortunately this is mostly just informational and most people on the network don't have to know any of this stuff. But it's basically a database schema before database schemas were… a thing. They have ways to ask a computer “tell me all the NIC documents that are stored at this physical location that were authored before a certain date.”

They go on to talk about having written programs that query this data and produce print catalogs that are sorted and filtered by various criteria.

One thing that the author of a document can do is call the NIC on the phone and ask them to pre-assign a NIC number to the document, which streamlines the whole process since that means the very first versions of a document that get distributed already have a NIC number. That means that every copy of the document in existence will have this reference number somewhere.

They also describe “functional documents”, which today we'd call a document with some kind of version control attached to it, for instance a wiki page. They describe it as “a document whose title and function remain constant, but whose contents can change.” The NIC does not currently support these kinds of documents as fully as they would like, but has plans in place to do so.

For substantial revisions, they will create a new document with a new NIC number, and there will be text that indicates that this is the updated version of a particular older document. There will be a document attached to it that lists every revision between versions.

Analysis

My takeaway from this whole thing is: manual version control is hard and librarians are heroes.

Also: the NIC “strongly recommends” avoiding errata-style revision of documents, which I think is ironic since the modern RFC series uses an errata system.

Further reading

The NIC eventually became InterNIC, the main organization that allocated domain names until 1998 when ICANN took over.

The NIC records are currently stored at the Computer History Museum and you can view the guide to their full collection online. Some of it is scanned and available online, much of it is in paper boxes in their warehouse where it's available to researchers. (You can also pay a scanning fee and point them to a document in the guide and they will scan and put it online for the world!)

This interview with Elizabeth “Jake” Feinler, who ran the NIC for decades, is a great read.

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

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

FTP

RFC-114 is titled “A File Transfer Protocol”. It's by Abhay Bhushan of MIT's Project MAC, and is dated April 16th, 1971.

The technical content

This document proposes “a file transfer protocol” which on a technicality remains unnamed throughout the entire document. This file transfer protocol would eventually become known as the File Transfer Protocol, a protocol that, like Telnet, is still in use today (more on that in the Analysis section below).

This is a long RFC so I'm going to break it up into the same subsections used in the RFC itself.

Introduction

The RFC begins by drawing a line between “direct” and “indirect” usage. Direct usage is when a user logs in to an actual account on the remote computer and uses it as though they were sitting there in front of it, typing all the same commands that a local user would. Indirect usage is where you don't get anything approaching operating system access and rather some kind of mediating system is involved that interacts with the operating system on your behalf.

The protocol is already in its debugging stages and seems to have been deployed at MIT already, at least in a testing sense. Bhushan points out that since they are connecting two computers with extremely different file systems, he is confident that the protocol should work on any combination of disparate file systems.

I mentioned this in my post about RFC-91, but file transfer was a very hard problem that the NWG had to tackle. This 2014 interview between Bob Braden (UCLA's Manager of Programming at this time) and Jeffrey R. Yost is illustrative.

Yost: Do you recall some of the major issues and challenges that were discussed in those early meetings among the ARPANET working group?

Braden: The first task was to develop a file transfer protocol, FTP. Again, I was the odd man out because the IBM had a truly baroque file system, and we wanted to let customers have access to some of the features of it, whereas all the other systems were UNIX systems with a very simple file structure. So if you look at the FTP spec there’s some weirdness, complexity that’s there because I asked for it.

Discussion

Some terms are defined. A file is “an ordered set” of binary bits, and can be any length. A named file is a file with a unique identifier that is a directory name plus a file name. (So today that would be something like C:/stuff/readme.txt in Windows or /stuff/readme.txt in UNIX.)

Bhushan states:

A principal objective of the protocol is to promote the indirect use of computers on the network.  Therefore, the user or his program should have a simple and uniform interface to the file systems on the network and be shielded from the variations in file and storage systems of different host computers.

So in a sense, FTP is the original HTTP, in that it's supposed to make it so you don't have to worry about which of dozens of operating systems and hardware another computer uses. You can just upload or download files and be done with it.

Bhushan says that he wants this protocol to be efficient, extensible, and adaptable, with error-recovery built in. He's proposing the first read “user friendly” internet protocol. (Early versions of Telnet, which were in use but had not been formalized by this time in 1971, were not what I'd call user-friendly.)

FTP is built with 7-bit ASCII and “binary” data in mind, and provides support for non-ASCII text like EBCDIC through conversion mechanisms.

This protocol operates on a file level. Stuff like the Host-Host protocol emphasizes messages (what we might think of as packets), but Bhushan is very specifically architecting this around the higher-level concept of the file as a logical record, a la Mealy in RFC-91.

Here's Mealy as quoted in that RFC:

Our point of view is that a link is a carrier of information. Information is carried in segments of a fixed maximum length called messages. That this is so is an accident, from the user's point of view; when he wishes to transmit a contiguous stream of data, he will in general, segment it in a different (from the IMP-IMP or HOST-HOST protocol view) manner — we will call his segment a record.

The author suggests identifying people by username and host site name, and warns against using passwords. The idea is that the FTP host server should be the one providing the security, and that the server “can prevent unprivileged access by users from other host sites”, though I don't know how and he doesn't explain.

Specifications

Things on FTP happen in what are called transactions. A transaction message consists of:

  • a 72-bit header
  • the actual data
  • filler

Filler seems to serve the same purpose as “padding” does in the Host-Host protocol.

The header consists of:

  • a transaction type byte
  • a data type byte
  • an extension of data type byte
  • a byte to tell you how long the filler field is
  • a 24-bit number that tells you how many bits long the data field is

First of all, this is now an example of a third-level protocol implementing data types. Data types were specifically dropped from the Host-Host protocol the prior month, and Crocker et al encouraged third level protocols to implement them if they wanted to. In this case the data type byte and its extension say things like “this is ASCII text” or “this is EBDIC encoded” etc etc. Bhushan recommends that all hosts support ASCII and binary, with other encodings being optional.

Thirty different potential data types are named! This is a lot, so I couldn't imagine any site supporting all thirty. The idenfication of ASCII and binary as lowest common denominator makes practical sense.

Transaction types fall into these broad categories:

  • request (messages that come from the user: login request, tell me what files you have, delete this file, etc)
  • response (messages that come from the remote server: usually a kind of acknowledgement message)
  • transfer (can be sent by the user or the remote server: this is the actual transfer of files back and forth)
  • terminate (always comes from the server: the server letting the user know whether an action was successful or unsuccessful along with relevant error codes)

FTP from the very start comes with an “execute” request that allows the user to execute a file remotely on a server. According to Bhushan, the “execute request is intended to facilitate the indirect execution of programs and subroutines.”

Extensions to protocol

The protocol is open to extensions — namely, people are encouraged to add functionality to it as long as they don't remove or modify existing functionality. The author suggests adding new kinds of requests from users, new kinds of error messages, and new kinds of data types.

User access control is discussed at length as something that could be extended. Password support is proposed as a possible extension to the protocol that would aid in this.

Bhushan also suggests that the “execute” request could be further mediated. Right now the user needs to know the exact parameters that a remote program wants in order to execute it. He imagines a “program mediation protocol” that lets a user execute a program generically without worrying about the specifics of the program.

Analysis

This RFC is a pretty historically important one. It lays the foundation for FTP, a file transfer protocol that is still in use today. While a lot of people today will beg you not to use it because it's totally insecure, the fact remains that people still use FTP every single day in 2019.

Bhushan's splitting of internet traffic into “direct” and “indirect” is really interesting to me. By this definition, almost all internet traffic in 2019 is “indirect”. For example, when I use HTTP to talk to a website, I don't log in as a user on their server. I just say “I would like index.html please” and the server says “okay, here is index.html”. In 1971, at least from my reading of how people were using it, most ARPANET traffic was “direct”.

I love that this proposal isn't like the proposal for DEL — it's a description of a protocol that is already in use at MIT, at least in its debugging stages. Bhushan says in an endnote that

The interim version of the protocol, limited to transfer of ASCII files, was developed by Chander Ramchandani and Howard Brodie of Project MAC.  The ideas of transactions, descriptors, error recovery, aborts, file headings and attributes, execution of programs, and use of data types, pathnames, and default mechanisms are new here. Howard Brodie and Neal Ryan have coded the interim protocol in the PDP-10 and the 645, respectively.

A side note: FTPS is a more modern and secure extension of FTP. SFTP, which is in much wider use, is not a derivative of the original FTP in any way except perhaps spiritually.

Further reading

The Mapping the Journey podcast has a 23 minute interview with Abhay Bhushan, and there's a full text transcript there too. It's well worth a listen/look. Compared to other authors of major early RFCs, specifically protocols as important as FTP, there is not a lot of interview material about Bhushan.

Above I link to a 2014 interview between Bob Braden and Jeffrey R. Yost, which mentions some FTP history.

Bhushan mentions several times that Metcalfe intends to write a paper on the “program mediation” concept for remote execution, but I can't find anything like it in his bibliography.

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

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

A success and some bugs

RFC-113 is titled “Network Activity Report: UCSB <—> RAND”. It's authored by Harslem and Heafner of RAND and Jim White of UCSB. It's dated April 5th, 1971.

The technical content

RFC-105 was a specification for running jobs at the UCSB Computer Center, and a month later we have this report of RAND successfully running jobs at UCSB via that protocol.

The folks at RAND ran “over 100 jobs […], each job consisting of many Network transmissions.” Over the course of those 100 jobs, they encountered five network failures. Two of these involved an error with the RFNM (Request for New Message) signal not being transmitted and its loss was not reported as an error either. The other three seem to be the same type, involving “garbling of a data message” but they seem to have no idea the cause of it or even what data was garbled in what way.

Analysis

Since they estimate “800 to 2800” punch card images being sent over about 100 separate jobs, we can estimate that there were about 180,000 punch card images sent. Five serious errors is not a whole lot!

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

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

Questionnaire results

RFC-112 (PDF link due to important info missing from text version) is titled “User/Server Site Protocol: Network Host Questionnaire”. It's by Thomas O'Sullivan of Raytheon Data Systems and dated April 1, 1971.

The technical content

RFC-106 was sent out a month prior to this and was a questionnaire that asked different ARPANET sites to answer some questions about their computing setup. Specifically a committee is trying to come up with a more formal Telnet specification and having this information will help them add needed features to Telnet. This RFC summarizes the results of that survey, one month later.

The results are hand-written and scanned an a bit hard to read but my best reading of the results shows a few things of note.

First, there is no consensus on a common terminal format between the sites. TTY ASCII format is popular, but some sites (like Lincoln Lab and RAND) don't support it. A slim margin of the computers themselves use ASCII internally but there is a sizable minority of computers that use EBCDIC internally.

Of all the sites, only Raytheon performs error detection. Only three sites support punched paper tape input.

Interrupt mechanisms across systems are by far the least standardized. Almost every single site's computer system uses a different interrupt mechanism from all the others, though notably the early ARPANET sites running PDP-10 machines are actually pretty similar in this regard, where ctrl+c breaks a program and returns you to the command shell. This is how most operating systems that people are familiar with today handle this kind of interrupt, which makes sense if you look at the history. The PDP-10 was explicitly copied (through the CP/M operating system) by MS-DOS and thus Windows. And the PDP-10's TOPS-20 operating system had a huge influence on Unix/POSIX, so it probably came from there as well.

Analysis

Generally speaking, looking at this chart makes it clear that IBM 360 and Multics systems feel very foreign to me as a longtime POSIX operating system user, whereas the PDP-10 running TOPS-10 seems like it's doing things “right”. Of course there's not a right or wrong here, but TOPS was a clear winner in the battle for how things ought to be done.

Further reading

Although this RFC is dated April 1, it is not an April Fool's RFC, which is a tradition that began in 1978 with RFC-748, though there are some humorous RFCs that predate that one. More on this here.

You can request a login from The Living Computer Museum in Seattle if you'd like to try remotely connecting to a TOPS-10 system and playing around!

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

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

Under pressure

RFC-111 is titled “Pressure from the Chairman”. It's by Steve Crocker and dated March 31st, 1971.

The technical content

You may recall that I said RFC-107, which exhorted ARPANET sites to switch to the new protocol and provide time estimates for doing so, “is the first RFC that feels like a true ultimatum.”

While RFC-107 felt like an ultimatum, Crocker's characteristically sardonic RFC title states outright that this RFC is an ultimatum, coming only about a week after that RFC.

They're assigning John Heafner of RAND as a kind of project manager to monitor how each site is progressing in their steps toward implementing the new version of the Host-Host protocol. Every ARPANET site has to provide specific documentation to Heafner, including actual up to date and working code, a Telnet style implementation, Logger documentation so other people can figure out how to log in to your site, documentation for how a remote user can do basic things like set their passwords, a list of services available at your site, and what hours they can expect operation and support.

Analysis

Heafner is referred to as “John” throughout this short document. I get the feeling that while this is a deadly serious email, the playful title and the informal naming of Heafner are meant to dispel any suspicions that this is going to be some kind of Kafkaesque bureaucratic nightmare.

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

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

I have no characters yet I must type

RFC-110 is titled “Conventions for Using an IBM 2741 Terminal as a User Console for Access to Network Server Hosts”. It's dated March 25th, 1971, and authored by Joel M. Winett of Lincoln Laboratory, who also authored the previous RFC in the series.

The technical content

This RFC talks about what to do when the Venn diagram of “characters you can type on your terminal” and “characters that the remote server understands” don't overlap fully. Specifically, as you might guess from the title, when you're on an IBM 2741 terminal. This doesn't mean the characters have different codes between two systems; it means that there are symbols that are on one that don't exist on the other. It's kind of like when you have emoji on your phone that your friend doesn't: how in the world are the two computers supposed to handle that situation?

Basically there is one symbol on a 2741 terminal that doesn't have representation in basic ASCII: the cent cymbol, ¢. (I can type this in ASCII now because ASCII supports more symbols today than it did in 1971; at the time it was only 128 character codes; the cent symbol is decimal 162, so it came about in a later revision of ASCII.) There are also 4 control codes that don't exist in ASCII.

On the other hand there are 7 ASCII characters that have no representation on the keyboard of a 2741: {, }, [, ], ^, \,`. Plus 31 ASCII control codes with no corresponding keys!

This RFC proposes several possible “escape characters” (meaning “when you see this character it means that whatever comes next has an unusual meaning in this context”), and then lays out a possible translation table between the 43 characters and codes that don't exist in one of either ASCII or the 2741.

Cleverly, the author suggests that you should use a non-ASCII character like “NOT” (¬) as an escape when talking to an ASCII system, since that's going to be interpreted as a junk character anyway. So if you want to convey {, which does not exist on a 2741 terminal, you would type ¬(, and to convey ^ you would type ¬". So the receiving computer would get ¬ and say, “oh I know the next character is a special thing, oh I see it's ( so they must mean {.”

Analysis

This RFC begins:

   TO: NIC
   FROM: Joel M. Winnet (LL)
   SUBJECT: Conventions for Using an IBM 2741 Terminal as a User Console for Access to Network Server Hosts

The unusual formatting leads me to believe that this was perhaps not intended as an RFC but was assigned an RFC number by the NIC unilaterally, after determining it was important enough to get that designation.

Further reading

If you want to know more about the IBM 2741, its Wikipedia page is pretty informative.

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

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

Connecting to Lincoln Lab

RFC-109 is titled “Level III Server Protocol for the Lincoln Laboratory 360/67 Host”. It's dated March 24th, 1971, and authored by Joel M. Winett of Lincoln Laboratory.

The technical content

This is pretty much a manual for remote users who wish to connect to MIT Lincoln Lab to use their IBM 360/67 computer.

This RFC is about a level three protocol. As a reminder, the level one protocol is the protocol that the IMP routers use to talk to each other. Level two is the Host-Host protocol. Level three is an abstraction on top of Host-Host. For example, Host-Host is about connecting two computers; whereas a level three protocol may be about connecting two computer programs. The word “protocol” is used loosely here, as in it's a series of steps you can do to connect to their system, rather than a more formal thing like a Host-Host protocol.

The “Logger Protocol” is described, which seems similar to the one described my MIT's Project MAC in RFC-98. (It's worth remembering that although Project MAC and Lincoln Laboratory were both under the auspices of MIT, they were entirely separate from one another as organizations and projects.)

The lab provides a guest account that ARPANET users are free to use in order to mess around with to get familiar with the lab's computing system. No long-term storage is guaranteed as anyone on this account is free to erase records stored there to free up space for their own sandbox experiments.

Next a “SERVER Protocol” is laid out. Since the IBM 360/67 accepts line-at-a-time input, the SERVER system buffers character-at-a-time input from a network connection until a newline character is reached, then it sends the full line to the operating system itself for processing as input. The SERVER also handles interrupts.

The computer can run in both ASCII and EBCDIC modes, which makes sense since those were the two most popular character encodings at the time. There are attached character code charts for both formats, and instructions for converting from one to the other if needed.

Analysis

This RFC starts with a disclaimer to not quote or cite it in any publications! This should hopefully give you a sense of how informal the RFC system was back then; these days the entire point of RFCs is for them to be quoted and cited. Back in the early days though, it was very much more like a private mailing list. (Again I cannot stress this enough: a mailing list conducted via the US Postal Service.)

The lab's IBM 360/67 is connected to the ARAPNET and users who log in do so to a CP-67 virtual machine. Yes, it's a virtual machine in the modern sense: an emulation of an entire computer, run on a bigger computer, invented all the way back in 1967. The idea was that if you ran say five emulated computers on a big server, it would be much easier for five different people to connect and work in parallel. One person for each emulated computer, versus five people having to fight over shared resources. It's important to remember that most of what we have today in computing we also had in the 60s and 70s; it is just much cheaper and faster now.

Further reading

This 2011 MIT Lincoln Lab retrospective has a lot of detailed history on the lab.

Winett co-wrote the manual for the Lincoln Laboratory Multi-Programming Supervisor in 1967. The LLMPS is an early time-sharing operating system (or piece of the operating system) that allows multiple programs to run at the same time on an IBM System/360 computer.

This is Winett's first RFC, but not the last we'll see of him.

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

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

Urbana attendance

RFC-108 is titled “Addendum to the NWG Meeting Notes”, and is authored by Richard Watson of SRI-ARC. It's dated March 23, 1971.

The technical content

This is a list of people in attendance at the Urbana meeting described in RFC-101.

It's pretty much the usual suspects, although IBM, which has been somewhat absent from these proceedings so far, is now in attendance. Also the US Air Force Rome Air Development Center (RADC), which has had a GE-645 running Multics since August of 1970.

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

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

An ultimatum

RFC-107 is titled “Output of the Host-Host Protocol Glitch Cleaning Committee” and is authored by a committee of six, with Steve Crocker as Chairman. It's dated March 23rd, 1971.

The technical content

This RFC contains the results of the second meeting of the Glitch Cleaning Committee. The first meeting was covered in RFC-102. This second meeting happened on March 8-9, 1971.

This document is “an official modification of Document #1”, which is not an RFC document but rather a separate series of documents, with Document #1 being the actual spec for the Host-Host protocol.

The introduction closes with a note exhorting programmers to switch their network control program (NCP) over to these new specifications as soon as possible, and to even provide estimates to the committee as to when they expect this task to be completed.

Changes to the protocol

One change made to the Host-Host protocol is that we now explicitly deal with byte streams instead of bit streams, where a byte can range from 1 bit to 255 bits in length, as long as that byte length remains constant for the duration of a connection.

The header format is changed; notably it contains padding, but no marking.

There are to be no message data types on the host-host protocol, but higher level protocols are welcome to introduce them.

The RESET and RESET REPLY messages proposed by Kraley and Newkirk in RFC-57 in case of a computer crash are to be implemented.

A new memory allocation system is instituted, requiring the NCP to keep track of two different quantities, resulting in a maximum message allocation of (2^16)-1 (or 65,535) messages and a maximum bit allocation of (2^32)-1 bits (or 500 megabytes).

The control link, which has been physical link 1 since the beginning, is now physical link 0. Link 1 is now reserved for “old-style” host-host protocol connections, allowing both kinds of traffic to flow on the network, at least for now.

And some commands and command formats have changed somewhat.

Discussion of byte streams

Half of this Glitch Cleaning Committee meeting was spent codifying the above changes; the rest was spent discussing issues with byte streams. Basically there's a tension between flexible byte streams and efficient byte streams, which is what the arguments were mostly about. The more formats a byte stream can be in, the more complicated the decoding mechanism must be at a receiving site.

There is discussion of turning the byte streams into “transmission units”, which sound an awful lot like modern packets. The IMPs operated by breaking things into packets (hence this being the first packet-switched network), but that's just the IMP protocol. The Host-Host protocol had no notion of this up until this point.

Analysis

This is a major revision of one of the most fundamental ARPANET protocols and is the first RFC that feels like a true ultimatum. “Get on this new protocol or get left behind” is the clear message given!

Further reading

You can read the Host-Host Protocol Document No. 1. It was written by Steve Crocker on August 3rd, 1970 and was the closest thing to an official Host-Host standard that existed until the publication of this RFC.

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 an independent technologist and artist. I do a lot of work on the decentralized web with both ActivityPub and the Dat Project. You can support my work via my Patreon.

Enter your email to subscribe to updates.