rfc-749

Telnet SUPDUP-Output option

B. Greenberg
date1978-09 streamLegacy statusPROPOSED STANDARD pages4 canonicalhttps://www.rfc-editor.org/rfc/rfc749 doi10.17487/RFC0749

Extracted elements (20)

design-rationale §4

SUPDUP-OUTPUT was created to let occasional display-oriented programs on non-display-oriented servers use SUPDUP's standardized virtual display support without requiring the server to assume total screen management for the entire connection — the key limitation of both RFC 734 and RFC 736.

design-rationale §5

The SCx/SCy cursor position fields in the type-2 block exist to support ITS operating system hosts, which pass TDCODEs directly into the local output system without the user TELNET program interpreting them. SCx/SCy lets the server assert the post-execution 'main program level' screen position without requiring TDCODE interpretation on the user side.

interoperability-note §5

A TELNET connection with SUPDUP-OUTPUT in effect but with no subnegotiation blocks transmitted is indistinguishable from a normal TELNET connection; IAC IP and all other TELNET commands remain valid throughout.

interoperability-note §4

SUPDUP-OUTPUT is incompatible with the full SUPDUP protocol (RFC 734) and the TELNET SUPDUP option (RFC 736), both of which require all post-negotiation communication to follow the RFC 734 protocol exclusively, giving the server total screen management responsibility.

interoperability-note §5

SUPDUP-OUTPUT makes no statement about how input is handled; NVT input is used by default. The user-to-server screen management commands defined in RFC 734 are NOT implicitly activated by IAC WILL SUPDUP-OUTPUT.

normative-requirement §5 SHOULD

Because IAC WON'T SUPDUP-OUTPUT is highly optional, the user TELNET process should be prepared to send the terminal parameter subnegotiation block each time IAC WILL SUPDUP-OUTPUT is received, even if it believes the option is already in effect.

normative-requirement §5 MUST

If the user TELNET process agrees to support SUPDUP-OUTPUT, it must immediately follow IAC DO SUPDUP-OUTPUT with a terminal parameter subnegotiation block (type 1). This block encodes the RFC 734 terminal parameters as six-bit bytes, one per eight-bit TELNET data byte.

normative-requirement §5 SHOULD

If the user TELNET process receives IAC WON'T SUPDUP-OUTPUT, it should respond with IAC DON'T SUPDUP-OUTPUT. Receipt of WON'T should only trigger a diagnostic if SUPDUP-OUTPUT subnegotiation blocks are subsequently received.

normative-requirement §5 MUST NOT

N in a type-2 subnegotiation block may be zero but may not be greater than 254 (decimal), limiting the number of TDCODE/character bytes per block.

normative-requirement §5 MUST

No byte in a SUPDUP-OUTPUT subnegotiation block may have the value 255 (decimal), since 255 is the IAC escape byte in TELNET and would be misinterpreted.

normative-requirement §5 MUST

No multi-byte TDCODE sequence (e.g., %TDMOV, %TDILP) may be split across SUPDUP-OUTPUT subnegotiation blocks; each block must contain only complete TDCODE sequences.

normative-requirement §3 MUST NOT

The default state is WON'T SUPDUP-OUTPUT / DON'T SUPDUP-OUTPUT, meaning SUPDUP-OUTPUT format messages may not be transmitted unless negotiated.

normative-requirement §5 MUST

The SUPDUP-OUTPUT option may only be initiated by the server TELNET process. The server sends IAC WILL SUPDUP-OUTPUT; the user TELNET process must then accept (IAC DO) or refuse (IAC DON'T).

normative-requirement §5 MUST NOT

The %TDORS (output reset) code may not be sent in a SUPDUP-OUTPUT transmission.

normative-requirement §5 MUST

The user TELNET process must manage the local cursor position consistently with respect to both standard TELNET NVT output commands and SUPDUP-OUTPUT transmissions, treating them as an integrated stream.

protocol-element §2

Four negotiation commands are defined: IAC WILL SUPDUP-OUTPUT (server requests permission to send SUPDUP-OUTPUT messages), IAC WON'T SUPDUP-OUTPUT (server will no longer send such messages), IAC DO SUPDUP-OUTPUT (user grants permission), IAC DON'T SUPDUP-OUTPUT (user demands cessation).

protocol-element §1

The SUPDUP-OUTPUT Telnet option is assigned command code 22. It allows a server TELNET process to send SUPDUP display control messages over a standard TELNET connection without assuming full screen management responsibility.

protocol-element §2

Two subnegotiation block types are defined: type 1 (IAC SB SUPDUP-OUTPUT 1 <terminal-parameters> IAC SE), sent by the user TELNET process to describe terminal capabilities; and type 2 (IAC SB SUPDUP-OUTPUT 2 n TD1..TDn SCx SCy IAC SE), sent by the server to transmit explicit screen control commands.

wire-format §5

Screen control subnegotiation (type 2): IAC SB SUPDUP-OUTPUT 2 N TD1 TD2 ... TDn SCx SCy IAC SE. N is a byte giving the count of TDCODE/character bytes (0 ≤ N ≤ 254); TD bytes are RFC 734 %TDCODEs and printing characters; SCx and SCy are the anticipated post-execution horizontal and vertical cursor coordinates.

wire-format §5

Terminal parameter subnegotiation (type 1): IAC SB SUPDUP-OUTPUT 1 byte1 byte2 ... byteN IAC SE. The terminal parameters from RFC 734 are encoded as six-bit values in eight-bit TELNET bytes; the first six bytes specify the count of 36-bit words to follow. May optionally include RFC 747 line speed and graphics parameters.