RFC 339

MLTNET: A "Multi Telnet" Subsystem for Tenex

πŸ“… published May 1972, from ietf

RFC 339 πŸ’– MLTNET: A "Multi-TELNET" Subsystem for TENEX πŸŽ€

Title block: this is RFC #339 from the Network Working Group, written by R. Thomas at BBN, with N.I.C. #9932, dated May 5, 1972. The original doesn't list a category, and it doesn't say what it obsoletes or updates. 🧚

1. Introduction ✨

okay so MLTNET is a TELNET-like facility for TENEX πŸ’… It lets one user control a bunch of jobs running on different ARPANET hosts at the same time. It multiplexes the user's local console among the remote jobs, which is giving multitasking energy πŸ”₯ It's super useful for apps that need several network hosts to act in a coordinated way. Personally, the author found it helpful for debugging programs that use the network πŸ™ˆ MLTNET is designed to be easy to use, and while you're in remote mode it's meant to be as transparent to you as possible 🫢 It's a little less sophisticated than the TENEX user-TELNET program, but that's okay 🌸 Right now, MLTNET is a subsystem on the BBN-TENEX host.

2. Using MLTNET πŸ¦‹

MLTNET has two modes, and they're both kind of iconic ✨

2.1. Local Mode Operation

In local mode, MLTNET treats what you type as commands to it πŸ’… A command is a mnemonic command name followed by zero or more parameters. Among the stuff it understands, you can give a name of your choice to a connection to an ARPANET site, connect to a named site, and check the network status as seen from your TENEX, and more 🧚

2.2. Remote Mode Operation

In remote mode, MLTNET makes your console look like it's directly connected to a remote site πŸ’– It sends whatever you type to that site and prints whatever comes back. If you're in local mode, or you're talking to a different remote site, output from the remote site gets buffered for you by MLTNET so nothing gets lost πŸ‘‘

MLTNET is built to be transparent to you in remote mode. Specifically, in remote mode it sends ^C (CONTROL-C, the TENEX "attention" character) and ^T (CONTROL-T, the TENEX "time used query" character) through to the remote site 🫢

In local mode, ^C and ^T do their usual TENEX thing 🌈

Sometimes you'll need to change how a connection to a remote site behaves πŸ™ˆ For example, you might want MLTNET to echo what you type as it sends it. Or say you're using a remote host that needs both upper and lower case, but your local terminal only has upper case. In that case, you'd want MLTNET to send upper and lower case as appropriate 😭 In remote mode, MLTNET treats "!" as an escape character, and it reads the character after it as a command that changes the characteristics of the connection you're currently using πŸ’… The remote mode commands are summarised in the next section. If you want MLTNET to send a "!" to the remote site, type "!!" πŸŽ€

3. MLTNET Command Summary πŸ’œ

3.1. Local Mode Commands

MLTNET uses the character "<" to let you know it's in local mode and ready for input 🌸 You can edit commands and their parameters as you type them πŸ’…

  • ^A (CONTROL-A) deletes the last character you typed. When you hit ^A, MLTNET types " deleted.
  • ^R (CONTROL-R) retypes the input collected so far, with all the edits applied πŸ”₯
  • RUBOUT (octal 177) aborts the current input collection and makes MLTNET type the ready character "<" again πŸ’€
  • ALTMODE (octal 175) invokes command recognition and completion. If there isn't enough information to recognize the input as a command, MLTNET rings the terminal bell in response to ALTMODE πŸ””
  • Any prefix that uniquely identifies a command is recognized as that command πŸ¦‹

In the following, <name> and <site> are command parameters. They're strings that end with a space or a carriage return 🫢 <name> is a name you choose, up to 14 characters 🧚 <site> is either the name of an ARPANET host or the string "LOCAL" 🌈

The local mode commands MLTNET recognizes are:

3.1.1. ASSIGN

syntax: ASSIGN <name> <site>
effect: Associates the user chosen string <name> with a
        connection to the ARPANET site <site>.

3.1.2. TALK

syntax: TALK <name>
effect: Switches from command mode to remote mode
        directing subsequent console input to the site
        associated with <name>. If no ARPANET site is
        currently associated with <name>, the user is
        asked to specify a site. The first time the
        user "talks" to a particular named site MLTNET
        goes through the ARPANET initial connection
        protocol with the remote site in order to
        establish a duplex connection with it.

3.1.3. NAMES

syntax: NAMES
effect: Prints on the console the <name>/<site>
        associations currently known to MLTNET.

3.1.4. QUIT

syntax: QUIT
effect: Returns control to the TENEX EXEC breaking all
        connections with remote hosts. It is good
        practice to log out of each remote host before
        using the QUIT command.

3.1.5. NETSTAT

syntax: NETSTAT
effect: Prints on the console the network status as seen
        from the local TENEX.

3.1.6. RENAME

syntax: RENAME <name>1 <name>2
effect: Associates <name>2 with the ARPANET site
        previously associated with <name>1.

3.1.7. FLUSH

syntax: FLUSH <name>
effect: Breaks the network connection with the ARPANET
        site associated with <name> and, in addition,
        breaks the association between <name> and that
        site.

3.1.8. HOSTS

syntax: HOSTS
effect: Prints on the console the list of hosts
        currently known to the MLTNET subsystem.

3.1.9. HELP

syntax: HELP
effect: Prints on the console a brief summary of how to
        use MLTNET.

3.2. Remote Mode Commands

In remote mode, MLTNET treats the escape character "!" as a signal that the next character is a command πŸ’… Right now, MLTNET recognizes these characters as commands:

  • Q: (quit) Switches MLTNET from remote mode back to local mode πŸ‘‹
  • L: (local echo) Makes MLTNET echo characters as it sends them to the remote site. ;L is the inverse of R. This is the default case 🌸
  • R: (remote echo) Makes MLTNET send the characters you type without echoing them. This is the inverse of L πŸ«₯
  • U: (upper case) Makes MLTNET send upper case letters as you typed them. This is the inverse of S. This is the default case πŸ” 
  • S: (small letters, lower case) Makes MLTNET send upper case letters you type as lower case letters. In this mode, "^" acts as a shift key, and you can send a "^" by typing "!^". S is the inverse of U πŸ“
  • X: (where X is any character other than Q, L, R, U or S) Makes MLTNET send X 🧚
The source document says it includes an annotated scenario that shows MLTNET in use, with the user's typing underlined. That scenario isn't in the text I was given, so there's nothing to rewrite for it here πŸ™ˆ

[ This RFC was put into machine readable form for entry ] [ into the online RFC archives by Tor Fredrik Aas 1/98 ]

πŸ“¦ where this page comes from