by Darius Kazemi, May 17 2019
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!
- Level 1 is the Host-IMP protocol (not the inter-IMP protocol as I think I previously guessed on this blog)
- Level 2 is the Host-Host protocol (so how an NCP at one host talks to an NCP at another HOST)
- Level 3 is stuff that happens on either end of a connection between the NCP and the operating system of the local computer (the application layer)
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.