# requirements-1123-3.2 tool: get_requirements args: {"rfc":1123,"section":"3.2"} --- json --- { "rfc": 1123, "filter": { "section": "3.2", "level": "all" }, "stats": { "total": 26, "byLevel": { "MUST": 15, "SHOULD": 5, "MAY": 3, "SHOULD NOT": 1, "MUST NOT": 2 } }, "requirements": [ { "id": "R-3.2.1-1", "level": "MUST", "text": "Every Telnet implementation MUST include option negotiation and subnegotiation machinery [TELNET:2].", "section": "3.2.1", "sectionTitle": "Option Negotiation: RFC-854, pp. 2-3", "fullContext": "Every Telnet implementation MUST include option negotiation and subnegotiation machinery [TELNET:2].", "subject": "telnet implementation", "action": "include option negotiation and subnegotiation machinery [TELNET:2]" }, { "id": "R-3.2.1-2", "level": "MUST", "text": "A host MUST carefully follow the rules of RFC-854 to avoid option-negotiation loops.", "section": "3.2.1", "sectionTitle": "Option Negotiation: RFC-854, pp. 2-3", "fullContext": "A host MUST carefully follow the rules of RFC-854 to avoid option-negotiation loops. A host MUST refuse (i.e, reply WONT/DONT to a DO/WILL) an unsupported option. Option negotiation SHOULD continue to function (even if all requests are refused) throughout the lifetime of a Telnet connection.", "subject": "host", "action": "carefully follow the rules of RFC-854 to avoid option-negotiation loops" }, { "id": "R-3.2.1-3", "level": "MUST", "text": "A host MUST refuse (i.e, reply WONT/DONT to a DO/WILL) an unsupported option.", "section": "3.2.1", "sectionTitle": "Option Negotiation: RFC-854, pp. 2-3", "fullContext": "A host MUST carefully follow the rules of RFC-854 to avoid option-negotiation loops. A host MUST refuse (i.e, reply WONT/DONT to a DO/WILL) an unsupported option. Option negotiation SHOULD continue to function (even if all requests are refused) throughout the lifetime of a Telnet connection.", "subject": "host", "action": "refuse (i.e, reply WONT/DONT to a DO/WILL) an unsupported option" }, { "id": "R-3.2.1-4", "level": "SHOULD", "text": "Option negotiation SHOULD continue to function (even if all requests are refused) throughout the lifetime of a Telnet connection.", "section": "3.2.1", "sectionTitle": "Option Negotiation: RFC-854, pp. 2-3", "fullContext": "A host MUST carefully follow the rules of RFC-854 to avoid option-negotiation loops. A host MUST refuse (i.e, reply WONT/DONT to a DO/WILL) an unsupported option. Option negotiation SHOULD continue to function (even if all requests are refused) throughout the lifetime of a Telnet connection.", "subject": "option negotiation", "condition": "all requests are refused) throughout the lifetime of a Telnet connection", "action": "continue to function (even if all requests are refused) throughout the lifetime of a Telnet connection" }, { "id": "R-3.2.1-5", "level": "MUST", "text": "If all option negotiations fail, a Telnet implementation MUST default to, and support, an NVT.", "section": "3.2.1", "sectionTitle": "Option Negotiation: RFC-854, pp. 2-3", "fullContext": "If all option negotiations fail, a Telnet implementation MUST default to, and support, an NVT.", "subject": "telnet implementation", "condition": "all option negotiations fail, a Telnet implementation MUST default to, and support", "action": "default to" }, { "id": "R-3.2.2-1", "level": "MUST", "text": "On a host that never sends the Telnet command Go Ahead (GA), the Telnet Server MUST attempt to negotiate the Suppress Go Ahead option (i.e., send \"WILL Suppress Go Ahead\").", "section": "3.2.2", "sectionTitle": "Telnet Go-Ahead Function: RFC-854, p. 5, and RFC-858", "fullContext": "On a host that never sends the Telnet command Go Ahead (GA), the Telnet Server MUST attempt to negotiate the Suppress Go Ahead option (i.e., send \"WILL Suppress Go Ahead\"). A User or Server Telnet MUST always accept negotiation of the Suppress Go Ahead option.", "subject": "telnet server", "action": "attempt to negotiate the Suppress Go Ahead option (i.e., send \"WILL Suppress Go Ahead\")" }, { "id": "R-3.2.2-2", "level": "MUST", "text": "A User or Server Telnet MUST always accept negotiation of the Suppress Go Ahead option.", "section": "3.2.2", "sectionTitle": "Telnet Go-Ahead Function: RFC-854, p. 5, and RFC-858", "fullContext": "On a host that never sends the Telnet command Go Ahead (GA), the Telnet Server MUST attempt to negotiate the Suppress Go Ahead option (i.e., send \"WILL Suppress Go Ahead\"). A User or Server Telnet MUST always accept negotiation of the Suppress Go Ahead option.", "subject": "server telnet", "action": "always accept negotiation of the Suppress Go Ahead option" }, { "id": "R-3.2.2-3", "level": "MAY", "text": "When it is driving a full-duplex terminal for which GA has no meaning, a User Telnet implementation MAY ignore GA commands.", "section": "3.2.2", "sectionTitle": "Telnet Go-Ahead Function: RFC-854, p. 5, and RFC-858", "fullContext": "When it is driving a full-duplex terminal for which GA has no meaning, a User Telnet implementation MAY ignore GA commands.", "subject": "telnet implementation", "condition": "it is driving a full-duplex terminal for which GA has no meaning", "action": "ignore GA commands" }, { "id": "R-3.2.3-1", "level": "MAY", "text": "Both User and Server Telnets MAY support the control functions EOR, EC, EL, and Break, and MUST support AO, AYT, DM, IP, NOP, SB, and SE.", "section": "3.2.3", "sectionTitle": "Control Functions: RFC-854, pp. 7-8", "fullContext": "Both User and Server Telnets MAY support the control functions EOR, EC, EL, and Break, and MUST support AO, AYT, DM, IP, NOP, SB, and SE.", "subject": "server telnets", "action": "support the control functions EOR" }, { "id": "R-3.2.3-2", "level": "MUST", "text": "Both User and Server Telnets MAY support the control functions EOR, EC, EL, and Break, and MUST support AO, AYT, DM, IP, NOP, SB, and SE.", "section": "3.2.3", "sectionTitle": "Control Functions: RFC-854, pp. 7-8", "fullContext": "Both User and Server Telnets MAY support the control functions EOR, EC, EL, and Break, and MUST support AO, AYT, DM, IP, NOP, SB, and SE.", "subject": "server telnets", "action": "support AO" }, { "id": "R-3.2.3-3", "level": "MUST", "text": "A host MUST be able to receive and ignore any Telnet control functions that it does not support.", "section": "3.2.3", "sectionTitle": "Control Functions: RFC-854, pp. 7-8", "fullContext": "A host MUST be able to receive and ignore any Telnet control functions that it does not support.", "subject": "host", "action": "be able to receive and ignore any Telnet control functions that it does not support" }, { "id": "R-3.2.4-1", "level": "MUST", "text": "When it receives \"urgent\" TCP data, a User or Server Telnet MUST discard all data except Telnet commands until the DM (and end of urgent) is reached.", "section": "3.2.4", "sectionTitle": "Telnet \"Synch\" Signal: RFC-854, pp. 8-10", "fullContext": "When it receives \"urgent\" TCP data, a User or Server Telnet MUST discard all data except Telnet commands until the DM (and end of urgent) is reached.", "subject": "server telnet", "condition": "it receives \"urgent\" TCP data", "exception": "Telnet commands until the DM (and end of urgent) is reached", "action": "discard all data except Telnet commands until the DM (and end of urgent) is reached" }, { "id": "R-3.2.4-2", "level": "SHOULD", "text": "When it sends Telnet IP (Interrupt Process), a User Telnet SHOULD follow it by the Telnet \"Synch\" sequence, i.e., send as TCP urgent data the sequence \"IAC IP IAC DM\".", "section": "3.2.4", "sectionTitle": "Telnet \"Synch\" Signal: RFC-854, pp. 8-10", "fullContext": "When it sends Telnet IP (Interrupt Process), a User Telnet SHOULD follow it by the Telnet \"Synch\" sequence, i.e., send as TCP urgent data the sequence \"IAC IP IAC DM\". The TCP urgent pointer points to the DM octet.", "subject": "user telnet", "condition": "it sends Telnet IP (Interrupt Process)", "action": "follow it by the Telnet \"Synch\" sequence" }, { "id": "R-3.2.4-3", "level": "MAY", "text": "When it receives a Telnet IP command, a Server Telnet MAY send a Telnet \"Synch\" sequence back to the user, to flush the output stream.", "section": "3.2.4", "sectionTitle": "Telnet \"Synch\" Signal: RFC-854, pp. 8-10", "fullContext": "When it receives a Telnet IP command, a Server Telnet MAY send a Telnet \"Synch\" sequence back to the user, to flush the output stream. The choice ought to be consistent with the way the server operating system behaves when a local user interrupts a process.", "subject": "server telnet", "condition": "it receives a Telnet IP command", "action": "send a Telnet \"Synch\" sequence back to the user" }, { "id": "R-3.2.4-4", "level": "MUST", "text": "When it receives a Telnet AO command, a Server Telnet MUST send a Telnet \"Synch\" sequence back to the user, to flush the output stream.", "section": "3.2.4", "sectionTitle": "Telnet \"Synch\" Signal: RFC-854, pp. 8-10", "fullContext": "When it receives a Telnet AO command, a Server Telnet MUST send a Telnet \"Synch\" sequence back to the user, to flush the output stream.", "subject": "server telnet", "condition": "it receives a Telnet AO command", "action": "send a Telnet \"Synch\" sequence back to the user" }, { "id": "R-3.2.4-5", "level": "SHOULD", "text": "A User Telnet SHOULD have the capability of flushing output when it sends a Telnet IP; see also Section 3.4.5.", "section": "3.2.4", "sectionTitle": "Telnet \"Synch\" Signal: RFC-854, pp. 8-10", "fullContext": "A User Telnet SHOULD have the capability of flushing output when it sends a Telnet IP; see also Section 3.4.5.", "subject": "user telnet", "condition": "it sends a Telnet IP; see also Section 3.4.5", "action": "have the capability of flushing output when it sends a Telnet IP; see also Section 3.4.5" }, { "id": "R-3.2.5-1", "level": "SHOULD NOT", "text": "In NVT mode, a Telnet SHOULD NOT send characters with the high-order bit 1, and MUST NOT send it as a parity bit.", "section": "3.2.5", "sectionTitle": "NVT Printer and Keyboard: RFC-854, p. 11", "fullContext": "In NVT mode, a Telnet SHOULD NOT send characters with the high-order bit 1, and MUST NOT send it as a parity bit. Implementations that pass the high-order bit to applications SHOULD negotiate binary mode (see Section 3.2.6).", "subject": "telnet", "action": "send characters with the high-order bit 1" }, { "id": "R-3.2.5-2", "level": "MUST NOT", "text": "In NVT mode, a Telnet SHOULD NOT send characters with the high-order bit 1, and MUST NOT send it as a parity bit.", "section": "3.2.5", "sectionTitle": "NVT Printer and Keyboard: RFC-854, p. 11", "fullContext": "In NVT mode, a Telnet SHOULD NOT send characters with the high-order bit 1, and MUST NOT send it as a parity bit. Implementations that pass the high-order bit to applications SHOULD negotiate binary mode (see Section 3.2.6).", "subject": "telnet", "action": "send it as a parity bit" }, { "id": "R-3.2.5-3", "level": "SHOULD", "text": "Implementations that pass the high-order bit to applications SHOULD negotiate binary mode (see Section 3.2.6).", "section": "3.2.5", "sectionTitle": "NVT Printer and Keyboard: RFC-854, p. 11", "fullContext": "In NVT mode, a Telnet SHOULD NOT send characters with the high-order bit 1, and MUST NOT send it as a parity bit. Implementations that pass the high-order bit to applications SHOULD negotiate binary mode (see Section 3.2.6).", "subject": "applications", "action": "negotiate binary mode (see Section 3.2.6)" }, { "id": "R-3.2.5-4", "level": "SHOULD", "text": "For this reason, the requirements on the high-order bit are stated as SHOULD, not MUST.", "section": "3.2.5", "sectionTitle": "NVT Printer and Keyboard: RFC-854, p. 11", "fullContext": "However, there exist applications that really need an 8- bit NVT mode, which is currently not defined, and these existing applications do set the high-order bit during part or all of the life of a Telnet connection. Note that binary mode is not the same as 8-bit NVT mode, since binary mode turns off end-of-line processing. For this reason, the requirements on the high-order bit are stated as SHOULD, not MUST.", "subject": "stated" }, { "id": "R-3.2.5-5", "level": "MUST", "text": "For this reason, the requirements on the high-order bit are stated as SHOULD, not MUST.", "section": "3.2.5", "sectionTitle": "NVT Printer and Keyboard: RFC-854, p. 11", "fullContext": "However, there exist applications that really need an 8- bit NVT mode, which is currently not defined, and these existing applications do set the high-order bit during part or all of the life of a Telnet connection. Note that binary mode is not the same as 8-bit NVT mode, since binary mode turns off end-of-line processing. For this reason, the requirements on the high-order bit are stated as SHOULD, not MUST." }, { "id": "R-3.2.6-1", "level": "MUST", "text": "Since options may appear at any point in the data stream, a Telnet escape character (known as IAC, with the value 255) to be sent as data MUST be doubled.", "section": "3.2.6", "sectionTitle": "Telnet Command Structure: RFC-854, p. 13", "fullContext": "Since options may appear at any point in the data stream, a Telnet escape character (known as IAC, with the value 255) to be sent as data MUST be doubled.", "subject": "data", "action": "be doubled" }, { "id": "R-3.2.7-1", "level": "MUST", "text": "However, the data stream MUST still be scanned for IAC characters, any embedded Telnet commands MUST be obeyed, and data bytes equal to IAC MUST be doubled.", "section": "3.2.7", "sectionTitle": "Telnet Binary Option: RFC-856", "fullContext": "When the Binary option has been successfully negotiated, arbitrary 8-bit characters are allowed. However, the data stream MUST still be scanned for IAC characters, any embedded Telnet commands MUST be obeyed, and data bytes equal to IAC MUST be doubled. Other character processing (e.g., replacing CR by CR NUL or by CR LF) MUST NOT be done. In particular, there is no end-of-line convention (see Section 3.3.1) in binary mode.", "subject": "data stream", "action": "still be scanned for IAC characters, any embedded Telnet commands MUST be obeyed, and data bytes equal to IAC MUST be doubled" }, { "id": "R-3.2.7-2", "level": "MUST NOT", "text": "Other character processing (e.g., replacing CR by CR NUL or by CR LF) MUST NOT be done.", "section": "3.2.7", "sectionTitle": "Telnet Binary Option: RFC-856", "fullContext": "When the Binary option has been successfully negotiated, arbitrary 8-bit characters are allowed. However, the data stream MUST still be scanned for IAC characters, any embedded Telnet commands MUST be obeyed, and data bytes equal to IAC MUST be doubled. Other character processing (e.g., replacing CR by CR NUL or by CR LF) MUST NOT be done. In particular, there is no end-of-line convention (see Section 3.3.1) in binary mode.", "action": "be done" }, { "id": "R-3.2.8-1", "level": "MUST", "text": "The Terminal-Type option MUST use the terminal type names officially defined in the Assigned Numbers RFC [INTRO:5], when they are available for the particular terminal.", "section": "3.2.8", "sectionTitle": "Telnet Terminal-Type Option: RFC-1091", "fullContext": "The Terminal-Type option MUST use the terminal type names officially defined in the Assigned Numbers RFC [INTRO:5], when they are available for the particular terminal. However, the receiver of a Terminal-Type option MUST accept any name.", "subject": "terminal-type option", "condition": "they are available for the particular terminal", "action": "use the terminal type names officially defined in the Assigned Numbers RFC [INTRO:5]" }, { "id": "R-3.2.8-2", "level": "MUST", "text": "However, the receiver of a Terminal-Type option MUST accept any name.", "section": "3.2.8", "sectionTitle": "Telnet Terminal-Type Option: RFC-1091", "fullContext": "The Terminal-Type option MUST use the terminal type names officially defined in the Assigned Numbers RFC [INTRO:5], when they are available for the particular terminal. However, the receiver of a Terminal-Type option MUST accept any name.", "subject": "terminal-type option", "action": "accept any name" } ], "_source": "text", "_sourceNote": "Warning: Parsed from text format. Requirement extraction accuracy may be limited." }