Telnet SGA: Telnet Suppress Go Ahead Option
A Telnet option that turns off the half-duplex 'over' signal for connections that can talk both ways at once.
Postel, J. and J. Reynolds, "Telnet Suppress Go Ahead Option", STD 29, RFC 858, DOI 10.17487/RFC0858, May 1983, <https://www.rfc-editor.org/info/rfc858>.
@misc{rfc858,
series = {Request for Comments},
number = 858,
howpublished = {RFC 858},
publisher = {RFC Editor},
doi = {10.17487/RFC0858},
url = {https://www.rfc-editor.org/info/rfc858},
author = {J. Postel and J. Reynolds},
title = {{Telnet Suppress Go Ahead Option}},
pagetotal = 2,
year = 1983,
month = may,
} RFC text
Contents
Network Working Group J. Postel
Request for Comments: 858 J. Reynolds
ISI
Obsoletes: NIC 15392 May 1983
TELNET SUPPRESS GO AHEAD 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
SUPPRESS-GO-AHEAD 3
2. Command Meanings
IAC WILL SUPPRESS-GO-AHEAD
The sender of this command requests permission to begin
suppressing transmission of the TELNET GO AHEAD (GA) character
when transmitting data characters, or the sender of this command
confirms it will now begin suppressing transmission of GAs with
transmitted data characters.
IAC WON'T SUPPRESS-GO-AHEAD
The sender of this command demands to begin transmitting, or to
continue transmitting, the GA character when transmitting data
characters.
IAC DO SUPPRESS-GO-AHEAD
The sender of this commannd requests that the sender of data start
suppressing GA when transmitting data, or the sender of this
command confirms that the sender of data is expected to suppress
transmission of GAs.
IAC DON'T SUPPRESSS-GO-AHEAD
The sender of this command demands that the receiver of the
command start or continue transmitting GAs when transmitting data.
3. Default
WON'T SUPPRESS-GO-AHEAD
DON'T SUPPRESS-GO-AHEAD
Go aheads are transmitted.
4. Motivation for the Option
While the NVT nominally follows a half duplex protocol complete with
a GO AHEAD signal, there is no reason why a full duplex connection
between a full duplex terminal and a host optimized to handle full
duplex terminals should be burdened with the GO AHEAD signal.
Therefore, it is desirable to have a TELNET option with which parties
involved can agree that one or the other or both should suppress
transmission of GO AHEADS.
5. Description of the Option
When the SUPPRESS-GO-AHEAD option is in effect on the connection
between a sender of data and the receiver of the data, the sender
need not transmit GAs.
It seems probable that the parties to the TELNET connection will
suppress GO AHEAD in both directions of the TELNET connection if GO
AHEAD is suppressed at all; but, nonetheless, it must be suppressed
in both directions independently.
With the SUPPRESS-GO-AHEAD option in effect, the IAC GA command
should be treated as a NOP if received, although IAC GA should not
normally be sent in this mode.
6. Implementation Considerations
As the SUPRESS-GO-AHEAD option is sort of the opposite of a line at a
time mode, the sender of data which is suppressing GO AHEADs should
attempt to actually transmit characters as soon as possible (i.e.,
with minimal buffering) consistent with any other agreements which
are in effect.
In many TELNET implementations it will be desirable to couple the
SUPPRESS-GO-AHEAD option to the echo option so that when the echo
option is in effect, the SUPPRESS-GO-AHEAD option is in effect
simultaneously: both of these options will normally have to be in
effect simultaneously to effect what is commonly understood to be
character at a time echoing by the remote computer.
AI ELI5
On this page
§4Why Suppress Go Ahead
The Network Virtual Terminal (NVT) nominally follows a half-duplex protocol complete with a GO AHEAD (GA) signal. There is no reason to burden a full-duplex connection, between a full-duplex terminal and a host built for full-duplex terminals, with that signal.
So the RFC defines a Telnet option, SUPPRESS-GO-AHEAD (code 3), with which the parties agree that one or both should suppress sending GAs.
The old way made each side say 'over' when finished. If both can talk at once, that is a waste, so this lets them skip it.
§2The Four Commands
The option uses the standard negotiation commands:
IAC WILL SUPPRESS-GO-AHEAD: the sender requests permission to begin suppressing GAs, or confirms it now will.IAC WON'T SUPPRESS-GO-AHEAD: the sender demands to begin, or continue, transmitting GA with data.IAC DO SUPPRESS-GO-AHEAD: the sender requests that the data sender start suppressing GA, or confirms that it is expected to.IAC DON'T SUPPRESS-GO-AHEAD: the sender demands that the receiver start or continue transmitting GAs.
The default is WON'T and DON'T, so go aheads are transmitted.
Each side can ask 'may we skip saying over?' or insist 'no, keep saying it'. Unless they agree, the 'over' stays.
§5What Changes on the Wire
When the option is in effect between a sender of data and its receiver, the sender need not transmit GAs. The parties will probably suppress GO AHEAD in both directions if they do at all, but it must be suppressed in each direction independently.
With the option in effect, a received IAC GA should be treated as a NOP (no operation), although IAC GA should not normally be sent in this mode.
Once 'over' is switched off, if someone says it anyway, the listener just ignores it.
§6Implementation Advice
Because the option is something like the opposite of a line-at-a-time mode, a sender that is suppressing GO AHEADs should try to transmit characters as soon as possible, with minimal buffering, consistent with any other agreements in effect.
Many Telnet implementations will want to couple SUPPRESS-GO-AHEAD to the ECHO option, so that when echo is in effect, suppress-go-ahead is too. Both normally have to be in effect to get what is commonly understood as character-at-a-time echoing by the remote computer.
If you are not waiting to say 'over', send each letter right away instead of saving them up. Pairing it with the echo setting makes typing feel instant.