diff options
Diffstat (limited to 'doc/rfc/rfc318.txt')
-rw-r--r-- | doc/rfc/rfc318.txt | 899 |
1 files changed, 899 insertions, 0 deletions
diff --git a/doc/rfc/rfc318.txt b/doc/rfc/rfc318.txt new file mode 100644 index 0000000..47f5df3 --- /dev/null +++ b/doc/rfc/rfc318.txt @@ -0,0 +1,899 @@ + + + + + + +Network Working Group Jon Postel +Request for Comments: 318 UCLA-NMC +NIC: 9348 April 3, 1972 +References: RFC 139, 158, and NIC 7104 + + + Telnet Protocol + + + At the October 1971 Network Working Group Meeting, I promised to + promptly produce a document which clearly and succinctly specified + and explained the Official Telnet Protocol. This document fails to + meet any part of that promise. This document was not produced + promptly. This document is neither clear nor succinct. There is NO + Official Telnet Protocol. + + The following pages present my understanding of the ad hoc Telnet + protocol. There are some who have serious questions about this + protocol. The proposed changes to the protocol are given in Section + IV. + + Any comments should be promptly directed to me via the Network + Information Center (Ident = JBP) or by phone (213) 825-2368 or by + mail. + + Jon Postel + SPADE Group + 3804 Boelter Hall + UCLA + Los Angeles, California 90024 + + + + + + + + + + + + + + + + + + + + + +Postel [Page 1] + +RFC 318 Telnet Protocol April 1972 + + +I. DEFINITION OF THE NETWORK VIRTUAL TERMINAL + + The Network Virtual Terminal (NVT) is a bi-directional character + device. The characters are represented by 8 bit codes. The NVT has + no timing characteristics. The character codes 0 through 127 are the + USASCII codes. (Note all code values are given in decimal.) The + codes 128 through 255 are used for special control signals. The NVT + is described as having a printer and a keyboard. The printer + responds to incoming data and the keyboard produces outgoing data. + +The Printer + + The NVT printer has an unspecified carriage width (common values are + 40, 72, 80, 120, 128, 132). The printer can produce representations + of all 95 USASCII graphics (codes 32 through 126). Of the 33 USASCII + control codes (0 through 31 and 127) the following 8 have specific + meaning to the NVT printer. + + NAME CODE MEANING + + NULL (NUL) 0 A no operation. + + BELL (BEL) 7 Produces an audible or visible signal. + + Back Space (BS) 8 Backspaces the printer one character + position. + + Horizontal Tab (HT) 9 Moves the printer to next horizontal + tab stop. + + Line Feed (LF) 10 Moves the printer to next line (keeping + the same horizontal position). + + Vertical Tab (VT) 11 Moves the printer to the next vertical + tab stop. + + Form Feed (FF) 12 Moves the printer to the top of the + next page. + + Carriage Return (CR) 13 Moves the printer to the left margin + of the current line. + + The remaining USASCII codes (1 through 6, 14 through 31, and 127) do + not cause the NVT printer to take any action. + + + + + + + +Postel [Page 2] + +RFC 318 Telnet Protocol April 1972 + + +The Keyboard + + The NVT Keyboard has keys or key combinations or key sequences for + generating all of the 128 USASCII codes. Note that although there + are codes which have no effect on the NVT printer, the NVT Keyboard + is capable of generating these codes. + +The End of the Line Convention + + The end of a line of text shall be indicated by the character + sequence Carriage Return Line Feed (CR, LF). This convention applies + to both the sending (Keyboard) and receiving (Printer) (virtual) + mechanisms. + +Break and Reverse Break + + The Telnet control signals provide a BREAK signal which can be used + to simulate the use of the break or attention or interrupt button + found on most terminals. This signal has no effect on the NVT. When + the BREAK Telnet control signal is used from server to user it is + sometimes called "reverse break". Such a reverse break has no effect + on the NVT. + +II. DEFINITION OF TELNET PROTOCOL + + The purpose of Telnet Protocol is to provide a standard method of + interfacing terminals devices at one site to processes at another + site. + + The Telnet Protocol is built up from three major substructures, first + the Initial Connection Protocol (ICP), second the Network Virtual + Terminal (NVT), and third the Telnet control signals described + herein. + + Telnet user and server processes follow the ICP to establish + connections. The term "Logger" has been associated with the set of + processes in the serving system which respond to the ICP and perform + the initial interactions e.g. obtain a name and password. The ICP is + defined and the initial socket number and byte size parameters are + defined in "Current Network Protocols" (NIC #7104). + + The data transmitted between the user and server programs (and vice + versa) is treated as a character stream with embedded control + signals. + + Note that all code values are given in decimal. + + + + + +Postel [Page 3] + +RFC 318 Telnet Protocol April 1972 + + +TELNET CONTROL SIGNALS + + NAME CODE MEANING + + DATA MARK 128 Used to mark a point in the data stream. + Used in conjunction with INS. See SYNCH. + + BREAK 129 User-to-Server: Has the same meaning to + the server as the "Break," "Interrupt," or + "Attention" button found on many terminals. + + Server-to-User: Has the same meaning to + to use as the "reverse break" used with + some terminals. + + NOP 130 No Operation. + + NO ECHO 131 User-to-Server: Asks the server not to + return Echos of the transmitted data. + + Server-to-User: States that the server is + not sending echos of the transmitted data. + Sent only as a reply to ECHO or NO ECHO, + or to end the hide your input. + + ECHO 132 User-to-Server: Asks the server to send + Echos of the transmitted data. + + Server-to User: States that the server is + sending echos of the transmitted data. + Sent only as a reply to ECHO or NO ECHO. + + Hide your input 133 The intention is that a server will send + this signal to a user system which is + echoing locally (to the user) when the user + is about to type something secret (e.g. a + password). In this case, the user system + is to suppress local echoing or overprint + the input (or something) until the server + sends a NOECHO signal. In situations where + the user system is not echoing locally, + this signal must not be sent by the server. + + INS --- This is the "Interrupt on Send" signal, + defined by the Host-to-Host protocol and + implemented by the Network Control Program + (NCP). See SYNCH. + + + + +Postel [Page 4] + +RFC 318 Telnet Protocol April 1972 + + + SYNCH --- This is a condition indicated by the + combination of the DATA MARK and the INS. + + User-to-Server: The Server is to examine + the input data stream looking for a DATA + MARK signal; if a DATA MARK is found, the + server must not process further until an + INS is received. If the server receives an + INS, it is required to examine the data + stream at once, taking any appropriate + action on "break type" characters (e.g. + etx, sub, BREAK), up to a DATA MARK signal + and thereupon continue its normal processing. + The passed over characters may be discarded. + + Server-to-User: If the user finds a DATA + MARK in the data stream, it must wait for + an INS. If the user receives an INS, it + must examine and discard characters up to + and including a DATA MARK. + +DATA TYPES + + Telnet normally deals in ASCII characters, but there are provisions + for escaping to other code sets. If one of these escapes is used, it + is undefined (here) whether or not the Telnet signals still have + meaning or even how to return to the ASCII set: The Telnet signals + used to indicate a change of code set are: + + CODE MEANING + + 160 ASCII - Standard Telnet + 161 Transparent + 162 EBCDIC + +USER TELNET SIGNALS + + The following signals are to be available to the human user to cause + the user Telnet to take the indicated action. + + Transmit Now - Transmit all data entered and locally + buffered now. Intended to be used with line + mode. + + Suppress end-of-line - Transmit all data entered and locally + buffered now, and do not transmit the + end-of-line immediately following this signal. + + + + +Postel [Page 5] + +RFC 318 Telnet Protocol April 1972 + + +STANDARD TELNET IMPLEMENTATION + + Using Site + + 1) User is able to enter and transmit all ASCII codes + + 2) User is able to cause the Telnet signals BREAK, SYNCH, ECHO and + NOECHO to be transmitted. + + 3) Provides for the User Telnet signals, (e.g. Transmit Now). + + 4) Implements the CR LF end-of-line convention. + + 5) Provides local echo for local user terminals. + + 6) Correctly processes the Telnet signals BREAK, SYNCH, NOP, ECHO, + NOECHO, and Hide Your Input received from the server. + + Serving Site: + + 1) Provides a mapping between ASCII and the local character set. + + 2) Correctly processes the Telnet signals BREAK, SYNCH, NOP, NOECHO, + and ECHO. + + 3) Implements the CR LF end-of-line convention. + + 4) Assumes the using site provides echoing. May provide a server + echo mode. + +MINIMUM TELNET IMPLEMENTATION + + Using Site: + + 1) User must be able to enter and transmit all ASCII codes. + + 2) Ignore and delete all Telnet signals from the serving site. + + 3) Provide local echo for local user terminals. + + 4) Implements CR LF end-of-line convention. + + 5) Provide for the User Telnet signals. + + + + + + + + +Postel [Page 6] + +RFC 318 Telnet Protocol April 1972 + + + Serving Site: + + 1) Provide a mapping between ASCII and the local character set. + + 2) Ignore and Delete all Telnet signals from the using site. + + 3) Assume the using site provides echoing. + + 4) Implements the CR LF end-of-line convention. + +III. DISCUSSION OF TELNET PROTOCOL + + The use of a standard, network-wide, intermediate representation of + terminal code between sites is intended to eliminate the need for + using and serving sites to keep information about the characteristics + of each other's terminals and terminal handling conventions. This + approach can be successful, but only if the user, the using site, and + the serving site assume certain responsibilities. + + 1. The serving site must specify how the intermediate code will be + mapped by it into the terminal codes that are expected at that + site. + + 2. The user must be familiar with that mapping. + + 3. The using site must provide some means for the user to enter all + of the intermediate codes, and as a convenience, special Telnet + signals, as well as specify for the user how the signals from the + serving site will be presented at the user terminal. + + Other schemes were considered but rejected. For example, a proposal + that the using site be responsible for translating to and from the + code expected by the serving site was rejected since it required that + the using site keep tables of all serving site codes and provide a + mapping for each case. The information would require constant + maintenance as new hosts were added to the network. + +Character Set + + Since it is not known how the current or future sites will specify + the mapping between the network-wide standard code (7 bit ASCII in an + 8 bit field) and the codes expected from their own terminals, it + seems necessary to permit the user to cause transmission of every one + of the 128 ASCII codes, plus (for full user power) selected signals + (either of a Telnet control nature, or of a special terminal nature + such as break or attention). + + + + + +Postel [Page 7] + +RFC 318 Telnet Protocol April 1972 + + + There was strong feeling about the importance of the user/system + interface at the using site, but equally strong feeling that this + problem is one of local implementation and should reflect the using + site installation philosophy rather than be subject to network-wide + standards. Some topics of consideration in this area are: + + 1. How to represent special graphics, not available at the using + site, at the user's terminal. + + 2. Treatment of upper/lower case problem on upper case only + devices. + + a. Representing lower-case output. + + b. Providing users with shift and shiftlock signals. + + 3. Incorporating editing capability in Telnet. + + 4. Extending user options in Network mode not available to local + users, e.g., hold output or kill print. + + 5. Permit users to specify how keyboard input is to the + translated, e.g., let a character from the terminal cause a + specified string to be sent by the user's Telnet. + + The proposed solution to the Telnet Protocol problem seems to provide + a mechanism for a minimum implementation while providing a basis for + developing richer sets or protocol for present and future use in + terminal applications, process-process communications, and use by + other conventions to pass data or control information. + + The understanding that ASCII be used as a network-wide code has been + established for some time. Its use in Telnet provided a problem with + respect to the limitation of a maximum character set of 128. Some + systems provide for more than this number in their operation, and + therefore, as serving sites, cannot map on a one-for-one basis. + + Each such serving site could probably provide a reasonably useful + character set, including all system control signals, by mapping 128 + of its codes and just not provide a network user access to the other + codes. However, any character left out might later be used in a + major application at that site as a special control signal. This + could result in denying network users the facility offered by that + application. Serving sites are, therefore, encouraged to provide a + full mapping between the ASCII code and the code used on the serving + system. This may require that the server specify two character ASCII + sequences which map to single characters in the servers character + set. + + + +Postel [Page 8] + +RFC 318 Telnet Protocol April 1972 + + + Notice that there are some ASCII codes which have no effect on the + NVT printer. These codes must be transmitted over the network when + output by the serving process or by entered by the user. + +End of Line Convention + + The representation of the end of a physical line at a terminal is + implemented differently on different network hosts. For example, + some use a return (or new line) key, the terminal hardware both + returns the carriage or printer to start of line and feeds the paper + to the next line. In other implementations, the user hits carriage + return and the hardware returns carriage while the software sends the + terminal a line feed. The network-wide representation is carriage + return followed by line feed. It represents the physical formatting + that is being attempted, and is to be interpreted and appropriately + translated by both using site and serving site. + + EXAMPLE: A Multics user is working, through the network, on some + serving site host. In the course of the session the user has + numerous occasions to hit New Line on his Model 37 TTY. Each time + the Multics system is awakened by a New Line interrupt, the line + of buffered characters is passed to Telnet where it is scanned for + special characters. If none is found, carriage return followed by + line feed is inserted where New Line was entered, and the line is + turned over the NCP for transmission. Correspondingly, when the + Multics Telnet finds the carriage return line feed sequence in the + data stream coming from the serving site, the two characters are + replaced with the appropriate New Line code which is sent to the + terminal. + + Telnet defines the end of a line to be indicated by the ASCII + character pair CR LR. Several of the real devices in the world have + only a single new line (NL) function. Several of the computer + systems have in some programs used the CR and LF functions to have + semantic meaning larger than the format effect they provide. + Further, several computer systems allow the CR and LF functions to be + used separately (e.g., such that a line may be overprinted). One + problem, for those Telnet (user) programs required to map the NVT + into a device which only has a NL function, is how is the CR LF to be + dealt with. One solution is to examine the character following the + CR. If an LF is found, then perform the NL function; if anything + else is found then back space to the beginning of the line. Another + problem is the case of a computer system which locally uses period, + ".", to cause the new line function and which uses, in some programs, + CR and LF for semantically significant operations. Suppose the user + Telnet sends the sequence CR LF. Does this mean "new line" or the + "CR operation" followed by the "LF operation "? A solution to this + problem it to require that Telnet programs send a CR NOT intended to + + + +Postel [Page 9] + +RFC 318 Telnet Protocol April 1972 + + + be part of a CR LF pair as a CR NUL pair. Then the receiving program + can always hold a CR and examine the next character to determine if a + new line function is intended. This solution is strongly + recommended. + + One other question arises here, "Is it permitted to send the Telnet + signal NOP (code 130) between a CR and a LF when these are intended + to signify new line?" The answer is "yes, the NOP signal may occur + anywhere in the data stream." + +Echoing + + The decision to have the assumed condition for echo be that the using + site will provide any echo necessary for its terminals was taken + because of the difficulties faced by some installations that cannot + turn off their echo or that have terminals that print locally as a + result of key strokes. Serving sites could take the position "have + user turn echo off," but this seems an unnecessary burden on the + user. In addition, some serving sites may choose not to supply any + echo service, in which case the no echo assumption will supply a + network-wide condition, while other assumptions would give a mixed + starting condition. + + The convention of using "ECHO," "NO ECHO" signals seems to fill both + the requirements for dynamic echo control and for a minimum + implementation of Telnet Protocol. Note that when the user request + ECHO or NO ECHO the server replies by switching to the desired mode + (and possibly returning the signal for the new mode), or by + continuing in the current mode and returning the signal for the + current mode. The server never spontaneously sends an ECHO or NO + ECHO signal. Except that a NOECHO may be used to cancel a HIDE YOUR + INPUT. + +Hide Your Input + + The HIDE YOUR INPUT signal presents some difficulty in that it is + unclear how much is to be hidden. The server site usually knows how + long the secret is but the user Telnet in general does not. + Furthermore, if the user site cannot suppress the local echoing, + there is a difficult implementation problem. One possibility is for + the using site to overprint a full line with a mask, then have the + user type his secret on the mask. If the secret were longer than one + line, the use of the mask should be repeated. + + The use of HIDE YOUR INPUT can be avoided altogether by having the + serving site send a mask (which it knows to be just long enough) on + which the user is to type the secret information. + + + + +Postel [Page 10] + +RFC 318 Telnet Protocol April 1972 + + + EXAMPLE: + + 1. Default assumption is user site is echoing + + 2. Server-to User: Password Please CR LF + + 3. Server-to-User: XXXXCRIIIIICRMMMMCR NUL + + 4. User-to-Server: "password" CR LF + + 5. Server-to-User: Ready CR LF + +Breaks and Attentions + + There is a special control signal on some terminals that has no + corresponding bit pattern in ASCII, but is transmitted by a special + electrical signal. This control signal is Attn on a 2741 and Break + on a Teletype. This signal is represented by the Telnet control + signal BREAK. There is a corresponding control signal for use from + serving sites to using sites for reverse break. Notice, however, + that the NVT is a bi-directional character device, thus there is no + need to "turn the line around". + + Some systems treat the Break as an extra code available for use in + conjunction with the data stream. For example, one system uses Break + as a special editing code meaning "delete the current line to this + point." In these cases, the code may simply be inserted in the data + stream with no special additional action by the user. + + Other systems use Break or Attn in special interrupt fashion, to mean + stop processing the application and give me the supervisor, or cancel + the present job, etc. (Other systems which inspect input on a + character at a time basis use normal characters for this purpose, + such as <etx>.) In these cases, because of differences in the ways + both serving and using sites operate, it is necessary to take a route + in addition to the normal Telnet data stream to indicate that the + special control signal is embedded in the data stream. + + Example -- Problem: + + The PDP-10 normally will, when it fills its input buffer, continue + to accept characters from a terminal examining each to see if it + is a control character, then act on it if it is or throw it away + if it is not. + + Since the Telnet server at the serving site is at the mercy of the + NCP with respect to controlling the bunching, and therefore, + arrival at the Telnet of bursts of characters, Telnet + + + +Postel [Page 11] + +RFC 318 Telnet Protocol April 1972 + + + implementations might be expected to choke off flow to the buffers + until they are ready to accept characters without throwing them + away. + + Under this condition, the serving process might be outputting to + the using terminal, the input buffers at the server fill up, (with + user generated characters) and <etx> get stuck (at the user's + site) in the data stream that has been choked off. + + A similar problem could occur with Multics or some IBM system as a + line at a time server. The user at a using site gets his process at + the serving site into an output loop and wants to break the process + without having to release his Telnet connection. The buffers clog + the connection, transmission is choked off, and the <etx>, Break, or + other user control signal gets stuck in the pipeline. + + Example -- Solution: + + The user at the using site knows he is entering a special control + signal (Break, Attn, <etx>, etc.) and follows it with a SYNCH. + (The local instructions at using sites for accomplishing this may + differ from site to site.) + + User to Using Site Telnet + + Send SYNCH. + + Using Site Telnet to Serving Site Telnet: + + DATA MARK in Data Stream. + + Using Site Telnet to Using Site NCP: + + Send an INS. + + Serving Site NCP to Telnet Server: + + Interrupt "INS received". + + Serving Site Telnet: + + Examines the input data stream (looking for special control + signals) until it sees DATA MARK then resumes normal + handling. + + Thus, depending on the server's local implementation to + provide adequate service, a special handling of the data + stream can be invoked whenever an INS is received in order + + + +Postel [Page 12] + +RFC 318 Telnet Protocol April 1972 + + + to get to the special character. When it sees DATA MARK, it + recognizes it as a synchronization point and knowing that + the special character has been passed on, strips the DATA + MARK from the data stream and returns to normal mode. + + If the DATA MARK arrives before the INS, the serving site + should not process the data stream further until an INS is + received. + + This approach to handling selected special characters or signals + relieves the using Telnet processes from having to recognize the + special serving site characters, as well as from having to know how + the serving site wants to handle them. At the same time, the + procedure requires only a minimum level of user understanding of the + serving site. This seems appropriate, since the Telnet ASCII + conventions are providing a Network Virtual Terminal, not a Network + Virtual User. + + Notice that the correct order is (1) special character or signal + (e.g. BREAK or <etx>), then (2) SYNCH. + +User Telnet Signals + + The ability of the user to cause the using site Telnet to send any + combination of ASCII characters in a string, and only that + combination, is viewed as important to the user utility of the Telnet + ASCII conventions. Because of this, some user sites may find it + necessary to provide special local Telnet signals from the human user + to the using site Telnet. + + Example: + + A user on a line at a time system (Multics, System 360, GCOS, + etx.), which require an end of line signal before processing the + user's input, is working through the Network on a serving site + that operates a character at a time. The application is a + debugging aid that permits the user to type in "location=" to + which it will respond with n where n represents the current + contents of that location. The serving site process does not + expect to see the "location=" followed by a carriage return line + feed sequence. The user at the using site should be able to type + in the location, follow it with a signal (to the user Telnet) to + suppress the end of line convention, followed by the end of line + signal, and expect the "location=" to be transmitted immediately + without an end of line sequence being transmitted to the server. + + + + + + +Postel [Page 13] + +RFC 318 Telnet Protocol April 1972 + + + Example: + + In another case, a using site has decided that it is convenient to + accumulate four characters at a time and transmit them to the + serving site, unless an end of line signal is observed, in which + case the end of line sequence is sent preceded by whatever number + of characters have been accumulated (presumably three or less). + In the same debugging application, the address is such that the + end does not correspond with the four character buffer + demarcation. The user should have the ability to enter a code for + "transmit immediately" in place of the end of line signal in order + to preserve neat formatting, and expect the address to be sent to + the serving site. + + Telnet Signals have been discussed and those introduced to date are + probably sufficient for an implementation of Telnet ASCII convention. + +Terminology + + ASCII - The USASCII character set as defined in NIC # 7104. + In Telnet Protocol, where eight bit codes are used + the lower half of the code set is defined to be + ASCII. + + echoing - The display of a character entered is called echoing. + There are two modes in which this happens. If + the device used to enter characters displays the + character before (or as) it transmits the character + to the computer the echoing mode is called "local + echo." If, on the other hand, the device transmits + the entered character to the computer without + displaying it and the computer then transmits a + character to the device for the echo display, this + echoing mode is called "remote echo." + + character mode - In this mode of operation Telnet transmits each + character as soon as possible. Generally speaking, + character mode is used when all of the using terminal, + using system, and serving system are operating + in a remote echo mode. The echos to the user + entered characters are transmitted from the serving + system (i.e., over the network). + + line mode - In this mode of operation Telnet transmits groups + of characters which constitute lines. Generally + speaking, this mode is used when one or more of + the using terminal, using system, or serving + + + + +Postel [Page 14] + +RFC 318 Telnet Protocol April 1972 + + + system is operating in a local echo mode. The + echos to the user entered characters are not + transmitted over the network). + + full duplex - This term indicates a transmission procedure using + a four wire connection, which permits simultaneous + transmission in both directions. + + half duplex - This term indicates a transmission procedure using + a two wire connection, which requires that data be + transmitted in only one direction at at time. + + Note that half duplex devices usually are also local echo but that + full duplex devices may be either local echo or remote echo. + +IV. PROPOSED CHANGES TO TELNET PROTOCOL + + The changes suggested here are not my ideas, thus the presentation may + be faulty. I welcome RFC or other communication suggesting other + changes or better arguments for and against these changes. + +Echoing + + It is proposed to delete from Telnet the control signals ECHO, NOECHO, + and HIDE YOUR INPUT. For Server systems which do not provide echoing, + these commands are useless. For server systems which do provide + echoing experience has shown that the control is most effectively + provided by server system commands. + +Data Types + + It is proposed to delete all mention of data types from Telnet. + Either the character stream is ASCII or its not a Telnet + communication. If it is really necessary to change the data type, a + command in ASCII could be sent in the data stream. + +Minimum Implementation + + It is proposed that the minimum implementation require the user Telnet + to allow the user to send and the server Telnet to correctly process + all the Telnet control signals. + + + + + + + + + + +Postel [Page 15] + +RFC 318 Telnet Protocol April 1972 + + + The work on Telnet Protocol has involved many people. This document + is taken from RFC's #139 and #158 by Tom O'Sullivan. Others who + have served on committees are: + + Bob Bressler MIT-DMCG + + Will Crowther BBN + + Bob Long SDC + + Alex McKenzie BBN + + John Melvin SRI-ARC + + Bob Metcalfe MIT-DMCG + + Ed Meyer MIT-Multics + + Tol O'Sullivan Raytheon + + Mike Padlipsky Mit-Multics + + Jon Postel UCLA-NMC + + Bob Sundberg Harvard + + Joel Winett LL + + Steve Wolfe UCLA-CCN + + + + + + + + [This RFC was put into machine readable form for entry] + [into the online RFC archives by Kelly Tardif, Viaginie 10/99] + + + + + + + + + + + + + +Postel [Page 16] + |