The Term Protocol

Need to run multiple tasks but have only a standard dial-up connection to the host? Term may be the answer you have been looking for.

Term, originally developed by Michael O'Reilly (, is a program that allows multiple, concurrent connections over a serial line. Term allows almost all “standard” TCP/IP applications to be used on a Unix system that is connected by a serial connection to a networked Unix system. Unlike other common serial protocols, such as SLIP and PPP, term does not require non-user administrative maintenance, and requires no modifications to the host kernel. This means that virtually any user with a login shell on a dialup system can utilize network utilities that were once limited to SLIP/PPP users.

Unlike SLIP or PPP, your machine does not have its own IP address. All incoming traffic must be addressed to your remote host, and it will be directed to your local computer by term.

Term essentially works by redirecting packets on your remote host directly to your local Unix system. This allows any incoming network packets to reach your computer by proxy, via your remote dial-up computer. The same basic idea works for outgoing packets as well: local sockets on your computer are redirected to your remote host, and sent on their way to their actual network destination.

The entire term package is a basic suite of utilities and libraries that allow you to establish these network connections. These utilities are:

  • term: This is the actual daemon that is run on both the remote and local computers. This establishes the bridge that is needed to link your computer to the remote host and the rest of the network.

  • tredir: This is the most commonly used utility that comes with term. It allows the user to manually redirect an outgoing or incoming port for use with non term applications, for example redirecting the SMTP (e-mail) port so that the user may send or receive e-mail.

  • tmon: This utility monitors and displays the incoming and outgoing traffic over your serial line. Two bar graphs are displayed showing the levels of traffic, updated each second. This allows you to monitor just how much bandwidth you are using at any time while using term.

  • trsh: This utility allows you to quickly access your remote login shell, much like rsh or rlogin would allow you to. This allows you to perform routine network tasks from your account if needed.

  • tupload: Much like sz, this utility is used to transfer files to or from your remote account, depending on which “end” of the term-link it was executed from.

  • txconn: When you need to display an X application remotely, or have one displayed on your local screen, txconn establishes the needed redirection to make this possible. (The same effect can be created with tredir, as will be explained later.)

  • Other applications: Recently, a flurry of activity has resulted in a few more term clients such as tudpredir, a udp port redirector; tdate, which sets your computer's time by the Network Time Protocol; and “download, which reciprocates what tupload does.

Configuring Term

Before you can actually run term, you should run a utility called linecheck on the remote and local computers.

Linecheck is used to check the ”transparency“ of the link, by seeing which 8-bit characters are transmitted across the link. The results of linecheck are used to configure term to operate correctly and optimally.

To run linecheck:

  • Using a communications program, log into your account on the remote system and run:

    linecheck linecheck. log
  • Suspend your comm program (^Z under kermit), otherwise it will steal characters from linecheck.

  • On the local system, run:

    linecheck linecheck.log > /dev/modem < /dev/modem

After linecheck has completed its operation, examine the two linecheck.log files. At the bottom of these files will be an indication of which characters you must escape in your .termrc configuration file. The messages in linecheck.log give the characters (if any) that need to be ignored on one end and escaped on the opposite end of the link. For example, if my local results indicated that I should escape 3 4 and 121, my resulting .termrc files would have something like this in them:

escape 34
escape 121

and my remote .termrc:

ignore 34
ignore 121

because I have to ignore escaped characters on the other end.