summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc559.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc559.txt')
-rw-r--r--doc/rfc/rfc559.txt283
1 files changed, 283 insertions, 0 deletions
diff --git a/doc/rfc/rfc559.txt b/doc/rfc/rfc559.txt
new file mode 100644
index 0000000..4a0e16f
--- /dev/null
+++ b/doc/rfc/rfc559.txt
@@ -0,0 +1,283 @@
+
+
+
+
+
+
+Network Working Group Abhay K. Bushan
+Request For Comments #559 MIT Project MAC
+NIC # 18482 August 15, 1973
+
+
+
+ Comments on the new TELNET Protocol and its Implementation
+
+
+ We at MIT-DN have implemented the new TELNET protocol (both server
+and user). This RFC describes our experience with the implementation
+(particularly the use of GO AHEAD) and in bringing the new User and
+Server TELNET's in operation (the new TELNET is not compatible with the
+old). We have a few suggestions here which should help other
+implementors and lead to a smoother transition to the new protocol.
+
+I. OUR TELNET SERVER IMPLEMENTATION
+
+ Our new server TELNET accepts both the "old" and the "new" TELNET
+"control sequences". Currently we have the ECHO and the "Suppress Go
+Ahead" options implemented and do the "right thing" to varying degrees
+with the Interrupt Process (IP), Erase Character (EC), Abort Output
+(AO), Are You There (AYT), Break, and Synch character sequences.
+
+ A. The ECHO Option
+
+ The TELNET server comes up in the default local echo mode and
+accepts both the old and the new TELNET control sequences. The server
+starts the negotiation for remote echo (server echoing) by sending the
+sequence "IAC WILL ECHO" but changes the echo mode only when an
+affirmative "IAC DO ECHO" is received. After the cutoff date for old
+protocol we will stop "honoring" the old TELNET control sequences.
+
+ B. The Go Ahead and Suppress GA option
+
+ The server comes up in the send GA mode and transmits the required
+"IAC GA" sequence whenever the server detects that it needs to send a
+GA. It should be noted that our scheme for sending GA's works most but
+not all of the time.
+
+ There is really no reliable way for our server TELNET to find out
+when a process is actually waiting for network input. On our system,
+the server TELNET does not "control" user's process, it only acts as a
+terminal handler at the TTY level.
+
+
+
+
+
+
+
+Bushan [Page 1]
+
+RFC 559 Comments on TELNET August 1973
+
+
+ A quick investigation revealed that the above problem (of sending
+GA's reliably) is not confined to the ITS operating system alone. In
+fact TENEX (ref. conversation with Ray Tomlinson) and DEC-10 (ref.
+conversation with Ed Taft at Harvard) systems will encounter similar
+problems.
+
+ Our solution to the GA sending problem was to have the server wait
+2.5 seconds after sending output to see if there is more output to be
+sent. If the server has been "idle" for more than 2.5 seconds in the
+"output-sent" state it sends a GA and goes in an I/O wait state (looking
+for input or output). This scheme works most (but not guaranteed all)
+of the time and doesn't cause any noticeable delay. It is possible for
+the server to send an extra GA. Our experimentation revealed that 1-5
+seconds was a good range for this "idling time constant".
+
+ We do implement the "suppress GA" option and will not send GA to
+hosts who agree to negotiate out of it. Our server tries to negotiate
+these suppress GA option.
+
+ C. Other Options and TELNET Control Sequences
+
+ Our server will refuse all other options by sending the appropriate
+DONTs and WONTs. In addition to the ECHO and Suppress GA options we
+recognize the following TELNET "control sequences".
+
+1. Interrupt Process (IP) - The server substitutes the system wide
+interrupt character <control-Z> (ACII SUB) which immediately interrupts
+the process, moving control to the immediately superior process. If the
+user is several levels down his process tree he may have to send several
+IP's to reach top level. It should be noted that the IP does not
+interrupt the running process in the sense a <control-G> interrupts
+muddle but only passes control to the superior.
+
+2. Erase Character (EC) - The server substitutes the system wide
+standard erase character <rubout> (ACII DEL). The deletion however is
+done not by the server but by the receiving process. It is conceivable
+that some process (such as a user TELNET) take no action on receiving
+EC. Most processes will echo the deleted character(s). Several EC's
+will delete the several previous characters. (If the console is
+declared to be an IMLAC, the deleted character is removed from the
+screen).
+
+3. Abort Output (AO) - The server substitutes the character <control-S>
+(ACII DC3). The control-S convention is followed by many but not all of
+our programs. The action taken on receiving AO varies with the program.
+
+
+
+
+
+
+Bushan [Page 2]
+
+RFC 559 Comments on TELNET August 1973
+
+
+A normal occurrence is that output and the current command are aborted
+(without necessarily going to completion). In many programs there is no
+way to stop output except by sending an IP and "killing" the inferior
+process.
+
+4. Are You There (AYT) - The server will print the message
+"****connections still open*****" preceded and followed by CRLF's upon
+receiving an AYT. At some later time we may report on the state of the
+user's job as well.
+
+5. Erase Line (EL) - since we are a character-at-a-time system, the EL
+has little meaning on our system and we throw it (and the preceding IAC)
+away.
+
+6. Break (BRK) - We substitute three NUL's upon receiving BRK. This
+convention is consistent with what happens when the "Break" key is hit
+on local teletypes. The programs generally do nothing useful when break
+is received (except echo "|@|@|@") but sending BRK may cause strange
+program reactions, so beware.
+
+7. Synch - Whenever the server receives the synch INS, it flushes all
+except the interesting (control sequences) characters till the receipt
+of a DM. We also cause an implicit IP on receipt of SYNCH.
+
+8. We follow the CRLF and CRNUL convention for transmitting EOL and CR
+respectively.
+
+II. OUR USER-TELNET IMPLEMENTATION
+
+ The new user-TELNET (implemented in CALICO NETWORK by using a new
+"TELCOM" subroutine), accepts negotiation for the ECHO and suppress GA
+options. The program tries to negotiate out of receiving GA's and tries
+the ECHO negotiation if the settings file for the host indicate remote
+echo. Special characters and symbols are defined for EC, EL, AO, AYT,
+BRK, SYNCH, IP, and the ESCAPE character to command level. These
+symbols have a default character value which the user can change by
+typing the symbol followed by the new character value at NETWRK command
+level. To send EC, EL, etc, the user only has to type the special
+character for the function. In addition the user can send these
+characters by using the send.special command at NETWRK command level.
+In "line mode", EC and EL do a "local" character and line erase rather
+than send the EC and EL to the remote host. The following are the
+default values for the "special" characters in TELNET :
+
+ ESCAPE - backslash
+ EC - <DEL>
+ EL - <CAN> or |X
+ AO - |S
+
+
+
+Bushan [Page 3]
+
+RFC 559 Comments on TELNET August 1973
+
+
+ IP - |R
+ AYT - |T
+ Synch - |Y
+ Break - no preassigned value.
+
+ The user can change his echo mode by escaping to NETWRK command
+level and using the commands "echo.local" or "echo.remote". Note that
+the modes are changed only when the negotiation for mode change is
+successful. In either event the user is notified of the results of the
+negotiation.
+
+III. INSTALLING THE NEW TELNETS
+
+ On Monday July 2, we brought up the user and server TELNETs briefly
+to find that most of the hosts did not "recognize" IAC's and did not
+honor the new protocol. Much to our dismay usage of both our server and
+user TELNET's was chaotic. Consequently, we did not install the new
+user and server TELNETs, and the old TELNETs remain operational.
+
+ The new and the old TELNETs are definitely not compatible. The
+server tries to (and should try to) negotiate out of sending GA's and
+also to send echo. This negotiation causes problems with the
+"old-style" user TELNETs. Also if the negotiation for Suppress GA is
+unsuccessfully (which is the case with "old" user-TELNETs) the server
+will keep sending IAC GA's when appropriate. One solution we found to
+making our "new" server compatible with "old" user TELNETs was to come
+up in a mode that does not start any option negotiation and does not
+send GA's unless requested to do so (ie default is to suppress GA"s).
+As mentioned earlier the server also accepts the old "TELNET control"
+sequences. This solution makes the server compatible with both the old
+and the new user TELNETs (except it violates protocol by not sending
+GA's). We propose to install this server on our socket 1.
+
+ To promote experimentation with the new TELNET protocol, we have
+installed the new server TELNET on socket 60 (octal 105). This new
+server follows the new protocol (ie it sends GA's) and starts
+spontaneous negotiation for remote echo and suppress GA. The
+implementors on other Hosts are encouraged to use this service to debug
+their user TELNETs (and our server). We feel that transition to the new
+protocol will be smoother if new TELNET servers are brought up on
+experimental sockets. We are also willing to help debug other servers
+from our User TELNET.
+
+ Finally we would like to lobby for making suppress GA the default
+(as our present server on socket 1). It appears that only a few Hosts
+require the GA's (AMES-67 and UCLA-CON). It seems to me that the reason
+why sending GA is default in the current specification of protocol is
+that representatives from the concerned Hosts wanted the GA to be
+
+
+
+Bushan [Page 4]
+
+RFC 559 Comments on TELNET August 1973
+
+
+implemented. It doesn't matter to them if sending GA or suppress GA is
+default, as long as they can get a remote server to send a GA. The
+protocol can be so specified as to require every one to implement a
+"send GA option". Making "suppress GA" the default will have the
+advantage that it will obviate unnecessary negotiation in a great
+majority of cases. Another advantage is that not sending GA's makes the
+new server compatible with both old and new user TELNETs.
+
+
+ [ This RFC was put into machine readable form for entry ]
+ [ into the online RFC archives by Serge Hallyn 9/97 ]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Bushan [Page 5]
+