As per Relevance of the word controlled, we have this rfc below:
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
Network Working Group Jon Postel & Dave
Request for Comments: 726 SRI-ARC UC
NIC: 39237 8 March 1977
Remote Controlled Transmssion and Echoing Telnet
1
1. Command name and code: 2
RCTE 7 2
2. Command meanings: 3
IAC WILL RCTE 3
The sender of this command REQUESTS or AGREES to
the RCTE option, and will send instructions
controlling the other side's terminal printer. 3a
IAC WON'T RCTE 3
The sender of this option REFUSES to send
for controlling the other side's terminal printer. 3b
IAC DO RCTE 3
The sender REQUEST or AGREES to have the other
(sender of WILL RCTE) issue commands which will
his (sender of the DO) output to the terminal printer. 3c
IAC DON'T RCTE 3
The sender of this command REFUSES to allow the
side to control his (sender of DON'T) terminal printer. 3d
IAC SB RCTE [BC1 BC2] [TC1 TC2] IAC SE 3
where: 3e
is one 8-bit byte having the following
(bits are counted from the right): 3e1
[page 1]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
Bit Meaning 3e1
0 0 = Ignore all other bits in this byte
repeat the last that was sent.
a 'continue what you have been doing'.
1 = Perform actions as indicated by other
in this byte. 3e1
1 0 = Print (echo) break
1 = Skip (don't echo) break character 3e1
2 0 = Print (echo) text up to break
1 = Skip (don't echo) text up to break character 3e1
3 0 = Continue using same classes of
characters
1 = The two 8-bit bytes following this
contain flags for the new break classes. 3e1
4 0 = Continue using same classes of
characters
1 = Reset transmit classes according to the
bytes following 1) the break classes bytes
if the break classes are also being reset
or 2) this byte, if the break classes
NOT also being reset. 3e1
Value (decimal) of the byte and its meaning: 3e1
0 = Continue what you have been doing 3e1
Even numbers greater than zero (i.e. numbers with
right most bit off) are in error and should
interpreted as equal to zero. When the is
even number greater than zero, classes bytes TC1 &
TC2 and/or BC1 & BC2 must not be sent. 3e1
1 = Print (echo) up to AND INCLUDING break character 3e1
3 = Print up to break character and SKIP (don't echo
break character 3e1
5 = Skip text (don't echo) up to break character,
PRINT break character 3e1
7 = Skip up to and including break character 3e1
Add one of the previous non-zero values to one of
following values, to get the total decimal value
[page 2]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
the byte (Note that classes may not be reset
also resetting the printing action; so an odd
is guaranteed): 3e1
8 = Set break classes (using the next two bytes [BC
BC2]) 3e1
16 = Set transmission classes (using the next
bytes [TC1 TC2]) 3e1
24 = Set break classes (using the next two bytes [BC
BC2]) and the transmission classes (using the
bytes after that [TC1 TC2]). 3e1
Sub-commands (IAC SB RCTE...) are only sent by
controlling host and, in addition to other functions
functionally replace the Go-Ahead (IAC GA)
feature. RCTE also functionally replaces the Echo (
ECHO) Telnet option. That is the Suppress Go-
option should be in force and the Echo option
not be in force while the RCTE option is in use.
echo mode on terminating use of the RCTE option
be the default state, that is DON'T ECHO, WON'T ECHO. 3e
Classes for break and transmission (the right-most
of the second byte (TC2 or BC2) represents class 1;
left-most bit of the first byte (TC1 or BC1)
the currently undefined class 16: 3e
1: Upper-Case Letter (A-Z) 3e3
2: Lower-case Letters (a-z) 3e3
3: Numbers (0-9) 3e3
4: Format Effectors ( ) 3e3
The sequence counts as one character
processed as the Telnet end of line, and is
single break character when class 4 is set.
sequence counts as one character
is a break character if and only if is
break character (i.e. class 4 is set).
5: Non-format Effector Control Characters
and 3e3
6: . , ; : ? ! 3e3
[page 3]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
7: { [ ( < > ) ] } 3e3
8: ' " / \ % @ $ & # + - * = ^ _ | ~ 3e3
9: 3e3
And Telnet commands (IAC . . .) sent by the user
always to have the effect of a break character.
is, every instance of an IAC is to be treated as
break character, except the sequence IAC IAC. 3e3
The representation to be displayed when printing
called for is the obvious one for the
characters (classes 1, 2, 3, 6, 7, and 8). Space (
9) is represented by a blank space. The
effectors (class 4) by their format effect.
non-format effector controls (class 5) print
(no space). 3e
Initially no break classes or transmission classes
in effect. 3e
Please note that if all the bits are set in a
subcommand argument byte such as TC2 or BC2 then
byte must be preceeded by an flag byte. This
the common convention of doubling the escape
to use its value as data. 3e
Sub-commands (IAC SB RCTE...) are refered to as "
reset commands". 3e
3. Default: 4
WON'T RCTE -- DON'T RCTE 4
Neither host asserts special control over the
host's terminal printer. 4a
4. Motivation for the option: 5
RFC's 1, 5 and 51 discuss Network and process
and smoothness. 5
RFC 357, by John Davidson, introduces the problem
echoing delay that occurs when a remote user accesses
full-duplex host, thru a satellite link. In order to
the many thousands of miles of transit time for
echoed character, while still permitting full
responsiveness and clean terminal output, an echo
[page 4]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
similar to that used by some time-sharing systems
suggested for the entire Network. 5
In effect, the option described in this
involves making a using host carefully regulate
local terminal printer according to
instructions from the remote (serving) host. 5b
An important additional issue is efficient
transmission. Implementation of the Davidson
Scheme will eliminate almost all server-to-user echoing. 5
The option described in this document also
using hosts to buffer a terminal's input to the
host until it forms a useful unit (with "useful unit
delimited by break or transmission characters
described below). Therefore, fewer messages are sent
the user-to-server path. 5c
N.B.: This option is only intended for use
full-duplex hosts. The Go-Ahead Telnet feature
completely adequate for half-duplex server hosts. Also
RCTE should be used in place of the ECHO Telnet option
That is the Suppress Go-Ahead option should be in
and the Echo option should not be in force while the
option is in use. 5
[page 5]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
5. Explicit description of control mechanism: 6
User Terminal Printing Action & Control Procedure 6
Negotiate the use of the RCTE option. Once the
is in force the user Telnet follows the
procedure. 6a
1) Read an item from the network. 6a
If the item is data, then print it and go to 1. 6a2
If the item is a command, then set the classes and
to 2. 6a2
2) If the terminal input buffer is empty, then go to 3,
else go to 4. 6a
3) Wait for an item to appear either from the
or from the network. 6a
If an item appears from the terminal, then go to 4. 6a4
If a data item appears from the network, then
it and go to 3. 6a4
If a command appears from the network, then an
has occured. 6a4
4) Read an item from the terminal input buffer. 6a
If the item is not a break, then print/skip it and
to 2. 6a5
If the item is a break, then print/skip it and go
1. 6a5
Note: Output from the server host may occur at
time, such "spontaneous output" is printed in step 3. 6a
[page 6]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
Explanation: 6
Both Hosts agree to use the RCTE option. After that
the using host (IAC DO RCTE) merely acts upon
controlling (serving) host's commands and does
issue any RCTE commands unless and until it (
host) decides to stop allowing use of the option (
sending IAC DON'T RCTE). 6b
1) The using host is synchronized with the server
initially and when ever it returns to step 1
terminal echo printing until it receives a command
the server. 6b
The server may send either output to the
printer or a command, and usually sends a both. 6b
The server may send output to the terminal
either in response to user input or spontaneously.
the former case, the output is processed in step 1.
the latter case, the output is processed in step 3. 6b
Server sends an RCTE command. The command may
break and transmission classes, action to be
on break characters, and action to be performed
text. Each of these independent functions is
by separate bits in the byte. 6b
A transmission character is one which RECOMMENDS
the using host transmit all text accumulated up
and including its occurrence. (For
efficiency, using hosts are DISCOURAGED (but
prohibited) from sending before the occurrence of
transmission character, as defined at the moment
character is typed). 6b5
If the transmission classes bit (bit 4) is on,
two bytes following the two break classes bytes (
immediately following the byte, if the
classes bit is not on) will indicate what
are to be enabled
If the bit is OFF, the transmission classes
unchanged. When the RCTE option is first initiated
NO CLASSES are in effect. That is, no
will be considered a transmission character. (As
both TC1 and TC2 are zero.)
A break character REQUIRES that the using
[page 7]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
transmit all text accumulated up to and including
occurrence and also causes the using host to stop
print/discard action upon the user's input text
until directed to do otherwise by another IAC SB
IAC SE command from the serving host.
characters therefore define printing units. "
character" as used in this document does NOT
Telnet Break character. 6b5
If the break classes bit (bit 3) is on, the
bytes following will indicate what
are to be enabled. There are currently nine (9)
classes defined, with room for expansion
If the bit is OFF, the break classes
unchanged. When the RCTE option is initiated,
CLASSES are to be in effect. That is,
transmission will take place in the user to
direction until the first break reset command
received by the user from the server
The list of character classes, used to define
and transmission classes are listed at the end
this document, in the Tables Section. 6b5
Because break characters are special,
print/discard action that should be performed
them is not always the same as should be
upon the rest of the input text. 6b5
For example, while typing a filename to TENEX,
want the text of the filename to be
(echoed); but I do not want the (if I
the name completion feature) to be printed
If bit 1 is ON the break character is NOT to
printed
A separate bit (bit 2) signals whether or not
text itself should be printed (echoed) to
terminal. If bit 2 = 0, then the text IS to
printed. 6b5
Yet another bit (bit 0 - right-most bit)
whether or not any of the other bits of the
should be checked. If this bit is OFF, then
command should be interpreted to mean "
whatever echoing strategy you have been following
using the same break and transmission classes." 6b5
[page 8]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
2) The user Telnet now checks the terminal
buffer, if it contains data it is processed in step 4,
otherwise the user Telnet waits in step 3 for
developments. 6b
3) The user Telnet waits until either the human
enters some data in which case Telnet proceeeds to
4, or an item is received from the network. If the
from the network is data it is spontaneous output
is printed, Telnet then continues to wait. If the
from the network is a command then an error
occured. In this case the user Telnet may attempt
resynchronize the use of RCTE as indicated below. 6b
4) Items from the terminal are processed with
controlled by the settings of the latest break
command. When a break character is processed, the
of control is complete and action re-commences at
1. 6b
Input from the terminal is (hopefully) buffered
units ending with a transmission or break character
and echoing of input text is suspended after
occurrence of a break character and until receipt of
break reset command from the serving host. The
recent break reset command determines the
actions. 6b
In summary, what is required is that for every
character sent in the user to server direction there
a break reset command sent in the server to
direction. The user host initially has no knowledge
which characters are break characters and so starts
a state that assumes that there are no break
and also that no echoing is to be provided. The
host is expected to send a break reset command
establish the break classes and the echoing mode
it receives any data from the user. 6b10
Synchronization and Resynchronization: 6
The serving and using hosts must carefully
break reset commands with the transmission of
characters. Except at the beginning of an interaction
the serving host may only send a break reset command
response to the Using host's having sent a
character as defined at that time. This
establish a one-to-one correspondence between them. (
value of zero, in this context, is interpreted
[page 9]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
a break classes reset to the same class(es) as before.)
The break reset command may be preceded by
output. 6c
The re-synchronization of the break characters and
break reset commands is done via the exchange of
Telnet signal Abort Output (AO) in the server to
direction and the SYNCH in the user to
direction. 6c
Suppose the server wants to resynchronize the
characters and the break reset commands. 6c
a. The server should be sure all output to
terminal has been printed by using, for example,
Timing Mark Option. 6c3
b. The server sends the AO signal. 6c3
c. The user receives the AO signal. The user
all user to server data wheather it has been
or not. The user sends a SYNCH to the server. [
SYNCH consists of the Telnet Data Mark (DM) and
host-to-host interrupt (INS).] The user now
the initial state at step 1. 6c3
d. The server receives the SYNCH and flushes
data preceeding the DM (as always). The server
sends a break reset command. (Actually the
reset command could be sent at any time following
AO.) 6c3
Suppose the user wants to resynchronize the
characters and the break reset commands. 6c
a. The user should discard all user to server
wheather it has been echoed or not. 6c4
b. The user sends the AO signal. The user now
the algorithm at step 1. 6c4
c. The server receives the AO signal. The
discards all data buffered but not yet sent to
user. The server sends a SYNCH to the user.
server sends a break reset command to the user. 6c4
[page 10]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
Notes and Comments: 6
Even-numbered commands, greater than zero, are
error, since they will have the low-order bit off.
command should be interpreted as equal to zero,
means that any classes reset bytes ([TC1 TC2] [BC
BC2]) will be in error. (The IAC SE, at the end of
command, eliminates any parsing problems due to
error.) 6d
Serving hosts will generally instruct using hosts
to echo break characters, even though it might
alright to echo most break characters. For example
is usually a safe character to echo but
not. TENEX Exec is willing to accept either,
filename specification. Therefore, the using host
be instructed not to echo any break characters. 6d
This is generally a tolerable problem, since
serving host has to send an RCTE command at
point, anyhow. Adding an echo for the break
to the message will not cause any extra
traffic. 6d2
The RCTE Option entails a rather large overhead. In
true character-at-a-time situation, this overhead
not justified. But on the average, it should result
significant savings, both in network traffic and
wake-ups. 6d
Buffering Problems and Transmission vs.
Constraints: 6d
There are NO mandatory transmission constraints.
using host is allowed to send a character a time
though this would be a waste of RCTE.
transmission classes commands are GUIDELINES,
deviating from them, as when the user's buffer
full, is allowed. 6d4
Additionally, the using host may send a break
character, without knowing that it is one (as
type-ahead). 6d4
If the user implementation is clever it may
the user entered data to the server before it
actually needed. This type ahead data may
break characters
[page 11]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
Assume that only space is a break character (
is the last break reset command specified print
to and including the break characters and set
break classes to class 9). Suppose the user
typed "abcdefghi". The user
RCTE could send it all to the server, but it
print only "abc", and would have to
"defghi" at least until a break
command was received from the server. That
reset command could change the break
requiring rescanning the buffered string
For example suppose the break reset command set
break characters to class 5 and the action to
up to but not including the break character.
user RCTE could then print "def" and discard
, but whould have to continue to buffer
"ghi".
The problem with buffering occurs when printing
the user's terminal must be suspended, after the
has typed a currently valid break character and
a break reset command is received from the
host. During this time, the user may be
merrily along. The text being typed may be SENT,
may not yet be PRINTED. 6d4
The more common problem of filling the
buffer, while awaiting a host to host allocate
the serving host, may also occur, but this problem
well known to implementors and in no way special
RCTE. 6d4
In any case, when the buffer does fill and
text typed by the user will be lost, the user
be notified (perhaps by ringing the terminal bell). 6d4
Text should be buffered by the using host until
user types a character which belongs to
transmission class in force at the moment the
is typed. 6d
Transmission class reset commands may be sent by
serving host at any time. If they are frequently
separate from break class reset commands, it
probably be better to exit from RCTE and enter
character at a time transmission. 6d
It is not immediately clear what the using host
[page 12]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
do with currently buffered text, when a
classes reset command is received. The buffering
according to the previous transmission classes scheme. 6d
The using host clearly should not simply wait until
transmission character (according to the new scheme
is typed. 6d7
Either the buffered text should be rescanned,
the new scheme; 6d7
Or the buffered text should simply be sent as
group. This is the simpler approach, and
quite adequate. 6d7
It is possible to define NO BREAK CHARACTERS
Telnet commands (IAC ...). This seems undesirable
should not be done. 6d
If this situation were to occur the using host
send a Telnet command to allow the server to
when he may reset the break classes, but
mechanism is awkward and this case should be avoided. 6d8
6. Sample Interaction: 7
"S:" is sent from serving (WILL RCTE) host to using host
"U:" is sent from using (DO RCTE) host to serving host
"T:" is entered by the terminal user
"P:" is printed on the terminal
Text surrounded by square brackets ([]) is commentary
Text surrounded by angle brackets (<>) is to be taken
a single unit. E.g., carriage return is , and
decimal value 27 is represented <27>. 7
The following interaction shows a logon to a Tenex
initiation of the DED editor, insertion of some text
the return to the Exec level. 7
An attempt has been made to give some flavor of
asynchrony of network I/O and the user's
input. Many other possible combinations, using the
set of actions listed below, could be devised.
actual order of events will depend upon network
hosts' load and the user's typing speed. 7b
We assume that the user's Telnet is also in an "
linefeed" mode. That is, whenever the user types
[page 13]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
return the user Telnet sends both carriage
and linefeed (the Telnet end of line signal).
When space character occurs at the end of a line in
example description it is shown explicitly by
avoid confusion. Other uses of the space character
not so marked to avoid destroying the readability of
example. 7
A Telnet connection has already been opened, but
TENEX prompt has not yet been issued. The hosts
discuss using the RCTE option: 7
S: 7d
U: 7d
S: TENEX 1.31.18, TENEX EXEC 1.50.2@
<11><1><24> 7d
[Print the herald and echo input text up to a
character, but do not echo the break character
Classes 4 (Format Effectors), 5 (Non-format
Controls and ), and 9 () act as
characters.] 7d3
P: TENEX 1.31.18, TENEX EXEC 1.50.2@ 7d
T: LOGIN ARPA 7d
P: LOGIN 7d
U: LOGIN 7d
U: ARPA 7d
S: <0>SE> 7d
P: ARPA 7d10
S: (PASSWORD): <7> 7d11
P: (PASSWORD): 7d12
T: WASHINGTON 1000 7d13
[The password "WASHINGTON" is not echoed. Printing
"1000" is withheld] 7d13
U: WASHINGTON 7d14
[page 14]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
U: 1000 7d15
S: <3> 7d16
S: JOB 17 ON TTY41 7-JUN-73 14:13@
<0> 7d17
P: 1000 7d18
[Printing is slow at this point; so the
number is not printed as soon as the server's
for it is received.] 7d18
P: JOB 17 ON TTY41 7-JUN-73 14:13@ 7d19
T: DED 7d20
P: DED 7d21
U: DED 7d22
S: .SAV;1<0> 7d23
P: .SAV;1 7d24
U: 7d25
S: DED 3/14/73 DRO,KRK:
<15><1><255> 7d26
[The program is started and the DED prompt ":"
sent. At the command level, DED responds to
character. The server sets the break classes to
classes.] 7d26
P: DED 3/14/73 DRO,KRK: 7d27
T: IThis is a test line.This is another
line.<^Z>Q 7d28
["I" means Insert Text. The text follows,
by a Control-Z. The "Q" instructs DED to Quit.] 7d28
U: I 7d29
U: This is a test line. 7d30
S: I*<11><0><24> 7d31
[page 15]
NWG/RFC# 726 JBP DHC 8-MAR-77 08:29 39237
Remote Controlled Transmission & Echoing Telnet
[DED prompts the user, during text input, with
asterisk at the beginning of every line. The
sets the break classes to classes 4 and 5, the
effectors and the non-format effector controls.] 7d31
P: I*This is a test line. 7d32
S: *<0> 7d33
P: *This is another test line. 7d34
U: This is another test line.<^Z> 7d35
U: Q 7d36
[Note that the "Q" will not immediately be printed
the terminal, since it must wait for authorization.] 7d36
S: ^Z:<15><1><255> 7d37
[The returned "^Z" is two characters, not the
Control-Z or .] 7d37
S: Q@<11><1><24> 7d38
P: Q@ 7d39
And the user is returned to the Exec level. 7d40
if you see any problems within the linking, don't worry be happy,
this is version 0.1 of the Relevance System and you gotta expect some crappy subroutines sometimes,
just be content we did not write this in Java, which would have made this "bigger and better" HAHAHHA.
RFC documents can be found at I.E.T.F.
Relevance System Copyright © 2002 Spectrum WorldResearch
other technical nosh by ServerMasters Corporation
collaboration of BobX