From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc435.txt | 563 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 563 insertions(+) create mode 100644 doc/rfc/rfc435.txt (limited to 'doc/rfc/rfc435.txt') diff --git a/doc/rfc/rfc435.txt b/doc/rfc/rfc435.txt new file mode 100644 index 0000000..c8a185e --- /dev/null +++ b/doc/rfc/rfc435.txt @@ -0,0 +1,563 @@ + + + + + + +Network Working Group B. Cosell +Request for Comment: 435 BBN-NET +NIC: 13675 D. Walden +Category: TELNET, Protocols, Echoing BBN-NET +References: 318, 357 5 January 1973 + + + TELNET Issues + + This RFC discusses a number of TELNET related issues which have been + bothering us [1]. The basic, central issue we started from was that + of echoing. We worked downward from our difficulties to discover the + basic principles at the root of our unhappiness, and from there + worked back upwards to design a scheme which we believe to be better. + In this note we will discuss both the alternate scheme and its + underlying principles. + + As something of a non sequitur, before discussing echoing we feel it + expedient to dismiss one possible stumbling block, outright. HIDE + YOUR INPUT may or may not be a good idea, this question not + concerning us at the moment. Whatever the case, the issue of hiding + input is certainly separable from that of echoing. We, therefore, + strongly recommend that a STOP HIDING YOUR INPUT command be + sanctioned to replace the multiplexing of this function on the NO + ECHO command. Once this has been done, the pair of commands HIDE + YOUR INPUT and STOP HIDING YOUR INPUT can be kept or discarded + together, and we can discuss the issue of echoing independently of + them. + +Echoing + + The basic observation that we made regarding echoing was that servers + seem to be optimized to best handle terminals which either do their + own echoing or do not, but not both. Therefore, the present TELNET + echoing conventions, which prohibit the server from initiating a + change in echo mode, seemed overly confining. The servers are + burdened with users who are in the 'wrong' mode, in which they might + not otherwise have to be, and users, both human and machine, are + burdened with remembering the proper echoing mode, and explicitly + setting it up, for all the different servers. It is our + understanding that this prohibition was imposed on the servers to + prevent loops from developing because of races which can arise when + the server and user both try to set up an echo mode simultaneously. + We will describe a method wherein both parties can initiate a change + of echo mode and show that the method does not loop. + + + + + + +Cosell & Walden [Page 1] + +RFC 435 TELNET Issues 5 January 1973 + + + This alternate specification relies on three primary assumptions. + First as above, the server, as well as the user, should be able to + suggest the echo mode. Second, all terminals must be able to provide + their own echoes, either internally or by means of the local Host. + Third, all servers must be able to operate in a mode which assumes + that a remote terminal is providing its own echoes. Both of these + last two result from the quest for a universal, minimal basis upon + which to build. It is fairly easy for a Host which normally supplies + echoes to disable the appropriate code, but it will difficult for a + Host which does not do echoing to integrate such routines into its + system similarly, it is easier for a local Host to supply echoes to a + terminal which cannot provides its own, but it borders on the + impossible to undo echoing in a terminal which has automatic echoing + built into it. + + Our proposed specification would use the present ECHO and NO ECHO + commands as follows: ECHO, when sent by the server to the user, would + mean 'I'll echo to you' ECHO, when sent by the user to the server, + would mean 'You echo to me'. NO ECHO, when sent by the server to the + user, would mean 'I'll not echo to you'; NO ECHO, when sent by the + user to the server, would mean 'Don't you echo to me'. These are, of + course, nearly the same meanings that the commands currently have, + although most current implementations seem to invert the server-to- + user meanings. + + In our specification, whenever a connection is opened both server and + user assume that the user is echoing locally. If the user would, in + fact, prefer the server to echo, the user could send off an ECHO + command. Similarly, if the server prefers to do the echoing (for + instance, because the server system is optimized for very interactive + echoing), the server could send off an ECHO command. Neither is + required to do anything, it is only a matter of preference. Upon + receipt of either command by either party, if that is an admissible + mode of operation the recipient should begin operating in that mode, + and if such operation reflects a change in mode, it should respond + with the same command to confirm that (and when) the changeover took + place. If the received command request an inadmissible mode of + operation, then the command's inverse should be sent as a refusal + (this must be NO ECHO, since neither party can refuse a change into + NO ECHO). To state these rules more formally: + + 1) Both server and user assume that a connection is initially in + NO ECHO mode. + + 2) Neither party can refuse a request to change into NO ECHO mode. + + 3) Either party may send an unsolicited command only to request a + change in mode. + + + +Cosell & Walden [Page 2] + +RFC 435 TELNET Issues 5 January 1973 + + + 4) A party only changes its echo mode when it receives an + admissible request. + + 5) When a command is received, the party replies with its echo + mode, unless it did not have to change mode to honor the + request. + + Several properties of this scheme are worthy of note: + + 1) NO ECHO is retained as the nominal connection mode. A + connection will work in ECHO mode only when both parties agree + to operate that way. + + 2) The procedure cannot loop. Regardless of which party (or both) + initiates a change, or in what time order, there are at most + three commands sent between the parties [2]. + + 3) Servers are free to specify their preferred mode of operation. + Thus, human, or machine, users do not have to learn the proper + mode for each server. + +Three Principles + + Let us mention the general principles we alluded to at the beginning + of this note. The principles are: default implementation, negotiated + options and symmetry. The principle of default implementation merely + states that for all options, defaults are declare which must be + implemented. It is this principle which leads us to seek out the + 'minimum' for each option (to keep the required burden on everybody + as small as possible), and prevents loops in protocol. The principle + of negotiated options merely states that options must be agreed upon + by all (both) parties concerned. It is this principle which dictated + the positive/negative acknowledgement scheme. The principle of + symmetry merely states that neither party should have to 'know' + whether it is the server or the user. Our scheme, as described thus + far, is not totally symmetrical we will consider this matter in a + later section. + + The ECHOING scheme we have described, together with the principles + stated above, form the heart of our comments on the TELNET protocol. + The remainder of this note consists of further ways in which the + protocol can be expanded on the whole, these suggestions are all + really only applications and development of the principles we have + already put forward. However, the fecundity of these expansions, and + the 'good feel' they have, make us yet more convinced of the ' + rightness' of our original proposals. + + + + + +Cosell & Walden [Page 3] + +RFC 435 TELNET Issues 5 January 1973 + + + Thus far, we have made a simple, concrete suggestion that we believe + should be immediately sanctioned. Looking beyond that proposal, + however, has suggestion a large number of further, more ambitious + changes. The remainder of this RFC describes ideas which we don't + feel have the immediacy of the proposal above, but should, + nonetheless, be kept in mind if the network community decides to + embark on revamping the protocol. + +Synchronization + + One complaint we have heard about the present convention for + establishing an echoing mode is about the lack of a provision to + synchronize a change of echoing mode with the user-to-server data + stream our scheme, too, is guilty on this count. John Davidson of + the University of Hawaii has documented, in RFC 357, a more elaborate + echoing scheme which doesn't have this problem. We, however, feel + that it is possible to eliminate most of the trouble involved with + normal changing of echo mode at a more modest cost than that required + by the highly interactive scheme described by Davidson. We can do + this by borrowing a small piece of that scheme. The rule we would + incorporate is that whenever a party initiates a request for a change + in echo mode, it then buffers, without transmitting or processing, + all data in the user-to-server data stream until it receives an + acknowledgement, positive or negative, at which time it deals with + the buffered data in the newly negotiated mode. Since with both our + proposed and the current schemes such a request is guaranteed to be + acknowledgement, the buffering time is bounded. + + An important aspect of this technique of eliminating the + synchronization problem is that it need not ever become part of the + official protocol. Since its operation is entirely internal to the + server or user, each may independently weigh the value of elegance + against the cost of the required code and buffer space. + +Other options + + Abhay Bushan has suggested to us that whether the user and server + operate line-at-a-time or character-at-a-time mode (see RFC 318) + should also be a negotiated option. Further, he suggested that + whether the terminal follows the TELNET end-of-line convention or not + should also be negotiated. Thus, when a connection is opened, in + addition to being set to NO ECHO mode, the terminal would also be set + to LINE-AT-A-TIME and EOL modes. We could augment the command space + with the new commands LINE, NO LINE (=CHARACTER), EOL and NO EOL + (=separate CR and LF). + + + + + + +Cosell & Walden [Page 4] + +RFC 435 TELNET Issues 5 January 1973 + + + Once started in this direction, we found several further + applications. HIDE YOUR INPUT could be made an option, as could + Davidson's echoing scheme, and even the character set to be used! + Consider that an APL subsystem might well want to suggest to its user + that EBCDIC be used for the connection. + + In mentionaing that the character set could be negotiated, it was + implicit that 7-bit USASCII was the default. The possibility of + having the default be straight binary suggests itself. If we + augmented the protocol with a QUOTE character, the byte after which + were to be always interpreted as data, then codes 128-255 could be + retained as the 'TELNET command space' independently of the data mode + in use by merely prefixing all data bytes in this region with a + QUOTE. If BINARY were a permissible data mode, then it is easy to + visualize many higher level protocols, e.g., perhaps, File Transfer + and Graphics, being built on top of, and into, the TELNET protocol. + What we would have accomplished is to promote TELNET from being a + constrained, terminal-oriented protocol to its being a flexible, + general protocol for any type of byte oriented communication. With + such a backbone, many of the higher level protocols could be designed + and implemented more quickly and less painfully -- conditions which + would undoubtedly hasten their universal acceptance and availability + [3]. + + Looking toward a better world of the future, we have come up with a + more compact and flexible command scheme. We'll describe it after + the next section. + +Symmetry + + Some of the TENEX group (in particular, Thomas, Burchfiel and + Tomlinson) have pointed out to us that although we have made the + rules for the protocol symmetrical, we have not made the meanings of + the commands symmetrical. For example, the interpretations of the + ECHO command -- 'I'll echo to you' and 'You echo to me' -- implicitly + assume that both the server and user know who is which. This is a + problem not only for server-server connections where it is not clear + which is the user, but also for user-user connections, e.g., in + linking Teletypes together, where it is not clear which is the + server. + + Responding to this, we came to understand that there are only five + reasonable modes of operation for the echoing on a connection pair + [4]: + + + + + + + +Cosell & Walden [Page 5] + +RFC 435 TELNET Issues 5 January 1973 + + + <------------------< + A Process 1 Process 2 + >------------------> + neither end echoes + + + <------------------< + B Process 1 <--+ Process 2 + ^ + >--^---------------> + one end echoes for itself + + + <------------------< + C Process 1 <--------------+ Process 2 + ^ + >--------------^---> + one end echoes for the other + + + <--------------V---< + D Process 1 <--+ V Process 2 + ^ +---> + >--^---------------> + both ends echo for themselves + + + <-----V------------< + E Process 1 <--+ V Process 2 + ^ +------------> + >--^---------------> + one end echoes for both ends + + The TENEX group suggested to us that four commands are sufficient to + deal with completely symmetric echoing. We have actually already + mentioned the four commands -- the two possible meanings for each of + ECHO and NO ECHO. Explicitly, the commands would be I'LL ECHO TO + YOU, YOU ECHO TO ME, DON'T ECHO TO ME and I'LL NOT ECHO TO YOU. + Echoing is now the negotiation of two options, and the initial, + default modes are DON'T ECHO TO ME and I'LL NOT ECHO TO YOU. + + In the case where the server or user knows which he is, the + modification to the scheme is minimal since the commands never had + ambiguous meanings in these cases. When an 'end' truly doesn't know, + then things are a little more complicated -- for example, consider + both ends in I'LL ECHO TO YOU mode, but even then the problems are + not insurmountable. + + + + +Cosell & Walden [Page 6] + +RFC 435 TELNET Issues 5 January 1973 + + + Once the principle of symmetry is adopted, it is no longer possible + to use a function in two different ways. On pages 5 and 6 of RFC + 318, Postel gives a description of INS and SYNC which indicates that + they are used to simulate a 'break' user-to-server, but flush the + output buffers server-to-user. Since we do believe in symmetry, we + suggest that the INS/DATA-MARK be treated the same in both directions + and that a new CLEAR YOUR BUFFER option be added. + +Command Format + + Extending full symmetry through the other options we have suggested, + we can now describes the compacted command format referred to + earlier. + + Rather than having four commands for each option (I WILL, I WON'T, + YOU DO, YOU DON'T), there would be four 'prefixes' -- WILL, WON'T, + DO, DON'T -- which would be used before the single command devoted to + each option, WON'T and DON'T being the default modes. To give an + example, assume the codes for WILL and WON'T are 140 and 141, and the + codes for ECHO REMOTE and HIDE INPUT are 132 and 133. Then several + of the possible command combinations would be: + + 140 133 -- DO HIDE INPUT + 140 132 -- DO ECHO REMOTE + 141 132 -- WON'T ECHO REMOTE + 141 133 -- WON'T HIDE INPUT + + These are some of the commands that we believe should exist: + + I WILL (140) + I WILL NOT (141) + YOU DO (142) + YOU DO NOT (143) + QUOTE (144) + SYNC (163) + SYNC REPLY (164) + + ECHO REMOTE (132) + SEND A CHARACTER-AT-A-TIME (146) + SEND INDEPENDENT CR and LF (147) + SEND IN EBCDIC (162) + HIDE INPUT (133) + USE DAVIDSON'S ECHOING STRATEGY (145) + + An important virtue of this command structure, and of our entire + viewpoint, is that Hosts need no longer even be aware of what all the + options are. If we call the mode of operation in which every + alternative is in its default state the 'NVT', then a site, of + + + +Cosell & Walden [Page 7] + +RFC 435 TELNET Issues 5 January 1973 + + + course, must handle an NVT, but beyond that if it merely responds no + to any command it does not understand, then it can totally ignore + options it chooses not to implement. Thus, options would truly be + optional (for a change), not only to the user who may choose not to + invoke them, but also to the systems builders who may now choose not + to offer them! + + We hereby volunteer to rigorously specify a version of TELNET which + embodies the principles we have described and to do so at any level + of complexity deemed sufficient by the network community. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Cosell & Walden [Page 8] + +RFC 435 TELNET Issues 5 January 1973 + + +Appendix: A Sample Implementation + + The basis scheme we described represents most of what we have been + thinking about the further extensions are just that, extensions. We + fear, however, that some who are spiritually in league with us might + be frightened off by the magnitude of all the changes we suggest. To + combat this, we here provide an example of how simply and straight- + forwardly the basis scheme could be implemented for the TIP [5]. + + For each user terminal the TIP would keep three state bits: whether + the terminal echoes for itself (NO ECHO always) or not (ECHO mode + possible), whether the (human) user prefers to operate in ECHO or NO + ECHO mode, and whether the connection to this terminal is in ECHO or + NO ECHO mode. We call these three bits P(hysical), D(esired) and + A(ctual). + + When a terminal dials up the TIP, the P-bit is set appropriately, the + D-bit is set equal to it, and the A-bit is set to NO ECHO. The P- + and A-bits may be manually reset by direct commands if the user so + desires for instance, a user in Hawaii on a 'full-duplex' terminal + might know that whatever the preference of a mainland server, because + of satellite delay his terminal had better operate in NO ECHO mode -- + he would direct the TIP to change his D-bit from ECHO to NO ECHO. + + When a connection is opened from the TIP terminal to a server, the + TIP would send the server an ECHO command if the MIN (with NO ECHO + less than ECHO) of the P- and D-bits is different from the A-bit. If + a NO ECHO or ECHO arrives from the server, the TIP will set the A-bit + to the MIN of the received request, the P-bit and D-bit. If this + changes the state of the A-bit, it will send off the appropriate + acknowledgement if it does not, then the TIP will send off the + appropriate refusal if not changing meant that it had to deny the + request (i.e., the MIN of the P- and D- bits was less than the + received A- request). If while a connection is open, the TIP + terminal user changes either the P- or D-bit, the TIP will repeat the + above tests and send off an ECHO or NO ECHO, if necessary. When the + connection is closed, the TIP would reset the A-bit to NO ECHO. + + While the TIP's implementation would not involve ECHO or NO ECHO + commands being sent to the server except when the connection is + opened or the user explicitly changes his echoing mode, we would + suppose that bigger Hosts might send these commands quite frequently. + For instance, if a JOSS subsystem were running, the server might put + the user in NO ECHO mode, but while DDT was running, the server might + put the user in ECHO mode. + + + + + + +Cosell & Walden [Page 9] + +RFC 435 TELNET Issues 5 January 1973 + + + [1] We have assumed that TELNET is defined as suggested by Jon Postel + in RFC 318. + + [2] Notice that a faulty implementation could achieve the effect of a + loop by repeatedly sending a command which has previously been + refused. We consider this a property of the implementation, not of + the scheme in general, a command which has be rejected should not be + repeated until something changes -- for instance, not until after a + different program has been started up. + + [3] Will Crowther, with an eye towards building higher protocols upon + TELNET, has suggested that a SYNC command (not to be confused with + the existing SYNCH), and a SYNC REPLY be added to TELNET. For + example, a server might want to wait until the output buffer of a + user's terminal were empty before doing something like closing the + connection or passing the connection to another server. Although we + see no current use for the command pair, they seem to be a handy + enough building block that we recommend that they be included. + + [4] It is perhaps appropriate to mention that most of the connections + in the network are TELNET connections, which are full duplex. + Wouldn't it be reasonable to make all Host/Host protocol connections + full duplex, rather than simplex? If, for some reason, one truly + needs a simplex connection, the reverse direction can always just be + ignored. + + [5] Readers unfamiliar with the TIP may read the TIP Users Guide -- + NIC 10916. + + + + + + + + + + + + [This RFC was put into machine readable form for entry] + [into the online RFC archives by Helene Morin, Via Genie, 12/99] + + + + + + + + + + +Cosell & Walden [Page 10] + -- cgit v1.2.3