365 RFCs

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

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

An RJS client at Utah

RFC-325 is titled “Network Remote Job Entry Program – NETRJS”. It's authored by first-time RFC author Gregory Hicks of the University of Utah and dated April 6, 1972.

The technical content

The UTAH site was running computations that significantly reduced performance for local users while they were running, so they decided to take advantage of the UCLA Remote Job Service and send them all the computing tasks, freeing up resources for their local users. This RFC describes NETRJS, their own client for connecting to RJS at UCLA.

NETRJS is a modification of a TELNET client written by Ray Tomlinson.

This RFC includes a sample user session transcript—I always recommend reading those if you're a programmer as it's helpful to get a sense of what actually interacting with the software is like.

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, November 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.

Meeting at UCLA

RFC-324 is titled “RJE Protocol Meeting”. It's authored by Jon Postel of UCLA and dated April 3, 1972.

The technical content

This RFC announces a day-long meeting on Remote Job Entry protocols on April 21, 1972 at UCLA.

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, November 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.

A ridiculously long discussion

RFC-323 is titled “Formation of Network Measurement Group (NMG)”. It's dated March 23, 1971 and authored by Vint Cerf of UCLA.

The technical content

This RFC is a report of what happened at meeting at MIT Project MAC on March 17, 1972, where eight people from the various ARPANET sites gathered to discuss plans for measurement experiments.

The new range of network measurement links described by a single list item in RFC-317 is given more detail here. About half of the links are reserved for Hosts to discard any messages received without throwing an error. Link 191 is for IMP measurement. And the remaining links are for general purpose experimentation under the auspices of Cerf and the Network Measurement Center at UCLA.

I enjoy the editorializing here:

It was agreed (after a ridiculously long discussion) to allocate links 159-191 for network measurement only (see RFC #317).

Lincoln Labs and MIT Project MAC gather their own sets of measurements independently from the Network Measurement Center, though this is more about tracking the usage in their corner of the network rather than any network-wide measurements. The group would like different hosts sites to standardize what they collect on their host, and participating hosts should provide this data on a well known socket (to be specified when the socket catalog is published). The data will be returned in a standardized format that is laid out in this RFC and contains daily aggregate data for the host about the number of bits sent/received, number of messages sent/received, and average round trip delay of messages. So the idea is that any curious researcher can get the aggregate stats from any host on the network.

Bob Metcalfe proposed a set of metrics that should be collected that would be useful “if Network connections were for sale as "off-the-shelf" items”. These are: capacity in bits/second, transmission delay, mean time between failure, and percent availability of a network connection.

Ellen Westheimer's series of manually produced biweekly reports on host connectivity is mentioned, and there is some discussion of automating this process and making the information available in realtime to people on the network, so that they don't have to rely on these reports coming in every two weeks. RFC-308 is mentioned as an existing example of automated report generation.

Postel and Cerf plotted Westheimer's data. The plot is missing from the canonical RFC that's available online, but I snapped this photo at the Computer History Museum:

A line chart showing number of hosts in state "0" over time, from September 1972 to March 1972. The number is all over the place until about January 1972, at which point there is a slight tendency for it to go up.

There is also discussion of how best to measure the efficiency and use patterns of a file transfer system.

They discuss an “artificial traffic generator”, which can generate fake traffic in order to stress test the network. There has been some work on this at UCLA and Lincoln Labs.

Analysis

Metcalfe's interest in commercial directions for the network is not surprising, considering that he was one of the earliest and most successful commercializers of computer networking. In 1979 he would cofound 3Com, one of the first commercial manufacturers of computer networking hardware (based on Ethernet, which Metcalfe co-invented).

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, November 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.

Well known

RFC-322 is titled “Well Known Socket Numbers”. It's dated March 26, 1972 and authored by Vint Cerf and Jon Postel of UCLA.

The technical content

The authors of this RFC want to implement a service that lives at a standard network socket. But they can't do that unless they know what other sockets are already in use on the network and considered standard.

Recall from RFC-147 that a socket is a combination of identifiers that identifies a unique point in the network. It's the smallest and most precise unit of identification on the network, and includes the host server, the user, an id for a specific software process that is running on the host server, and an indicator of whether this point in the network is for sending or receiving information.

Cerf and Postel would like people to send in what sockets they are using that are supposed to be well known to the network at large. They plan to publish a catalog of these sockets.

Further reading

The first mention of something like a “well known” socket in the RFC series is in Dave Walden's RFC-61, though at the time he was speaking of well known processes. Within a year, discussion of processes would be replaced with discussion of sockets, which include processes but are more precise.

Jon Postel's RFC-165 is the first RFC to mention a “well known socket number”.

I love the term “well known” because it really drives home the point that technical standards are ultimately just agreements between people. There is no law and no technical reason that I couldn't run an HTTP server on port 1481, but by custom the well-known port for HTTP is 80 and so that is where a web browser looks by default when you point it to a server and make an HTTP request.

As a web developer working today, all of this brings to mind RFC-5785, which was published in April 2010, 40 years after this RFC was published. This RFC defines the Well Known URI scheme, which defines the /.well-known/ directory as a place for web servers to store metadata about their services in a, you guessed it, well known location. There is an entire registry of well known URIs at the IANA website. Many of these correspond to RFCs of their own. My favorite well known URI is this one:

https://friend.camp/.well-known/webfinger?resource=acct:darius@friend.camp

It defines the WebFinger information about my account on Friend Camp, a node that I administer in a decentralized social media network known as the Fediverse. WebFinger is itself defined in RFC-7033.

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, November 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.

Turtles

RFC-321 is titled “CBI Networking Activity at MITRE”. It's by Peggy Karp and dated March 24, 1972.

The technical content

This is a direct response to RFC-313, which is an overview of the Computer Based Instruction field, and how the field can be enhanced through network usage. The author notes that MITRE is engaged in Computer Aided Instruction research, which is where the computer itself is doing the active teaching (as opposed to Computer Managed Instruction, which is more about the bureaucracy of education).

MITRE's CAI work has focused on a project called TICCIT: the Time-Shared, Interactive, Computer-Controlled Information Television. This was a system for interactive cable TV that allowed users to use a touch-tone telephone to interact with what was displayed on the television. The graphics shown on the TV were purely computer generated and controlled by a central computer that processed the telephone input and updated the display accordingly. According to Wikipedia, the system supported up to 100 simultaneous users in the mid 1970s.

The paper attached to the RFC is about the potential for TICCIT to draw on resources from the network to improve its instructional capabilities. They discuss possibly connecting up to the Culler-Fried system at UCSB, which provides advanced mathematical visualization. They also talk about connecting to BBN's SCHOLAR system and MIT's LOGO system. There's not much substance here: the paper essentially says, “These network resources exist, and might be helpful, so we should look into them more. Here is a checklist of things we should do in order to look into them.”

Analysis

Documents like these are meant to secure massive amounts of grant money, and in the 1970s MITRE was at the forefront of the “getting grant money” field. It's interesting to read a document like the one attached here, which to my mind says almost nothing and lays out a plan that is simultaneously specific and vague: there are absolutely no hypotheses to be tested, but they do have a checklist of things that they're going to do. But it's all couched in grant-language, so it's very easy to be tricked into thinking they are making an impressive proposal!

Further reading

I like this quote:

The LOGO system at MIT/AI is perhaps the most impressive system for use in a demonstration due to the availability of a "display turtle".

Turtle graphics are near and dear to my heart. The turtle essentially represents the nib of a pen as it moves across a virtual piece of paper, drawing lines as it goes. It's famously a core feature of the Logo language, which I remember being part of a one-week instructional module I did in elementary school on an Apple II of some variety in 1989. If you like, you can do a cute set of interactive lessons at Turtle Academy that are pretty similar to my 1989 class.

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, November 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.

Hard copy printing

RFC-320 is titled “Workshop on Hard Copy Line Graphics”. It's by Raj Reddy of Carnegie Mellon University, and dated March 27, 1972.

The technical content

CMU has developed a technology that lets them generate scan lines for printed documents rather than having to generate an image for the whole page before sending it to print. It's called the XCRIBL System and it can do things that conventional printer systems can't, including changing typefaces on the fly and printing grayscale graphics using a kind of halftone effect.

This RFC announces a one-day workshop at CMU and invites network users to attend.

Analysis

Notable on page two of the RFC is a portion of the day labeled as a “Session for the "Hackers". This is “hacker” in its older usage, meaning someone who is good at solving technical problems in usually unconventional ways (as compared to the modern usage which implies some kind of illegal behavior or violation of trust). Also notable is that the word “hackers” is in quotes, denoting that it's not considered commonly used language.

Also notable is that this is verging on off-topic for RFCs! This author wanted to publicize his event to a bunch of computer scientists and felt like the RFC distribution list was the place to do it. There's not even a half-hearted attempt to connect this to issues of computer networking.

Further reading

The full academic article describing XCRIBL is available to 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 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, November 15 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.

Network status

RFC-319 is titled “Network host status”. It's authored by Ellen Westheimer of BBN and dated March 21, 1972.

The technical content

This is another report from BBN on the status of various ARPANET hosts in the same series as RFC-315, RFC-306, RFC-298, RFC-288, RFC-287, RFC-267, RFC-266, RFC-255, RFC-252, RFC-235, and RFC-240.

The numbers, from February 28 to March 10:

  • 77 dead
  • 85 open
  • 12 half open
  • 6 timed out

We are at about 57% online status for the longest-running ARPANET servers, and 47% online overall. Slow and steady improvements for the last few such reports.

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, November 14 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.

Neither clear nor succinct

RFC-318 is titled “Telnet Protocol”. It's authored by Jon Postel and dated April 3, 1972.

The technical content

This is Postel's attempt to summarize the Telnet protocol as it exists on the ARPANET at the moment. He is not happy with the protocol as it exists and in addition to providing a summary, also presents some suggestions for improvement (on behalf of others who have made the suggestions).

The first thing that needs to be defined is the Network Virtual Terminal (NVT). This is a piece of software (hence “virtual”) that emulates a physical teletypewriter terminal. The NVT consists of a “printer”, which is the input data stream, and a “keyboard”, which is the output data stream. The keyboard can output any ASCII value from 0 to 127. The printer can output the printable characters (values 32 to 126), and also a handful of control characters like BELL, back space, line feed, carriage return. “End of line” is defined as carriage return followed by line feed: CR, LF. (More on that here.) The point of the NVT is to provide a standardized terminal “to eliminate the need for using and serving sites to keep information about characteristics of each other's terminals”. That is, if you can all agree on a standard subset of terminal functionality then as long as you get your own actual (non-virtual) terminal speaking that standard, you're good to go.

Telnet uses the Initital Connection Protocol to establsih a connection with a remote host, and then the main interface for writing and reading data back and forth is the NVT, and then the Telnet control signals are what controls the flow of that data under the hood.

The telnet signals consist of 8-bit values 128 and above, so as not to interfere with the values 0 through 127 that are for the NVT as described earlier.

There are codes for things like interrupts, for hiding input (like when a user is typing in a password, you don't want to display it), and for marking where data blocks begin and end.

Postel provides recipes for both a minimal implementation of Telnet (on both client and server) and a “standard” implementation of Telnet.

Of course, there are problems. For starters, if you send the character “a” to a remote terminal that only supports upper case letters... well, you've successfully sent “a” from your NVT to their NVT, but now they need to translate that letter into something that they can show. Presumably they'll translate it to upper case “A”, but you don't actually know for sure unless you ask someone over there what it looks like! One suggestion is to allow users to specify that translation themselves... but now you've more or less rendered the NVT useless.

There are also concerns about extending Telnet to be able to represent graphics and so on.

Things get weirder where the codes for more abstract control commands come in. When you send a “CR;LF” newline across the network, the receiving host might not actually have CR and LF available locally! Instead it could interpret it and then translate it to an internal, non-ASCII “new line” command before sending it to the main computer's processes. The state of CR;LF in computing on the ARPANET is summarized by Postel as follows:

Telnet defines the end of a line to be indicated by the ASCII character pair CR LF.  Several of the real devices in the world have only a single new line (NL) function.  Several of the computer systems have in some programs used the CR and LF functions to have semantic meaning larger than the format effect they provide. Further, several computer systems allow the CR and LF functions to be used separately (e.g., such that a line may be overprinted).

One solution that could work is to follow any CR that is not going to be followed with an LF with a NUL instead. This lets the recipient know that the CR can be interpreted as semantically distinct from a newline command.

Postel also points out some inconsistencies with echoing and the hide-your-input functionality (do you print X's instead of letters? nothing? etc). Similarly the interrupt signal has different semantic meanings on different computers and as such isn't so simple to interpret. He suggests using the BREAK (interrupt) signal in conjuction with the DATA MARK signal in order to communicate more detail about the type of interrupt that is being sent.

There are some changes to Telnet proposed by others—the big one to my eye being the proposal that all data types be scrubbed from the protocol in favor of pure ASCII.

Analysis

Of all the people in the history of the APRANET and early Internet, Jon Postel (1943-1998) is spoken of in glowing terms. He was largely beloved, and remains so to this day. Yes he was instrumental to the network and essentially ran huge chunks of the internet by hand for years, but also everyone just liked him so much. I think that the opening paragraph of this RFC is an example of his signature “poetic and whimsical” style:

   At the October 1971 Network Working Group Meeting, I promised to promptly produce a document which clearly and succinctly specified and explained the Official Telnet Protocol.  This document fails to meet any part of that promise.  This document was not produced promptly.  This document is neither clear nor succinct.  There is NO Official Telnet Protocol.

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, November 13 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-317 is titled “Official Host-Host Protocol Modification: Assigned Link Numbers”. It's authored by Jon Postel and dated March 20, 1972.

The technical content

Recall that links are the term used for each of the 256 “channels” that you can communicate over the network on. So for example, you can connect from one computer to another by reserving link number 38, and while you are using that link, nobody else can use it.

The last official documentation of link numbers was in RFC-179 in June 1971. In that RFC, link assigments were listed as:

0                   Control link
2-71                Available for connections
1, 72-190           Reserved-not for current use
191                 To be used only for measurement
                    work under the direction of the
                    Network Measurement Center at UCLA
192-255             Available for private experimental use

In this new RFC, links 159 through 190 have been opened up for network measurement by the Network Measurement Center.

Links 192-195 are being used for the “Message Switching Protocol experiment”. More on this to come in RFC-333. The new assignment table is:

0                      Control Link
2-71                   Available for Connection
1, 72-158              Reserved--not for current use
159-191                To be used only for measurement work
                       under the direction of the Network
                       Measurement Center at UCLA
192-195                To be used for the Message Switching
                       Protocol experiment
196-255                Available for private experimental use

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, November 12 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.

Data management applications

RFC-316 is titled “ARPA Network Data Management Working Group”. It's authored by Doug B. McKay and one A. P. Mulleray, who I can't find any information on. It's dated February 24, 1972.

The technical content

This RFC is a summary of the Data Management Working Group meeting.

Since the RFC itself is a summary, I'll give a brief summary of the summary.

The meeting took place in two phases. In the first phase people presented how they were using data sharing on networks in the workplace, or developing for data sharing applications. These included:

  • teaching and testing physicians using material stored on the network
  • the MEDLINE system that provides access to information from medical journals over the network
  • the network components of the World Wide Military Command and Control System, which required fast querying of databases, daily synchronization of data across the network, and reporting capability on a weekly/monthly/etc basis—this is one of the first times the need for data security is highlighted in an RFC
  • the topography of the network at General Motors Research Laboratory, where designers would create designs (presumably for different car parts) and then upload them to servers that would run physical stress simulations on them
  • running meta-experiments to determine whether certain data management functions should be centralized or distributed

Phase 2 was to organize the committee and set up an interest group for data management.

Further reading

MEDLINE still exists today as the NIH's MedlinePlus.

The World Wide Military Command and Control System (WWMCCS) was an attempt to coordinate United States military forces across the world. The idea was for commanders to be able to issue orders within minutes to soldiers on the other side of the earth, and for the commanders to have access to aggregated intelligence data to help them make decisions from half a world away. It was under new management as of 1971, and put under the auspices of the Assistant Secretary of Defense for Telecommunications. I imagine their attendance at this meeting is tied in with that.

Aside: “Command and control”, also known as C2, is a military term that I've seen used as early as the 1950s in relation to the Lincoln-Lab-helmed Semi-Automatic Ground Environment, aka SAGE. This entry from The Oxford Companion to American Military History provides a ton of background on the concept in general, and while the need to coordinate across different branches of the US military is a problem as old as the United States, the author cites the 1947 unification of all the military branches under a single Department as the main impetus for command and control. If we look at the frequency of the phrase in books scanned by google, the phrase starts to take off right around 1948, so that claim seems to hold up.

In the Phase 2 section, one of the attendee names jumped out at me: Elizabeth Fong.

I looked her up and she spent her whole career at the National Institute for Standards and Technology, which at the time of this RFC was still the National Bureau of Standards. She was heavily involved in the effort to standardize SQL in the 1980s. Here's a 2014 interview with her, and here's a brief autobiographical sketch on being awarded for 48 years of service at NIST.

Other women in attendance are Dorothy Hopkin, who I've written about on this blog, and Suzanne Taylor and Erika Perez of MITRE, who I'm unfortunately unable to find more information on.

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.