summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1053.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc1053.txt')
-rw-r--r--doc/rfc/rfc1053.txt1179
1 files changed, 1179 insertions, 0 deletions
diff --git a/doc/rfc/rfc1053.txt b/doc/rfc/rfc1053.txt
new file mode 100644
index 0000000..16320f4
--- /dev/null
+++ b/doc/rfc/rfc1053.txt
@@ -0,0 +1,1179 @@
+
+
+
+
+
+
+Network Working Group S. Levy
+Request for Comments: 1053 T. Jacobson
+ Minnesota Supercomputer Center
+ April 1988
+
+
+ Telnet X.3 PAD Option
+
+
+Status of this Memo
+
+ This RFC proposes a new option to Telnet for the Internet community,
+ and requests discussion and suggestions for improvements.
+ Distribution of this memo is unlimited.
+
+1. Command name and code
+
+ X.3-PAD 30
+
+2. Command meanings
+
+ IAC DO X.3-PAD
+
+ The issuing telnet requests that its peer perform X.3-PAD
+ functions, or accepts an offer to do so.
+
+ IAC DON'T X.3-PAD
+
+ The issuing telnet demands that its peer not perform or cease
+ performing X.3-PAD functions.
+
+ IAC WILL X.3-PAD
+
+ The issuing telnet offers to perform X.3-PAD functions or confirms
+ that it will do so.
+
+ IAC WON'T X.3-PAD
+
+ The issuing telnet refuses to perform X.3-PAD functions or
+ indicates that it is ceasing to handle them.
+
+ Typically a server (host) telnet will use DO and DON'T, while a
+ client (user) telnet will use WILL and WON'T. For convenience, in
+ the rest of this RFC 'host' and 'user' telnets refer to those saying
+ 'DO X.3-PAD' or 'WILL X.3-PAD' respectively.
+
+ Both telnet peers may use this option without confusion, as all
+ messages unambiguously identify whether they come from the host
+
+
+
+Levy & Jacobson [Page 1]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ ("DO") or the user ("WILL") side.
+
+ Once DO and WILL have been exchanged, the host ("DO") telnet may
+ send the following messages:
+
+ IAC SB X.3-PAD SET <param1> <value1> ... IAC SE
+ IAC SB X.3-PAD RESPONSE-SET <param1> <value1> ... IAC SE
+ IAC SB X.3-PAD SEND IAC SE
+
+ while the user ("WILL") telnet may send the following messages:
+
+ IAC SB X.3-PAD IS <param1> <value1> ... IAC SE
+ IAC SB X.3-PAD RESPONSE-IS <param1> <value1> ... IAC SE
+
+ The code for SET is 0
+ The code for RESPONSE-SET is 1
+ The code for IS is 2
+ The code for RESPONSE-IS is 3
+ The code for SEND is 4
+
+ Messages listing parameter-value pairs may contain any number of
+ such pairs, including zero. Each parameter and each value
+ occupies one octet, except that 255 (IAC) is doubled wherever it
+ appears.
+
+3. Default conditions
+
+ The initial state is DON'T X.3-PAD, WON'T X.3-PAD. This RFC does not
+ specify default values for most X.3 parameters. If the host telnet
+ wishes a particular initial state (as it normally will), it should
+ negotiate for it after exchange of DO/WILL messages.
+
+ X.3-PAD parameter values need not be preserved except when DO/WILL
+ X.3-PAD is in effect. Thus if a host enables ("DO") X.3-PAD,
+ negotiates about some parameters, then for some reason disables
+ ("DONT") and later re-enables X.3-PAD, it must renegotiate any
+ parameters it cares about.
+
+ Keeping in mind that the host telnet may not recognize all the
+ parameters known to the user telnet, it is suggested that the user
+ telnet's initial parameters allow a reasonable level of service even
+ if they are never changed (e.g., it would be unwise to begin with all
+ data forwarding conditions disabled). Extensions to X.3 should
+ default to states resembling normal X.3 service where possible.
+
+
+
+
+
+
+
+Levy & Jacobson [Page 2]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+4. Motivation for the option
+
+ Where interactive terminals (or computers simulating them) are
+ attached to host computers across a network, it is often desirable to
+ provide them the same services as have long been provided for
+ terminals directly attached to those hosts.
+
+ Many systems handle this by simply leaving all character processing
+ to the host running the applications. Each character typed by the
+ user is sent, often in its own packet, immediately to the host. This
+ gives good control over interaction, but can cause a significant load
+ on hosts and networks. Long-distance packet networks tend to be
+ unreasonably slow or expensive or both when used in this mode.
+
+ Suitable character processing on the client (near the user's
+ terminal) can greatly improve the situation. Unfortunately for
+ standardization efforts, there are many possible approaches with
+ differing purposes.
+
+ Some have already been proposed as Telnet options. The Remote
+ Controlled Transmission and Echo option, [3], provides fine control
+ over local buffering and echoing. The SUPDUP option, [4], offers a
+ variety of input and display functions in terminal-independent form.
+
+ This RFC's proposal is intended to support efficient, approximate
+ emulation, across a Telnet connection, of a host's normal handling of
+ character-oriented terminals. Ideally, a user and an application
+ program would not need to know whether they were linked by an RS-232
+ line or a TCP/IP network, except where the medium required a
+ distinction (e.g., when establishing a connection).
+
+ Server implementors would wish for enough to emulate, purely locally,
+ everything offered by their host's operating system; on the other
+ hand, a standard calling on user telnets to provide all terminal
+ handling functions of all known operating systems will find few
+ implementors. One might settle on a subset of common operations, but
+ which ones?
+
+ The CCITT world has used one approach to these problems: the set of
+ PAD services defined by recommendation X.3. This RFC proposes that
+ the Internet community adopt that solution to handle the same
+ problems under Telnet. It is fairly simple, widely known and used,
+ extensible, and solves most of the relevant problems.
+
+ Adopting X.3 would have another advantage. X.25 is the dominant
+ worldwide standard interface between commercial packet networks and
+ Internet systems, as evidenced by the DDN's adoption of X.25 basic
+ and standard services as replacements for BBN 1822 and HDH. Telnet
+
+
+
+Levy & Jacobson [Page 3]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ and X.3 PAD traffic will have to coexist on X.25 networks; there will
+ be a consequential desire for effective interoperation at the virtual
+ terminal level. Extending Telnet along these lines would vastly
+ simplify bridging the two.
+
+ Described here is a scheme for implementing X.3 services and
+ negotiating their parameters across a Telnet connection.
+
+5. Description of the option
+
+ Many, though not all, X.3 services are meaningful in the context of
+ remote terminal processing; for some, it may be desirable to allow
+ local control (by the user) but not remote control (by the server
+ host). Some functions may not be provided, or provided in only
+ limited form, by particular implementations. In general, an
+ implementation should follow the Telnet norm of requesting desired
+ service but continuing to function somehow in case it is not
+ available.
+
+ Negotiations are asymmetrical. Since the user telnet is charged with
+ local character handling while engaged in the session with the remote
+ host, the X.3 parameters "belong" to the user side. The host telnet
+ requests parameter changes with SET or RESPONSE-SET messages. Host
+ requests might be on behalf of an application program, for example,
+ disabling local echo while a password is being entered. The user
+ telnet should give its "best effort" to accommodate these requests,
+ but guarantees nothing except accurate status reporting.
+
+ A user telnet may allow the local user to request parameter changes
+ too, though this RFC does not specify a way.
+
+ Where requests conflict, or where a user telnet cannot satisfy a
+ request, the user telnet has the last word, since it does the
+ relevant character processing. It may allow control from the host
+ only, from the user only, may seek a compromise type of processing
+ and so on, at the implementor's discretion.
+
+ Host ("DO") telnets may also ask the user telnet to SEND its current
+ parameter values. The user ("WILL") telnet must reply to each SEND
+ message with a RESPONSE-IS message listing the values of all the
+ parameters it knows about. It is strongly recommended that all
+ parameters known to the telnet implementor be included in this list,
+ even if their values cannot be changed. The intent is to give the
+ host telnet the most complete information possible about the style of
+ interaction which the user telnet is providing.
+
+ If possible, user telnets should also inform the server host (with an
+ IS message) whenever local conditions (e.g., user requests) change a
+
+
+
+Levy & Jacobson [Page 4]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ parameter's state. This may not be feasible in some circumstances,
+ and such behavior is negotiable -- see the discussion of parameter 0.
+
+ Note that there are no "error" messages defined in section 2. Almost
+ all detectable errors (use of nonexisistent parameters or undefined
+ values for known parameters) are indistinguishable from valid uses of
+ options known to one peer but not the other. Hosts will normally
+ wish to poll the user telnet's state after making a request anyway,
+ so error responses do not seem to be needed.
+
+ The protocol messages listed in section 2 are to be used as follows.
+
+ SET and RESPONSE-SET ask the user telnet to change its values for the
+ given X.3 parameters. The user telnet ignores unrecognized
+ parameters; it sends no reply. The host sends SET to begin a
+ negotiation, when some event on the host side causes a change in the
+ desired set of parameters. The host sends RESPONSE-SET to continue
+ negotiation, when it is dissatisfied with the user telnet's choice of
+ parameters indicated in a RESPONSE-IS message. Typically, the host
+ will test the user telnet's chosen behavior by issuing a SEND message
+ following the SET or RESPONSE-SET, though the user telnet should not
+ rely on this.
+
+ A SEND message from the host demands that the user telnet send
+ RESPONSE-IS.
+
+ IS and RESPONSE-IS inform the host telnet of the current states of
+ some or all of the user telnet's parameters. The user telnet sends
+ IS when the user telnet changes a parameter for some local reason,
+ e.g., at a request from the (human) user. An IS message may but need
+ not list all parameters, e.g., it might list just those which
+ changed.
+
+ It sends RESPONSE-IS in answer to each SEND request from the host.
+ Every RESPONSE-IS should list ALL X.3-PAD parameters known to the
+ user telnet implementor, even those which cannot be changed. Any
+ host requests (SET or RESPONSE-SET) received before a SEND message
+ should be processed before sending the answering RESPONSE-IS, so that
+ their effects are reflected in the parameter values indicated there.
+
+ To permit synchronization (which SEND is this an answer to?), the
+ user telnet should count SEND messages, and send exactly one
+ RESPONSE-IS per SEND.
+
+ One might think that this protocol could be implemented with only
+ SET, SEND and IS messages. The seemingly redundant RESPONSE-SET and
+ RESPONSE-IS codes are needed to let both the user and host telnets
+ distinguish new peer requests from attempts to renegotiate previous
+
+
+
+Levy & Jacobson [Page 5]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ actions, while preventing potential infinite negotiation loops.
+
+ SET and IS messages are sent when the host or user telnet wishes to
+ inform its peer of a change in the X.3 processing mode desired by
+ some higher level entity. This might happen at initialization, or on
+ user or application-program request. The important thing is that
+ these messages are NOT sent merely in response to another X.3-PAD
+ message from the peer.
+
+ RESPONSE-SET and RESPONSE-IS messages should be sent in reply to a
+ peer's [RESPONSE-]IS or SEND message. They reflect negotiation at
+ the telnet level, rather than changes in the higher-level
+ environment. A host which sends a SEND message may complain about
+ the status indicated in the answering RESPONSE-IS by sending
+ RESPONSE-SET but not SET.
+
+ Under this scheme, a possible rule for preventing infinite
+ negotiations would be for the host to send at most zero, one, or some
+ fixed number, of RESPONSE-SET messages following receipt of one IS
+ message or one higher-level host-side request. After that, the host
+ telnet simply accepts the user telnet's last offer as well as it can.
+ Note that only the host needs to worry about loop prevention, since
+ it does all the asking.
+
+ A given parameter should not be listed more than once in a single
+ message.
+
+ A sample negotiation might look like this. (Here line breaks are not
+ meaningful; ASCII carriage returns and line feeds are indicated by
+ <CR> and <LF>; other characters stand for themselves. In the IAC SB
+ octet values.)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Levy & Jacobson [Page 6]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ Host: <CR><LF>%
+ (User types "cd gibber<CR>")
+ User: cd gibber<CR><LF>
+ Host: Password required.<CR>LF>
+ (Host disables echoing)
+ IAC SB X.3-PAD SET 2 0 IAC SE
+ (Host polls for status)
+ IAC SB X.3-PAD SEND IAC SE
+ User: (User telnet has disabled local
+ echo. Note that some
+ parameters (e.g., 9, 10, 11)
+ are not present, presumably
+ unimplemented, and a few
+ extension parameters
+ (129, 134) in extension
+ set 1 are also defined.)
+ IAC SB X.3-PAD RESPONSE-IS 1 29 2 0 3 2 4 0 5 0 7 17 8 0
+ 12 0 13 3 15 1 16 8 17 21 18 0
+ 128 1 129 23 134 1 IAC SE
+ Host: password:
+ (User types "squeak<CR>",
+ User: squeak<CR><LF> which is not echoed.)
+ Host: (Host re-enables echoing)
+ IAC SB X.3-PAD SET 2 1 IAC SE
+ (Host polls for status)
+ IAC SB X.3-PAD SEND IAC SE
+ User:
+ IAC SB X.3-PAD RESPONSE-IS 1 29 2 1 3 2 4 0 5 0 7 17 8 0
+ 12 0 13 3 15 1 16 8 17 21 18 0
+ 128 1 129 23 134 1 IAC SE
+
+6. Parameters
+
+ In outline, the X.3-PAD option uses the following parameters.
+
+ Parameter 0 indicates whether the user telnet notifies the host
+ about parameter changes made for local reasons.
+
+ Parameters 1 through 22 are basically those of CCITT X.3, with
+ some changes in interpretation; they are listed in detail below.
+
+ Parameters 23 through 127 are reserved for potential extensions to
+ CCITT's X.3 definition.
+
+ Parameter 128 selects an "extension set", determining the meaning
+ of parameters 129 through 255. One extension set is proposed in
+ this RFC, others may be added. The extension mechanism is
+ explained under parameter 128's description.
+
+
+
+Levy & Jacobson [Page 7]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ Parameters 129 through 255 are meaningful only when defined in the
+ extension set indicated by the current value of parameter 128.
+
+ It should NOT be assumed that all implementations will necessarily
+ support all parameters defined here, or all values of those
+ parameters. Supported parameter/value combinations, however, should
+ behave as described here.
+
+ The following parameter is specific to this Telnet option.
+
+ Parameter 0 -- Notify host of user-initiated parameter changes.
+
+ Code 0 -- Host is not notified.
+ Code 1 -- User telnet notifies host by sending IS message.
+
+ If the user telnet, for some local reason, changes a parameter,
+ should it send an IS message to the host? This is desirable, since
+ the host telnet cannot be sure of knowing the user telnet's current
+ status otherwise. On the other hand, some user telnets may be
+ unable to send notification. Consider a user calling from an X.25
+ PAD through an X.25-to-telnet gateway. The user may change local
+ PAD parameters freely, but since normal PADs send no message when
+ this happens, the gateway cannot inform the host telnet. Moreover,
+ some sloppy host telnets may not wish to know about user parameter
+ changes.
+
+ In normal usage, the host will ask to SET parameter 0 to its
+ preferred state upon initialization; the user telnet accepts the
+ setting if it can; then the host polls (using SEND) for the user
+ telnet's decision. A disappointed host might periodically poll for
+ changes, or admonish the (human) user not to change parameters, or
+ remain silent and simply work oddly if changes are made.
+
+The following parameters are as defined by the 1984 CCITT X.3 standard.
+
+Numbers are in decimal.
+
+Parameter 1 -- Character to escape to local telnet command mode.
+
+ Code 0 -- No ASCII character performs this function (though
+ some special mechanism, e.g., a function key, still may).
+ Code 1 -- DLE (ASCII code 16).
+ Codes 32 through 126 -- ASCII code of the character.
+
+ Codes 2 through 31 are not defined by X.3, but might also be taken
+ to refer to the corresponding ASCII control characters. X.3 seems
+ to be unable to name SOH (control-A) as a command escape character.
+
+
+
+
+Levy & Jacobson [Page 8]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+Parameter 2 -- Local echo of characters typed by the user.
+
+ Code 0 -- No local echo.
+ Code 1 -- Local echo.
+
+ Several echoing styles are possible. Parameter 13 selects whether
+ a carriage return echoes as itself or as CR LF. Parameter 20 may
+ suppress echoing of particular ASCII characters. The extension
+ parameter 134 selects a style for echoing non-printing characters
+ such as ESC.
+
+Parameter 3 -- Set of forwarding characters.
+
+ The value is bit-encoded; each nonzero bit specifies a set of
+ characters. The user telnet should accept characters from the
+ user's keyboard, buffering them until it receives any of the
+ specified characters (or until some other forwarding condition is
+ satisfied, see below), and then sending the buffer to the host.
+
+ It may forward earlier if necessary, e.g., if it runs out of buffer
+ space. It MUST eventually forward after receiving one of the
+ indicated characters.
+
+ Code 0 -- No forwarding characters.
+ Code 1 -- Alphanumeric characters (a-z, A-Z, 0-9).
+ Code 2 -- CR.
+ Code 4 -- ESC, BEL, ENQ, ACK.
+ Code 8 -- DEL, CAN, DC2.
+ Code 16 -- ETX, EOT.
+ Code 32 -- HT, LF, VT, FF.
+ Code 64 -- ASCII character codes 0 through 31 not listed above.
+
+ Note that there is no way provided here to forward on printable,
+ non-alphanumeric characters (punctuation marks).
+
+ Codes may be added to select the union of the associated sets of
+ characters.
+
+Parameter 4 -- Forward after idle time.
+
+ When this parameter is nonzero, the user telnet sends its input
+ buffer to the host after a given period in which no characters are
+ typed, even if no forwarding character was received.
+
+ Code 0 -- Infinite time limit.
+ Codes 1 through 255 -- Time limit in 1/20 second units.
+
+ The value "1" may be taken to mean "forward immediately" if timed
+
+
+
+Levy & Jacobson [Page 9]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ input is inconvenient to provide. For other values, when timing is
+ available but the exact requested value is not, rounding to larger
+ time delays is suggested. If timing is requested but none is
+ available, immediate forwarding on every character is much
+ preferred over an infinite time limit.
+
+ Note the interaction with parameter 15, Local editing, and the
+ notes made under that heading.
+
+Parameter 5 -- Flow control of user-to-host data.
+
+ A user telnet may be overwhelmed by data typed by the user. If
+ parameter 5 is 1, it may output X-OFF (DC3, ASCII code 19) to ask
+ the user to suspend input and X-ON (DC1, ASCII code 17) when the
+ user may resume typing.
+
+ Code 0 -- X-OFF and X-ON considered normal output data.
+ Code 1 -- X-OFF and X-ON used to control user input.
+
+ The extension parameters 130 and 131, if defined, specify other
+ codes to be used instead of ASCII DC3 and DC1.
+
+Parameter 6, referring to messages sent from the PAD to the user,
+ does not seem to be relevant in this context.
+
+Parameter 7 -- Function of Break, Interrupt, Attention, etc.
+
+ This parameter describes handling of some special key or other
+ character, implementation-defined, on the user's keyboard. It is
+ bit-encoded; codes may be added to select multiple functions.
+ Multiple functions may be performed in any order. Any messages
+ generated should be promptly sent to the host.
+
+ Code 0 -- No action.
+ Code 1 -- Send interrupt packet (Telnet IAC IP).
+ Code 2 -- Reset (break Telnet connection).
+ Code 4 -- Discard input from user not yet consumed by host.
+ Code 8 -- Escape to local Telnet command mode.
+ Code 16 -- Discard output from host (see parameter 8).
+
+ The X.25 'Interrupt', 'Reset', and 'Indication of Break' messages
+ are here translated to Telnet equivalents. See section 8 for
+ suggestions on discarding input and output.
+
+
+
+
+
+
+
+
+Levy & Jacobson [Page 10]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+Parameter 8 -- Discarding output from host.
+
+ This parameter is intended as a flag, indicating whether host
+ output is being ignored.
+
+ Code 0 -- Host output is sent to user.
+ Code 1 -- Host output is discarded.
+
+ This parameter is normally used in conjunction with parameter 7
+ when the 16's bit (Discard output on Break/Interrupt/Attention) is
+ set. An implementation is suggested in section 8 of this RFC.
+
+ Note that, if a signal from the user causes parameter 8 to be
+ changed and parameter 0 is set to 1, an X.3-PAD IS message should
+ be sent to the host.
+
+Parameter 9 -- Padding after carriage return.
+
+ This parameter selects insertion of ASCII NUL padding characters
+ after output of each carriage return.
+
+ Codes 0 through 7 -- Insert that many padding characters.
+
+Parameter 10 -- Line folding.
+
+ Output lines may be folded (e.g., by insertion of carriage return
+ and line feed) when they exceed a specified width.
+
+ Code 0 -- No output line folding.
+ Codes 1 through 255 -- Fold lines after that many characters.
+
+Parameter 11 -- Bit rate.
+
+ This parameter indicates the serial data rate of the user's
+ terminal, if any. Though CCITT X.3 considers this parameter to be
+ read-only, it may be meaningful to allow the host to set as well as
+ read this value, thus changing the user's line speed dynamically.
+
+ Code 0 -- 110 bps Code 10 -- 50 bps
+ Code 1 -- 134.5 bps Code 11 -- 75 bps in, 1200 out
+ Code 2 -- 300 bps Code 12 -- 2400 bps
+ Code 3 -- 1200 bps Code 13 -- 4800 bps
+ Code 4 -- 600 bps Code 14 -- 9600 bps
+ Code 5 -- 75 bps Code 15 -- 19200 bps
+ Code 6 -- 150 bps Code 16 -- 48000 bps
+ Code 7 -- 1800 bps Code 17 -- 56000 bps
+ Code 8 -- 200 bps Code 18 -- 64000 bps
+ Code 9 -- 100 bps
+
+
+
+Levy & Jacobson [Page 11]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+Parameter 12 -- Flow control of host-to-user data.
+
+ When this parameter is 1, the user may type X-OFF (DC3, ASCII code
+ 19) to suspend printing output, and X-ON (DC1, ASCII code 17) to
+ resume output.
+
+ Code 0 -- X-OFF and X-ON are sent as data to host.
+ Code 1 -- X-OFF and X-ON control output.
+
+ See also the extension parameters 130, 131 and 132.
+
+Parameter 13 -- Line feed insertion; Telnet CR LF vs CR NUL.
+
+ The CCITT uses this parameter to select whether a typed CR should
+ be sent as CR or CR-LF, whether an output CR should have a LF
+ printed after it, and whether an echoed CR should be echoed with an
+ accompanying LF.
+
+ Here, it resolves the questions of mapping between the Telnet CR-LF
+ sequence and single ASCII codes (i.e., when the user presses the
+ carriage return key, should CR LF or CR NUL be sent to the host?
+ When the host sends CR LF, should the user see CR LF or merely CR?)
+
+ The value is bit-encoded; codes may be added to select multiple
+ functions.
+
+ Code 0 -- No line feed insertion
+ (typed CR sent as CR NUL; host CR LF printed as CR).
+ Code 1 -- Add line feed on output (host CR LF printed as CR LF).
+ Code 2 -- Add line feed on input (typed CR sent as CR LF to host).
+ Code 4 -- When echoing a typed CR locally, echo as CR LF.
+
+ Note the interaction with the TRANSMIT-BINARY Telnet option [5].
+ If the host has said WILL TRANSMIT-BINARY, then CR has no special
+ meaning on output; it always stands for the single character CR
+ regardless of this parameter's value. If the user telnet has said
+ WILL TRANSMIT-BINARY, a typed CR should likewise always be sent as
+ itself and not as CR LF or CR NUL.
+
+Parameter 14 -- Output padding after line feed.
+
+ Gives the number of ASCII NUL padding characters to be sent to the
+ user's terminal after each output line feed.
+
+ Codes 0 through 7 -- Send that many padding characters.
+
+
+
+
+
+
+Levy & Jacobson [Page 12]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+Parameter 15 -- Local editing.
+
+ If this parameter is 1, the character delete, line delete and line
+ reprint functions (parameters 16, 17 and 18), if implemented,
+ should be enabled. Data should be sent to the host when a
+ forwarding character (see parameter 3) is typed or in case the user
+ telnet's input buffer becomes full.
+
+ Note the interaction with parameter 4, Forward after idle time.
+ User telnets need not handle the case where idle-time forwarding
+ and local editing are both enabled, i.e., the host should
+ explicitly request changing parameter 4 to 0 along with setting
+ parameter 15 to 1.
+
+ Code 0 -- No input editing. Any editing characters are considered
+ data.
+ Code 1 -- Input editing. Editing characters edit the input buffer.
+
+Parameter 16 -- Character-delete character.
+
+ While local editing (parameter 15) is enabled, typing this
+ character erases the last character in the editing buffer, if any.
+ When editing is disabled, this character is not treated specially.
+
+ Code 0 -- No character has this function.
+ Codes 1 through 127 -- ASCII code of character-delete character.
+
+ See also parameter 19.
+
+Parameter 17 -- Line-delete character.
+
+ While local editing (parameter 15) is enabled, this character
+ erases the entire contents of the editing buffer. When editing is
+ disabled, this character is not treated specially.
+
+ Code 0 -- No character has this function.
+ Codes 1 through 127 -- ASCII code of line-delete character.
+
+ See also parameter 19.
+
+Parameter 18 -- Line-display character.
+
+ While local editing (parameter 15) is enabled, typing this
+ character causes the current contents of the editing buffer to be
+ printed on the user's terminal; nothing is sent to the host. When
+ editing is disabled, this character is not treated specially.
+
+ Code 0 -- No character has this function.
+
+
+
+Levy & Jacobson [Page 13]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ Codes 1 through 127 -- ASCII code of line-display character.
+
+Parameter 19 -- Editing service signals.
+
+ This determines what is echoed to the user when local editing is
+ enabled and the character-delete or line-delete character is
+ entered.
+
+ Code 0 -- Nothing is echoed.
+ Code 1 -- Editing style is suitable for printing terminals.
+ Code 2 -- Editing style is suitable for display terminals.
+ Codes 8 and 32-126 -- Echo that ASCII character for
+ character-delete.
+
+ X.3 is specific on handling character- and line-deletion. If
+ parameter 19 is 1, echo character-delete with a "line delete with
+ three X's followed by CR LF. If 2, a character-delete echoes BS
+ SPACE BS, while a line delete echoes enough BS SPACE BS's to erase
+ the entire line. If 8 or 32-126, character-delete echoes that
+ character, and line delete echoes XXX CR LF. An extension
+ parameter could override these, selecting other styles if desired,
+ though none is proposed here.
+
+Parameter 20 -- Echo mask.
+
+ When local echoing, parameter 2, is enabled, each nonzero bit in
+ this bit-encoded parameter's value suppresses echoing of some
+ subset of ASCII characters. Adding values suppresses echo for the
+ union of the specified subsets.
+
+ Code 0 -- all ASCII characters are echoed.
+ Code 1 -- CR is not echoed.
+ Code 2 -- LF is not echoed.
+ Code 4 -- VT, HT, and FF are not echoed.
+ Code 8 -- BEL and BS are not echoed.
+ Code 16 -- ESC and ENQ are not echoed.
+ Code 32 -- ACK, NAK, STX, SOH, EOT, ETB and ETX are not echoed.
+ Code 64 -- Editing characters are not echoed.
+ Code 128 -- other non-printing ASCII characters, and DEL, not
+ echoed.
+
+ Nothing is echoed when parameter 2 is 0. Some characters should
+ not be echoed regardless of parameter 20. If any of parameters 5,
+ 12, or 22 are enabled (non-zero), then the XON and XOFF characters
+ should not be echoed. Nor should the escape-to-local command mode
+ character, parameter 1.
+
+
+
+
+
+Levy & Jacobson [Page 14]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+Parameter 21 -- Parity.
+
+ This parameter determines whether parity is checked on user input
+ and generated on output to the user. Values may be added to select
+ both.
+
+ Code 0 -- Parity neither generated nor checked.
+ Code 1 -- Even parity checked on input.
+ Code 2 -- Even parity generated on output.
+
+Parameter 22 -- Page wait.
+
+ If enabled, this parameter causes the user telnet to pause after
+ every N lines of output as if X-OFF had been received. Output
+ resumes when X-ON is typed.
+
+ Code 0 -- No pause.
+ Codes 1-255 -- Pause after output of that many line feeds.
+
+ See also parameters 130, 131 and 132.
+
+The following parameters are not part of CCITT X.3, but use the
+extension mechanism proposed for this Telnet option.
+
+Parameter 128 -- Extension set number.
+
+ This parameter selects one of a potentially large number of
+ "extension sets" -- more or less coherent collections of parameters
+ added to the basic X.3 family. User telnets may support several
+ extension sets. The host may determine whether a particular one is
+ supported by trying to set parameter 128. The user telnet should
+ accept the value if it provides some or all of the parameters in
+ that set.
+
+ Extension sets might be defined for a variety of purposes. For
+ example, Berkeley UNIX tty emulation, VMS emulation, Telenet's
+ extended parameters, French national PDN parameters, and so on.
+
+ Initial values need not be specified for extension parameters
+ (i.e., a host should explicitly negotiate for their values after
+ selecting an extension set). However, it is recommended that
+ default settings give service that resembles normal CCITT X.3
+ behavior where possible.
+
+ Extension sets are mutually exclusive. Different sets may use the
+ same parameters (from 129 through 255) for different purposes.
+
+ Only one extension set is in effect at a time. That is, if a host
+
+
+
+Levy & Jacobson [Page 15]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ requests service X from extension set A, then switches to extension
+ set B and requests its service Y, it should not expect that service
+ X is still being provided.
+
+ Some values of this parameter are reserved:
+
+ Code 0 -- Null extension set. Only (a subset of) the basic CCITT
+ X.3 parameters is provided. Every user telnet should
+ accept this setting.
+ Code 1 -- (A subset of) the extension set 1 parameters described
+ below is provided.
+ Code 255 -- Reserved for purely local (e.g., to a site), non-
+ standard collections of extensions.
+
+ Other extension sets may be proposed and assigned set numbers in
+ the range 2 through 254.
+
+ Set number are registered with the Internet Assigned Numbers
+ Coordinator at USC-ISI. Please contact:
+
+ Joyce K. Reynolds
+ USC Information Sciences Institute
+ Suite 1001
+ 4676 Admiralty Way
+ Marina del Rey, CA 90292-6695
+
+ 213-822-1511 JKReynolds@ISI.EDU
+
+The following parameters form extension set number 1.
+
+Parameter 129, extension set 1 -- Word-delete character.
+
+ Typing this character while local editing is enabled causes the
+ last word in the editing buffer to be erased. Several definitions
+ for a "word" are in common use; this RFC does not specify one.
+ There should be an indication to the user of what was erased. When
+ editing is disabled, this character is not treated specially.
+
+ Code 0 -- No character has this function.
+ Codes 1 through 127 -- ASCII code of word-delete character.
+
+Parameter 130, extension set 1 -- Flow control OFF character.
+
+ Parameter 131, extension set 1 -- Flow control ON character.
+ Typing these characters while parameter 12 is enabled cause output
+ to be suspended or resumed, respectively. The user telnet may send
+ them to the user while parameter 5 is enabled to ask the user to
+ cease or resume supplying input.
+
+
+
+Levy & Jacobson [Page 16]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ If defined, these parameters should have default values of 19
+ (ASCII DC3) for parameter 130, and 17 (ASCII DC1) for parameter
+ 131.
+
+ Code 0 -- No character has this function.
+ Codes 1 through 127 -- Function performed by that ASCII code.
+
+Parameter 132, extension set 1 -- Host-to-user flow control convention.
+
+ Some styles of flow control accept only a particular character
+ (e.g., X-ON) to resume output; others resume on receipt of any
+ character. This parameter selects which to use. The default
+ should be zero, as this matches the X.3 convention.
+
+ Code 0 -- Resume output only when correct character is received.
+ Code 1 -- Resume output when any character is received.
+
+Parameter 133, extension set 1 -- Alternate Attention, etc., character.
+
+ This character serves as a synonym for the Break, Attention, etc.,
+ key whose function is given by parameter 7.
+
+ Code 0 -- No ASCII character has this function
+ (there may still be a special key or other mechanism).
+ Codes 1 through 127 -- ASCII code of the character.
+
+Parameter 134, extension set 1 -- Local echo style.
+
+ This parameter selects how non-printing characters should be
+ echoed, when parameter 2 is set to 1. The default should be zero,
+ where all characters are simply echoed as themselves (except
+ possibly carriage return; see parameter 13).
+
+ Code 0 -- All characters echo as themselves.
+ Code 1 -- Non-editing control characters echo as ^X for some
+ printable character X.
+
+ See also parameters 2, Local echo, and 20, Echo mask, which may
+ suppress echo of some or all characters regardless of this
+ parameter.
+
+Parameter 135, extension set 1 -- Accept following character as data.
+
+ After typing this character, the next character entered is accepted
+ as data for transmission to the host even if it would normally have
+ a special meaning.
+
+ The default should be zero.
+
+
+
+Levy & Jacobson [Page 17]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ Code 0 -- No character has this function.
+ Codes 1 through 127 -- ASCII code of the character.
+
+Parameter 136, extension set 1 -- Character to toggle discarding output.
+
+ Typing this character changes the state of parameter 8 (discarding
+ host-to-user output) from 0 to 1 or from 1 to 0. Thus an
+ indeterminate amount of host output, received between successive
+ instances of this character, will be discarded.
+
+ As usual, the host should be notified of each change if parameter 0
+ is set to 1. The host might wish to send SET messages at
+ appropriate points (e.g., preceding command prompts) to re-enable
+ output.
+
+ The default should be zero.
+
+ Code 0 -- No character performs this function (though another
+ mechanism still may do so).
+
+ Codes 1 through 127 -- Typing that character toggles parameter 8.
+
+Parameter 137, extension set 1 -- User-to-host bits per character.
+
+Parameter 138, extension set 1 -- Host-to-user bits per character.
+
+ These parameters determine whether, for example, a full 8-bit input
+ or output data path is available, or whether the most significant
+ bit(s) of input or output data is stripped. Typical values would
+ be 7 or 8.
+
+ Note that an 8-bit data path does not by itself imply transparent
+ input/output; CR -> CR LF translation, XON/XOFF interpretation,
+ parity and so on must also be disabled to achieve this.
+
+7. Subsets, Extensions and Conflicts
+
+ An option as complex (and easy to extend) as this one, needs a policy
+ for what subsets and extensions are allowed, and recommendations for
+ negotiating one's way through a maze of partial implementations. In
+ short, what does it mean to say DO or WILL X.3-PAD?
+
+ A basic principle is that, since hardly any user telnet
+ implementation will provide all possible features, a host cannot
+ expect to get precisely any desired kind of service.
+
+ [This may be an arguable point. The CCITT defines a mandatory
+ subset of supported values for each X.3 parameter, with further
+
+
+
+Levy & Jacobson [Page 18]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ values optional. For example, the set of forwarding characters,
+ parameter 4, must accept at least the values 0 (none), 2 (carriage
+ return), and 126 (any control character or DEL). Though it would be
+ possible to adopt the CCITT's set of mandatory values there, I don't
+ think that would be desirable for two reasons.
+
+ First, some of the features specified (e.g., timed input) may be
+ hard to implement in some environments, and may well not be
+ necessary for many applications.
+
+ Second, this option provides for definition of entirely new
+ parameters. Unlike the X.3 case, one peer may use parameters whose
+ very existence is unknown to the other. So one cannot specify
+ mandatory or default values for ALL parameters.]
+
+ On the other hand, a host is at least entitled to know what kind of
+ service is being provided to the ultimate user. A user telnet's
+ status report may be incomplete (not describing features its
+ implementor did not know of); it may not describe the style of
+ interaction the host (or user, or application) would wish for, but it
+ should at least describe reality.
+
+ For telnet parameters with a range of possible values, if a user
+ telnet implements only one "enabled" and one "disabled" value, it
+ should choose the "enabled" value when asked for a setting it cannot
+ supply. A VMS telnet, for example, might allow only DEL or nothing
+ as the character-delete code. If a host asks it to use "backspace",
+ it should choose DEL rather than nothing. The host may then interpret
+ this contrary behavior as indicating a preferred value.
+
+ The problem of conflicting parameters, where several parameters
+ control overlapping services and may conflict, is a serious one. The
+ extension set scheme (see parameter 128) is intended to limit the
+ problem. Each extension set's parameters should be selfconsistent
+ and consistent with the CCITT X.3 parameters, but separate extension
+ sets need not be concerned with each other's parameters.
+
+ Where parameters might conflict, it is important to specify priority
+ as part of the parameters' description. For example, among
+ parameters 2 (Local echo), 20 (Echo mask), and extension set 1's 134
+ (Local echo style), Echo mask is significant only if Local echo is
+ enabled, and Local echo style applies only to characters selected for
+ echoing by the first two parameters.
+
+ This option's functions overlap with those of some existing Telnet
+ options, for example, ECHO (which can be interpreted to affect local
+ echo and possibly local line editing), NAOCRD and NAOLFD [6]
+ (specifying padding after output carriage returns and line feeds),
+
+
+
+Levy & Jacobson [Page 19]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ TRANSMIT-BINARY, Remote Controlled Transmission and Echo [3], and
+ SUPDUP [4].
+
+ Where X.3-PAD completely subsumes the function of another option, as
+ for ECHO, NAOCRD and NAOLFD, it's probably best to let the X.3-PAD
+ option, where acceptable to both sides, supplant them and to refuse
+ the other option.
+
+ The TRANSMIT-BINARY option can change (actually suppress) the
+ interpretation of some bits of parameter 13 related to Telnet newline
+ encoding, as mentioned under that parameter. As such it is
+ compatible with this option but must be kept in mind.
+
+ RCTE would be a much more difficult case, since its service does not
+ fit into this option's scheme and vice versa. However, it probably
+ is unimportant because of the scarcity of RCTE implementations.
+
+ Some existing Telnet options can serve related but complementary
+ functions, for example NAOHTS [7] for output tab handling, or
+ TERMINAL-TYPE [8].
+
+8. Implementation suggestions
+
+ It is strongly recommended that a user telnet support at least the
+ combination with parameters 2=0, 3=126, and 4=1 (no local echo,
+ forward immediately or nearly so on any input character) so that a
+ dissatisfied host has the option of backing off and doing its own
+ character handling.
+
+ The "discard output" function invoked by the Break, Interrupt,
+ Attention, etc., key if the 16's bit is set in parameter 7 may be
+ implemented as follows.
+
+ 1. When the key is pressed, set parameter 8 to 1, begin
+ discarding output, send IAC SB X.3-PAD IS 8 1 IAC SE to
+ notify the host. (It may not need to know, but the
+ message should be sent for consistency.)
+
+ 2. Send IAC DO TIMING-MARK.
+
+ 3. Send any other messages associated with the key (e.g.,
+ IAC IP).
+
+ 4. Eventually, the host should send either IAC WILL
+ TIMING-MARK or IAC WON'T TIMING-MARK, even if it knows
+ nothing about the TIMING-MARK option. It will probably
+ appear close, in the output stream, to the point where
+ the host recognized any associated messages (e.g., IP).
+
+
+
+Levy & Jacobson [Page 20]
+
+RFC 1053 Telnet X.3 PAD Option April 1988
+
+
+ When the TIMING-MARK arrives, reset parameter 8 to 0 and
+ cease discarding output. Send IAC SB X.3-PAD IS 8 0
+ IAC SE.
+
+ The Telnet SYNCH mechanism (see [2]) may be employed in concert with
+ such a scheme. A closed-loop flush, though, will be more effective
+ at discarding excess output than SYNCH used alone. Provision of some
+ such mechanism for discarding unwanted output, e.g., after
+ interrupting the host, is heartily recommended.
+
+ Discarding input is less clear cut. Certainly, any buffered data not
+ yet sent should be discarded; one might also use SYNCH to encourage
+ the host telnet to discard more.
+
+9. References
+
+ 1. Recommendation X.3, from International Telecommunications Union
+ CCITT Red Book, volume VIII, fascicle VIII.2, 1984.
+
+ 2. Postel, J., and J. Reynolds, "Telnet Protocol Specification",
+ RFC-854, USC Information Sciences Institute, May 1983.
+
+ 3. Postel, J., and D. Crocker, "Remote Controlled Transmission and
+ Echoing Telnet Option", RFC-726 and NIC-39237, SRI-ARC, March
+ 1977.
+
+ 4. Crispin, M., "SUPDUP Protocol", RFC-734 and NIC-41953, SU-AI
+ October 1977; Crispin, M., "Telnet SUPDUP Option", RFC-736 and
+ NIC-42213, SU-AI, October 1977; also Greenberg, B., "Telnet
+ SUPDUP-OUTPUT Option", RFC-749 and NIC-45499, MIT-Multics,
+ September 1978.
+
+ 5. Postel, J., and J. Reynolds, "Telnet Binary Transmission
+ Option", RFC-856, USC Information Sciences Institute, May 1983.
+
+ 6. Crocker, D., "Telnet Output Linefeed Disposition Option", RFC-
+ 658 and NIC-31161, UCLA-NMC, October 1974; and "Telnet Output
+ Carriage Return Disposition Option", RFC-652 and NIC-31155,
+ UCLA-NMC, October 1974.
+
+ 7. Crocker, D., "Telnet Output Horizontal Tab Stops Option", RFC-
+ 653 and NIC-31156, UCLA-NMC, October 1974. [RFC numbers 652
+ through 658 (NIC 31155 through 31161) are in a similar vein.]
+
+ 8. Solomon, M., and E. Wimmers, "Telnet Terminal Type Option",
+ RFC-884, University of Wisconsin - Madison, December 1983.
+
+
+
+
+
+Levy & Jacobson [Page 21]
+ \ No newline at end of file