Telnet Echo Option
How the two ends of a Telnet connection agree on who repeats typed characters back to the screen.
Postel, J. and J. Reynolds, "Telnet Echo Option", STD 28, RFC 857, DOI 10.17487/RFC0857, May 1983, <https://www.rfc-editor.org/info/rfc857>.
@misc{rfc857,
series = {Request for Comments},
number = 857,
howpublished = {RFC 857},
publisher = {RFC Editor},
doi = {10.17487/RFC0857},
url = {https://www.rfc-editor.org/info/rfc857},
author = {J. Postel and J. Reynolds},
title = {{Telnet Echo Option}},
pagetotal = 5,
year = 1983,
month = may,
} RFC text
Contents
Network Working Group J. Postel
Request for Comments: 857 J. Reynolds
ISI
Obsoletes: NIC 15390 May 1983
TELNET ECHO OPTION
This RFC specifies a standard for the ARPA Internet community. Hosts on
the ARPA Internet are expected to adopt and implement this standard.
1. Command Name and Code
ECHO 1
2. Command Meanings
IAC WILL ECHO
The sender of this command REQUESTS to begin, or confirms that it
will now begin, echoing data characters it receives over the
TELNET connection back to the sender of the data characters.
IAC WON'T ECHO
The sender of this command DEMANDS to stop, or refuses to start,
echoing the data characters it receives over the TELNET connection
back to the sender of the data characters.
IAC DO ECHO
The sender of this command REQUESTS that the receiver of this
command begin echoing, or confirms that the receiver of this
command is expected to echo, data characters it receives over the
TELNET connection back to the sender.
IAC DON'T ECHO
The sender of this command DEMANDS the receiver of this command
stop, or not start, echoing data characters it receives over the
TELNET connection.
3. Default
WON'T ECHO
DON'T ECHO
No echoing is done over the TELNET connection.
4. Motivation for the Option
The NVT has a printer and a keyboard which are nominally
interconnected so that "echoes" need never traverse the network; that
is to say, the NVT nominally operates in a mode where characters
typed on the keyboard are (by some means) locally turned around and
printed on the printer. In highly interactive situations it is
appropriate for the remote process (command language interpreter,
etc.) to which the characters are being sent to control the way they
are echoed on the printer. In order to support such interactive
situations, it is necessary that there be a TELNET option to allow
the parties at the two ends of the TELNET connection to agree that
characters typed on an NVT keyboard are to be echoed by the party at
the other end of the TELNET connection.
5. Description of the Option
When the echoing option is in effect, the party at the end performing
the echoing is expected to transmit (echo) data characters it
receives back to the sender of the data characters. The option does
not require that the characters echoed be exactly the characters
received (for example, a number of systems echo the ASCII ESC
character with something other than the ESC character). When the
echoing option is not in effect, the receiver of data characters
should not echo them back to the sender; this, of course, does not
prevent the receiver from responding to data characters received.
The normal TELNET connection is two way. That is, data flows in each
direction on the connection independently; and neither, either, or
both directions may be operating simultaneously in echo mode. There
are five reasonable modes of operation for echoing on a connection
pair:
<----------------
Process 1 Process 2
---------------->
Neither end echoes
<----------------
\
Process 1 / Process 2
---------------->
One end echoes for itself
<----------------
\
Process 1 / Process 2
---------------->
One end echoes for the other
<----------------
\ /
Process 1 / \ Process 2
---------------->
Both ends echo for themselves
<----------------
\ /
Process 1 / \ Process 2
---------------->
One end echoes for both ends
This option provides the capability to decide on whether or not
either end will echo for the other. It does not, however, provide
any control over whether or not an end echoes for itself; this
decision must be left to the sole discretion of the systems at each
end (although they may use information regarding the state of
"remote" echoing negotiations in making this decision).
It should be noted that if BOTH hosts enter the mode of echoing
characters transmitted by the other host, then any character
transmitted in either direction will be "echoed" back and forth
indefinitely. Therefore, care should be taken in each implementation
that if one site is echoing, echoing is not permitted to be turned on
at the other.
As discussed in the TELNET Protocol Specification, both parties to a
full-duplex TELNET connection initially assume each direction of the
connection is being operated in the default mode which is non-echo
(non-echo is not using this option, and the same as DON'T ECHO, WON'T
ECHO).
If either party desires himself to echo characters to the other party
or for the other party to echo characters to him, that party gives
the appropriate command (WILL ECHO or DO ECHO) and waits (and hopes)
for acceptance of the option. If the request to operate the
connection in echo mode is refused, then the connection continues to
operate in non-echo mode. If the request to operate the connection
in echo mode is accepted, the connection is operated in echo mode.
After a connection has been changed to echo mode, either party may
demand that it revert to non-echo mode by giving the appropriate
DON'T ECHO or WON'T ECHO command (which the other party must confirm
thereby allowing the connection to operate in non-echo mode). Just
as each direction of the TELNET connection may be put in remote
echoing mode independently, each direction of the TELNET connection
must be removed from remote echoing mode separately.
Implementations of the echo option, as implementations of all other
TELNET options, must follow the loop preventing rules given in the
General Considerations section of the TELNET Protocol Specification.
Also, so that switches between echo and non-echo mode can be made
with minimal confusion (momentary double echoing, etc.), switches in
mode of operation should be made at times precisely coordinated with
the reception and transmission of echo requests and demands. For
instance, if one party responds to a DO ECHO with a WILL ECHO, all
data characters received after the DO ECHO should be echoed and the
WILL ECHO should immediately precede the first of the echoed
characters.
The echoing option alone will normally not be sufficient to effect
what is commonly understood to be remote computer echoing of
characters typed on a terminal keyboard--the SUPPRESS-GO AHEAD option
will normally have to be invoked in conjunction with the ECHO option
to effect character-at-a-time remote echoing.
6. A Sample Implementation of the Option
The following is a description of a possible implementation for a
simple user system called "UHOST".
A possible implementation could be that for each user terminal, the
UHOST would keep three state bits: whether the terminal echoes for
itself (UHOST ECHO always) or not (ECHO mode possible), whether the
(human) user prefers to operate in ECHO mode or in non-ECHO mode, and
whether the connection from this terminal to the server is in ECHO or
non-ECHO mode. We will call these three bits P(hysical), D(esired),
and A(ctual).
When a terminal dials up the UHOST the P-bit is set appropriately,
the D-bit is set equal to it, and the A-bit is set to non-ECHO. The
P-bit and D-bit may be manually reset by direct commands if the user
so desires. For example, a user in Hawaii on a "full-duplex"
terminal, would choose not to operate in ECHO mode, regardless of the
preference of a mainland server. He should direct the UHOST to
change his D-bit from ECHO to non-ECHO.
When a connection is opened from the UHOST terminal to a server, the
UHOST would send the server a DO ECHO command if the MIN (with
non-ECHO less than ECHO) of the P- and D-bits is different from the
A-bit. If a WON'T ECHO or WILL ECHO arrives from the server, the
UHOST will set the A-bit to the MIN of the received request, the
P-bit, and the D-bit. If this changes the state of the A-bit, the
UHOST will send off the appropriate acknowledgment; if it does not,
then the UHOST will send off the appropriate refusal if not changing
meant that it had to deny the request (i.e., the MIN of the P-and
D-bits was less than the received A-request).
If while a connection is open, the UHOST terminal user changes either
the P-bit or D-bit, the UHOST will repeat the above tests and send
off a DO ECHO or DON'T ECHO, if necessary. When the connection is
closed, the UHOST would reset the A-bit to indicate UHOST echoing.
While the UHOST's implementation would not involve DO ECHO or DON'T
ECHO commands being sent to the server except when the connection is
opened or the user explicitly changes his echoing mode, bigger hosts
might invoke such mode switches quite frequently. For instance,
while a line-at-a-time system were running, the server might attempt
to put the user in local echo mode by sending the WON'T ECHO command
to the user; but while a character-at-a-time system were running, the
server might attempt to invoke remote echoing for the user by sending
the WILL ECHO command to the user. Furthermore, while the UHOST will
never send a WILL ECHO command and will only send a WON'T ECHO to
refuse a server sent DO ECHO command, a server host might often send
the WILL and WON'T ECHO commands.
AI ELI5
On this page
§4Why an Echo Option Exists
The Network Virtual Terminal (NVT) has a keyboard and a printer that are nominally wired together, so characters typed on the keyboard are turned around locally and printed. Echoes never need to cross the network.
In highly interactive situations the remote process, such as a command language interpreter, should control how characters are echoed. The ECHO option lets the two ends of the Telnet connection agree that characters typed on an NVT keyboard are echoed by the party at the other end.
Normally your own screen shows what you type. Sometimes the far computer wants to be the one that shows it, so they need a way to agree.
§2The Four Commands
The option has code 1 and uses the four standard negotiation commands:
IAC WILL ECHO: the sender requests to begin, or confirms it will begin, echoing the data characters it receives.IAC WON'T ECHO: the sender demands to stop, or refuses to start, echoing.IAC DO ECHO: the sender requests that the receiver begin echoing, or confirms the receiver is expected to echo.IAC DON'T ECHO: the sender demands that the receiver stop, or not start, echoing.
The default is WON'T ECHO and DON'T ECHO: no echoing is done over the connection.
Each side can say 'I will repeat your letters' or 'please repeat mine', and the other side can say yes or no. If nobody asks, nobody repeats.
§5How Echo Mode Works
When echo is in effect, the party doing the echoing is expected to send back the data characters it receives. They need not be exactly the same characters; the RFC notes that a number of systems echo the ASCII ESC character with something other than ESC. When echo is not in effect, the receiver should not echo, though it may still respond to what it receives.
Each direction of a Telnet connection is independent, so neither, either or both directions may be in echo mode. The RFC lists five reasonable modes: neither end echoes, one end echoes for itself, one end echoes for the other, both ends echo for themselves, and one end echoes for both ends. The option only decides whether either end echoes for the other; whether an end echoes for itself is left to the systems at each end.
If both hosts echo the characters sent by the other, any character is echoed back and forth indefinitely, so an implementation must not allow echoing to be turned on at one site while the other is echoing. Either party may later demand a return to non-echo mode, and each direction must be removed from echo mode separately. Mode switches should be timed precisely: if a party answers DO ECHO with WILL ECHO, the WILL ECHO should immediately precede the first echoed character.
If two parrots each repeat what the other says, they never stop. So only one side may repeat, and the computers must be careful not to set up a loop.
§6Using It With Suppress Go Ahead
The ECHO option alone will normally not give what people think of as remote echoing of typed characters. The SUPPRESS-GO-AHEAD option will normally have to be used together with it to get character-at-a-time remote echoing.
The RFC also sketches a simple user system, called UHOST, that keeps three state bits per terminal: Physical (does the terminal echo for itself), Desired (the user's preference) and Actual (the state of the connection). It sends DO ECHO when the minimum of the first two differs from the third. The RFC adds that a large server may switch modes often, for example sending WON'T ECHO during line-at-a-time work and WILL ECHO during character-at-a-time work.
To make every letter show up the moment you type it, you need two settings turned on together: this one and the 'no taking turns' one.