RFC 859
Telnet Status Option
RFC 859: TELNET STATUS OPTION π
okay bestie, this is RFC 859 π J. Postel and J. Reynolds wrote it at ISI in May 1983, and it obsoletes RFC 651 (NIC 31154) πΈ It's a standard for the ARPA Internet community, so hosts on the ARPA Internet are expected to adopt and implement it β¨
1. Command Name and Code β¨
the command is called STATUS and its code is 5 π
STATUS 5
2. Command Meanings π¦
this option works separately for each direction of data flow, so each side gets its own say π«Ά
2.1. Refusing the Discussion π
IAC DON'T STATUS: the sender refuses to carry on any further discussion of the current status of options. nope, not doing it πIAC WON'T STATUS: same energy! the sender refuses to carry on any further discussion of the current status of options π ββοΈ
2.2. Asking and Telling π
IAC SB STATUS SEND IAC SE: the sender asks the receiver to send over its own perception of the current status of Telnet options π the code forSENDis1, see below β¨IAC SB STATUS IS ... IAC SE: the sender shares its own perception of the current status of Telnet options π the code forISis0, see below β¨
3. Default π
by default, the current status of options is not discussed. DON'T STATUS and WON'T STATUS both mean that nothing gets talked about π
4. Motivation for the Option π§
this option is what lets a user or process check the current status of TELNET options (like echoing) the way the person or process on the other end sees them π just renegotiating options could get you stuck in the nonterminating request loop problem from the General Consideration section of the TELNET Specification, which is literally a nightmare π so this option fits neatly into the normal structure of TELNET options by putting the actual status transfer inside the SB command π₯
5. Description of the Option π
okay this part is the main event π WILL and DO are only used to get and grant permission for future discussion. the real status exchange happens inside the option subcommands (IAC SB STATUS...) β¨
once two hosts have exchanged a WILL and a DO, the sender of the WILL STATUS is free to send status information, either spontaneously or when the sender of the DO asks for it π at worst, that means the info gets sent twice, which is fine tbh πΈ only the sender of the DO may send requests (IAC SB STATUS SEND IAC SE), and only the sender of the WILL may send the actual status information (inside an IAC SB STATUS IS ... IAC SE command) π¦
IS has the subcommands WILL, DO and SB π they're used EXACTLY the same way they're used during the actual negotiation of TELNET options, with one twist: SB gets ended with SE instead of IAC SE β if you want to send SE as a regular data byte, you double it (SE SE) π options that aren't explicitly described are assumed to be in their default states π«Ά and a single IAC SB STATUS IS ... IAC SE describes the condition of ALL options at once, which is so efficient π₯
here's an example of how it goes π§
Host1: IAC DO STATUS
Host2: IAC WILL STATUS
Host2 is now free to send status information at any time, and Host1's solicitations are NOT necessary π this shouldn't cause any dangerous race conditions. at worst, two ISs will be sent π
Host1 (perhaps): IAC SB STATUS SEND IAC SE
and then Host2 responds with the following stream. it's broken into multiple lines only for readability, so no carriage returns are implied π
IAC SB STATUS IS
WILL ECHO
DO SUPPRESS-GO-AHEAD
WILL STATUS
DO STATUS
IAC SE
so what does Host2's stream actually mean? π it's responsible for echoing back the data characters it receives over the TELNET connection β¨ it will not send Go-Ahead signals π ββοΈ and it will both issue and request Status information π literally iconic, periodt π
π¦ where this page comes from
- ietf: rfc859 1983-05
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms