365 RFCs

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

by Darius Kazemi, June 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 correct view

RFC-176 is titled “Comments on Byte Size for Connections”. It's authored by Bhushan, Kanodia, and Metcalfe of MIT, as well as Jon Postel of UCLA. It's dated June 14th, 1971.

The technical content

This RFC addresses a longstanding issue of byte size on the network.

Essentially, “byte size” is a way of regularly parceling up a group of ones and zeroes. While today we often of think of a byte as eight bits, the definition has always been up to interpretation and context. Depending on who you ask, a 16-bit computer either deals in “bytes” that are 16 bits in length, or it deals in “words” that are two 8-bit bytes in length (since 8*2 = 16). This is further complicated by serial versus parallel transmission of bits. I include this aside not to say that one way is right or wrong, but rather that “what is a byte” is a more complicated and contentious question than it first looks.

This RFC begins with a brief outline and history of different views on byte sizes on ARPANET.

The original ARPANET design was for a bit stream, which is essentially a system of “1-bit bytes” with no special or implied demarcations or groupings of bytes. This was scrapped in RFC-107 three months prior to the publication of this RFC. In RFC-151, Shoshani says that byte size should be completely irrelevant to 3rd-level (user-level) processes. (You can read my post on RFC-151 for why I think that's really wrong.)

The current authors argue that 3rd level processes should set the byte size for a given connection.

The next portion of the RFC concerns this question: if I am a service running on the network, and a user connects to me, should I be allowed to say “you may only speak to me using this specific byte size”?

The authors state:

For TELNET and ICP, the byte size choice is straight forward as data is naturally in 8-bit multiples (8-bit ASCII characters in TELNET, and 32-bit socket numbers in ICP).  But for data transfer protocols, the byte size choice is more complex, as data may be structured in a variety of byte sizes.  Specifying a byte size for a data transfer connection reduces efficiency in instances where connection byte size does not correspond to data byte size.  Further, filler fields will be required for data blocks which are not a multiple of the fixed byte size.  This imposes an additional overhead.

In general the authors argue that a 3rd level protocol will be more efficient, at least in terms of program size, if a byte size is specified ahead of time. They do admit that the move to byte streams in RFC-107 is kind of saying that the efficiency of the Network Control Program is more important than the efficiency of user processes. But they maintain that the most important efficiency is the combined efficiency of both the NCP and the user process, and that allowing user processes to specify byte size will, on the balance, increase combined efficiency.

They conclude by saying, essentially, “Now can we please stop arguing about this until the next major revision of the Host-Host protocol?”

Analysis

The authors bravely label their conclusion about byte size being a 3rd-level concern as being The Correct View.

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 ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

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

Socket length concerns

RFC-175 is titled “Comments on “Socket Conventions Reconsidered”“. It's authored by Harslem and Heafner of RAND, and dated June 11th 1971.

The technical content

In this RFC the authors comment on RFC-167, with one important exception: they think that, due to memory restritctions on the TIP (terminal IMP, the new IMP produced by BBN), sockets should be 16 bits long and not 32 bits long.

They also state that at least for programs in development at RAND, they won't need repeatable socket names except for the Initial Connection Protocol (ICP) sockets, since the ICP can broker all new socket assignments.

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 ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

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

Wands, tablets, and fisheyes

RFC-174 is titled “UCLA-Computer Science Graphics Overview”. It's authored by Postel and Cerf of UCLA and dated June 8th, 1971.

The technical content

This document is a list of graphics hardware and software available at UCLA's Computer Science department, and concludes with some future plans the department has, related to graphics.

They have two Imlac PDS-1 displays. These are vector displays (imagine impossibly crisp fluorescent lines), and are rectangular and oriented in what we'd call “portrait mode” today. These are new technology, having debuted just the prior year. They are not using these to their fullest in terms of software, as they haven't developed anything and are just going with the out-of-the-box software it shipped with.

They also have a DEC-340 station with a light pen, a Rand Tablet (see RFC-39), and a Lincoln Wand (see RFC-5). They've developed a lot more software for this station, including a polar coordinate visualization system that can control an external camera for producing diagrams for scientific papers and even animated fims; a scripting language that lets you do image transitions like fades, dissolves, zooms, etc; and a cool program called FISHEYE that applies a fisheye transform that maps a very large rectangular image onto the surface of a sphere, which as it turns out is an efficient (if disorienting) way to show rectangular image data on a circular display.

Photo of the DEC-340 display, which has a small closet's worth of rack electronics and a circular monitor the size of manhole cover.

Further reading

Here's the programming manual for the DEC-340.

The PDS-1 was a very popular networked graphics workstation. It wasn't just a terminal but rather a full on microcomputer of its own. Lots of neat facts thanks to the Blinkenlights folks, including this tidbit:

MazeWar first appeared at MIT in the early 1970s, using Imlac displays and the ArpaNet network. Legend has it that, at one point during that period, MazeWar was banned by DARPA from the ArpaNet because half of all the packets in a given month were MazeWar packets flying between Stanford and MIT.

FRESS, an early hypertext system (aka documents where text can link to other documents), made special use of the PDS-1. You can check out the technical manual for lots of cool 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 an independent technologist and artist. I do a lot of work on the decentralized web with ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

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

Sharing, or management?

RFC-173 is titled “Network Data Management Committee Meeting Announcement” and authored by Peggy Karp of MITRE and Douglas B. McKay of IBM. It's dated June 4th, 1971.

The technical content

This is an announcement of a new committee, the Network Data Management Committee. During the Atlantic City meeting, there was enough disagreement around data management to cause an entire portion of the meeting to get derailed. So it makes sense that they decided the issues at hand should be taken into a committee for further discussion.

In fact, "an informal meeting was held Wednesday morning, 19 May", two days after the data management discussion was derailed, and taking advantage of the fact that lots of people were in Atlantic City anyway. This is actually noted in RFC-164 (the meeting minutes for Atlantic City) and those notes promised a forthcoming RFC with more information. Well, now we are here.

There will be a committee meeting in Cambridge, Massachusetts at the offices of Computer Corporation of America. They will be structured after the Network Graphics Meeting outlined in RFC-87, and in particular, if you want to participate, you or someone in your organization needs to write and present a paper for the meeting.

This first meeting will simply be an accounting of the different opinions on data management/sharing on the network. Future meetings will attempt to figure out how to incorporate ideas from other areas of ARPANET work into data sharing, and then set up experiments in these various technologies and approaches.

The meeting will be held August 2 to August 4 at the CCA offices in Cambridge, Massachusetts.

Analysis

This seems to entail a name change from “data sharing”. At first I thought it was because “data management” is a broader term than data sharing, and this committee could, in theory, also cover things like the Data Reconfiguration Service—but this doesn't seem to be the case here, as the document is very clear that the remit of the committee is “data sharing”!

It's interesting to me that “sharing” as a concept might be starting to be phased out from official language.

Further reading

Another fascinating thing to me is that the RFC says the meetings will be at the CCA offices in Technology Square. “Tech Square” is a big landmark in Cambridge, Massachusetts, right in the middle of Kendall Square and close to the MIT campus. I had always assumed that it was developed during the 1990s dot com boom but it turns out it was originally built during the Cold War technology boom, with the first building erected in 1963!

The venerable Multicians website has an article by Tom Van Vleck reminiscing about Tech Square. Project MAC was based there, at 545 Tech Square (the original building), and CCA was just a couple minutes' walk away at 565 Tech Square. I like reminding myself of how physically close a lot of these different organizations were to one another. I can only imagine it helped with cross-pollination between organizations, though I can't be sure! One claim from Van Vleck is that the CIA had an office in 545 building, which I am fully ready to believe since the it would give easy geographic proximity to an ARPANET IMP and also the many defense contractors like Draper Laboratory in the area.

I also enjoyed this history of Tech Square published by MIT.

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 ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

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

FTP, again

RFC-172 is titled “The File Transfer Protocol”. It's authored by Abhay Bhushan, Bob Braden, Will Crowther, Alex McKenzie, Eric Harslem, John Heafner, John Melvin, Dick Watson, Bob Sundberg, and Jim White. It's dated June 23rd, 1971.

The technical content

This document is an iteration on FTP specification laid out in RFC-114 and also has a lot of overlap with RFC-171. I'll describe some of the new things in this document that differ from what was included in RFC-114.

First off, now that the TIP (terminal IMPs) are more in use, the opening paragraph of this document mentions them as a specific use case. This new FTP spec is also an extension of the RFC-171 data transfer protocol, so the reader is expected to have read that RFC for background.

The RFC mentions the concept of “indirect usage” once again as a primary motivator for FTP. I'll quote myself in my blog post about RFC-114 where I explain the term and its counterpart, “direct 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.

Importantly, FTP is meant to "shield the user from variations in file and storage systems of different hosts", acting as an abstraction on top of complex technical problems.

In RFC-114, a file is said to be uniquely identified "by its file name and directory name", and the concept of a “pathname” is mentioned in passing, but in this RFC the “pathname” is now the primary organizing concept of a file and it's explicitly stated that a pathname merely “usually” consists of a file name and directory name, but could also consist of a device name or other unique identifiers.

Access control (or at least support for it) is now a core part of FTP. In RFC-114, access control was mentioned as a possible extension to the protocol, but it seems it's been upgraded in status now.

As I mentioned above, FTP is now built on the Data Transfer Protocol of RFC-171, and the authors note that FTP is not compatible with DTP's “bit stream” mode so a host would need to support one of the other two DTP modes, which are block transfer or the byte count mode.

Error codes have moved to sequential numbers rather than ascii shortcodes. For example, in RFC-114 an “undefined” error was sent as the ASCII character “U”, type error was sent as “T”, and so on. Now error codes simply have numbers assigned to them with no particular semantic meaning, starting with 0 for “system error”. Also a lot of the original FTP error codes are now handled at the DTP layer.

Analysis

Despite my dislike of the design-by-committee nature of RFC-171, I like that it's made RFC-172 a much simpler document than its original form in RFC-114.

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 ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

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

DTP

RFC-171 is titled “The Data Transfer Protocol”. It's authored by Abhay Bhushan, Bob Braden, Will Crowther, Alex McKenzie, Eric Harslem, John Heafner, John Melvin, Dick Watson, Bob Sundberg, and Jim White. It's dated June 23rd, 1971.

The technical content

RFCs 171 and 172 form a pair. This RFC, 171, describes something called the “Data Transfer Protocol”, which is a low-level protcol for transferring data. It is essentially the file transfer protocol proposed in RFC-114 but without file system specific stuff, so it can be used for any sort of data transfer, not just files.

RFC-172 will be based on this document and will add the file system specific stuff on top of it.

DTP offers three operating modes.

  1. A bit stream that simply opens a connection, sends bits, and then closes the connection.
  2. A “block” transaction that begins with a transaction type byte and ends with a special series of character codes denoting the end of a transaction
  3. A count transaction that begins with a header containing the length of the data in the transaction. This is exactly the mode described in RFC-114 under the “Transactions” section.

Analysis

This is a weird proposal that seems very design-by-committee, and each of the operating modes seems like it needs to be its own protocol. It really looks like half the RFC is just an abstraction of the FTP proposal in RFC-114, and then it has operating modes 1 and 2 (bit stream and block mode) kind of bolted on to it.

I suppose one reason this could be good is that there are error codes shared among all three operating modes.

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 ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

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

Another list

RFC-170 is titled “RFC List by Number” and authored by the SRI Network Information Center. It's dated June 1st, 1971.

The technical content

This RFC is a table of all RFCs to date, sorted by RFC number. For each entry it contains the first author, title, date, NIC number, and RFC number.

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 ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

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

Other networks

RFC-169 is titled “Computer Networks” and authored by Steve Crocker of UCLA. It's dated May 27th, 1971.

The technical content

This RFC is information about an upcoming IEEE Computer Society workshop on the topic of computer networks. Crocker is a co-chair of the workshop, and it's

intended especially for those manufactureers, users and researchers who have just entered, or are about to enter, the network field.  Presentations are invited on all aspects of computer networks, particularly including user communities, inter-node protocols, terminal and switching equipments, and communications technology.

Specifically it draws attention to the fact that “the number of networks has grown” recently. In 1971 there are computer networks other than ARPANET, such as NPL and MERIT, which both predate the ARPANET by a few years.

Topics covered at the workshop will include:

  • overview of existing networks
  • network services like file transfer and remote job entry
  • hardware and software design considerations
  • network management

The workshop is off-the-record and limited to 65 invited participants to maximize productive discussion.

Analysis

There is a cool IEEE letterhead you can see on page 3 of the PDF scan.

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 ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

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

Air mail

RFC-168 is titled “Arpa Network Mailing Lists” and dated May 26th, 1971. It's authored by Jeanette B. North of the SRI Network Information Center.

The technical content

This RFC discusses how RFCs are to be mailed to the various ARPANET sites and related organizations.

If you wanted to send an RFC out to the Network Working Group, you needed to send a copy by the postal service to some 30 different organizations around the United States. These are the “usual suspects” of the NWG we have heard so much about: SRI, BBN, MIT, UCLA, UCSB, RAND, etc. These are all the “site” participants, aka the organizations that are actively connected to the ARPANET.

One of the organizations on that list is the NIC, who then make further copies of the document and mail them to a list of ten other organizations, such MERIT, EDUCOM, SUNY, and so on. These are all organizations that are interested in being on the ARPANET but are not actively connected.

There is a third list of “NIC Station Agents”. Some of these organizations overlap with above organizations, but the station agents themselves are usually information science professionals tasked with maintaining the libraries of documents at the various sites. So for example, while Dr. Lawrence Roberts at ARPA is a recipient of all RFC documents, Margaret Goering at ARPA also gets a copy. Goering's job is to keep the library up to date and she receives not just RFCs themselves but also a boatload of related reference material that she is tasked with making available as needed to people at ARPA.

All RFC correspondence should be sent via Air Mail.

Further reading

The mention of Air Mail reminds me that 1971 was the waning days of “air mail” as a thing separate from other mail. Starting in 1975 the United States Post Office simply used airplanes whenever convenient, making them no different from trucks or other forms of delivery.

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 ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

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

Sockets, reconsidered

RFC-167 is titled “Socket Conventions Reconsidered” and authored by Abhay Bhushan of MIT Project MAC, Bob Metcalfe of Harvard, and Joel Winett of MIT Lincoln Laboratory. It's dated May 24th, 1971.

The technical content

The problem as laid out in this RFC is that there are two competing considerations for socket numbering as it currently exists:

  • sockets should be limited to 16 bits for smaller hosts (like TIPs)
  • sockets should be 32 bits and should include lots of metadata for “accounting and access control” (namely figuring out who is using what service so that sites can charge money to their users)

The authors suggest doing neither of these and instead waiting for an overhaul of the Network Control Program (NCP) protocol.

According to the authors, “The socket number, as it is used in the current NCP Protocol is a small number with a big function.” They say that there is probably going to need to be “a substantially more powerful identification mechanism” in order to provide the kind of features that the Network demands, that can meet both criteria above: able to account for who is using what services, but also able to be processed by less powerful systems.

One of the main issues is that they want socket allocation to be both unique and repeatable: that is, if you connect one of your processes to a process on a remote server via a socket, they would like that socket to at least remain the same for “reconnection on a regular basis”, though they don't say how regular exactly. The authors say that this means socket allocation should be tied to access controls somehow, aka, sockets should be reservable by individual users.

A “bad way” is the naive solution: keep a list of sockets, their assigned users, and how long they have the socket reserved for. An alternative strategy they recommend is partitioning sockets at a host among its network users. So for example, maybe the first time a user connects to a host at UCLA, they are given a range of sockets that are “theirs” to use as they see fit.

Further reading

“A small number with a big function” is a problem that persists in one form or another on the internet to this day. This blog post is a history of the routing protocol BGP but it covers the history of IP address and routing table growth in detail. These days, an IP address plus a socket number acts as what a socket number (which included the site identifier, analogous to a modern IP address) did back in the ARPANET days.

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 ActivityPub, including a Node.js reference implementation, an RSS-to-ActivityPub converter, and a fork of Mastodon, called Hometown. You can support my work via my Patreon.

Enter your email to subscribe to updates.