RFC 1079 PROPOSED STANDARD TELNET · TERMINALS

Telnet terminal speed option

How Telnet hosts exchange the bit rate of the terminal on the other end.

On rfc-editor.org ↗
PUBLISHED
December 1988
AUTHORS
C.L. Hedrick
STREAM
Legacy
OPTION NAME
TERMINAL-SPEED
OPTION CODE
32
SEND CODE
1
IS CODE
0
SPEED FORMAT
Decimal text, transmit,receive (for example 9600,100)
DOI
10.17487/RFC1079

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                         C. Hedrick
Request for Comments: 1079                            Rutgers University
                                                           December 1988


                      Telnet Terminal Speed Option

Status of This Memo

   This RFC specifies a standard for the Internet community.  Hosts on
   the Internet that exchange terminal speed information within the
   Telnet protocol are expected to adopt and implement this standard.
   Distribution of this memo is unlimited.

   This standard is modelled on RFC 930 [1], the telnet terminal type
   option.  Much of the text of this document is copied from that RFC.

Motivation

   Most operating systems have provisions to keep track of the speed
   (bit rate) of directly attached terminals and modems.  This
   information is used to control various timing-dependent display
   processes, e.g., the number of padding characters used for delay.
   Some software also has user interfaces that are tuned differently for
   fast and slow terminals.  The purpose of this option is to provide
   similar information for telnet connections.

1. Command Name and Code

      TERMINAL-SPEED

      Code = 32

2. Command Meanings

      IAC WILL TERMINAL-SPEED

         Sender is willing to send terminal speed information in a
         subsequent sub-negotiation.

      IAC WON'T TERMINAL-SPEED

         Sender refuses to send terminal speed information.

      IAC DO TERMINAL-SPEED

         Sender is willing to receive terminal speed information in a
         subsequent sub-negotiation.

      IAC DON'T TERMINAL-SPEED

         Sender refuses to accept terminal speed information.

      IAC SB TERMINAL-SPEED SEND IAC SE

         Sender requests receiver to transmit his (the receiver's)
         terminal speed. The code for SEND is 1. (See below.)

      IAC SB TERMINAL-SPEED IS ... IAC SE

         Sender is stating his terminal speed. The code for IS is 0.
         (See below.)

3. Default

      WON'T TERMINAL-SPEED

         Terminal speed information will not be exchanged.

      DON'T TERMINAL-SPEED

         Terminal speed information will not be exchanged.

4. Description of the Option

   WILL and DO are used only to obtain and grant permission for future
   discussion. The actual exchange of status information occurs within
   option subcommands (IAC SB TERMINAL-SPEED...).

   Once the two hosts have exchanged a WILL and a DO, the sender of the
   DO TERMINAL-SPEED is free to request speed information.  Only the
   sender of the DO may send requests (IAC SB TERMINAL-SPEED SEND IAC
   SE) and only the sender of the WILL may transmit actual speed
   information (within an IAC SB TERMINAL-SPEED IS ... IAC SE command).
   Terminal speed information may not be sent spontaneously, but only in
   response to a request.

   The terminal speed information is an NVT ASCII string.  This string
   contains the decimal representation of the transmit and receive
   speeds of the terminal, separated by a comma, e.g.,

         9600,100

   No leading zeros may be included.  No extraneous characters such as
   spaces may be included.

      The following is an example of use of the option:

         Host1: IAC DO TERMINAL-SPEED

         Host2: IAC WILL TERMINAL-SPEED

      (Host1 is now free to request status information at any time.)

         Host1: IAC SB TERMINAL-SPEED SEND IAC SE

         Host2: IAC SB TERMINAL-SPEED IS "1200,1200" IAC SE

      (This command is 15 octets.)

5. Implementation Suggestions

   Many systems allow only certain discrete terminal speeds.  In such
   cases it is possible that a speed may be received that does not match
   one of the allowed values.  We suggest that you pick the nearest
   speed that is allowed, rounding in a "safe" direction.  Safety will
   depend upon the use of the speed information.  If it is being used
   for padding, it is best to round up, since too much padding is better
   than too little.

Reference

   [1]  Solomon, M., and Wimmers, E., "Telnet Terminal Type Option",
        RFC 930, January, 1985

[AAuthor's Address:

   Charles Hedrick
   Rutgers University
   Center for Computer and Information Services
   Hill Center, Busch Campus
   P.O. Box 879
   Piscataway, NJ 08855-0879

   Phone: (201) 932-3088

   Email: HEDRICK@ARAMIS.RUTGERS.EDU

AI ELI5

On this page
PROBLEMOperating systems use terminal speed for timing-dependent display work such as padding, but Telnet connections had no way to carry that information.
MECHANISMThe TERMINAL-SPEED option (code 32) is negotiated with WILL/DO, then the DO side sends a SEND request and the WILL side answers with an IS subcommand holding the transmit and receive speeds as text.
WHY IT MATTERSHosts that exchange terminal speed within Telnet were expected to adopt this standard.

§1Why Terminal Speed Matters

Most operating systems keep track of the speed (bit rate) of directly attached terminals and modems. The information controls timing-dependent display processes, such as the number of padding characters used for delay, and some software tunes its interface for fast or slow terminals. This option provides the same information for Telnet connections.

The RFC is modelled on RFC 930, the Telnet terminal type option, and much of its text is copied from that RFC.

A slow screen needs pauses between letters. To add the right pauses, the computer must know the speed.

§2Commands and Negotiation

The option is named TERMINAL-SPEED with code 32. WILL means the sender is willing to send speed information, and DO means it is willing to receive it. The defaults are WON'T and DON'T, so no speed information is exchanged unless negotiated.

WILL and DO only grant permission for later discussion. The real exchange happens in subnegotiation. Only the sender of the DO may send requests, and only the sender of the WILL may transmit speed information. Speed may not be sent spontaneously, only in response to a request.

First they agree to talk about speed. Then one asks, and only the other one answers. Nobody blurts out the speed unasked.

§3The SEND and IS Subcommands

A request is IAC SB TERMINAL-SPEED SEND IAC SE, where SEND has the code 1. The answer is IAC SB TERMINAL-SPEED IS ... IAC SE, where IS has the code 0.

The speed is an NVT ASCII string holding the decimal transmit and receive speeds separated by a comma, for example 9600,100. No leading zeros or extra characters such as spaces may be included. In the RFC's example, Host1 sends DO, Host2 answers WILL, Host1 sends SEND, and Host2 replies IS "1200,1200".

The answer is written as two numbers with a comma between them, like 1200,1200: how fast it sends and how fast it receives.

TERMINAL-SPEED EXCHANGE (RFC 1079 EXAMPLE)
Host1Host2
  1. IAC DO TERMINAL-SPEED
  2. IAC WILL TERMINAL-SPEED
  3. IAC SB TERMINAL-SPEED SEND IAC SEHost1 may request at any time.
  4. IAC SB TERMINAL-SPEED IS "1200,1200" IAC SE

§4Implementation Suggestions

Many systems allow only certain discrete terminal speeds, so a received speed may not match any allowed value. The RFC suggests picking the nearest allowed speed, rounding in a safe direction. If the speed is used for padding, it is best to round up, since too much padding is better than too little.

If the exact speed is not on your list, pick a nearby one, and choose the slower side so the screen has enough time.

§5References