1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
---|
2 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://dublincore.org/documents/2008/08/04/dc-html/">
|
---|
3 | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
---|
4 | <meta name="robots" content="index,follow">
|
---|
5 | <meta name="creator" content="rfcmarkup version 1.101">
|
---|
6 | <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/">
|
---|
7 | <meta name="DC.Relation.Replaces" content="rfc764">
|
---|
8 | <meta name="DC.Identifier" content="urn:ietf:rfc:854">
|
---|
9 | <meta name="DC.Date.Issued" content="May, 1983">
|
---|
10 | <meta name="DC.Creator" content="Postel, J.">
|
---|
11 | <meta name="DC.Creator" content="Reynolds, J.K.">
|
---|
12 | <meta name="DC.Description.Abstract" content="This is the specification of the Telnet protocol used for remote\nterminal access in the ARPA Internet. The purpose of the TELNET\nProtocol is to provide a fairly general, bi-directional, eight-bit\nbyte oriented communications facility. Its primary goal is to allow a\nstandard method of interfacing terminal devices and terminal-oriented\nprocesses to each other. It is envisioned that the protocol may also\nbe used for terminal-terminal communication ("linking") and process-\nprocess communication (distributed computation). This RFC specifies a\nstandard for the ARPA Internet community. Hosts on the ARPA Internet\nare expected to adopt and implement this standard. Obsoletes NIC\n18639.">
|
---|
13 | <meta name="DC.Title" content="Telnet Protocol Specification">
|
---|
14 |
|
---|
15 | <link rel="icon" href="http://tools.ietf.org/images/rfc.png" type="image/png">
|
---|
16 | <link rel="shortcut icon" href="http://tools.ietf.org/images/rfc.png" type="image/png">
|
---|
17 | <title>RFC 854 - Telnet Protocol Specification</title>
|
---|
18 |
|
---|
19 |
|
---|
20 | <style type="text/css">
|
---|
21 | body {
|
---|
22 | margin: 0px 8px;
|
---|
23 | font-size: 1em;
|
---|
24 | }
|
---|
25 | h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
|
---|
26 | font-weight: bold;
|
---|
27 | line-height: 0pt;
|
---|
28 | display: inline;
|
---|
29 | white-space: pre;
|
---|
30 | font-family: monospace;
|
---|
31 | font-size: 1em;
|
---|
32 | font-weight: bold;
|
---|
33 | }
|
---|
34 | pre {
|
---|
35 | font-size: 1em;
|
---|
36 | margin-top: 0px;
|
---|
37 | margin-bottom: 0px;
|
---|
38 | }
|
---|
39 | .pre {
|
---|
40 | white-space: pre;
|
---|
41 | font-family: monospace;
|
---|
42 | }
|
---|
43 | .header{
|
---|
44 | font-weight: bold;
|
---|
45 | }
|
---|
46 | .newpage {
|
---|
47 | page-break-before: always;
|
---|
48 | }
|
---|
49 | .invisible {
|
---|
50 | text-decoration: none;
|
---|
51 | color: white;
|
---|
52 | }
|
---|
53 | a.selflink {
|
---|
54 | color: black;
|
---|
55 | text-decoration: none;
|
---|
56 | }
|
---|
57 | @media print {
|
---|
58 | body {
|
---|
59 | font-family: monospace;
|
---|
60 | font-size: 10.5pt;
|
---|
61 | }
|
---|
62 | h1, h2, h3, h4, h5, h6 {
|
---|
63 | font-size: 1em;
|
---|
64 | }
|
---|
65 |
|
---|
66 | a:link, a:visited {
|
---|
67 | color: inherit;
|
---|
68 | text-decoration: none;
|
---|
69 | }
|
---|
70 | .noprint {
|
---|
71 | display: none;
|
---|
72 | }
|
---|
73 | }
|
---|
74 | @media screen {
|
---|
75 | .grey, .grey a:link, .grey a:visited {
|
---|
76 | color: #777;
|
---|
77 | }
|
---|
78 | .docinfo {
|
---|
79 | background-color: #EEE;
|
---|
80 | }
|
---|
81 | .top {
|
---|
82 | border-top: 7px solid #EEE;
|
---|
83 | }
|
---|
84 | .bgwhite { background-color: white; }
|
---|
85 | .bgred { background-color: #F44; }
|
---|
86 | .bggrey { background-color: #666; }
|
---|
87 | .bgbrown { background-color: #840; }
|
---|
88 | .bgorange { background-color: #FA0; }
|
---|
89 | .bgyellow { background-color: #EE0; }
|
---|
90 | .bgmagenta{ background-color: #F4F; }
|
---|
91 | .bgblue { background-color: #66F; }
|
---|
92 | .bgcyan { background-color: #4DD; }
|
---|
93 | .bggreen { background-color: #4F4; }
|
---|
94 |
|
---|
95 | .legend { font-size: 90%; }
|
---|
96 | .cplate { font-size: 70%; border: solid grey 1px; }
|
---|
97 | }
|
---|
98 | </style>
|
---|
99 | <!--[if IE]>
|
---|
100 | <style>
|
---|
101 | body {
|
---|
102 | font-size: 13px;
|
---|
103 | margin: 10px 10px;
|
---|
104 | }
|
---|
105 | </style>
|
---|
106 | <![endif]-->
|
---|
107 |
|
---|
108 | <script type="text/javascript"><!--
|
---|
109 | function addHeaderTags() {
|
---|
110 | var spans = document.getElementsByTagName("span");
|
---|
111 | for (var i=0; i < spans.length; i++) {
|
---|
112 | var elem = spans[i];
|
---|
113 | if (elem) {
|
---|
114 | var level = elem.getAttribute("class");
|
---|
115 | if (level == "h1" || level == "h2" || level == "h3" || level == "h4" || level == "h5" || level == "h6") {
|
---|
116 | elem.innerHTML = "<"+level+">"+elem.innerHTML+"</"+level+">";
|
---|
117 | }
|
---|
118 | }
|
---|
119 | }
|
---|
120 | }
|
---|
121 | var legend_html = "Colour legend:<br /> <table> <tr><td>Unknown:</td> <td><span class='cplate bgwhite'> </span></td></tr> <tr><td>Draft:</td> <td><span class='cplate bgred'> </span></td></tr> <tr><td>Informational:</td> <td><span class='cplate bgorange'> </span></td></tr> <tr><td>Experimental:</td> <td><span class='cplate bgyellow'> </span></td></tr> <tr><td>Best Common Practice:</td><td><span class='cplate bgmagenta'> </span></td></tr> <tr><td>Proposed Standard:</td><td><span class='cplate bgblue'> </span></td></tr> <tr><td>Draft Standard:</td> <td><span class='cplate bgcyan'> </span></td></tr> <tr><td>Standard:</td> <td><span class='cplate bggreen'> </span></td></tr> <tr><td>Historic:</td> <td><span class='cplate bggrey'> </span></td></tr> <tr><td>Obsolete:</td> <td><span class='cplate bgbrown'> </span></td></tr> </table>";
|
---|
122 | function showElem(id) {
|
---|
123 | var elem = document.getElementById(id);
|
---|
124 | elem.innerHTML = eval(id+"_html");
|
---|
125 | elem.style.visibility='visible';
|
---|
126 | }
|
---|
127 | function hideElem(id) {
|
---|
128 | var elem = document.getElementById(id);
|
---|
129 | elem.style.visibility='hidden';
|
---|
130 | elem.innerHTML = "";
|
---|
131 | }
|
---|
132 | // -->
|
---|
133 | </script>
|
---|
134 | </head>
|
---|
135 | <body onload="addHeaderTags()">
|
---|
136 | <div style="height: 13px;">
|
---|
137 | <div onmouseover="this.style.cursor='pointer';" onclick="showElem('legend');" onmouseout="hideElem('legend')" style="height: 6px; position: absolute;" class="pre noprint docinfo bggreen" title="Click for colour legend."> </div>
|
---|
138 | <div id="legend" class="docinfo noprint pre legend" style="position:absolute; top: 4px; left: 4ex; visibility:hidden; background-color: white; padding: 4px 9px 5px 7px; border: solid #345 1px; " onmouseover="showElem('legend');" onmouseout="hideElem('legend');">
|
---|
139 | </div>
|
---|
140 | </div>
|
---|
141 | <span class="pre noprint docinfo top">[<a href="http://tools.ietf.org/html/" title="Document search and retrieval page">Docs</a>] [<a href="http://tools.ietf.org/rfc/rfc854.txt" title="Plaintext version of this document">txt</a>|<a href="http://tools.ietf.org/pdf/rfc854" title="PDF version of this document">pdf</a>] [<a href="http://www.rfc-editor.org/errata_search.php?rfc=854">Errata</a>] </span><br>
|
---|
142 | <span class="pre noprint docinfo"> </span><br>
|
---|
143 | <span class="pre noprint docinfo">Updated by: <a href="http://tools.ietf.org/html/rfc5198">5198</a> STANDARD</span><br>
|
---|
144 | <span class="pre noprint docinfo"> <span style="color: #C00;">Errata Exist</span></span><br>
|
---|
145 | <pre>Network Working Group J. Postel
|
---|
146 | Request for Comments: 854 J. Reynolds
|
---|
147 | ISI
|
---|
148 | Obsoletes: NIC 18639 May 1983
|
---|
149 |
|
---|
150 | <span class="h1"><h1>TELNET PROTOCOL SPECIFICATION</h1></span>
|
---|
151 |
|
---|
152 |
|
---|
153 | This RFC specifies a standard for the ARPA Internet community. Hosts on
|
---|
154 | the ARPA Internet are expected to adopt and implement this standard.
|
---|
155 |
|
---|
156 | INTRODUCTION
|
---|
157 |
|
---|
158 | The purpose of the TELNET Protocol is to provide a fairly general,
|
---|
159 | bi-directional, eight-bit byte oriented communications facility. Its
|
---|
160 | primary goal is to allow a standard method of interfacing terminal
|
---|
161 | devices and terminal-oriented processes to each other. It is
|
---|
162 | envisioned that the protocol may also be used for terminal-terminal
|
---|
163 | communication ("linking") and process-process communication
|
---|
164 | (distributed computation).
|
---|
165 |
|
---|
166 | GENERAL CONSIDERATIONS
|
---|
167 |
|
---|
168 | A TELNET connection is a Transmission Control Protocol (TCP)
|
---|
169 | connection used to transmit data with interspersed TELNET control
|
---|
170 | information.
|
---|
171 |
|
---|
172 | The TELNET Protocol is built upon three main ideas: first, the
|
---|
173 | concept of a "Network Virtual Terminal"; second, the principle of
|
---|
174 | negotiated options; and third, a symmetric view of terminals and
|
---|
175 | processes.
|
---|
176 |
|
---|
177 | 1. When a TELNET connection is first established, each end is
|
---|
178 | assumed to originate and terminate at a "Network Virtual Terminal",
|
---|
179 | or NVT. An NVT is an imaginary device which provides a standard,
|
---|
180 | network-wide, intermediate representation of a canonical terminal.
|
---|
181 | This eliminates the need for "server" and "user" hosts to keep
|
---|
182 | information about the characteristics of each other's terminals and
|
---|
183 | terminal handling conventions. All hosts, both user and server, map
|
---|
184 | their local device characteristics and conventions so as to appear to
|
---|
185 | be dealing with an NVT over the network, and each can assume a
|
---|
186 | similar mapping by the other party. The NVT is intended to strike a
|
---|
187 | balance between being overly restricted (not providing hosts a rich
|
---|
188 | enough vocabulary for mapping into their local character sets), and
|
---|
189 | being overly inclusive (penalizing users with modest terminals).
|
---|
190 |
|
---|
191 | NOTE: The "user" host is the host to which the physical terminal
|
---|
192 | is normally attached, and the "server" host is the host which is
|
---|
193 | normally providing some service. As an alternate point of view,
|
---|
194 |
|
---|
195 |
|
---|
196 |
|
---|
197 |
|
---|
198 | <span class="grey">Postel & Reynolds [Page 1]</span>
|
---|
199 | </pre><!--NewPage--><pre class="newpage"><a name="page-2" id="page-2" href="#page-2" class="invisible"> </a>
|
---|
200 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
201 |
|
---|
202 |
|
---|
203 | applicable even in terminal-to-terminal or process-to-process
|
---|
204 | communications, the "user" host is the host which initiated the
|
---|
205 | communication.
|
---|
206 |
|
---|
207 | 2. The principle of negotiated options takes cognizance of the fact
|
---|
208 | that many hosts will wish to provide additional services over and
|
---|
209 | above those available within an NVT, and many users will have
|
---|
210 | sophisticated terminals and would like to have elegant, rather than
|
---|
211 | minimal, services. Independent of, but structured within the TELNET
|
---|
212 | Protocol are various "options" that will be sanctioned and may be
|
---|
213 | used with the "DO, DON'T, WILL, WON'T" structure (discussed below) to
|
---|
214 | allow a user and server to agree to use a more elaborate (or perhaps
|
---|
215 | just different) set of conventions for their TELNET connection. Such
|
---|
216 | options could include changing the character set, the echo mode, etc.
|
---|
217 |
|
---|
218 | The basic strategy for setting up the use of options is to have
|
---|
219 | either party (or both) initiate a request that some option take
|
---|
220 | effect. The other party may then either accept or reject the
|
---|
221 | request. If the request is accepted the option immediately takes
|
---|
222 | effect; if it is rejected the associated aspect of the connection
|
---|
223 | remains as specified for an NVT. Clearly, a party may always refuse
|
---|
224 | a request to enable, and must never refuse a request to disable some
|
---|
225 | option since all parties must be prepared to support the NVT.
|
---|
226 |
|
---|
227 | The syntax of option negotiation has been set up so that if both
|
---|
228 | parties request an option simultaneously, each will see the other's
|
---|
229 | request as the positive acknowledgment of its own.
|
---|
230 |
|
---|
231 | 3. The symmetry of the negotiation syntax can potentially lead to
|
---|
232 | nonterminating acknowledgment loops -- each party seeing the incoming
|
---|
233 | commands not as acknowledgments but as new requests which must be
|
---|
234 | acknowledged. To prevent such loops, the following rules prevail:
|
---|
235 |
|
---|
236 | a. Parties may only request a change in option status; i.e., a
|
---|
237 | party may not send out a "request" merely to announce what mode it
|
---|
238 | is in.
|
---|
239 |
|
---|
240 | b. If a party receives what appears to be a request to enter some
|
---|
241 | mode it is already in, the request should not be acknowledged.
|
---|
242 | This non-response is essential to prevent endless loops in the
|
---|
243 | negotiation. It is required that a response be sent to requests
|
---|
244 | for a change of mode -- even if the mode is not changed.
|
---|
245 |
|
---|
246 | c. Whenever one party sends an option command to a second party,
|
---|
247 | whether as a request or an acknowledgment, and use of the option
|
---|
248 | will have any effect on the processing of the data being sent from
|
---|
249 | the first party to the second, then the command must be inserted
|
---|
250 | in the data stream at the point where it is desired that it take
|
---|
251 |
|
---|
252 |
|
---|
253 | <span class="grey">Postel & Reynolds [Page 2]</span>
|
---|
254 | </pre><!--NewPage--><pre class="newpage"><a name="page-3" id="page-3" href="#page-3" class="invisible"> </a>
|
---|
255 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
256 |
|
---|
257 |
|
---|
258 | effect. (It should be noted that some time will elapse between
|
---|
259 | the transmission of a request and the receipt of an
|
---|
260 | acknowledgment, which may be negative. Thus, a host may wish to
|
---|
261 | buffer data, after requesting an option, until it learns whether
|
---|
262 | the request is accepted or rejected, in order to hide the
|
---|
263 | "uncertainty period" from the user.)
|
---|
264 |
|
---|
265 | Option requests are likely to flurry back and forth when a TELNET
|
---|
266 | connection is first established, as each party attempts to get the
|
---|
267 | best possible service from the other party. Beyond that, however,
|
---|
268 | options can be used to dynamically modify the characteristics of the
|
---|
269 | connection to suit changing local conditions. For example, the NVT,
|
---|
270 | as will be explained later, uses a transmission discipline well
|
---|
271 | suited to the many "line at a time" applications such as BASIC, but
|
---|
272 | poorly suited to the many "character at a time" applications such as
|
---|
273 | NLS. A server might elect to devote the extra processor overhead
|
---|
274 | required for a "character at a time" discipline when it was suitable
|
---|
275 | for the local process and would negotiate an appropriate option.
|
---|
276 | However, rather than then being permanently burdened with the extra
|
---|
277 | processing overhead, it could switch (i.e., negotiate) back to NVT
|
---|
278 | when the detailed control was no longer necessary.
|
---|
279 |
|
---|
280 | It is possible for requests initiated by processes to stimulate a
|
---|
281 | nonterminating request loop if the process responds to a rejection by
|
---|
282 | merely re-requesting the option. To prevent such loops from
|
---|
283 | occurring, rejected requests should not be repeated until something
|
---|
284 | changes. Operationally, this can mean the process is running a
|
---|
285 | different program, or the user has given another command, or whatever
|
---|
286 | makes sense in the context of the given process and the given option.
|
---|
287 | A good rule of thumb is that a re-request should only occur as a
|
---|
288 | result of subsequent information from the other end of the connection
|
---|
289 | or when demanded by local human intervention.
|
---|
290 |
|
---|
291 | Option designers should not feel constrained by the somewhat limited
|
---|
292 | syntax available for option negotiation. The intent of the simple
|
---|
293 | syntax is to make it easy to have options -- since it is
|
---|
294 | correspondingly easy to profess ignorance about them. If some
|
---|
295 | particular option requires a richer negotiation structure than
|
---|
296 | possible within "DO, DON'T, WILL, WON'T", the proper tack is to use
|
---|
297 | "DO, DON'T, WILL, WON'T" to establish that both parties understand
|
---|
298 | the option, and once this is accomplished a more exotic syntax can be
|
---|
299 | used freely. For example, a party might send a request to alter
|
---|
300 | (establish) line length. If it is accepted, then a different syntax
|
---|
301 | can be used for actually negotiating the line length -- such a
|
---|
302 | "sub-negotiation" might include fields for minimum allowable, maximum
|
---|
303 | allowable and desired line lengths. The important concept is that
|
---|
304 |
|
---|
305 |
|
---|
306 |
|
---|
307 |
|
---|
308 | <span class="grey">Postel & Reynolds [Page 3]</span>
|
---|
309 | </pre><!--NewPage--><pre class="newpage"><a name="page-4" id="page-4" href="#page-4" class="invisible"> </a>
|
---|
310 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
311 |
|
---|
312 |
|
---|
313 | such expanded negotiations should never begin until some prior
|
---|
314 | (standard) negotiation has established that both parties are capable
|
---|
315 | of parsing the expanded syntax.
|
---|
316 |
|
---|
317 | In summary, WILL XXX is sent, by either party, to indicate that
|
---|
318 | party's desire (offer) to begin performing option XXX, DO XXX and
|
---|
319 | DON'T XXX being its positive and negative acknowledgments; similarly,
|
---|
320 | DO XXX is sent to indicate a desire (request) that the other party
|
---|
321 | (i.e., the recipient of the DO) begin performing option XXX, WILL XXX
|
---|
322 | and WON'T XXX being the positive and negative acknowledgments. Since
|
---|
323 | the NVT is what is left when no options are enabled, the DON'T and
|
---|
324 | WON'T responses are guaranteed to leave the connection in a state
|
---|
325 | which both ends can handle. Thus, all hosts may implement their
|
---|
326 | TELNET processes to be totally unaware of options that are not
|
---|
327 | supported, simply returning a rejection to (i.e., refusing) any
|
---|
328 | option request that cannot be understood.
|
---|
329 |
|
---|
330 | As much as possible, the TELNET protocol has been made server-user
|
---|
331 | symmetrical so that it easily and naturally covers the user-user
|
---|
332 | (linking) and server-server (cooperating processes) cases. It is
|
---|
333 | hoped, but not absolutely required, that options will further this
|
---|
334 | intent. In any case, it is explicitly acknowledged that symmetry is
|
---|
335 | an operating principle rather than an ironclad rule.
|
---|
336 |
|
---|
337 | A companion document, "TELNET Option Specifications," should be
|
---|
338 | consulted for information about the procedure for establishing new
|
---|
339 | options.
|
---|
340 |
|
---|
341 | THE NETWORK VIRTUAL TERMINAL
|
---|
342 |
|
---|
343 | The Network Virtual Terminal (NVT) is a bi-directional character
|
---|
344 | device. The NVT has a printer and a keyboard. The printer responds
|
---|
345 | to incoming data and the keyboard produces outgoing data which is
|
---|
346 | sent over the TELNET connection and, if "echoes" are desired, to the
|
---|
347 | NVT's printer as well. "Echoes" will not be expected to traverse the
|
---|
348 | network (although options exist to enable a "remote" echoing mode of
|
---|
349 | operation, no host is required to implement this option). The code
|
---|
350 | set is seven-bit USASCII in an eight-bit field, except as modified
|
---|
351 | herein. Any code conversion and timing considerations are local
|
---|
352 | problems and do not affect the NVT.
|
---|
353 |
|
---|
354 | TRANSMISSION OF DATA
|
---|
355 |
|
---|
356 | Although a TELNET connection through the network is intrinsically
|
---|
357 | full duplex, the NVT is to be viewed as a half-duplex device
|
---|
358 | operating in a line-buffered mode. That is, unless and until
|
---|
359 |
|
---|
360 |
|
---|
361 |
|
---|
362 |
|
---|
363 | <span class="grey">Postel & Reynolds [Page 4]</span>
|
---|
364 | </pre><!--NewPage--><pre class="newpage"><a name="page-5" id="page-5" href="#page-5" class="invisible"> </a>
|
---|
365 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
366 |
|
---|
367 |
|
---|
368 | options are negotiated to the contrary, the following default
|
---|
369 | conditions pertain to the transmission of data over the TELNET
|
---|
370 | connection:
|
---|
371 |
|
---|
372 | 1) Insofar as the availability of local buffer space permits,
|
---|
373 | data should be accumulated in the host where it is generated
|
---|
374 | until a complete line of data is ready for transmission, or
|
---|
375 | until some locally-defined explicit signal to transmit occurs.
|
---|
376 | This signal could be generated either by a process or by a
|
---|
377 | human user.
|
---|
378 |
|
---|
379 | The motivation for this rule is the high cost, to some hosts,
|
---|
380 | of processing network input interrupts, coupled with the
|
---|
381 | default NVT specification that "echoes" do not traverse the
|
---|
382 | network. Thus, it is reasonable to buffer some amount of data
|
---|
383 | at its source. Many systems take some processing action at the
|
---|
384 | end of each input line (even line printers or card punches
|
---|
385 | frequently tend to work this way), so the transmission should
|
---|
386 | be triggered at the end of a line. On the other hand, a user
|
---|
387 | or process may sometimes find it necessary or desirable to
|
---|
388 | provide data which does not terminate at the end of a line;
|
---|
389 | therefore implementers are cautioned to provide methods of
|
---|
390 | locally signaling that all buffered data should be transmitted
|
---|
391 | immediately.
|
---|
392 |
|
---|
393 | 2) When a process has completed sending data to an NVT printer
|
---|
394 | and has no queued input from the NVT keyboard for further
|
---|
395 | processing (i.e., when a process at one end of a TELNET
|
---|
396 | connection cannot proceed without input from the other end),
|
---|
397 | the process must transmit the TELNET Go Ahead (GA) command.
|
---|
398 |
|
---|
399 | This rule is not intended to require that the TELNET GA command
|
---|
400 | be sent from a terminal at the end of each line, since server
|
---|
401 | hosts do not normally require a special signal (in addition to
|
---|
402 | end-of-line or other locally-defined characters) in order to
|
---|
403 | commence processing. Rather, the TELNET GA is designed to help
|
---|
404 | a user's local host operate a physically half duplex terminal
|
---|
405 | which has a "lockable" keyboard such as the IBM 2741. A
|
---|
406 | description of this type of terminal may help to explain the
|
---|
407 | proper use of the GA command.
|
---|
408 |
|
---|
409 | The terminal-computer connection is always under control of
|
---|
410 | either the user or the computer. Neither can unilaterally
|
---|
411 | seize control from the other; rather the controlling end must
|
---|
412 | relinguish its control explicitly. At the terminal end, the
|
---|
413 | hardware is constructed so as to relinquish control each time
|
---|
414 | that a "line" is terminated (i.e., when the "New Line" key is
|
---|
415 | typed by the user). When this occurs, the attached (local)
|
---|
416 |
|
---|
417 |
|
---|
418 | <span class="grey">Postel & Reynolds [Page 5]</span>
|
---|
419 | </pre><!--NewPage--><pre class="newpage"><a name="page-6" id="page-6" href="#page-6" class="invisible"> </a>
|
---|
420 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
421 |
|
---|
422 |
|
---|
423 | computer processes the input data, decides if output should be
|
---|
424 | generated, and if not returns control to the terminal. If
|
---|
425 | output should be generated, control is retained by the computer
|
---|
426 | until all output has been transmitted.
|
---|
427 |
|
---|
428 | The difficulties of using this type of terminal through the
|
---|
429 | network should be obvious. The "local" computer is no longer
|
---|
430 | able to decide whether to retain control after seeing an
|
---|
431 | end-of-line signal or not; this decision can only be made by
|
---|
432 | the "remote" computer which is processing the data. Therefore,
|
---|
433 | the TELNET GA command provides a mechanism whereby the "remote"
|
---|
434 | (server) computer can signal the "local" (user) computer that
|
---|
435 | it is time to pass control to the user of the terminal. It
|
---|
436 | should be transmitted at those times, and only at those times,
|
---|
437 | when the user should be given control of the terminal. Note
|
---|
438 | that premature transmission of the GA command may result in the
|
---|
439 | blocking of output, since the user is likely to assume that the
|
---|
440 | transmitting system has paused, and therefore he will fail to
|
---|
441 | turn the line around manually.
|
---|
442 |
|
---|
443 | The foregoing, of course, does not apply to the user-to-server
|
---|
444 | direction of communication. In this direction, GAs may be sent at
|
---|
445 | any time, but need not ever be sent. Also, if the TELNET
|
---|
446 | connection is being used for process-to-process communication, GAs
|
---|
447 | need not be sent in either direction. Finally, for
|
---|
448 | terminal-to-terminal communication, GAs may be required in
|
---|
449 | neither, one, or both directions. If a host plans to support
|
---|
450 | terminal-to-terminal communication it is suggested that the host
|
---|
451 | provide the user with a means of manually signaling that it is
|
---|
452 | time for a GA to be sent over the TELNET connection; this,
|
---|
453 | however, is not a requirement on the implementer of a TELNET
|
---|
454 | process.
|
---|
455 |
|
---|
456 | Note that the symmetry of the TELNET model requires that there is
|
---|
457 | an NVT at each end of the TELNET connection, at least
|
---|
458 | conceptually.
|
---|
459 |
|
---|
460 | STANDARD REPRESENTATION OF CONTROL FUNCTIONS
|
---|
461 |
|
---|
462 | As stated in the Introduction to this document, the primary goal
|
---|
463 | of the TELNET protocol is the provision of a standard interfacing
|
---|
464 | of terminal devices and terminal-oriented processes through the
|
---|
465 | network. Early experiences with this type of interconnection have
|
---|
466 | shown that certain functions are implemented by most servers, but
|
---|
467 | that the methods of invoking these functions differ widely. For a
|
---|
468 | human user who interacts with several server systems, these
|
---|
469 | differences are highly frustrating. TELNET, therefore, defines a
|
---|
470 | standard representation for five of these functions, as described
|
---|
471 |
|
---|
472 |
|
---|
473 | <span class="grey">Postel & Reynolds [Page 6]</span>
|
---|
474 | </pre><!--NewPage--><pre class="newpage"><a name="page-7" id="page-7" href="#page-7" class="invisible"> </a>
|
---|
475 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
476 |
|
---|
477 |
|
---|
478 | below. These standard representations have standard, but not
|
---|
479 | required, meanings (with the exception that the Interrupt Process
|
---|
480 | (IP) function may be required by other protocols which use
|
---|
481 | TELNET); that is, a system which does not provide the function to
|
---|
482 | local users need not provide it to network users and may treat the
|
---|
483 | standard representation for the function as a No-operation. On
|
---|
484 | the other hand, a system which does provide the function to a
|
---|
485 | local user is obliged to provide the same function to a network
|
---|
486 | user who transmits the standard representation for the function.
|
---|
487 |
|
---|
488 | Interrupt Process (IP)
|
---|
489 |
|
---|
490 | Many systems provide a function which suspends, interrupts,
|
---|
491 | aborts, or terminates the operation of a user process. This
|
---|
492 | function is frequently used when a user believes his process is
|
---|
493 | in an unending loop, or when an unwanted process has been
|
---|
494 | inadvertently activated. IP is the standard representation for
|
---|
495 | invoking this function. It should be noted by implementers
|
---|
496 | that IP may be required by other protocols which use TELNET,
|
---|
497 | and therefore should be implemented if these other protocols
|
---|
498 | are to be supported.
|
---|
499 |
|
---|
500 | Abort Output (AO)
|
---|
501 |
|
---|
502 | Many systems provide a function which allows a process, which
|
---|
503 | is generating output, to run to completion (or to reach the
|
---|
504 | same stopping point it would reach if running to completion)
|
---|
505 | but without sending the output to the user's terminal.
|
---|
506 | Further, this function typically clears any output already
|
---|
507 | produced but not yet actually printed (or displayed) on the
|
---|
508 | user's terminal. AO is the standard representation for
|
---|
509 | invoking this function. For example, some subsystem might
|
---|
510 | normally accept a user's command, send a long text string to
|
---|
511 | the user's terminal in response, and finally signal readiness
|
---|
512 | to accept the next command by sending a "prompt" character
|
---|
513 | (preceded by <CR><LF>) to the user's terminal. If the AO were
|
---|
514 | received during the transmission of the text string, a
|
---|
515 | reasonable implementation would be to suppress the remainder of
|
---|
516 | the text string, but transmit the prompt character and the
|
---|
517 | preceding <CR><LF>. (This is possibly in distinction to the
|
---|
518 | action which might be taken if an IP were received; the IP
|
---|
519 | might cause suppression of the text string and an exit from the
|
---|
520 | subsystem.)
|
---|
521 |
|
---|
522 | It should be noted, by server systems which provide this
|
---|
523 | function, that there may be buffers external to the system (in
|
---|
524 |
|
---|
525 |
|
---|
526 |
|
---|
527 |
|
---|
528 | <span class="grey">Postel & Reynolds [Page 7]</span>
|
---|
529 | </pre><!--NewPage--><pre class="newpage"><a name="page-8" id="page-8" href="#page-8" class="invisible"> </a>
|
---|
530 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
531 |
|
---|
532 |
|
---|
533 | the network and the user's local host) which should be cleared;
|
---|
534 | the appropriate way to do this is to transmit the "Synch"
|
---|
535 | signal (described below) to the user system.
|
---|
536 |
|
---|
537 | Are You There (AYT)
|
---|
538 |
|
---|
539 | Many systems provide a function which provides the user with
|
---|
540 | some visible (e.g., printable) evidence that the system is
|
---|
541 | still up and running. This function may be invoked by the user
|
---|
542 | when the system is unexpectedly "silent" for a long time,
|
---|
543 | because of the unanticipated (by the user) length of a
|
---|
544 | computation, an unusually heavy system load, etc. AYT is the
|
---|
545 | standard representation for invoking this function.
|
---|
546 |
|
---|
547 | Erase Character (EC)
|
---|
548 |
|
---|
549 | Many systems provide a function which deletes the last
|
---|
550 | preceding undeleted character or "print position"* from the
|
---|
551 | stream of data being supplied by the user. This function is
|
---|
552 | typically used to edit keyboard input when typing mistakes are
|
---|
553 | made. EC is the standard representation for invoking this
|
---|
554 | function.
|
---|
555 |
|
---|
556 | *NOTE: A "print position" may contain several characters
|
---|
557 | which are the result of overstrikes, or of sequences such as
|
---|
558 | <char1> BS <char2>...
|
---|
559 |
|
---|
560 | Erase Line (EL)
|
---|
561 |
|
---|
562 | Many systems provide a function which deletes all the data in
|
---|
563 | the current "line" of input. This function is typically used
|
---|
564 | to edit keyboard input. EL is the standard representation for
|
---|
565 | invoking this function.
|
---|
566 |
|
---|
567 | THE TELNET "SYNCH" SIGNAL
|
---|
568 |
|
---|
569 | Most time-sharing systems provide mechanisms which allow a
|
---|
570 | terminal user to regain control of a "runaway" process; the IP and
|
---|
571 | AO functions described above are examples of these mechanisms.
|
---|
572 | Such systems, when used locally, have access to all of the signals
|
---|
573 | supplied by the user, whether these are normal characters or
|
---|
574 | special "out of band" signals such as those supplied by the
|
---|
575 | teletype "BREAK" key or the IBM 2741 "ATTN" key. This is not
|
---|
576 | necessarily true when terminals are connected to the system
|
---|
577 | through the network; the network's flow control mechanisms may
|
---|
578 | cause such a signal to be buffered elsewhere, for example in the
|
---|
579 | user's host.
|
---|
580 |
|
---|
581 |
|
---|
582 |
|
---|
583 | <span class="grey">Postel & Reynolds [Page 8]</span>
|
---|
584 | </pre><!--NewPage--><pre class="newpage"><a name="page-9" id="page-9" href="#page-9" class="invisible"> </a>
|
---|
585 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
586 |
|
---|
587 |
|
---|
588 | To counter this problem, the TELNET "Synch" mechanism is
|
---|
589 | introduced. A Synch signal consists of a TCP Urgent notification,
|
---|
590 | coupled with the TELNET command DATA MARK. The Urgent
|
---|
591 | notification, which is not subject to the flow control pertaining
|
---|
592 | to the TELNET connection, is used to invoke special handling of
|
---|
593 | the data stream by the process which receives it. In this mode,
|
---|
594 | the data stream is immediately scanned for "interesting" signals
|
---|
595 | as defined below, discarding intervening data. The TELNET command
|
---|
596 | DATA MARK (DM) is the synchronizing mark in the data stream which
|
---|
597 | indicates that any special signal has already occurred and the
|
---|
598 | recipient can return to normal processing of the data stream.
|
---|
599 |
|
---|
600 | The Synch is sent via the TCP send operation with the Urgent
|
---|
601 | flag set and the DM as the last (or only) data octet.
|
---|
602 |
|
---|
603 | When several Synchs are sent in rapid succession, the Urgent
|
---|
604 | notifications may be merged. It is not possible to count Urgents
|
---|
605 | since the number received will be less than or equal the number
|
---|
606 | sent. When in normal mode, a DM is a no operation; when in urgent
|
---|
607 | mode, it signals the end of the urgent processing.
|
---|
608 |
|
---|
609 | If TCP indicates the end of Urgent data before the DM is found,
|
---|
610 | TELNET should continue the special handling of the data stream
|
---|
611 | until the DM is found.
|
---|
612 |
|
---|
613 | If TCP indicates more Urgent data after the DM is found, it can
|
---|
614 | only be because of a subsequent Synch. TELNET should continue
|
---|
615 | the special handling of the data stream until another DM is
|
---|
616 | found.
|
---|
617 |
|
---|
618 | "Interesting" signals are defined to be: the TELNET standard
|
---|
619 | representations of IP, AO, and AYT (but not EC or EL); the local
|
---|
620 | analogs of these standard representations (if any); all other
|
---|
621 | TELNET commands; other site-defined signals which can be acted on
|
---|
622 | without delaying the scan of the data stream.
|
---|
623 |
|
---|
624 | Since one effect of the SYNCH mechanism is the discarding of
|
---|
625 | essentially all characters (except TELNET commands) between the
|
---|
626 | sender of the Synch and its recipient, this mechanism is specified
|
---|
627 | as the standard way to clear the data path when that is desired.
|
---|
628 | For example, if a user at a terminal causes an AO to be
|
---|
629 | transmitted, the server which receives the AO (if it provides that
|
---|
630 | function at all) should return a Synch to the user.
|
---|
631 |
|
---|
632 | Finally, just as the TCP Urgent notification is needed at the
|
---|
633 | TELNET level as an out-of-band signal, so other protocols which
|
---|
634 | make use of TELNET may require a TELNET command which can be
|
---|
635 | viewed as an out-of-band signal at a different level.
|
---|
636 |
|
---|
637 |
|
---|
638 | <span class="grey">Postel & Reynolds [Page 9]</span>
|
---|
639 | </pre><!--NewPage--><pre class="newpage"><a name="page-10" id="page-10" href="#page-10" class="invisible"> </a>
|
---|
640 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
641 |
|
---|
642 |
|
---|
643 | By convention the sequence [IP, Synch] is to be used as such a
|
---|
644 | signal. For example, suppose that some other protocol, which uses
|
---|
645 | TELNET, defines the character string STOP analogously to the
|
---|
646 | TELNET command AO. Imagine that a user of this protocol wishes a
|
---|
647 | server to process the STOP string, but the connection is blocked
|
---|
648 | because the server is processing other commands. The user should
|
---|
649 | instruct his system to:
|
---|
650 |
|
---|
651 | 1. Send the TELNET IP character;
|
---|
652 |
|
---|
653 | 2. Send the TELNET SYNC sequence, that is:
|
---|
654 |
|
---|
655 | Send the Data Mark (DM) as the only character
|
---|
656 | in a TCP urgent mode send operation.
|
---|
657 |
|
---|
658 | 3. Send the character string STOP; and
|
---|
659 |
|
---|
660 | 4. Send the other protocol's analog of the TELNET DM, if any.
|
---|
661 |
|
---|
662 | The user (or process acting on his behalf) must transmit the
|
---|
663 | TELNET SYNCH sequence of step 2 above to ensure that the TELNET IP
|
---|
664 | gets through to the server's TELNET interpreter.
|
---|
665 |
|
---|
666 | The Urgent should wake up the TELNET process; the IP should
|
---|
667 | wake up the next higher level process.
|
---|
668 |
|
---|
669 | THE NVT PRINTER AND KEYBOARD
|
---|
670 |
|
---|
671 | The NVT printer has an unspecified carriage width and page length
|
---|
672 | and can produce representations of all 95 USASCII graphics (codes
|
---|
673 | 32 through 126). Of the 33 USASCII control codes (0 through 31
|
---|
674 | and 127), and the 128 uncovered codes (128 through 255), the
|
---|
675 | following have specified meaning to the NVT printer:
|
---|
676 |
|
---|
677 | NAME CODE MEANING
|
---|
678 |
|
---|
679 | NULL (NUL) 0 No Operation
|
---|
680 | Line Feed (LF) 10 Moves the printer to the
|
---|
681 | next print line, keeping the
|
---|
682 | same horizontal position.
|
---|
683 | Carriage Return (CR) 13 Moves the printer to the left
|
---|
684 | margin of the current line.
|
---|
685 |
|
---|
686 |
|
---|
687 |
|
---|
688 |
|
---|
689 |
|
---|
690 |
|
---|
691 |
|
---|
692 |
|
---|
693 | <span class="grey">Postel & Reynolds [Page 10]</span>
|
---|
694 | </pre><!--NewPage--><pre class="newpage"><a name="page-11" id="page-11" href="#page-11" class="invisible"> </a>
|
---|
695 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
696 |
|
---|
697 |
|
---|
698 | In addition, the following codes shall have defined, but not
|
---|
699 | required, effects on the NVT printer. Neither end of a TELNET
|
---|
700 | connection may assume that the other party will take, or will
|
---|
701 | have taken, any particular action upon receipt or transmission
|
---|
702 | of these:
|
---|
703 |
|
---|
704 | BELL (BEL) 7 Produces an audible or
|
---|
705 | visible signal (which does
|
---|
706 | NOT move the print head).
|
---|
707 | Back Space (BS) 8 Moves the print head one
|
---|
708 | character position towards
|
---|
709 | the left margin.
|
---|
710 | Horizontal Tab (HT) 9 Moves the printer to the
|
---|
711 | next horizontal tab stop.
|
---|
712 | It remains unspecified how
|
---|
713 | either party determines or
|
---|
714 | establishes where such tab
|
---|
715 | stops are located.
|
---|
716 | Vertical Tab (VT) 11 Moves the printer to the
|
---|
717 | next vertical tab stop. It
|
---|
718 | remains unspecified how
|
---|
719 | either party determines or
|
---|
720 | establishes where such tab
|
---|
721 | stops are located.
|
---|
722 | Form Feed (FF) 12 Moves the printer to the top
|
---|
723 | of the next page, keeping
|
---|
724 | the same horizontal position.
|
---|
725 |
|
---|
726 | All remaining codes do not cause the NVT printer to take any
|
---|
727 | action.
|
---|
728 |
|
---|
729 | The sequence "CR LF", as defined, will cause the NVT to be
|
---|
730 | positioned at the left margin of the next print line (as would,
|
---|
731 | for example, the sequence "LF CR"). However, many systems and
|
---|
732 | terminals do not treat CR and LF independently, and will have to
|
---|
733 | go to some effort to simulate their effect. (For example, some
|
---|
734 | terminals do not have a CR independent of the LF, but on such
|
---|
735 | terminals it may be possible to simulate a CR by backspacing.)
|
---|
736 | Therefore, the sequence "CR LF" must be treated as a single "new
|
---|
737 | line" character and used whenever their combined action is
|
---|
738 | intended; the sequence "CR NUL" must be used where a carriage
|
---|
739 | return alone is actually desired; and the CR character must be
|
---|
740 | avoided in other contexts. This rule gives assurance to systems
|
---|
741 | which must decide whether to perform a "new line" function or a
|
---|
742 | multiple-backspace that the TELNET stream contains a character
|
---|
743 | following a CR that will allow a rational decision.
|
---|
744 |
|
---|
745 | Note that "CR LF" or "CR NUL" is required in both directions
|
---|
746 |
|
---|
747 |
|
---|
748 | <span class="grey">Postel & Reynolds [Page 11]</span>
|
---|
749 | </pre><!--NewPage--><pre class="newpage"><a name="page-12" id="page-12" href="#page-12" class="invisible"> </a>
|
---|
750 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
751 |
|
---|
752 |
|
---|
753 | (in the default ASCII mode), to preserve the symmetry of the
|
---|
754 | NVT model. Even though it may be known in some situations
|
---|
755 | (e.g., with remote echo and suppress go ahead options in
|
---|
756 | effect) that characters are not being sent to an actual
|
---|
757 | printer, nonetheless, for the sake of consistency, the protocol
|
---|
758 | requires that a NUL be inserted following a CR not followed by
|
---|
759 | a LF in the data stream. The converse of this is that a NUL
|
---|
760 | received in the data stream after a CR (in the absence of
|
---|
761 | options negotiations which explicitly specify otherwise) should
|
---|
762 | be stripped out prior to applying the NVT to local character
|
---|
763 | set mapping.
|
---|
764 |
|
---|
765 | The NVT keyboard has keys, or key combinations, or key sequences,
|
---|
766 | for generating all 128 USASCII codes. Note that although many
|
---|
767 | have no effect on the NVT printer, the NVT keyboard is capable of
|
---|
768 | generating them.
|
---|
769 |
|
---|
770 | In addition to these codes, the NVT keyboard shall be capable of
|
---|
771 | generating the following additional codes which, except as noted,
|
---|
772 | have defined, but not reguired, meanings. The actual code
|
---|
773 | assignments for these "characters" are in the TELNET Command
|
---|
774 | section, because they are viewed as being, in some sense, generic
|
---|
775 | and should be available even when the data stream is interpreted
|
---|
776 | as being some other character set.
|
---|
777 |
|
---|
778 | Synch
|
---|
779 |
|
---|
780 | This key allows the user to clear his data path to the other
|
---|
781 | party. The activation of this key causes a DM (see command
|
---|
782 | section) to be sent in the data stream and a TCP Urgent
|
---|
783 | notification is associated with it. The pair DM-Urgent is to
|
---|
784 | have required meaning as defined previously.
|
---|
785 |
|
---|
786 | Break (BRK)
|
---|
787 |
|
---|
788 | This code is provided because it is a signal outside the
|
---|
789 | USASCII set which is currently given local meaning within many
|
---|
790 | systems. It is intended to indicate that the Break Key or the
|
---|
791 | Attention Key was hit. Note, however, that this is intended to
|
---|
792 | provide a 129th code for systems which require it, not as a
|
---|
793 | synonym for the IP standard representation.
|
---|
794 |
|
---|
795 | Interrupt Process (IP)
|
---|
796 |
|
---|
797 | Suspend, interrupt, abort or terminate the process to which the
|
---|
798 | NVT is connected. Also, part of the out-of-band signal for
|
---|
799 | other protocols which use TELNET.
|
---|
800 |
|
---|
801 |
|
---|
802 |
|
---|
803 | <span class="grey">Postel & Reynolds [Page 12]</span>
|
---|
804 | </pre><!--NewPage--><pre class="newpage"><a name="page-13" id="page-13" href="#page-13" class="invisible"> </a>
|
---|
805 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
806 |
|
---|
807 |
|
---|
808 | Abort Output (AO)
|
---|
809 |
|
---|
810 | Allow the current process to (appear to) run to completion, but
|
---|
811 | do not send its output to the user. Also, send a Synch to the
|
---|
812 | user.
|
---|
813 |
|
---|
814 | Are You There (AYT)
|
---|
815 |
|
---|
816 | Send back to the NVT some visible (i.e., printable) evidence
|
---|
817 | that the AYT was received.
|
---|
818 |
|
---|
819 | Erase Character (EC)
|
---|
820 |
|
---|
821 | The recipient should delete the last preceding undeleted
|
---|
822 | character or "print position" from the data stream.
|
---|
823 |
|
---|
824 | Erase Line (EL)
|
---|
825 |
|
---|
826 | The recipient should delete characters from the data stream
|
---|
827 | back to, but not including, the last "CR LF" sequence sent over
|
---|
828 | the TELNET connection.
|
---|
829 |
|
---|
830 | The spirit of these "extra" keys, and also the printer format
|
---|
831 | effectors, is that they should represent a natural extension of
|
---|
832 | the mapping that already must be done from "NVT" into "local".
|
---|
833 | Just as the NVT data byte 68 (104 octal) should be mapped into
|
---|
834 | whatever the local code for "uppercase D" is, so the EC character
|
---|
835 | should be mapped into whatever the local "Erase Character"
|
---|
836 | function is. Further, just as the mapping for 124 (174 octal) is
|
---|
837 | somewhat arbitrary in an environment that has no "vertical bar"
|
---|
838 | character, the EL character may have a somewhat arbitrary mapping
|
---|
839 | (or none at all) if there is no local "Erase Line" facility.
|
---|
840 | Similarly for format effectors: if the terminal actually does
|
---|
841 | have a "Vertical Tab", then the mapping for VT is obvious, and
|
---|
842 | only when the terminal does not have a vertical tab should the
|
---|
843 | effect of VT be unpredictable.
|
---|
844 |
|
---|
845 | TELNET COMMAND STRUCTURE
|
---|
846 |
|
---|
847 | All TELNET commands consist of at least a two byte sequence: the
|
---|
848 | "Interpret as Command" (IAC) escape character followed by the code
|
---|
849 | for the command. The commands dealing with option negotiation are
|
---|
850 | three byte sequences, the third byte being the code for the option
|
---|
851 | referenced. This format was chosen so that as more comprehensive use
|
---|
852 | of the "data space" is made -- by negotiations from the basic NVT, of
|
---|
853 | course -- collisions of data bytes with reserved command values will
|
---|
854 | be minimized, all such collisions requiring the inconvenience, and
|
---|
855 |
|
---|
856 |
|
---|
857 |
|
---|
858 | <span class="grey">Postel & Reynolds [Page 13]</span>
|
---|
859 | </pre><!--NewPage--><pre class="newpage"><a name="page-14" id="page-14" href="#page-14" class="invisible"> </a>
|
---|
860 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
861 |
|
---|
862 |
|
---|
863 | inefficiency, of "escaping" the data bytes into the stream. With the
|
---|
864 | current set-up, only the IAC need be doubled to be sent as data, and
|
---|
865 | the other 255 codes may be passed transparently.
|
---|
866 |
|
---|
867 | The following are the defined TELNET commands. Note that these codes
|
---|
868 | and code sequences have the indicated meaning only when immediately
|
---|
869 | preceded by an IAC.
|
---|
870 |
|
---|
871 | NAME CODE MEANING
|
---|
872 |
|
---|
873 | SE 240 End of subnegotiation parameters.
|
---|
874 | NOP 241 No operation.
|
---|
875 | Data Mark 242 The data stream portion of a Synch.
|
---|
876 | This should always be accompanied
|
---|
877 | by a TCP Urgent notification.
|
---|
878 | Break 243 NVT character BRK.
|
---|
879 | Interrupt Process 244 The function IP.
|
---|
880 | Abort output 245 The function AO.
|
---|
881 | Are You There 246 The function AYT.
|
---|
882 | Erase character 247 The function EC.
|
---|
883 | Erase Line 248 The function EL.
|
---|
884 | Go ahead 249 The GA signal.
|
---|
885 | SB 250 Indicates that what follows is
|
---|
886 | subnegotiation of the indicated
|
---|
887 | option.
|
---|
888 | WILL (option code) 251 Indicates the desire to begin
|
---|
889 | performing, or confirmation that
|
---|
890 | you are now performing, the
|
---|
891 | indicated option.
|
---|
892 | WON'T (option code) 252 Indicates the refusal to perform,
|
---|
893 | or continue performing, the
|
---|
894 | indicated option.
|
---|
895 | DO (option code) 253 Indicates the request that the
|
---|
896 | other party perform, or
|
---|
897 | confirmation that you are expecting
|
---|
898 | the other party to perform, the
|
---|
899 | indicated option.
|
---|
900 | DON'T (option code) 254 Indicates the demand that the
|
---|
901 | other party stop performing,
|
---|
902 | or confirmation that you are no
|
---|
903 | longer expecting the other party
|
---|
904 | to perform, the indicated option.
|
---|
905 | IAC 255 Data Byte 255.
|
---|
906 |
|
---|
907 |
|
---|
908 |
|
---|
909 |
|
---|
910 |
|
---|
911 |
|
---|
912 |
|
---|
913 | <span class="grey">Postel & Reynolds [Page 14]</span>
|
---|
914 | </pre><!--NewPage--><pre class="newpage"><a name="page-15" id="page-15" href="#page-15" class="invisible"> </a>
|
---|
915 | <span class="grey"><a href="http://tools.ietf.org/html/rfc854">RFC 854</a> May 1983</span>
|
---|
916 |
|
---|
917 |
|
---|
918 | CONNECTION ESTABLISHMENT
|
---|
919 |
|
---|
920 | The TELNET TCP connection is established between the user's port U
|
---|
921 | and the server's port L. The server listens on its well known port L
|
---|
922 | for such connections. Since a TCP connection is full duplex and
|
---|
923 | identified by the pair of ports, the server can engage in many
|
---|
924 | simultaneous connections involving its port L and different user
|
---|
925 | ports U.
|
---|
926 |
|
---|
927 | Port Assignment
|
---|
928 |
|
---|
929 | When used for remote user access to service hosts (i.e., remote
|
---|
930 | terminal access) this protocol is assigned server port 23
|
---|
931 | (27 octal). That is L=23.
|
---|
932 |
|
---|
933 |
|
---|
934 |
|
---|
935 |
|
---|
936 |
|
---|
937 |
|
---|
938 |
|
---|
939 |
|
---|
940 |
|
---|
941 |
|
---|
942 |
|
---|
943 |
|
---|
944 |
|
---|
945 |
|
---|
946 |
|
---|
947 |
|
---|
948 |
|
---|
949 |
|
---|
950 |
|
---|
951 |
|
---|
952 |
|
---|
953 |
|
---|
954 |
|
---|
955 |
|
---|
956 |
|
---|
957 |
|
---|
958 |
|
---|
959 |
|
---|
960 |
|
---|
961 |
|
---|
962 |
|
---|
963 |
|
---|
964 |
|
---|
965 |
|
---|
966 |
|
---|
967 |
|
---|
968 | Postel & Reynolds [Page 15]
|
---|
969 |
|
---|
970 | </pre><br>
|
---|
971 | <span class="noprint"><small><small>Html markup produced by rfcmarkup 1.101, available from
|
---|
972 | <a href="http://tools.ietf.org/tools/rfcmarkup/">http://tools.ietf.org/tools/rfcmarkup/</a>
|
---|
973 | </small></small></span>
|
---|
974 |
|
---|
975 | </body></html>
|
---|