by Darius Kazemi, June 7 2019
Another pass at Telnet
RFC-158 (PDF with scanned images) is titled “Telnet Protocol: A Proposed Document”, authored by Thomas O'Sullivan of Raytheon. It's dated May 19th, 1971.
The technical content
This is a draft Telnet protocol open to comment from Network Working Group members. It is a rewrite of RFC-137 based on commentary received in the couple weeks since that was published.
Minor but significant technical differences in this new version:
- A “byte size of 8 bits on the permanent connection” for the Initial Connection Protocol is specified here, probably in response to Shoshani's complaints in RFC-151.
- Carriage return and line feed are defined by their ASCII hex values.
- Some shuffling around of definitions of the various Telnet control signals, including the addition of a “hide your input” command to “suppress printing of password”
- Some functionality around line the size of data chunks to be sent can, per spec, be delegated from the Telnet process to the local Network Control Program (the RFC-137 draft didn't allow for this, and it makes sense that the NCP might want to further break up your messages into something that works better for it)
Also added is a section which is a checklist for minimum viable implementations for Telnet on both the using site (what we'd call the client) and on the serving site (the server). Client and server have simliar checklists, but the client has to provide the necessary terminal conversion code (one example is discussed in RFC-135) and the ability for a local user to input Telnet control signals.
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.
Honestly this revision doesn't really help. The addition of the checklist is nice but even the checklist is sparse. I still think it would be very very difficult to implement Telnet based off of what we have here. Or I guess: given any five programmers implementing Telnet based off of this specification, you are going to find that each of their implementation is probably not compatible with two to four of the other implementations.
I happened upon the original sketch of Figure 2 in this RFC while I was at the Computer History Museum. The version in the official PDF is really poorly scanned and hard to read. The original sketch is in pencil on lined notebook paper:
How to follow this blog
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.