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

Telnet for Atlantic City

RFC-137 is titled “TELNET Protocol”. It's by Thomas O'Sullivan of Raytheon and dated April 30th, 1971.

The technical content

Telnet has been in the works since RFC-15 way back in September 1969. This document is a draft protocol distrbuted via RFC for Network Working Group members to read before the Atlantic City meetings that are coming up.

The Telnet protocol offered here is the result of the Telnet committee suggested by Steve Crocker in RFC-116. He specifically asked that a Telnet committee be formed to create a protocol document to be discussed at the Atlantic City meeting, so, here we are.

O'Sullivan is the Chairman of the committee, and it's comprised of members from BBN, SDC, SRI-ARC, Harvard, MIT Project MAC, and MIT Lincoln Lab.

The purpose of Telnet is to make it so that using a remote computer is nearly identically to using a computer at your local site. That is to say, if you're sitting in California and connected to a PDP-10 in Massachusetts via your local teletype, it should be no different from connecting to a PDP-10 down the hall.

We get our first “official” definition of the different “levels” of the ARPANET!

There is a very neat diagram (Figure 1 in the document) that shows the anatomy of a network message and its relevance to the different levels. Basically, the “leader” is what matters to the Host-IMP connection, the “preamble” (or the full header) is what matters for Host-Host, and the actual text content is what matters to the applications on either end.

Telnet provides a Network Virtual Terminal (NVT), which is a kind of generic terminal that more specifical local terminals will be translated to before being sent over the network. The NVT considers CR/LF to be its “end of line” character (more on this in my post on RFC-97).

Telnet will use the Intitial Connection Protocol to negotiate initial connections, and will use ASCII as its character encoding. Using sites (any site that wishes to provide Telnet as a service to its users) must provide their users the ability to input the full set of ASCII characters plus certain Telnet control signals. Since 7-bit ASCII is being used for character encoding (numbers 0-127 in an 8-bit word), that leaves the upper numerical range (128-255 in an 8-bit word) reserved for Telnet control signals. The control signals negotiate things like echoing and interrupt conventions between using site and serving site. There are also some Telnet control signals that are purely local for the user at a using site to indicate certain information to Telnet itself.


It's interesting that Telnet is immediately established in the very first clause of the very first sentence as a “third-level protocol”. The concept of levels seems to have become extremely important to the NWG since the concept was first thrown around in early 1970.

This is an extremely sparse protocol so it's a good thing that it's a draft for discussion. Offhand I can't figure out how any programmer could implement a Telnet program based off of this.

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.