📄 rfc559.txt
字号:
Network Working Group Abhay K. BushanRequest For Comments #559 MIT Project MACNIC # 18482 August 15, 1973 Comments on the new TELNET Protocol and its Implementation We at MIT-DN have implemented the new TELNET protocol (both serverand user). This RFC describes our experience with the implementation(particularly the use of GO AHEAD) and in bringing the new User andServer TELNET's in operation (the new TELNET is not compatible with theold). We have a few suggestions here which should help otherimplementors 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 GoAhead" options implemented and do the "right thing" to varying degreeswith 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 andaccepts both the old and the new TELNET control sequences. The serverstarts the negotiation for remote echo (server echoing) by sending thesequence "IAC WILL ECHO" but changes the echo mode only when anaffirmative "IAC DO ECHO" is received. After the cutoff date for oldprotocol 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 aGA. It should be noted that our scheme for sending GA's works most butnot all of the time. There is really no reliable way for our server TELNET to find outwhen a process is actually waiting for network input. On our system,the server TELNET does not "control" user's process, it only acts as aterminal handler at the TTY level.Bushan [Page 1]RFC 559 Comments on TELNET August 1973 A quick investigation revealed that the above problem (of sendingGA's reliably) is not confined to the ITS operating system alone. Infact TENEX (ref. conversation with Ray Tomlinson) and DEC-10 (ref.conversation with Ed Taft at Harvard) systems will encounter similarproblems. Our solution to the GA sending problem was to have the server wait2.5 seconds after sending output to see if there is more output to besent. 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 (lookingfor input or output). This scheme works most (but not guaranteed all)of the time and doesn't cause any noticeable delay. It is possible forthe server to send an extra GA. Our experimentation revealed that 1-5seconds was a good range for this "idling time constant". We do implement the "suppress GA" option and will not send GA tohosts who agree to negotiate out of it. Our server tries to negotiatethese suppress GA option. C. Other Options and TELNET Control Sequences Our server will refuse all other options by sending the appropriateDONTs and WONTs. In addition to the ECHO and Suppress GA options werecognize the following TELNET "control sequences".1. Interrupt Process (IP) - The server substitutes the system wideinterrupt character <control-Z> (ACII SUB) which immediately interruptsthe process, moving control to the immediately superior process. If theuser is several levels down his process tree he may have to send severalIP's to reach top level. It should be noted that the IP does notinterrupt the running process in the sense a <control-G> interruptsmuddle but only passes control to the superior.2. Erase Character (EC) - The server substitutes the system widestandard erase character <rubout> (ACII DEL). The deletion however isdone not by the server but by the receiving process. It is conceivablethat some process (such as a user TELNET) take no action on receivingEC. Most processes will echo the deleted character(s). Several EC'swill delete the several previous characters. (If the console isdeclared to be an IMLAC, the deleted character is removed from thescreen).3. Abort Output (AO) - The server substitutes the character <control-S>(ACII DC3). The control-S convention is followed by many but not all ofour programs. The action taken on receiving AO varies with the program.Bushan [Page 2]RFC 559 Comments on TELNET August 1973A normal occurrence is that output and the current command are aborted(without necessarily going to completion). In many programs there is noway to stop output except by sending an IP and "killing" the inferiorprocess.4. Are You There (AYT) - The server will print the message"****connections still open*****" preceded and followed by CRLF's uponreceiving an AYT. At some later time we may report on the state of theuser's job as well.5. Erase Line (EL) - since we are a character-at-a-time system, the ELhas 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. Thisconvention is consistent with what happens when the "Break" key is hiton local teletypes. The programs generally do nothing useful when breakis received (except echo "|@|@|@") but sending BRK may cause strangeprogram reactions, so beware.7. Synch - Whenever the server receives the synch INS, it flushes allexcept the interesting (control sequences) characters till the receiptof a DM. We also cause an implicit IP on receipt of SYNCH.8. We follow the CRLF and CRNUL convention for transmitting EOL and CRrespectively.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 GAoptions. The program tries to negotiate out of receiving GA's and triesthe ECHO negotiation if the settings file for the host indicate remoteecho. Special characters and symbols are defined for EC, EL, AO, AYT,BRK, SYNCH, IP, and the ESCAPE character to command level. Thesesymbols have a default character value which the user can change bytyping the symbol followed by the new character value at NETWRK commandlevel. To send EC, EL, etc, the user only has to type the specialcharacter for the function. In addition the user can send thesecharacters by using the send.special command at NETWRK command level.In "line mode", EC and EL do a "local" character and line erase ratherthan send the EC and EL to the remote host. The following are thedefault values for the "special" characters in TELNET : ESCAPE - backslash EC - <DEL> EL - <CAN> or |X AO - |SBushan [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 commandlevel and using the commands "echo.local" or "echo.remote". Note thatthe modes are changed only when the negotiation for mode change issuccessful. In either event the user is notified of the results of thenegotiation.III. INSTALLING THE NEW TELNETS On Monday July 2, we brought up the user and server TELNETs brieflyto find that most of the hosts did not "recognize" IAC's and did nothonor the new protocol. Much to our dismay usage of both our server anduser TELNET's was chaotic. Consequently, we did not install the newuser and server TELNETs, and the old TELNETs remain operational. The new and the old TELNETs are definitely not compatible. Theserver tries to (and should try to) negotiate out of sending GA's andalso to send echo. This negotiation causes problems with the"old-style" user TELNETs. Also if the negotiation for Suppress GA isunsuccessfully (which is the case with "old" user-TELNETs) the serverwill keep sending IAC GA's when appropriate. One solution we found tomaking our "new" server compatible with "old" user TELNETs was to comeup in a mode that does not start any option negotiation and does notsend 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 oldand the new user TELNETs (except it violates protocol by not sendingGA's). We propose to install this server on our socket 1. To promote experimentation with the new TELNET protocol, we haveinstalled the new server TELNET on socket 60 (octal 105). This newserver follows the new protocol (ie it sends GA's) and startsspontaneous negotiation for remote echo and suppress GA. Theimplementors on other Hosts are encouraged to use this service to debugtheir user TELNETs (and our server). We feel that transition to the newprotocol will be smoother if new TELNET servers are brought up onexperimental sockets. We are also willing to help debug other serversfrom 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 Hostsrequire the GA's (AMES-67 and UCLA-CON). It seems to me that the reasonwhy sending GA is default in the current specification of protocol isthat representatives from the concerned Hosts wanted the GA to beBushan [Page 4]RFC 559 Comments on TELNET August 1973implemented. It doesn't matter to them if sending GA or suppress GA isdefault, as long as they can get a remote server to send a GA. Theprotocol can be so specified as to require every one to implement a"send GA option". Making "suppress GA" the default will have theadvantage that it will obviate unnecessary negotiation in a greatmajority of cases. Another advantage is that not sending GA's makes thenew 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]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -