Telnet Options: Telnet Option Specifications
How Telnet options get their codes and how each option has to be documented.
Postel, J. and J.K. Reynolds, "Telnet Option Specifications", STD 8, RFC 855, DOI 10.17487/RFC0855, May 1983, <https://www.rfc-editor.org/info/rfc855>.
@misc{rfc855,
series = {Request for Comments},
number = 855,
howpublished = {RFC 855},
publisher = {RFC Editor},
doi = {10.17487/RFC0855},
url = {https://www.rfc-editor.org/info/rfc855},
author = {J. Postel and J.K. Reynolds},
title = {{Telnet Option Specifications}},
pagetotal = 3,
year = 1983,
month = may,
} RFC text
Network Working Group J. Postel
Request for Comments: 855 J. Reynolds
ISI
Obsoletes: NIC 18640 May 1983
TELNET OPTION SPECIFICATIONS
This RFC specifies a standard for the ARPA Internet community. Hosts on
the ARPA Internet are expected to adopt and implement this standard.
The intent of providing for options in the TELNET Protocol is to permit
hosts to obtain more elegant solutions to the problems of communication
between dissimilar devices than is possible within the framework
provided by the Network Virtual Terminal (NVT). It should be possible
for hosts to invent, test, or discard options at will. Nevertheless, it
is envisioned that options which prove to be generally useful will
eventually be supported by many hosts; therefore it is desirable that
options should be carefully documented and well publicized. In
addition, it is necessary to insure that a single option code is not
used for several different options.
This document specifies a method of option code assignment and standards
for documentation of options. The individual responsible for assignment
of option codes may waive the requirement for complete documentation for
some cases of experimentation, but in general documentation will be
required prior to code assignment. Options will be publicized by
publishing their documentation as RFCs; inventors of options may, of
course, publicize them in other ways as well.
Option codes will be assigned by:
Jonathan B. Postel
University of Southern California
Information Sciences Institute (USC-ISI)
4676 Admiralty Way
Marina Del Rey, California 90291
(213) 822-1511
Mailbox = POSTEL@USC-ISIF
Documentation of options should contain at least the following sections:
Section 1 - Command Name and Option Code
Section 2 - Command Meanings
The meaning of each possible TELNET command relevant to this
option should be described. Note that for complex options, where
"subnegotiation" is required, there may be a larger number of
possible commands. The concept of "subnegotiation" is described
in more detail below.
Section 3 - Default Specification
The default assumptions for hosts which do not implement, or use,
the option must be described.
Section 4 - Motivation
A detailed explanation of the motivation for inventing a
particular option, or for choosing a particular form for the
option, is extremely helpful to those who are not faced (or don't
realize that they are faced) by the problem that the option is
designed to solve.
Section 5 - Description (or Implementation Rules)
Merely defining the command meanings and providing a statement of
motivation are not always sufficient to insure that two
implementations of an option will be able to communicate.
Therefore, a more complete description should be furnished in most
cases. This description might take the form of text, a sample
implementation, hints to implementers, etc.
A Note on "Subnegotiation"
Some options will require more information to be passed between hosts
than a single option code. For example, any option which requires a
parameter is such a case. The strategy to be used consists of two
steps: first, both parties agree to "discuss" the parameter(s) and,
second, the "discussion" takes place.
The first step, agreeing to discuss the parameters, takes place in
the normal manner; one party proposes use of the option by sending a
DO (or WILL) followed by the option code, and the other party accepts
by returning a WILL (or DO) followed by the option code. Once both
parties have agreed to use the option, subnegotiation takes place by
using the command SB, followed by the option code, followed by the
parameter(s), followed by the command SE. Each party is presumed to
be able to parse the parameter(s), since each has indicated that the
option is supported (via the initial exchange of WILL and DO). On
the other hand, the receiver may locate the end of a parameter string
by searching for the SE command (i.e., the string IAC SE), even if
the receiver is unable to parse the parameters. Of course, either
party may refuse to pursue further subnegotiation at any time by
sending a WON'T or DON'T to the other party.
Thus, for option "ABC", which requires subnegotiation, the formats of
the TELNET commands are:
IAC WILL ABC
Offer to use option ABC (or favorable acknowledgment of other
party's request)
IAC DO ABC
Request for other party to use option ABC (or favorable
acknowledgment of other party's offer)
IAC SB ABC <parameters> IAC SE
One step of subnegotiation, used by either party.
Designers of options requiring "subnegotiation" must take great care
to avoid unending loops in the subnegotiation process. For example,
if each party can accept any value of a parameter, and both parties
suggest parameters with different values, then one is likely to have
an infinite oscillation of "acknowledgments" (where each receiver
believes it is only acknowledging the new proposals of the other).
Finally, if parameters in an option "subnegotiation" include a byte
with a value of 255, it is necessary to double this byte in
accordance the general TELNET rules.
ISO Plain Language
On this page
§1Purpose of Telnet Options
The point of options in the TELNET Protocol is to let hosts find more elegant solutions to communication between dissimilar devices than the Network Virtual Terminal (NVT) framework allows. Hosts should be able to invent, test or discard options at will, but options that prove generally useful are expected to be supported by many hosts, so they should be carefully documented and well publicized. It is also necessary to make sure one option code is never used for several different options.
This document specifies a method of option code assignment and standards for documentation of options. The person responsible for assigning codes may waive the documentation requirement for some cases of experimentation, but in general documentation is required before a code is assigned. Options are publicized by publishing their documentation as RFCs. The RFC names Jonathan B. Postel at USC-ISI as the assigner.
Telnet can grow new features. To keep the growth orderly, every feature gets one unique code, and the feature is written up and published before it is widely used.
§2Documentation Sections
Documentation of an option should contain at least five sections. Command Name and Option Code names the option and its code. Command Meanings describes the meaning of each TELNET command relevant to the option; complex options that need subnegotiation may have more commands. Default Specification states the default assumptions for hosts that do not implement or use the option. Motivation explains why the option, or its particular form, was invented. Description (or Implementation Rules) furnishes a fuller account, such as text, a sample implementation or hints to implementers, because command meanings and motivation alone do not always ensure that two implementations can communicate.
Every option write-up names the option and its code, explains each command, states what non-participants should assume, gives the reason it exists, and adds enough detail for two independent implementations to work together.
§3Subnegotiation
Some options need more information than a single option code, for example an option that carries a parameter. The strategy has two steps. First the parties agree to discuss the parameters: one party proposes the option with DO (or WILL) followed by the option code, and the other accepts by returning WILL (or DO) followed by the option code. Once both parties agree, subnegotiation runs with SB, the option code, the parameters, and SE. For an option called ABC the commands are IAC WILL ABC, IAC DO ABC and IAC SB ABC <parameters> IAC SE.
Each party is presumed able to parse the parameters, since each has said the option is supported. Even so, a receiver may find the end of a parameter string by searching for the SE command (IAC SE) if it cannot parse the parameters. Either party may end subnegotiation at any time by sending WON'T or DON'T.
Designers of options that use subnegotiation must take great care to avoid unending loops. If each party accepts any parameter value and both propose different values, acknowledgments may oscillate forever, each side believing it is only acknowledging the other's new proposal. If a parameter byte has the value 255, it must be doubled, following the general TELNET rules.
First the two sides agree to discuss a setting with simple yes-or-no commands. Then they trade the actual values between start and end markers. Designers must make sure this exchange always finishes.