RFC 855 INTERNET STANDARD TELNET · OPTIONS

Telnet Options: Telnet Option Specifications

How Telnet options get their codes and how each option has to be documented.

On rfc-editor.org ↗
PUBLISHED
May 1983
AUTHORS
J. Postel, J. Reynolds
ORG
USC/ISI
STREAM
Legacy
DOCUMENTATION SECTIONS
5
BYTE TO DOUBLE IN PARAMETERS
255
DOI
10.17487/RFC0855

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
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.

AI ELI5

On this page
PROBLEMTelnet options let hosts handle dissimilar devices better than the basic Network Virtual Terminal allows, but a single option code must never be used for several different options and options need to be well documented.
MECHANISMOne named individual assigns option codes, and each option is documented in five standard sections. The memo also explains subnegotiation, where parties agree with WILL and DO to discuss parameters and then exchange them with SB and SE.
WHY IT MATTERSIt is an Internet Standard. Documentation is generally required before a code is assigned, though it may be waived for some experiments.

§1Purpose of Telnet Options

Options let hosts find more elegant solutions to communication between dissimilar devices than the framework of the Network Virtual Terminal (NVT) allows. Hosts should be able to invent, test or discard options at will, but options that prove useful are expected to be supported by many hosts, so they should be carefully documented and publicized.

The memo specifies a method of option code assignment and standards for documentation. The assigner may waive complete documentation 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.

People can invent new tricks for Telnet. To keep things tidy, each trick gets a unique number and a written description.

§2Documentation Sections

Option documentation should contain at least five sections:

  • Command Name and Option Code
  • Command Meanings: what each relevant Telnet command means for this option.
  • Default Specification: the assumptions for hosts that do not implement or use the option.
  • Motivation: why the option, or its particular form, was invented.
  • Description: text, a sample implementation or hints, enough that two implementations can communicate.

Option codes are assigned by Jonathan B. Postel at USC-ISI, as named in the memo.

Every new trick needs a name tag, a list of what each signal means, what happens if you do not use it, why it exists, and enough detail to build it.

§3Subnegotiation

Some options need more than a single option code, for example when a parameter must be passed. The approach has two steps. First, both parties agree to discuss the parameters: one proposes with DO or WILL followed by the option code, and the other accepts by returning WILL or DO. Second, the discussion happens with IAC SB ABC <parameters> IAC SE, where ABC stands for the option.

A receiver can find the end of the parameters by searching for IAC SE, even if it cannot parse them. Either party may stop at any time by sending WON'T or DON'T.

First both sides say "yes, let us talk about the details." Then they actually swap the details. Either one can stop the talk whenever they like.

§4Avoiding Loops and Byte 255

Designers of options that need subnegotiation must take great care to avoid unending loops. For example, if each party accepts any parameter value and both suggest different values, the two may oscillate forever, each thinking it is only acknowledging the other's new proposal.

If parameters include a byte with the value 255, that byte must be doubled, following the general Telnet rules.

If two people each say "no, you pick" forever, nothing gets decided. Option designers must make sure the talk ends.