1. Introduction TCP/IP is the common name for a set of protocols developed to allow cooperating computers to share resources across a network. A protocol is simply a set of conventions or rules which must be adhered to by the communicating computers on a network to ensure that the information being exchanged is received and interpreted correctly. In the amateur radio software implementation of TCP/IP networking, the command set of the TNC is replaced with a very basic set of commands and the protocols are run in the user's computer. This opens up the real power of computer-to-computer networking via packet radio. TCP/IP provides for file transfer, electronic mail, remote login services, and network file access. It was originally designed for the Department of Defense to connect unlike mainframe computers in the military, government, research institutions, private industry, and universities so that all could share resources on a common network. For more information on TCP/IP, consult "Introduction to the Internet Protocols," by Charles L. Hedrick (Rutgers University, 1987). This document is often available in electronic form on amateur radio packet systems. TCP/IP has been adapted for use on amateur radio networks and it complies with FCC rules on amateur radio digital transmissions. The amateur radio implementation of TCP/IP also provides services for keyboard chats, bulletin boards, AX.25 packet, and NET/ROM networking. While there are many commands in a TCP/IP software package, the basic commands are not difficult to learn or to use. The user first sends a few software commands to the TNC to substitute its limited command set with an even simpler command set (called "KISS," for "keep it simple stupid") and transfers control to the TCP/IP software in the user's computer. The user can then engage in TCP/IP communications, or, since the software package has the capability of communicating in normal AX.25 packet, the user can operate with AX.25 packet bulletin boards, keyboard connects, digipeaters, or NET/ROM nodes. TCP/IP has several advantages over normal AX.25 packet. At its lower levels, its strategies for retransmission of packets, exponential backoff in the face of channel congestion, handling of lost and duplicated packets, and packetization of data to be transmitted often lead to better overall channel throughput. It is designed to be a multi-connect, store-and-forward system. With TCP/IP, your local switch (similar to a node on AX.25 or NET/ROM) will hold your mail and on your request, forward the mail to your computer. Mail can also be forwarded to and from an AX.25 PBBS. There is never a "station busy" reply on TCP/IP, since the software provides for multiple sessions, with the switch passing out mail to connected stations much like a dealer dealing cards, while handling a file transfer at the same time. Another advantage of the TCP/IP protocols and software is that the routing of packets through several systems to the eventual destination is simpler for the user than that in AX.25 or NET/ROM forwarding. You do not need to know the full route to the destination. Rather, you set up a routing table to the stations that you can communicate with directly. If all other systems set up accurate routing tables, your packets will be forwarded properly to the desired destination. The most accurate name for this set of protocols is the "Internet - 2 - protocol suite," a layered family of protocols. TCP (transmission control protocol) and IP (internet protocol) are two of the lower level protocols. While the end-user of the suite does not often interact with the TCP or IP protocols, they are the best known of the protocols, and it has become common to use the term TCP/IP to refer to the whole family. This document is a beginner's guide to use of the KA9Q Internet Software Package on the amateur radio packet network (AMPRNET). This software is the result of several years of development by Phil Karn, KA9Q, and an international group of collaborators. Phil developed the earlier NET TCP/IP software in the mid-1980's and it was "officially released" to the amateur radio community in April, 1989. He then began the development of NOS (Network Operating System), based on a multitasking networking kernel. The resulting software is extremely versatile. It was written for the IBM PC and clones, but has been ported to the Apple Macintosh, Atari ST, Commodore Amiga, and to several versions of UNIX machines. It has drivers for several hardware interfaces, allowing communication on wire networks as well as packet radio networks. Since the source code has been made available, there are numerous versions of this software. This beginner's guide documents the use of KA9Q NOS 911229 (written December 12, 1991) as modified in version 2.0h by Gerard van der Grinten, PA0GRI. The NOS software provides the following services: keyboard chat A modified telnet protocol, called "ttylink," as implemented in NOS, allows users to "chat" from keyboard to keyboard. mail The simple mail transfer protocol (SMTP) provides services for sending and receiving mail. The sending, receiving, and forwarding computers can run unattended during this transfer, so it is not necessary to log into a PBBS to pick up your mail. A separate program, Bdale's Mailer (BM), first written by Bdale Garbee, N3EUA, is available to compose and read mail messages. It is also documented in this guide. file transfer The file transfer protocol (FTP) allows a user on any computer to get files from another computer, or to send files to another computer. Security is handled by requiring the user to specify a user name and password for the other computer. Both text (AASCI) and binary (executables or encoded text) files can be transferred. mailbox or BBS A mailbox, with a user interface similar to that of an AX.25 packet BBS, allows both TCP/IP and AX.25 packet users to read and compose mail. It also allows AX.25 users access to many of the TCP/IP services, providing them with an introduction to NOS and possibly an inducement to switch to the use of NOS. finger Finger is typically used to find out specific information about users on local or remote hosts. By fingering a user, you can find out such information as a user's name, mailing address, telephone number, QSL information, and other useful facts. - 3 - ax25 Regular AX.25 services are also provided, so that NOS can be used for all of your packet radio activities. You can connect to a friend who is not running TCP/IP and conduct a keyboard chat or you can login to an AX.25 packet BBS. NET/ROM NOS also allows your packet system to serve as a NET/ROM node, although this will not be documented in this guide. There are many other TCP/IP services that may be made available for use on packet radio in the future. Callsign servers are available on some systems. Access to network news via the network news transport protocol (NNTP) is also becoming available. Methods are being developed to set up routing tables and keep them up-to-date automatically, without requiring the user to edit the table. When multi-tasking computers become commonplace hobbyist machines, you will be able to remotely login to these systems to execute programs on them. Network file systems may become available, so that you can store your files on a remote disk and access them through the packet radio network. Most of these potential services will require higher baud rate networks, as a 1200 baud radio link is just too slow to support them. It should be noted that the primary focus of many of the users of the TCP/IP software on amateur radio is experimentation with new prototocols and new versions of the software. While there are many full-service TCP/IP systems operating 24 hours a day providing services to the general user community, many others are on the air only sporadically to test new software. Thus, unless you enjoy dealing with constant technological change, you may be disappointed with TCP/IP networking in the amateur community. 1.1. Objectives of This Guide The objectives of this guide are intentionally limited. The guide is intended to encourage more hams to use the NOS software on the amateur packet radio network (AMPRNET) and thus, it is aimed at beginners. It provides information on installing and using KA9Q NOS version 911229 (PA0GRI v.0f) and version 3.3.2 of BM on an IBM PC or clone, with a serial interface to a TNC running the KISS (Keep It Simple, Stupid) firmware. Installation and use of other versions of this software running on PCs or other machines is similar to that described in this guide, but no attempt has been made in this guide to deal with the many other versions of the software. This guide only documents the subset of the NOS commands that are of most use to a beginning end-user of the software and the packet network. Short descriptions of all of the top-level NOS commands are given in Appendix D. Further details are available in the "Network Operating System User Reference Manual," by Phil Karn, KA9Q, and Gerard van der Grinten, PA0GRI, reflecting version 911229 of NOS 2.0h as released to the public by PA0GRI. This manual is often available on-line on the packet radio network. It should be consulted for details which are beyond the scope of this guide. 1.2. Acknowledgements Version 1.0 of this guide, dated May 9, 1990, was based on KA9Q NET 890421 and BM 3.3.1 and much of the material in this version was taken from "The KA9Q Internet Software Package," with permission from the author, Bdale Garbee. - 4 - Shayne Hughes, N6SPE, Jim Pearce, N6ESV, and Chuck Bland, N6DBT, also provided many useful comments on the manuscript. Much of this material remains intact in this newer version of the guide. This current version of the guide is based on the "Network Operating System User Reference Manual," by Phil Karn, KA9Q, and Gerard van der Grinten, PA0GRI. To document the mailbox, I relied on the help files that were recently revised by Jim Mankin, KB3KJ, who couldn't recall who had written the original files. Dell Tucker, WA6IUK, and Gary James, N6CNG, provided comments on the manuscript. I would appreciate receiving any comments you have about this guide. I can be contacted at the following addresses: AX.25 PBBS: N6GF@WA6NWE.#NOCAL.CA.USA.NA Internet: ford@eecs.ucdavis.edu U.S. Mail: 226 Diablo Ave., Davis, CA 95616 2. Necessary Resources The purpose of this section of the guide is to describe the necessary resources you must have available to be able to set up an amateur packet radio system running TCP/IP. The hardware requirements of TCP/IP are nearly the same as any AX.25 packet station, although this guide assumes that the host computer is a PC or clone. 2.1. Computer The computer required to run the version of NOS described in this guide is an IBM PC or clone running the MS-DOS or PC-DOS operating system (to be referred to simply as DOS for the remainder of this guide). The PC can range from the original PC (8086) to the XT, AT (286), 386, or 486 machines. This computer must have at least one serial port and a floppy disk drive. A hard disk is preferred, but is not absolutely necessary. It is assumed that the reader of this guide is familiar with the basics of DOS. You should be able to set up directories, manage files, and have available and know how to use a text editor. 2.2. TNC The TNC (terminal node controller) used for TCP/IP must run the KISS firmware. This includes the TAPR TNC-1, TNC-2 and clones produced by several manufacturers, equipped with a ROM running KISS. For the TNC-2 or clones, version 1.1.6 of the firmware, or later, is required. Most of the more recent TNCs also run the KISS firmware. Attach your TNC to your PC serial port using an RS-232C cable, following your TNC manufacturer's instructions. Set the baud rate between the computer and the TNC as recommended in the TNC instructions. Verify that the TNC works - 5 - properly in the AX.25 mode, again following the TNC instructions, and then enter the commands to run KISS. Further information on running the KISS mode is given in Appendix A. 2.3. Radio The majority of the TCP/IP packet operations are on 2 meters, so you will need a 2m FM transceiver. The radio requirements for TCP/IP are the same as those for AX.25 packet. Follow the directions in your TNC manual to interface the transceiver to the TNC. In most areas in the U.S., TCP/IP packet operations are found in the frequency ranges 144.91-145.09 MHz and 145.71-145.79 MHz. You will have to ask around to find out what frequency is being used in your area. One way to find the TCP/IP operation is to operate your TNC in the AX.25 mode and monitor the frequencies with "MONITOR ON." The TCP/IP frequency is the one that causes the most "garbage" to be displayed on your screen, although NET/ROM nodes also cause this problem as well. The reason for this is that AX.25 TNCs do not decode the TCP/IP or NET/ROM control information. 2.4. IP Address IP addresses are 32 bit numbers that uniquely identify a given machine (or "host") running the TCP/IP protocol suite. All of the possible 32 bit numbers are coordinated by an entity known as the Network Information Center, or NIC. Amateur Radio operators are fortunate in that a "Class A Subnet" consisting of 24 bits of address, in the range 44.X.X.X, has been reserved for our use. Brian Kantor, WB6CYT, of San Diego, CA, serves as the top level administrator of the 44.X.X.X address space, and assigns blocks of addresses to regional coordinators from around the world. The list of these regional coordinators, as of January 1992, is given in Appendix C. This list is updated several times a year and is generally available on AX.25 PBBS systems. You need to acquire an IP address before you can link in with the local AMPRNET community. To do this, contact the coordinator for your region, listed in Appendix C, or in a more recent list posted on your local PBBS. Your coordinator will assign you an address from the block for your area. If you need help in contacting this coordinator, you should ask around the local packet community for assistance. If all else fails, Brian Kantor can be reached as brian@ucsd.edu on the Internet if you have access to this wire network. He can help to locate your IP address coordinator. If you have not yet obtained your IP address and want to get on the air immediately, you may temporarily use [44.128.0.*], with "*" replaced by a number between 1 and 255. Try to ensure that no one else in your area is using the same number. 2.5. KA9Q NOS Software The KA9Q TCP/IP program NOS and the mailer BM are likely to be available in your local area. You should inquire about availability on your local packet BBS. This would not only provide you with the software, but also contact with someone who has used the software and could help you with its installation and use. Further, since the source code to these programs is available, many - 6 - local versions are available and it is often to your advantage to use these local versions. The programs NOS and BM must be installed and configured on your computer. The easiest way to do this is to edit the sample configuration files that are often included in distributions of the software. Local distributions may also include configuration information appropriate for your local network, so it is to your advantage to acquire the software locally. If your distribution does not include the sample files, detailed information on installation and configuration is given in Appendix B of this guide. The information in this appendix can also be used to understand the commands given in the sample files. 3. Definitions, Conventions, and Notation In this section, some terms used in TCP/IP networking are defined and the conventions and notation used in the guide are explained. Each system on the amateur packet radio network is referred to as a "node" or "host," terms that are derived from wire networks. Since each TCP/IP node includes a computer, the term "machine" is also used interchangeably with "node" and "host." As a user, you employ a "local host" and you communicate with a "remote host." The local host often requests services from the remote host, and as a result, the remote host is known as a "server" and the local host is a "client." Actually, each host provides a server and a client for each of the supported protocols. Some hosts are set up not for use by an end user, but rather to forward packets from many users, in some ways similar to the function of an AX.25 digipeater, and to serve as a file repository. These systems are generally operated 24 hours a day and are known as "switches" or "gateways." Some of these systems are set up to serve as mail gateways to and from AX.25 PBBS systems. Note, however, that end user hosts can also be used to forward TCP/IP packets. Each host on the AMPRNET is identified by an IP address, as discussed in Section 2.4. Hosts are also known by a symbolic name which is linked to the IP address in the configuration file, DOMAIN.TXT. The convention on AMPRNET is to choose the user's callsign as the symbolic host name. The conventions used in this guide are described below. The intent was to produce this guide in the form of a simple ASCII (plain text) file that could be distributed through the AMPRNET. Thus, it was not possible to use bold or italic fonts, changes in point size, or underlining to clarify meaning. 3.1. NOS Commands NOS has a command line-driven user interface. The commands have the following forms: - 7 - command command arguments command subcommand arguments Commands and subcommands are character strings, usually consisting only of letters, but occasionally also including numbers. The arguments may be optional or required and the conventions for these arguments are given in the next section. The NOS commands are case-sensitive and must be entered in lower case. However, file names are not case-sensitive and can be entered in either upper case or lower case. All of the NOS commands and many of the subcommands may be abbreviated. You only need to type enough of a command to distinguish it from other commands that begin with the same letters. Arguments, however, must be typed in full. If a required subcommand or argument is omitted, an error message will summarize the available subcommands or required arguments. Typing "?" in place of a required subcommand or argument will also generate this error message, which is useful when the command name alone is a valid command. When a command takes an optional value parameter, issuing the command without an argument generally displays the current value of the parameter. 3.2. NOS Command Arguments NOS command arguments are also referred to as parameters, and are of the following types: parameter Literal argument. A character string such as "clear" with no surrounding brackets, is a required portion of a command and is to be typed exactly as shown. Many commands have subcommands which are required parameters. Variable argument. A command argument enclosed by arrow brackets, such as "," is a variable. An appropriate value for the variable must be used in the command. Appropriate values to be substituted are described as needed in this guide. [parameter] Optional argument. A command argument enclosed by square brackets, such as "[on]," is an optional argument. The effect of including, or not including, this argument in a command is described in this guide. []Optional variable argument. A command argument enclosed by first by arrow brackets and then by square brackets, such as "[]," is an optional variable argument. | "OR" operator. Command arguments separated by "|" mean that either one or the other argument is to be used. For example, "|clear" means that you are to either enter the variable or the literal argument "clear." - 8 - 3.3. Notation The following is the notation to be used in describing the commands in this guide. The numeric IP address of a host in dotted decimal notation, optionally enclosed in brackets, e.g. 44.2.0.100 or [44.2.0.100]. The symbolic name of a host, e.g. "n6gf" or "eyolo". Denotes a host, switch, or gateway, which may be specified either as a symbolic name (), or as a numeric IP address (). The mappings between IP addresses and symbolic names are defined in the file "DOMAIN.TXT" described in section B.5 of Appendix B. An amateur callsign, either in upper or lower case. The name of an existing directory on the host computer. Directory references can either be relative to the current directory, or absolute, beginning at the root (\ or /). Note that either back slashes (\) or forward slashes (/) can be used in directory names in NOS, while DOS requires back slashes (\). To refer to the parent directory, ".." can be used and for the current (working) directory "." can be used. The name of a file, e.g. DOMAIN.TXT. DOS is not case-sensitive, so file names can be given in either upper case or lower case with no differences implied. NOS displays file names in lower case. This guide generally gives file names in upper case when the files must be accessed by DOS commands and in lower case when they are accessed by NOS commands. . . . "Continued" notation. A command argument ending with ". . ." means that that multiple arguments of this type may be given. This is often used when multiple file names can be specified. An integer number. Any string of ASCII characters, surrounded by double quotes (") if the string contains spaces, such as "N6GF, Davis, CA". A carriage return, usually marked "Return" or "Enter" on most keyboards. Note that all commands given in this guide must be followed by a carriage return, although the notation will not be used in this case. is only used when the "command" needed is a carriage return on an otherwise empty line. The command key labeled "F10" or "f10" at the top or left side of the keyboard. The space bar. CTRL-X The CTRL-X character is entered by holding down the "Ctrl" key - 9 - while pressing the "x" key. Other common combinations of this type are CTRL-Z and CTRL-A. 4. NOS The program that implements the Internet protocols is NOS.EXE. In this section, information on executing NOS, its command and converse modes, managing multiple sessions, NOS utility commands, escaping back to DOS and exiting NOS are provided. Information on the major NOS commands is given in later sections. 4.1. Executing NOS If you have installed NOS in your root directory, it is invoked by simply typing the following at a DOS prompt: nos If you have installed NOS in a directory other than the root and this directory is specified in the "path" command in your AUTOEXEC.BAT file, NOS is invoked by typing the following at a DOS prompt: nos -d where is the directory where NOS has been installed. For information on installing NOS, see Appendix B. When NOS is executed, it first opens the configuration file "AUTOEXEC.NOS" in the NOS directory. This file is described in section B.4 of Appendix B. NOS then displays the following: KA9Q NOS version 911229 (PA0GRI v2.0h) This version produced by PA0GRI Copyright 1991 by Phil Karn (KA9Q) and contributors. net> The last line above is the NOS prompt "net>". If this message is not displayed, something is wrong. Check your installation to see if you missed something. If you still have troubles, find a NOS user and ask for help. NOS can also be invoked by typing: net [-d ] NOS will first attempt to open as an alternate configuration file, which is read instead of AUTOEXEC.NOS. 4.2. Command and Converse Modes NOS may be in one of two modes: command mode or converse mode. In command - 10 - mode, the prompt "net>" is displayed and any of the NOS commands described in this guide may be entered. In converse mode, keyboard input is processed according to the "current session." Sessions include keyboard chats, file transfers (ftp), directory listings, AX.25 connections and several others, which will be described below. Not all NOS commands initiate a new session, but for those which do, this guide indicates that a new session will be created. In several of the sessions, keyboard input is sent to the remote host and any output from the remote host is displayed on the console. In an ftp session, only ftp converse mode commands may be entered. In these sessions, the user remains in converse mode until either the session is terminated (described in the command sections of this guide) or by escaping back to command mode, as described below. 4.2.1. The user may escape back to command mode from converse mode by pressing . The command mode prompt "net>" will be displayed and any of the NOS commands may be entered. The session that the user "escaped" from will remain active. 4.2.2. By entering at a "net>" prompt, the user will return to converse mode in the "current session." If there is no current session, NOS remains in command mode and reissues the "net>" prompt. Multiple sessions can be handled by NOS. For more information on multiple sessions, see the next section. 4.3. Managing Multiple Sessions The NOS program can handle multiple sessions. For example, you can have an ftp file transfer running at the same time as a keyboard chat session. However, you should limit your use of multiple sessions that are transmitted on a 1200 baud radio channel, as you will cause considerable congestion. Note that not all sessions, such as local host directory listing sessions, will result in packet transmissions. To start a second session, escape from the first session to the "net>" prompt by pressing . Start the second session as you would normally (as described in the command sections of this guide). To monitor the multiple sessions, use the "session" command from the "net>" prompt. The syntax for this command is: session [] Without arguments, "session" displays a list of current sessions, including the active session number(#), the sequential session number since NOS was first executed (S#), the number of characters in the receive and send queues, the state of the session, and the remote socket (host and protocol). An example of a session list: # S# Type Rcv-Q Snd-Q State Remote socket 1 138 AX25 0 0 Connected n6spe-1 (N6SPE-1 on ax0) *2 141 FTP 69 0 Established eyolo (44.2.0.96:ftp) - 11 - An asterisk (*) is shown next to the "current" session; entering at a "net>" prompt will put you in converse mode with this session. Entering an active session number as an argument to the session command will put you in converse mode with that session. Each session (including the "command session") has its own screen. When a new session is created, the command display is saved in memory and the screen is cleared. When the command escape key is hit, the current session screen is saved and the command screen is restored. When a session is resumed, its screen is restored exactly as it appeared when it was last current. When a session is closed (through commands which will be described below), the following will be displayed on its screen: Hit enter to continue When you hit enter, you are returned to the command session ("net>" prompt). The output of many sessions, such as directory listings, finger listings, and others, is managed by the "more" function, described in Section 4.4.2 below. The more function displays one screen at a time, pausing for a command from the user before continuing the output. The more function has been activated when "--More--" is displayed at the bottom of the screen. 4.4. Utility Commands NOS provides several utility commands to provide help information, display files, and to manage directories and files. 4.4.1. help Displays a list of the main NOS commands. The command "?" is equivalent to "help." Note that several commands are listed that are not described in this guide. Concise descriptions of the commands listed by help are given in Appendix D. 4.4.2. more [ ...] Displays the specified file(s) a screen at a time. The prompt "--More--" appears at the bottom of the screen. To display the next screen, press the space bar. To display the next line, hit . This command creates a session that can be suspended or resumed. To close the session, hit the "q" key at a "--More--" prompt. Note that screen output from other sessions is automatically processed with the "more" command. This is indicated by the "--More--" prompt. 4.4.3. tail Displays the "tail" (the last 18 lines) of the specified file. - 12 - 4.4.4. pwd Displays the name of the current directory on the local machine. 4.4.5. cd Changes the current directory to , which must be an existing directory on the local machine. The directory specified can be relative to the current directory, or absolute, with the name beginning at the DOS root (\ or /). The name of the new directory is displayed. 4.4.6. dir [] List the contents of the specified directory on the console. If no argument is given, the current directory is listed. This command first lists the directory into a temporary file, then creates a "more" session to display it. After this completes, the temporary file is deleted. For example, a listing of a NOS directory: alias 3,615 21:28 3/02/92 autoexec.nos 805 10:09 3/21/92 bm.exe 33,500 9:59 7/08/90 bm.rc 184 20:39 1/04/92 domain.txt 12,732 18:03 2/29/92 finger/ 21:11 11/17/91 ftpusers 83 22:05 12/30/91 nansi.sys 3,044 19:30 3/20/91 spool/ 20:40 12/12/91 nos.exe 199,573 10:47 3/07/92 10 files. 30,277,632 bytes free. Disk size 63,809,536 bytes. Note that this 2-column listing gives the file names (a trailing / indicates a directory name), file size in bytes, and the time and date the file was last modified. 4.4.7. rename Renames as . 4.4.8. delete Delete the specified file. 4.4.9. mkdir Create a sub-directory in the current working directory. 4.4.10. rmdir Remove the sub-directory from the current working directory. The sub-directory must be empty before "rmdir" can be used. 4.5. Executing DOS Commands While running NOS, you may need to execute some DOS commands or to run a program such as a text editor. This can be done by escaping to DOS and then returning to NOS when you are finished. To escape to DOS, enter at a "net>" prompt: - 13 - ! You will be returned to your DOS prompt and you can execute any DOS command. Note that the command "shell" is the same as the "!" command. If the command "multitask" is set to "on", NOS will continue to run while you are at the DOS prompt, but if it is set to "off", all NOS sessions will be suspended. For more information on "multitask", see Section B.4.7 of Appendix B. To return to NOS, enter at an DOS prompt: exit You will be returned to the "net>" prompt. 4.6. Exiting NOS Before you exit NOS, you should check to see if you have any sessions active and if there is anyone logged into your mailbox. To check both sessions that you initiated as well as sessions initiated remotely, you will need to use the "tcp status" command, described in section 11.1.1. Mailbox activity can be checked with the "mbox status" command, described in section 10.6. When you are sure you want to exit the NOS program and return to DOS, enter at a "net>" prompt: exit 5. Keyboard Chat The ttylink command allows you to initiate a keyboard chat connection with a user at a remote host and a ttylink server on the local host allows a keyboard chat session to be initiated by a remote user. A split screen interface is used to allow easy conversation. The "telnet" protocol is used to implement this capability, so it is often called a telnet session. 5.1. Chat Session Messages There are two commands which control messages that are sent to hosts attempting to establish a chat session. 5.1.1. attended [on | off] This tells the host initiating the chat session if your system is attended or not. The command "attended on" generates the message "The system is attended" and the command "attended off" leads to the message "The system is unattended." Without an argument, the current attend state is displayed. The default is "attended on" so if you do not regularly attend your system, you should include "attended off" in your AUTOEXEC.NOS file, as described in Appendix B. - 14 - 5.1.2. motd The specified string is the "message of the day," which is sent following the attended message to the host initiating the chat session. If you are not attending your system, you might use the following example: motd "If unattended please leave a message in the mailbox" 5.2. Initiating a Chat Session The command to initiate a keyboard chat session with the specified host and enter chat converse mode is: ttylink For example: ttylink n6spe A new session will be established and if the desired host is on the air and reachable on the network, a message similar to the following will be displayed: Welcome to TTY-Link at n6spe.ampr.org - The system is attended If the remote system is attended, as indicated in the above example, you can then type back and forth in much the same way as in an AX.25 connection. When you're done, use the key to escape back to command mode, and then type "close" to close the connection, as described in section 5.5 below. 5.3. Accepting a Chat Session If a remote host requests a chat session, a message similar to the following will be displayed on your console: Incoming Telnet session 2 from 44.2.0.96:1026 on Sat Mar 14 23:16:48 1992 A session number is automatically assigned. You may then select this chat session and converse with the remote as though you had initiated the session. If you are in command mode when the request arrives, enter at a "net>" prompt and you will enter converse mode for the chat session. If you are in converse mode in a session, use the key to escape back to command mode, use the "session" command to list the active sessions, and then use the "session " command to enter converse mode on the desired telnet session. 5.4. File Upload and Download The telnet session can be recorded to a file, or an ASCII file can be uploaded instead of entering the information at the keyboard. - 15 - 5.4.1. record | off Opens and appends to it all data received or sent on the current ttylink session. If you are in telnet converse mode and want to initiate recording, you will need to use the key to escape back to command mode to issue the record command. The message "Recording into " will be displayed and another "net>" prompt will be issued. Enter on a blank line and you will return to the ttylink converse mode with recording activated. The command "record off" stops recording and closes the file. 5.4.2. upload Opens (must be an ASCII, file, not a binary file) and sends it on the current ttylink session as though it were typed on the terminal. If you are in ttylink converse mode and want to initiate uploading, you will need to use the key to escape back to command mode to issue the upload command. The uploading is initiated, but the file contents are not displayed on the screen during the uploading and no message is displayed to indicate that the uploading is complete. Enter on a blank line at the "net>" prompt and you will return to the ttylink converse mode. 5.5. Closing a Chat Session To close a ttylink chat session, the following command is used: close [] If you are in ttylink converse mode, press to escape to the "net>" prompt to issue this command. If you are running only one session, entering close without arguments will close the session. If you have multiple sessions, entering close without arguments will initiate a close on the current session. If you are running multiple sessions, the "session" command will display a list of these sessions. Entering close with a session number argument will initiate a close on the specified session. Only one of the hosts involved in the ttylink session needs to initiate the close. "Disconnect" is functionally the same command as "close." 6. Mail One of the most useful features of TCP/IP is electronic mail. Mail can be delivered to your unattended machine and you can read it at your leisure. There is no need to log into a PBBS to pick up your messages. Your messages can also be temporarily stored on your local switch and be delivered to your machine when you run NOS. NOS sends and receives mail using the simple mail transport protocol (SMTP). There are two basic ways to compose and read these mail messages: through the NOS mailbox or BBS, described in section 8 below or through an external mail program. There are several external mail programs which can be used, but only the simplest of these, the program BM, will be described in - 16 - this guide. This section concentrates primarily on BM, but a few comments on SMTP are given in subsection 6.5. In addition, a few comments on the post office protocol (POP) for mail store and forward are given in subsection 6.6. The BM.EXE mail user interface program was created by Bdale Garbee, N3EUA, and despite popular belief, "BM" really stands for "Bdale's Mailer." It was later extended by Gerard van der Grinten, PA0GRI, and Dave Trulli, NN2Z. BM version 3.3.2 890801 is documented here. 6.1. Executing BM BM is a separate program from NOS and thus, it must be executed from a DOS shell or subshell. However, NOS provides a simple command which escapes to a DOS subshell and executes BM. When you quit BM, you also exit the subshell and return to NOS command mode. If the command "multitask" is set to "on", NOS will continue to run while the user is in BM. If "multitask" is set to "off", all NOS sessions will be suspended while the user is in BM. For more information on "multitask", see Section B.4.7 of Appendix B. BM is invoked by typing the following from a "net>" prompt: mail BM will first read the mail configuration file, BM.RC, described in section B.6 of Appendix B, and then will read the user mailbox defined in this configuration file. Using the BM main menu commands described in section 6.2, you can then compose or read mail messages or manage your mailbox. If you use the command "!" to escape to a DOS subshell, BM may also be invoked in another way: bm -u | -f With the argument "-u ," you can specify which mailbox to read, overriding that defined in BM.RC. With the argument "-f ," BM will read the messages from instead of a mailbox. This is useful if you have saved previously received messages to a file, using the "s" command described in section 6.2.6. When you invoke BM, a banner will be displayed, followed by two lines of copyright information and then the mail header information, as described in section 6.2.1 below. Finally, there is a line reminding you to "Type ? for help" and then a prompt, consisting of your user name in quotes followed by an arrow (>). 6.2. BM Main Menu Commands All BM main menu commands are single letters followed by optional arguments. A is a space-delimited list of message numbers, for example: 1 3 4 5 - 17 - The message numbers are given in the message headers. 6.2.1. h Display message headers. The message headers contain the message number, the status indicating whether it has been read or deleted, the sender, size, date, and subject. For example: Mailbox /nos/spool/mail/n6gf.txt - 3 messages, 1 new DY 1 n6cng@n6cng 02 Apr 16:31 7198 TCP/IP FTPUSERS Y 2 N6SPE@n6spe.ampr.org 02 Apr 17:40 576 Re: eyolo > N 3 N6SPE@n6spe.ampr.org 02 Apr 17:42 942 Re: NOS log In the first line above, "D" indicates that the message has been marked for deletion and "Y" indicates that it has been read. The message number is 1, the sender is n6cng@n6cng it was sent on April 2 at 16:31, it 7198 characters long and the subject is "TCP/IP FTPUSERS." In the third line above, ">" indicates that this is the current message and "N" means that it has not yet been read. 6.2.2. ? Display a help menu for BM commands. 6.2.3. [] Entering a message number from the header listing will cause the message text to be displayed. If a carriage return is entered on a blank line, the current message will be displayed. 6.2.4. d [] Mark messages for deletion. With no argument, the current message (indicated by ">" in the first column of the message header) is marked for deletion. Messages marked for deletion are removed when exiting BM via the "q" command, when changing to an alternate mailbox with the "n" command, or when updating with the "$" command. 6.2.5. u [] Undelete a message that is marked for deletion. The status of a message can be determined by looking at the status field of the message using the "h" command. 6.2.6. s [] [] The "s" command is used to save messages in a file. If no file name is given the file specified by the mbox variable in BM.RC is used. If no message number is supplied then the current message is saved. If does not exist, it will be created. If does exist, the messages will be appended to this file. The messages are stored in the same format as a mailbox file with all mail headers left intact. This file can later be read into BM by invoking BM with the "-f " argument. - 18 - 6.2.7. w [] The "w" command is used to save messages in a file. Only the message body is saved. All mail headers are removed. If no message number is supplied then the current message is saved. 6.2.8. p [] The "p" command is used to send messages to the printer. This command uses the DOS device PRN for output. If no message number is supplied then the current message is printed. 6.2.9. m [] The "m" command is used to compose a message to be mailed to the list of recipients, specified by mail addresses or aliases, which are described in section 6.4. All local recipient addresses (those which don't contain an "@") are checked for possible aliases in the ALIAS file, described in section B.7 of Appendix B. Each alias that is found, is expanded into its list of addresses. If no recipient list is supplied with the "m" command, you will be prompted for a recipient list. When you are composing a message, several commands are available such as invoking an editor or reading in text from other messages or files, as described in section 6.3. To end a message enter a line containing a single period. It is important to remember that the input line buffer has a 128 character limit. You should format your text by entering a carriage return at the end of each line. Typing excessively long lines may cause data loss due to truncation when passing the message through other hosts. Keeping lines less than 80 characters is always a good idea. 6.2.10. r [] Reply to a message. Reply reads the header information in order to construct a reply to the sender. The destination information is taken from the "From:" or the "Reply-To:" header, if included. If no message number is supplied the current message is used. 6.2.11. f [] The "f" command is used to forward a mail message to another recipient. If no message number is supplied the current message is used. The user is prompted for the recipients and a subject. The mail header is added to the message text while retaining the complete original message in the body. Also see the ~m command. 6.2.12. b [] Bounce a message. Bounce is similar to forwarding but instead of your user information, the original sender information is maintained. If no message number is supplied the current message is used. - 19 - 6.2.13. n [] Display or change the mailbox. The "n" command with no arguments will display a list of mailboxes containing mail. If an argument is supplied, then the current mailbox is closed and a new mailbox is opened. 6.2.14. l List outbound messages. The job number, the sender, and the destination for each message is displayed. A status of "L" will appear if the SMTP sender has the file locked, meaning the message has begun to be sent to its destination. If you find that a message has been in the locked state for a long period of time, the corresponding SMTP session may be "stuck." See section 11.1 for a description of how to monitor the status of SMTP sessions and to reset them if they get stuck. 6.2.15. k [] Remove an outbound message from the send queue. A message can be removed from the send queue by specifying the job number obtained by the l command. If the message is locked you will be warned that you may be removing a file that is currently being sent by SMTP. It is best not to remove locked messages. They are better handled with the "tcp reset" command, described in section 11.1.2. 6.2.16. $ Update the mailbox, deleting messages marked for deletion. If you have a large number of messages in your mailbox and are cleaning it up by marking unwanted messages for deletion, updating the mailbox will shorten the header list. 6.2.17. x Exit to DOS without changing the data in the mailbox. Messages marked for deletion will NOT be deleted. 6.2.18. q Quit to DOS updating the mailbox. Messages marked for deletion WILL be deleted. 6.3. Text Input Commands The following commands are available while composing a message. The tilde character (~) must be entered as the first character on a line. ~r Read into the message buffer. ~m Read into the message buffer. ~p Display the text in the message buffer. ~e Invoke the editor defined in BM.RC with a temporary file - 20 - containing the text in the message buffer. ~q Abort the current message. No data is sent. ~~ Insert a single tilde character into the message. ~? Display the help menu of tilde escape commands. 6.4. Mail Addresses Mail is addressed to a recipient, which is either a user at a host or an "alias," which is an alternative name for one or more recipients. Aliases are defined in the ALIAS file, described in section B.7 of Appendix B. These recipients can be on the local host or a remote host. Mail addressing varies from simple to mildly confusing. The simplest form is: [@] If @ is not included, BM will search to see if is in the ALIAS file on the local host. If it is, it will be expanded to the recipient list given for the alias. If is not given in the alias file, the message will be sent to on the local host (this is probably not what you intended, unless you have more than one user on your host). If the address @ is used, the message will be sent to , where is first looked up in the ALIAS file on . If is found to be an alias, it will be expanded to the recipient list given for the alias, and the message will be forwarded to these recipients. If is not found in the alias file, the message will be delivered to on . Host names can be found in your DOMAIN.TXT file, described in section B.5 of Appendix B. Valid mail user names for a given host can be found using the finger command, as described in section 10.2, if the finger files have been set up on the the host. If an ALIAS file has been distributed for your area, mail addresses and aliases will be found there. Otherwise, you will have to contact the intended recipient and ask for his or her address. If the remote host of the recipient is not on the air when you try to send the message, it will remain in your mail queue until some time when both hosts are on the air at the time you attempt to send the message. To avoid this delay, switches have been set up in many areas which run 24 hours a day and can be used for mail forwarding. If the switch your recipient communicates with is (a host name) and this switch forwards the mail to your recipient using POP (post office protocol), then the mail can be addressed as: @ If POP is not used, then the address to be used is: - 21 - %@ Your mail will be transferred to and then forwarded to @. 6.5. SMTP NOS sends and receives mail using the simple mail transport protocol (SMTP). This is handled automatically by NOS, although, you may want to "kick" out your outgoing mail manually, as described below. When mail is received, SMTP displays the message: New mail arrived for from where is the addressee of the received mail and is the mail address of the person who sent the mail. If you have included the "smtp timer" command in your AUTOEXEC.NOS file (see section B.4 of Appendix B), SMTP will check your outbound mail queue at the time interval you have set to determine if there is any new outgoing mail that should be sent. If you haven't included this command, or you want to send out your mail before the next timer interval, you can manually "kick" out your outgoing mail, as described below. 6.5.1. smtp kick Reviews the outgoing mail queue and attempts to deliver any pending mail. This allows the user to "kick" the mail system manually. The command can be entered at a "net>" prompt after you have composed mail messages. 6.5.2. smtp list List the messages in the outgoing mail queue. For example: S Job Size Date Time Host From L 171 244 03/13 07:13 n6spe n6gf@n6gf n6spe%n6spe@eyolo 173 243 03/13 07:14 n6yuv n6gf@n6gf n6yuv%n6yuv@eyolo The "L" entry in the "S" status column indicates that the message entry is locked by SMTP; in other words, SMTP is attempting to send the message. 6.5.3. smtp kill Kills outgoing message number , which is given in the "Job" column in the "smtp list" command, as shown above. 6.5.4. smtp quiet [on|off] Display or set the SMTP quiet flag. This flag determines whether the bell sounds when the system announces that incoming mail has arrived. When quiet is set to "off, you hear the bell. With no arguments, "smtp quiet" displays - 22 - the status of the flag. 6.6. POP The Post Office Protocol (POP) stores mail on a host, then forwards it on demand to a user's host. It is well-adapted to amateur radio, in which many users are only occasionally active on the network. With the use of POP, the forwarding host does not have to keep trying to establish an SMTP connection to a destination host that is not always on the air, but rather, it waits for the destination host to request that the mail be forwarded. You will have to inquire if POP service is provided in your area. If so, you will need to include "popmail" commands in your AUTOEXEC.NOS file, as explained in Sections B.4.28 to B.4.30 in Appendix B. The only command you might want to use otherwise "kicks" the mail out of the forwarding host. 6.6.1. popmail kick Starts a pop forwarding session from the specified host. This command is needed when no interval is specified in the "popmail addserver" command, described in Section B.4.28 in Appendix B. 7. File Transfer The ftp command provides for the transfer of files using the file transport protocol. It enables you to do the following: Transfer text and binary files between local and remote host List directories on a remote host Delete files on a remote host Create and remove directories on a remote host The remote host can be unattended and the ftp server on that host will provide the requested services. File access privileges are defined in the FTPUSERS file, described in section B.8 of Appendix B. This file defines user login names, passwords, directories to be accessed and file access privileges. It is a common convention to allow arbitrary users limited access to files under the special login names "anonymous" or "guest." 7.1. Ftp Command The command ftp is used to initiate an ftp session. It is invoked as: ftp where is the desired remote host. If the session is established, you will enter converse mode on the new ftp session. Only the ftp commands described below are valid in an ftp session. - 23 - When the connection between the two machines is opened, you'll get a banner from the remote machine, followed by a login prompt and a password prompt. If you've negotiated with the manager of the remote machine to have a special login name and password set up for you in the FTPUSERS file, use these names in your login. If not, use one of the special login names, "anonymous" or "guest," and in these cases, use your call sign as your password. Your login and password are recorded in the log file on the remote host, allowing the manager of that host to keep track of ftp activity. After you have logged in, you will be presented with the ftp prompt: "ftp>". 7.2. Ftp Converse Mode Commands The following are the ftp commands that are valid in ftp converse mode, issued at the ftp prompt "ftp>". Note that you may not have been granted permission to use all of these commands. Refer to Section B.8 of Appendix B for information on the user permissions that are generally granted to remote users. 7.2.1. dir [| []] Without arguments, "dir" requests that a full directory listing of the remote server's current directory be sent to your display. If one argument is given, it is interpreted as a specific file or sub-directory on the remote file system that is to be listed. To refer to the current working directory, use "." as the directory specification. If two arguments are given, the second is taken as the local file into which the directory listing should be written (instead of being sent to the display). The full listing gives the file names, sizes, and creation dates. You should request a directory listing when you first log into an unfamiliar machine. There will often be a file named "readme" or "whathere.txt" that will give some information about the files available on the remote machine. This file can then be acquired with a "get" command (described below), and read on your machine to learn more about the files available on the remote host. 7.2.2. ls [| []] "ls" is identical to the "dir" command except that an abbreviated directory listing is provided. This listing gives only the file names. 7.2.3. pwd Displays the name of the current directory on the remote host ("pwd" literally means "print working directory"). 7.2.4. cd Changes the current directory on the remote host to the directory indicated by , which must be an existing directory on the remote host. The directory specified can be relative to the current directory, or absolute, with the name beginning at the root (\ or /). - 24 - 7.2.5. get [] Asks the remote host to send the file specified in the first argument and to write the file on the local machine. The second argument, if given, will be the name of the file on the local machine; otherwise it will have the same name as on the remote host. See the "type" command below if the file requested is other than an ASCII file. If the file is over 10,000 characters in size, you should only start the transfer when the radio channel is relatively quiet. Use the "abort" command described in section 7.3 below if you want to terminate the transfer before it has been completed. 7.2.6. mget [ ...] Send a collection of files from the remote host. File names may include wild card characters; they will be interpreted and expanded into a list of files by the remote host. For example: mget *.txt will send all files having a file name extension of ".txt". The files will have the same name on the local host that they had on the remote host. See the "type" command below if the files requested are other than ASCII files. Use the "abort" command described in section 7.3 below if you want to terminate the transfer before it has been completed. 7.2.7. put [] Asks the local host to send the file specified in the first argument and to write the file on the remote machine. The second argument, if given, will be the name of the file on the remote host; otherwise it will have the same name as on the local machine. You must have write privilege on the remote host to use this command. Use the "abort" command below if you want to terminate the transfer before it has been completed. See the "type" command below if the file to be sent is other than an ASCII file. 7.2.8. mput [ ...] Send a collection of files to the server. File names may include wild card characters; they will be expanded locally into a list of files to be sent. For example: mput *.txt will transfer all files having the file name extension ".txt" on the local host. The files will have the same name on the server as on the local system. If the files you want to send are other than ASCII files, you must use the "type" command below before initiating the transfer. You must have write privilege on the remote host to use this command. 7.2.9. quit Terminates the ftp session. - 25 - 7.2.10. type [a | i] Tells both the local and remote hosts the type of file that is to be transferred. Without arguments, the current mode is displayed. The default is "a", which means ASCII (i.e., a text file). In "i" mode, which means "image", files are sent exactly as they appear in the file system. This mode must be used when exchanging raw binary files (executables, compressed archives, etc). The file type must be set before a "get" or "put" command is initiated. The file type remains in effect until it is changed by a subsequent "type" command. 7.2.11. dele Deletes a file on the remote machine. You must have delete privilege on the remote host to use this command. 7.2.12. mkdir Creates a directory with the name on the remote machine. You must have write privilege on the remote host to use this command. 7.2.13. rmdir Deletes on the remote machine. The remote directory must be empty before you can remove it. You must have delete privilege on the remote host to use this command. 7.2.14. verbose [0 | 1 | 2 | 3] Set or display the level of message output in file transfers. Verbose 0 gives the least output, and verbose 3 the most, as follows: 0: Display error messages only. 1: Display error messages plus a one-line summary after each transfer giving the name of the file, its size, and the transfer time and rate. 2: Display error and summary messages plus the progress messages generated by the remote FTP server. 3: Display all messages. In addition, a "hash mark" (#) is displayed for every 1,000 bytes sent or received. 7.2.15. hash A synonym for the "verbose 3" command. 7.2.16. user Normally you will be asked for your username when you log in to FTP. However, if you mistype your name and the remote system rejects it, you can then try again with the "user" command. - 26 - 7.2.17. pass Normally you will be asked for your password when you log into FTP. However, if you mistype your password and the remote system rejects it, you can then try again with the "pass" command. 7.3. Aborting a File Transfer To abort a get, mget, put, mput, dir or ls operation in progress, it is necessary to escape back to the command mode ("net>" prompt) and use the "abort" command (this command works only on FTP sessions). 7.3.1. abort [] Aborts an ftp file transfer operation in progress on the indicated session. Issued without an argument, the current session is aborted. Abort is valid only when a transfer is in progress. When a file transfer operation is aborted, a partial copy of the transferred file will be left on the destination machine, which must be removed manually if it is unwanted. This is also true for a dir or ls operation when the directory listing is written as a local file. After the abort is completed, you can return to the ftp session and use other ftp converse commands. 7.4. Ftp Example In the ftp example below, the user initiates an ftp session with the remote host "eyolo," logs in as the user "anonymous," requests a directory listing, changes to subdirectory, gets a binary file and terminates the session. The text given in parentheses to the right of the commands indicate what has been typed by the user. net> ftp eyolo (ftp eyolo) Resolving eyolo... Trying 44.2.0.96:ftp... FTP session 1 connected to eyolo 220 eyolo.ampr.org FTP version 911229 ready at Mon Mar 23 16:16:54 1992 Enter user name: anonymous (anonymous) 331 Enter PASS command Password: n6gf (n6gf) 230 Logged in as anonymous, restrictions apply ftp> dir (dir) 200 Port command okay 150 opening data connection for LIST /public docs/ 16:42 3/02/92 lists/ 16:40 3/02/92 programs/ 14:40 3/02/92 utility/ 16:42 3/02/92 whathere.txt 1,755 18:22 3/21/92 5 files. 6,959,104 bytes free. Disk size 10,584,064 bytes. LIST: 265 bytes in 13 sec (20/sec) 226 File sent OK ftp> cd programs (cd programs) 257 "/public/programs" is current directory ftp> dir (dir) 200 Port command okay 150 Opening data connection for LIST /public/programs bm.exe 41,225 17:55 2/25/92 nos.exe 174,454 17:43 2/25/92 - 27 - 2 files. 6,959,104 bytes free. Disk size 10,584,064 bytes. LIST: 135 bytes in 6 sec (23/sec) 226 File sent OK ftp> type i (type i) ftp> get bm.exe (get bm.exe) 200 Type OK 200 Port command okay 150 opening data connection for RETR bm.exe RETR: 41225 bytes in 1521 sec (27/sec) 226 File sent OK ftp> quit (quit) 221 Goodbye! FTP session 1 closed: EOF Hit enter to continue The user's callsign was used as the password, which is shown in this example. However, the password is not echoed to the screen by the software. After logging in, the prompt is "ftp>". The display generated by the "dir" command in this example shows that the user was logged into the /public directory. The listing shows that there is one file, named "whathere.txt," of size 1755 bytes, created at 18:40 on 3/21/92. There are also four subdirectories, indicated by "/" at the end of their names: "docs/," "lists/," "programs/," and "utility/," all created on 3/2/92. The dir output is finished with the "226 File sent OK" message. The command "cd programs" is issued to change to the subdirectory programs. A dir command on this subdirectory shows that there are two files, "bm.exe" and "net.exe." These are executable programs since the file name extensions are "exe" and therefore, they are binary files. The "type i" command is issued so that a binary file can be transferred. Note that due to an apparent bug in the program, the response to this command "200 Type OK" does not get displayed until after the next ftp command is issued. The "get" command is issued and there will be a delay as the "bm.exe" file is retrieved. This is also finished when the message "226 File sent OK" is received. 8. Mailbox or BBS NOS provides a service known either as a mailbox or a bulletin board system (BBS). This provides services for reading and composing mail, reading and composing bulletins, listing file directories on a remote host, uploading and downloading files, AX.25 connections from a remote host, and other services to be explained below. Note that many of these services are provided more conveniently by other NOS commands. The best use of these services by NOS users is as an alternative to BM for reading and composing mail messages. While I think that BM offers better services for these functions, the mailbox has the advantage that it does not need the additional memory required by the DOS subshell for running BM. The primary value of the NOS mailbox (BBS) is in providing TCP/IP services for AX.25 users. An AX.25 connection to a host running NOS enters through the mailbox, giving the AX.25 user access to the AMPRNET. This - 28 - introduction to TCP/IP should encourage AX.25 users to switch to NOS and become part of AMPRNET. Since this service is not expected to be heavily used, the documentation provided here is not very detailed. 8.1. Mailbox Messages There are two commands that control messages that are sent to users who log into your mailbox. 8.1.1. mbox motd Send as the message of the day to a user who has just logged into your mailbox. Since many users may be unfamiliar with the use of this mailbox, I use the following message of the day: mbox motd "Type 'H' for help, 'I' for information" This message can be defined in the AUTOEXEC.NOS file, as described in Appendix B. 8.1.2. mbox attend [on | off] Display or set the mailbox "attended" flag. This is used to announce in the mailbox whether or not the station manager is present and willing to chat (via the mailbox "Operator" command). If the mailbox attended flag is off, the response to the chat command is the message: "Sorry - the system is unattended" and the mailbox prompt is again displayed. If the mailbox attended flag is on, a chat session is initiated. 8.2. Initiating a Mailbox Session A mailbox session is initiated with the command telnet where is either the local host (for reading and composing your own mail) or a remote host. To initiate a session on the local host, an alternative command is: bbs The mailbox session begins with a banner message including "KA9Q NOS" and the name of the host. The user is then prompted for a login name and a password. You should always use your callsign for the login name. If you have not used the mailbox on this host before, you can usually use anything for the password, including simply . Until you have requested additional permissions from the host manager (sysop), your privileges on this host will be limited. When the sysop gives you added privileges, you will also be given a specific password. Login names, passwords, and user permissions are defined in the FTPUSERS file -- see Section B.8 of Appendix B. After entering your login name and password, some welcome information and then a mailbox prompt is displayed; for example, on my local switch: - 29 - [NOS-H$] Welcome n6gf, to the eyolo.ampr.org TCP/IP Mailbox (911229 (PA0GRI v2.0h)) Type 'H' for help, 'I' for information You have 2 messages - 1 new Current msg# 1 : ?,A,B,C,D,E,F,H,I,J,K,L,M,N,O,P,R,S,T,U,V,W,X,Z > The line after the "welcome" message is the "mbox motd" described above. You are told how many messages are waiting for you and how many of these are new. Then the mailbox prompt is displayed, indicating the current message number and reminding you of the first letters of all of the mailbox commands. An AX.25 user initiates a mailbox session by simply connecting to the callsign of the TCP/IP host. The login proceeds as for a NOS user. 8.3. Mailbox Commands As indicated by the prompt above, there is a long list of mailbox commands. These commands can be typed in full, or abbreviated by the first letter of the command. Note again that you may not have permission to use all of these commands. For details on the permission codes, see Section B.8 of Appendix B. 8.3.1. ? Displays a summary of mailbox commands: (?)help (A)rea (B)ye (C)onnect (D)ownload (E)scape (F)inger (H)elp (I)nfo (J)heard (K)ill (L)ist (M)busers (N)odes (O)perator (P)orts (R)ead (S)end (T)elnet (U)pload (V)erbose (W)hat (X)pert (Z)ap 8.3.2. Area [] The Area command, without an argument, lists the mail areas (i.e. mailboxes) that contain messages you may read. The list gives the name of each area, followed by a description of the area's contents. When the Area command is followed by a valid , your current mail context will be switched to the new area. You may then use the Read and List commands to review messages in the selected area. To add your own message to one of these areas, first select the area with the Area command, and then use the Send command to send mail to that area. The mail areas are defined in the AREAS file, described in section B.10 of Appendix B. 8.3.3. Bye The Bye command allows you to exit from the NOS mailbox. This closes your mailbox file, removes any messages that you have deleted with the Kill command and terminates the session. - 30 - 8.3.4. Connect [] [ | ] [ . . .] The connect command allows you to connect to another AX.25 station through the mailbox systems's radio port(s) or through a NET/ROM node known to the mailbox system, or to initiate a keyboard chat with the mailbox system operator. You connect via AX.25 if you specify a on the command line. You can determine what AX.25 ports are available by using the "Ports" command. The connection will use your callsign with the SSID modified. The station you want to connect to is specified in the "" parameter. If you need to reach this station via one or more digipeaters, enter the list list of digipeaters following the destination station's callsign (note that the word "via" is not needed). If you don't specify a on the connect command, the system will attempt to make a NET/ROM connection to the node given by the "" parameter. You can get a list of nodes known to this system by using the "Nodes" command. 8.3.5. Download [/] The Download command sends an ASCII (plain text) file from the remote host to the current directory of the local host. The optional is to be included if the desired file is not in the current directory, as determined with the What command. 8.3.6. DU [/] The DU (download uuencoded) command sends a binary file, converted to uuencoded ASCII from the remote host. You will need the UUDECODE.EXE program to convert this ASCII file back to binary after the download. 8.3.7. Escape [] Without an argument, Escape displays the current escape character. This character is used to exit from a chat session. The escape character may be changed to one of your preference by entering "Escape" followed by and the character that will become the new escape character. This must be a single typed character (the key may be used in addition). 8.3.8. Finger [][@] The Finger command retrieves personal information about users of a system. When issued without parameters, a list of known users on the mailbox host is displayed. For more information on the finger command, see section 10.2. 8.3.9. Help [] The Help command will display help for a given command. Without a parameter, "Help" will display the following list of command names for which help information is available: area bye connect download escape finger help info jheard kill list musers - 31 - nodes operator ports read send telnet upload verbose xpert what zap To provide help information on your own system, you will need to install the mailbox help files, described in Section B.11 of Appendix B. 8.3.10. Info The Info command provides information about the mailbox host. This information must be made available by the mailbox manager, as described in Section B.11 of Appendix B. 8.3.11. Jheard [] The Jheard command displays a list of all the station callsigns that have been heard by the mailbox host packet station on the specified interface. With no argument, the "heard" lists for all interfaces is displayed. The format of the display is the same as that for the "ax heard" command, described in section 10.1. 8.3.12. Kill [ ...] The Kill command deletes messages from the current mailbox area (if you have been given that permission by the operator). At least one message number must be supplied. 8.3.13. List [ [] ] The List command displays a list of the messages in the current mailbox (or "area"). For each message, the list contains the subject header line, the time and date it was created, who it is from, how many bytes long it is, and whether or not it has been read. You may include an optional from which to begin displaying the list. If you specify a starting message number, then you may also specify an ending number as well. This will limit the display for you in case there are a large number of messages in a particular "area" mailbox. 8.3.14. Musers The Musers command displays a list of all the current users of the mailbox and how they have connected to it. 8.3.15. Nodes [] The Nodes command without a parameter prints a list of NET/ROM nodes that are known to the mailbox system. For a specified known node, information on the node is displayed. A connection to one of these nodes can be attempted with the "Connect " command. 8.3.16. Operator The Operator command initiates a keyboard chat with the operator of the mailbox system. When you select this mode, a new window will be opened on - 32 - the operator's console, and whatever you type will be visible there. If the operator is present, and types something in return, it will be sent back to you. If the operator is not present (the mailbox attended flag is off on the operator's host), you will receive the message "Sorry -- the system is unattended" and the mailbox prompt will again be displayed. When you wish to terminate the chat session, type the escape character on your keyboard, and then press . The default escape character is CTRL- X. This escape character may be changed to whatever you prefer by using the "Escape" command. 8.3.17. Ports The Ports command prints a list of AX.25 interfaces (ports) that are installed on the mailbox system, along with a description if one has been setup for that port. These ports can be used to make outgoing AX.25 connections with the "Connect" command. 8.3.18. Read [ ...] The Read command allows you to read a message (or messages) from the current mail area. The read a specific message, you may either type "read " or just the number by itself. Typing at a mailbox prompt displays the message indicated by the "Current msg #" in the prompt. 8.3.19. Send There are three versions of the Send command, allowing you to compose or forward a mail message: S[end] [@] SR [message_number] SF [@] The "S" command allows you to compose a message to be sent to the indicated address. The "SR" command allows you to compose a "reply" to either the current message or the message number specified. The subject will be copied and the reply will be sent to the address it was sent from. In composing a message, remember to enter at the end of each line and to terminate the message with either /EX or CTRL-X followed by . A message can be aborted with CTRL-A. The "SF" command will forward a copy of the current message to the user specified. 8.3.20. Telnet The Telnet command allows you to initiate a mailbox or BBS session on another host. This allows an AX.25 user to gain access to the TCP/IP network. 8.3.21. Upload [/] The Upload command allows you to transfer an ASCII file from the local host to the mailbox host. A directory other than the current working directory on the mailbox host may be specified. The transfer proceeds line-by-line until the file is complete. The transfer is terminated by entering either a CTRL-Z - 33 - or /EX and on an otherwise blank line. 8.3.22. Verbose [ ...] The Verbose command is the same as the Read command, but all headers on the mail message are displayed. The Read command only displays an abbreviated header. 8.3.23. What [] The What command displays a sorted directory listing of the current directory or the specified directory. 8.3.24. Xpert The Xpert command toggles this mailbox session between using long and short prompts. 8.3.25. Zap [directory>/] The Zap command deletes in the current directory or the specified directory. You must be granted permission to delete files by the operator of the mailbox system to use this command. 9. AX.25 Services NOS provides AX.25 services, better known as the standard packet radio protocol that you probably used before you switched to TCP/IP. This allows you to use NOS to move to another frequency and check into the local AX.25 PBBS, or to initiate a keyboard session with a friend who hasn't been convinced to switch to TCP/IP yet. 9.1. Initiating an AX.25 Connection The connect command is used to initiate an AX.25 connection. The syntax is: connect ax0 [ ... ] This initiates an AX.25 session to the specified call sign. Up to 7 optional digipeaters may be given; note that the word "via" is NOT needed. Data sent on this session goes out in conventional AX.25 packets with no upper layer protocol. The de-facto presentation standard format is used, in that each packet holds one line of text, terminated by a carriage return. Two examples are: connect ax0 n3eua (connect direct to N3EUA) connect ax0 n3eua n1fed n0ccz (connect to N3EUA via N1FED and N0CCZ) In response to this command, a new session will be initiated, with the following message for the first example above: - 34 - Trying N3EUA on ax0... If the connection is made, the following is displayed: AX25 session 2 connected to n3eua At this point, you're connected just like using a plain old TNC, on a session which can be suspended, resumed, or closed as with all NOS sessions. When you're ready to disconnect, use the key to escape from the session back to the "net>" prompt, and then type "disconnect", as described in section 9.3. 9.2. File Upload and Download AX.25 sessions can be recorded to a file and a file can be uploaded in place of typing the information on the keyboard. 9.2.1. record | off Opens and appends to it all data received or sent on the current AX.25 session. If you are in AX.25 converse mode and want to initiate recording, you will need to use the key to escape back to command mode to issue the record command. The message "Recording into " will be displayed and another "net>" prompt will be issued. Enter on a blank line and you will return to the AX.25 converse mode with recording activated. The command "record off" stops recording, displays the message "Recording off" and closes the file. 9.2.2. upload Opens and sends it on the current AX.25 session as though it were typed on the terminal. If you are in AX.25 converse mode and want to initiate uploading, you will need to use the key to escape back to command mode to issue the upload command. The uploading is initiated, but the file contents are not displayed on the screen during the uploading and no message is displayed to indicate that the uploading is complete. Enter on a blank line at the "net>" prompt and you will return to the AX.25 converse mode. 9.3. Terminating an AX.25 Connection To terminate an AX.25 connection, use the following command: disconnect [] If you are in AX.25 converse mode, press to escape back to the "net>" prompt to issue this command. If you are running only one session, entering disconnect without arguments will terminate the connection. If you have multiple sessions, entering disconnect without arguments will initiate a close on the current session. If you are running multiple sessions, the "session" command will display a list of these sessions. Entering disconnect with a - 35 - session number argument will initiate a close on the specified session. After entering disconnect, if you re-enter the disconnected session, you will find the message "AX25 session 1 closed: Normal" and the session will be terminated. Note that "disconnect" is the same as the "close" command and that the two command names can be used fully interchangeably. 10. Network Information and NOS Status Several commands are available to acquire information about the network and its users and about the status of NOS and its mailbox. 10.1. ax25 heard Displays the AX.25 "heard" list. For each interface that is configured to use AX.25, a list of all AX.25 addresses (callsigns and host names) heard through that interface is shown, along with a count of the number of packets heard from each station and the interval, in hr:min:sec format, since each station was last heard. This entry is always present even if no packets have been sent. If this list is too long to be displayed on one screen, it will be handled by the "more" function, although a new session will not be created. For example: Interface Station Time since send Pkts sent ax0 N6GF 0:00:00:11 74 Station Time since heard Pkts rcvd : Station Time since heard Pkts rcvd N6SPE-1 0:00:00:08 328 : N6GF 0:00:00:11 73 KB6KYJ-15 0:00:00:33 17 : HIGH 0:00:00:33 419 K6DOP-15 0:00:00:56 50 : KB6RIH 0:00:16:21 140 N6YUV 0:00:25:07 43 : W6HIR-1 0:00:35:12 10 The first two lines indicate that the local host "N6GF" has sent out a total of 74 packets on interface ax0, with the last packet sent 11 seconds ago. The following five lines provide information on eight remote hosts that have been heard on the interface. To clear the "heard" list and begin accumulating new information, use the command: ax25 flush 10.2. finger [][@] This command allows you to "finger" information files on your host or on a remote host. Finger files are described in section B.9 of Appendix B. is the name of the finger information file you wish to query and is the name of the remote host where the file resides. If you issue the command in the following form: finger - 36 - you can query information from a finger file on the local host, namely your own system. This is useful for testing finger on a system that you know is running. The command in the following form: finger @ returns a list of all finger files available on . It also displays a list of users currently logged into the mailbox, in the following form: Current remote users: User State S# Where n6spe CMD 137 44.2.0.100:1033 This indicates that user N6SPE is at the mailbox prompt (CMD), in session number 137, on IP address 44.2.0.100, port 1033. Finally, issuing the command in the form: finger @ will display from . This initiates a new NOS session and the output displayed is processed by the "more" command, described in Section 4.4.2. 10.3. ping [ []] This command is used to see if a remote host is on the air and if so, to determine the quality of the path between the local and remote host. When the command is issued in the form: ping the remote host given in the argument is queried once. If it returns an echo, the IP number of the host and the round trip time required are displayed. For example: 44.2.0.96: rtt 4007 In this case, the round trip to the remote host [44.2.0.96] took 4007 ms, or about 4 seconds. If no echo is received, due to the host being off the air, a poor path to the host, or a packet collision, nothing is displayed. The default is to transmit a short ping packet. The argument sets the byte-length of the transmitted ping packet. This can be used to determine if long packets result in frequent collisions. If the parameter is supplied, pings will be repeated indefinitely at the specified interval. This sets up a repetitive test, where the remote host is queried at a time interval given by the number in the second argument, interpreted in milliseconds. Users should be careful not to overdo this testing, as the ping queries will add to channel congestion. The results are displayed in a separate session, which can be suspended or - 37 - resumed. This session and the accompanying pings are continued until the session is stopped by escaping back to the "net>" prompt and issuing the "close" command. For example, the following command: ping eyolo 80 10000 results in the session display: Resolving eyolo... Pinging eyolo (44.2.0.96); data 80 interval 10000 ms: sent rcvd % rtt avg rtt mdev 1 1 100 4947 4947 0 2 2 100 3477 4763 368 4 3 75 4374 4714 373 5 4 80 3972 4621 465 Five packets were sent to the remote host eyolo and only packet 3 was not received. The column labeled "%" gives the percentage of pings received, "rtt" gives the round-trip time for each packet, "avg rtt" is the running average round-trip time, and "mdev" is the mean deviation of this time. The round-trip times reported by the "ping" command depend on the setting of the "isat" mode. If "isat" is on, times are reported to the nearest millisecond. If "isat" is off, times are reported in multiples of 55ms. For further information on the "isat" command, see section B.4.6 of Appendix B. 10.4. trace The trace command is used to monitor the activity on an interface. The syntax of this command is: trace [ [off | []]] The flags enable or disable tracing and determine the amount of information displayed. Without arguments, trace gives a list of all defined interfaces and their tracing status. When the radio interface is specified, tracing status is given for this interface only. The Broadcast/Type/Input/Output (BTIO) flag settings specify the amount of information produced. The BTIO settings are expressed as a hexadecimal number as follows: B=1: Broadcast filter flag enabled. Only packets specifically addressed to this interface will be displayed. Broadcast packets will be ignored. B=0: Broadcast filter flag disabled. T=2: Protocol headers are decoded, and the entire packet (headers AND data) is also displayed in hexadecimal and ASCII, 16 characters per line. Unprintable characters are displayed as dots. - 38 - T=1: Protocol headers are decoded, and data (but not the headers themselves) are displayed as ASCII characters, 64 characters/line. T=0: Protocol headers are decoded, but data is not displayed. I=1: Enable tracing of input packets. I=0: Disable tracing of input packets. O=1: Enable tracing of output packets. O=0: Disable tracing of output packets. By default, trace output is displayed on the screen. If is given, trace output is saved in the specified file. The trace file is closed by setting the BTIO flags to 0. For example, to trace the activity on interface ax0, with an ASCII display: trace ax0 111 To turn off this tracing: trace ax0 000 10.5. status The "status" command displays general information about NOS. It is useful for monitoring file access. An example of the display generated by NOS: KA9Q Internet Protocol Package, v911229 (PA0GRI v2.0h) This version produced by Gerard van der Grinten - PA0GRI NOS load information: Code Segment = 0caa - Data Segment = 5949 The system time is Wed Mar 18 06:40:49 1992 NOS was started on Tue Mar 17 21:28:08 1992 Elapsed time => 0 days:09 hours:12 minutes:41 seconds. The station is currently Unattended. The 'Message Of The Day' is Please send email if I am not here -- thanks, Gary Table of Open Files. -------------------- Name length offset hnd acc PSP device type/owner ---- ------ ------ --- --- --- ----------------- README .TXT 536 536 1 rw 0636 drive C: [nos.exe] NOS .LOG 8757 8757 1 rw 0636 drive C: [nos.exe] TMP6 .$$$ 3950 2048 1 r 0636 drive C: [nos.exe] - 39 - The files listed include README.TXT, which was being displayed by a "more" command, NOS.LOG, which is the NOS log file, discussed in section B.4.26 of Appendix B, and TMP6.$$$, a temporary file created for a directory listing generated by the "dir" command. 10.6. mbox status Displays information about the current users of the NOS mailbox. An example of the display generated: User State S# Where n6spe CMD 145 44.2.0.100:1027 n6cng LOGIN 149 44.2.0.100:1028 This provides the callsigns of the users, the state of their activity, the sequential session number, and the IP address and port under which their session is conducted. The state "CMD" means the user is at the command prompt, and "LOGIN" means the user is in the midst of the login process. 11. Advanced Topics While this document is intended to be a guide for beginners, there are a few advanced topics of interest to many users that should be mentioned. The presentation of these topics is concise and the reader should consult the "Network Operating System User Reference Manual," by Phil Karn and Gerard van der Grinten, for details. Note that the commands included in the NOS configuration file, AUTOEXEC.NOS, and described in Appendix B, can also be used interactively. Further, these commands, when issued without their variable arguments, will report the current values of these arguments. For example, the "route" command, issued without arguments, will display the current routing table. These commands, issued with arguments, can be used to alter the configuration of NOS while it is running. For example, "route add," described in section B.4.10, can be used to add entries to the routing table, possibly to experiment with alternative routes. To drop routes that are found to be unreliable, the following command can be used: route drop where is the IP address or host name for the destination of your packets. Note that if you find better routing methods with this experimentation, you will have to edit the "route add" commands in your AUTOEXEC.NOS file for this routing table to be in effect the next time you run NOS. 11.1. TCP The TCP command can be used to monitor and control session status at a lower level than provided elsewhere in NOS. - 40 - 11.1.1. tcp status [] Issued without the optional argument, this command displays the status table for TCP sessions. For example: ( 1)tcpRtoAlgorithm 4 ( 2)tcpRtoMin 0 ( 3)tcpRtoMax 4294967295 ( 4)tcpMaxConn 4294967295 ( 5)tcpActiveOpens 5 ( 6)tcpPassiveOpens 5 ( 7)tcpAttemptFails 0 ( 8)tcpEstabResets 0 ( 9)tcpCurrEstab 2 (10)tcpInSegs 109 (11)tcpOutSegs 111 (12)tcpRetransSegs 5 (14)tcpInErrs 0 (15)tcpOutRsts 0 &TCB Rcv-Q Snd-Q Local socket Remote socket State 750f0008 0 335 44.2.0.100:1037 44.2.0.32:smtp Established 758c0008 0 0 44.2.0.100:1035 44.2.0.96:ftp Established 74940008 0 0 0.0.0.0:smtp 0.0.0.0:0 Listen (S) 70060008 0 0 0.0.0.0:telnet 0.0.0.0:0 Listen (S) 749f0008 0 0 0.0.0.0:finger 0.0.0.0:0 Listen (S) 6fdb0008 0 0 0.0.0.0:ftp 0.0.0.0:0 Listen (S) 6ff90008 0 0 0.0.0.0:ttylink 0.0.0.0:0 Listen (S) The first seven lines give some TCP-level statistics, including the number of packets received (tcpInSegs), sent (tcpOutSegs), retransmitted due to collisions (tcpRetransSegs), current sessions (tcpCurrEstab), sessions opened by a remote host (tcpPassiveOpens), and sessions opened by the local host (tcpActiveOpens). The table below gives a summary of all existing TCP connections. "&TCB" is the TCP address, "Rcv-Q" and "Snd-Q" are the numbers of characters in the receiving and sending queues, "Local socket" and "Remote socket" give the IP address and port of the local and remote host, "State" gives the state of the session. Note that the remote socket IP address is given as 0.0.0.0 for the listening servers. In this example, there is an established outbound smtp session, assigned to port 1037 on the local host, connected to the smtp server of the host with IP address 44.2.0.32. 335 characters are in the queue ready to be transmitted. There is also an established ftp session, assigned to port 1035 on the local host, connected to the ftp server of the remote host with IP address 44.2.0.96. Issuing the command with the argument , taken from the "&TCB" column in the table, will provide a more detailed table of information on the specified TCP connection. Of particular interest is the last line of the table, which provides information about the retry timer. This is the timer that determines when a packet retransmission will be attempted. It is expressed in the form "running time/threshold time," both given in milliseconds. When the running time reaches the threshold, the pending packet will be retransmitted. If receipt of this packet is not acknowledged, the threshold time will be increased and the running timer will be restarted. When the channel becomes congested, the threshold time becomes very large, and the data throughput drops substantially. This is known as the "exponential backoff" strategy of TCP/IP. You should display the TCP status before you exit NOS. This will let you know if there are any active connections. For example, you should not exit NOS if someone is running an FTP session with your host. Except for the - 41 - clatter of your disk drive, you would not be aware of an active FTP session unless you check the TCP status. If there are some active sessions, it is best to leave NOS running so that your TCP/IP node stays on the air. If you think you have "stuck" sessions in which there is no active packet transmission, see section 11.1.3 for information on resetting these sessions. 11.1.2. tcp kick If there is data on the send queue of the TCP connection indicated by the argument , taken from the table generated by the "tcp status" command, this will force an immediate retransmission. This can be attempted if the connection appears to be "stuck." This can happen if the route is unreliable, or if there is considerable channel congestion. This command should be used sparingly, as it adds to channel congestion and defeats the TCP strategies to deal with this congestion. 11.1.3. tcp reset Resets the TCP connection indicated by the argument , taken from the table generated by the "tcp status" command. This effectively terminates the connection. While this command should not be used indiscriminently, there are situations in which it is useful, primarily when a TCP connection has gotten "stuck." The three common situations in which a TCP connection can get stuck are: remote host has crashed, propagation path of the route to the remote host has deteriorated, and there is extreme congestion on the channel. In each of these situations, tcp status for the corresponding TCP connection will show an increasingly large threshold time. If you are in a telnet session or an AX.25 connection, you will find times when the channel is so congested that you will wait nearly forever for a response from the remote host. If you want to give up on the session, escape to NOS and close (or disconnect) the session. If there is no response from the remote host, the session can remain half open and should be reset using the tcp reset command. Similarly, an ftp session can also become stuck. If you are in the midst of a file transfer (get or put operation), escape to NOS and use the "abort" command to terminate the transfer. Then the "quit" command will initiate a close on the session. If there is no response from the remote host, the half open session should be reset using tcp reset. Another situation in which this command is appropriate for use is the "stuck" smtp session. As discussed in section 6.2.14, when a mail message has begun to be sent, it is "locked." If the route to the destination host is unreliable, the exponential backoff strategy of TCP can cause the transfer to be delayed almost indefinitely. If you want to terminate the transfer, so that you can try again at another time, or using a different route, you can reset the corresponding TCP session. When this is done, the associated mail message is unlocked and can be resent, or killed from BM if you want to give up on the message entirely. - 42 - Appendix A. TNC KISS Mode As explained in section 2.2, your TNC must be in KISS mode to run the NOS program. This appendix provides some information on how to enter the KISS mode. For the TNC-2 and clones, using a telecommuncations program or an AX.25 packet program to communicate with the TNC, at the "cmd:" prompt, first type "KISS ON" and you will receive the message "KISS WAS OFF" and another "cmd:" prompt. Type "RESTART" and you should note that the CON and STA LEDs will flash three times to indicate you have entered the KISS mode. This command set will then have effect for subsequent power on/off cycles. To return to normal operation, enter the command "param ax0 255" at the "net>" prompt when you are running the KA9Q TCP/IP software package. For Kantronics TNCs, again using a telecommunications program or an AX.25 packet program to communicate with the TNC, type "KISSMODE ON" while in command mode, followed by "RESET," to put the TNC in KISS mode. Turning the TNC off and then on will cause the TNC to return to command mode. If you first turn KISSMODE ON and then PERM the value in EEPROM, when the TNC is turned on, it will automatically be in KISS mode. To put the AEA PK232 into KISS mode, the following commands should be sent to the TNC using a telecommunications program: START 0 STOP 0 XON 0 XOFF 0 XFLOW OFF CONMODE TRANS HPOLL OFF KISS ON RAWHDLC ON PPERSIST ON HOST ON You can also put your TNC in KISS mode using the NOS command "comm" to send straight text to a TNC still in native command mode during NOS startup. The syntax for "comm" is: comm ax0 "" "comm" sends a text-string via . Note that the string is enclosed by double quote characters to preserve spaces, tabs etc. For example, for the TNC2, you would send the two commands: comm ax0 "KISS ON" comm ax0 "RESTART" - 43 - Appendix B. Installation of NOS and BM As with most software, some effort is needed to get NOS and BM installed and properly configured on your system. This requires setting up the proper directory structure and editing some configuration files. While there are a number of details to attend to, none of this is very difficult. The configuration files discussed below must be edited with a text editor. Any editor will do, as long as it writes ASCII (simple text) files. A word processing program will work as well, as long as you have it write an ASCII output file. B.1. Installation Overview It will be assumed that you have received a disk (or disks) containing at least the files NOS.EXE and BM.EXE. You may also have the files AUTOEXEC.NOS, DOMAIN.TXT, FTPUSERS, and ALIAS, although if these were not included on your distribution, don't worry, as you will be able to create them with an editor. NOS can be installed in any directory, but for this example, I will assume that it will be installed in \nos, to be referred to as the NOS directory, preferably on your C:\ hard disk drive, or otherwise on your A:\ floppy disk drive. lf you choose to install NOS in another directory, just replace \nos with the chosen directory in the directions below. The steps required for this installation are the following: 1.Create the directory structure described in section B.2. 2.Copy NOS.EXE and BM.EXE to the NOS directory. 3.Edit your AUTOEXEC.BAT file in the root directory to include the NOS directory in the path and to add the environment variables, as described in section B.3. 4.Create the file AUTOEXEC.NOS in the NOS directory and edit as described in section B.4. 5.Create the file DOMAIN.TXT in the NOS directory and edit as described in section B.5. 6.Create the file BM.RC in the NOS directory and edit as described in section B.6. 7.Create the ALIAS file in the root directory and edit as described in section B.7. 8.Create the FTPUSERS file in the NOS directory and edit as described in section B.8. 9.Create the finger file(s) in the directory \nos\finger and edit as described in section B.9. 10.Create the file AREAS in the directory \nos\spool as described in section B.10. 11.Copy or create the mailbox help files in the directory \nos\spool\help as described in section B.11. Note that the NOS.EXE executable is generally provided in a self- extracting compressed form. It has been compressed to save disk space and transfer time. When you execute the program, it is automatically uncompressed and thus occupies much more memory space than disk space. - 44 - B.2. File Structure Most of the required files will be kept in the NOS directory, but several other directories must also be set up. \nos\spool The NOS log file (described in section B.3.26) is normally stored in this directory. The mail log file, MAIL.LOG is created in this directory by smtp and the mailbox AREAS file resides in this directory. \nos\spool\mail This directory holds the individual mailboxes for each user name on your system. The extension .txt is added to the user name to form the mailbox name. Mail received by the SMTP server is appended to the mailbox file. \nos\spool\mqueue The directory holds the outbound mail jobs. Each job consists of 2 files: an xxx.txt and xxx.wrk file, where xxx is a unique numerical prefix. When the job is being sent, an xxx.lck file is also created. The file sequence.seq is used to keep track of the last message number. The mail transport protocol, SMTP, and the mail program, BM, manage the files in this directory. \public This directory and its sub-directories are normally set up to hold the files available for anonymous ftp, described in section B.8. \nos\finger This directory holds the finger files, described in sections 10.2 and B.9. \nos\spool\help This directory holds the mailbox help files, described in section B.11. The files that reside in the NOS directory include: NOS.EXE BM.EXE AUTOEXEC.NOS HOSTS.NOS BM.RC ALIAS FTPUSERS B.3. DOS Environment -- AUTOEXEC.BAT To set up the DOS environment to run NOS, you will need to make some additions to your AUTOEXEC.BAT file. First, the NOS directory must be included in the PATH command. Consult your DOS manual for information on the PATH command. Second, several environment variables must be set, as described below. B.3.1. TZ TZ is the time zone, used in mail headers. An example TZ setting is: - 45 - set TZ=PST8 The first 3 characters are the time zone (PST, the Pacific Standard Time, in the example above) and the fourth character is the number of hours from Universal Coordinated Time (UTC). If TZ is not set, UTC is assumed. B.3.2. BMRC BMRC specifies the directory where the BM startup file, BM.RC, is located. This is usually the NOS directory. For example: set BMRC=C:\NOS If BMRC is not set, BM attempts to find BM.RC in the root directory. B.3.3 TMP TMP specifies the directory where temporary files are created. For example: set TMP=C:\TMP If TMP is not set, the temporary files are created in the root directory. B.4. NOS Configuration File -- AUTOEXEC.NOS The AUTOEXEC.NOS file, created in the NOS directory, has a function similar to that of the AUTOEXEC.BAT file in DOS, hence the name. When NOS is executed, it reads AUTOEXEC.NOS and executes all of the commands as if they had been typed in to the program from the keyboard. This provides an easy mechanism for setting up the initial system configuration, including setting the callsign, IP address, hostname, AX.25 parameters, routing table, servers to start, and protocol variables. An example AUTOEXEC.NOS file is often distributed with the NOS software. This file is fully commented and explains how the example file should be edited for your use. If this file is not available, use a text editor to create the file, following the instructions given in the subsections below. It is suggested that you put the commands into AUTOEXEC.NOS in the order given below. B.4.1. # Commands starting with the hash mark (#) are ignored. This is mainly useful for comments in the AUTOEXEC.NOS file. The comments can appear anywhere in the file. B.4.2. hostname Sets the local host's name (an ASCII string, NOT an IP address). This is usually chosen to be .ampr.org, where is your amateur call sign. The suffix "ampr.org" is officially recognized as meaning an "AMateur Packet Radio" station. Note that in some areas, only is used as the hostname. Your hostname will show up in mail headers and in the greeting messages from the SMTP (mail), FTP (file transfer), and AX.25 mailbox servers. For example: - 46 - hostname n6gf.ampr.org B.4.3 ax25 mycall [-] Set the local AX.25 address. It does the same thing that "MYCALL" does in your AX.25 TNC. The standard format is used, e.g., KA9Q or WB6RQN-5. The optional dash (-) and following the callsign is the SSID (substation ID), used when it is necessary to distinguish between two or more packet stations with the same callsign. The SSID will be 0 unless explicitly set to another value, which must be a integer number from 0 to 15. This command must be given before any attach command using the AX.25 mode is given. For example: ax25 mycall n6gf B.4.4 ip address Sets the local IP address. See section 2.4 for information on acquiring an IP address. For example: ip address [44.2.0.100] B.4.5. attach The attach command configures and attaches a hardware interface to the system. While many interfaces can be handled by NOS, in this guide, only a single serial interface to a TNC running the KISS protocol will be considered. The general form of the command for our purposes is: attach asy ax25 "asy" refers to a standard PC asynchronous interface. Other hardware interfaces are supported by NOS, but will not be covered in this guide. is the base address of the control registers for the serial interface. is the interrupt vector number. Both the I/O address and the vector must be in hexadecimal. (You may put "0x" in front of these two values if you wish, but note that they will be interpreted in hex even if you don't use it). "ax25" forms IP datagrams to correspond to the AX.25 packet protocol. Other modes are supported by NOS, but will not be covered in this guide. is the name by which the interface will be known to the various commands, such as "connect," "route" and "trace". You may choose any name you wish for each interface, although it is common to choose "ax0," "ax1," etc. - 47 - specifies the size of the ring buffer in bytes to be statically allocated to the receiver in an asynchronous port; incoming bursts larger than this may (but not necessarily) cause data to be lost. The suggested value is 1024. is the maximum transmission unit size, in bytes. Datagrams larger than this limit will be fragmented at the IP layer into smaller pieces. The suggested value is 256. is the baud rate of the serial communication between the computer and the TNC. It must be chosen to be the same value as the baud rate selected on the TNC, as discussed in section 2.3. The suggested value is 4800 for an XT, and 9600 for an AT. Example 1 -- Attach the PC serial card normally known as "com1" (the first controller) to operate in AX.25 mode at 4800 baud with a KISS TNC: attach asy 0x3f8 4 ax25 ax0 1024 256 4800 Example 2 -- Attach the secondary PC serial card ("com2") to operate in AX.25 mode at 4800 baud with a KISS TNC: attach asy 0x2f8 3 ax25 ax0 1024 256 4800 B.4.6. isat [on | off] Sets the AT clock flag. For a PC/AT, 386, or 486 machine, "isat" should be set to "on." For an original PC or PC/XT (8086 or 8088 machines), "isat" should be set to "off." For example: isat on B.4.7 multitask [on | off] Set NOS multitasking. When set to "on", NOS continues to run when the user has issued the shell (!) or "mail" command. This enables NOS to process packets and begin sessions even while the user is at the DOS prompt or in BM (or another mail program). The disadvantage to multitasking is increased memory usage, since memory cannot be allocated by NOS due to the presence of the other program. Thus most versions of NOS grab some memory before actually shelling out and this remains on the heap after NOS is re- entered. Consequently the amount of core memory available drops significantly the first time a shell is used. When set to "off", all NOS sessions are suspended when the user has issued the shell (!) or "mail" command. The sessions are restarted when the user exits from the DOS subshell, or quits the mail program. For example: - 48 - multitask on B.4.8. ip ttl Sets the default time-to-live value placed in each outgoing IP datagram. This limits the number of switch hops the datagram will be allowed to take. The idea is to bound the lifetime of the packet should it become caught in a routing loop, so the value should be somewhat larger than the diameter of the loop. A suggested value is 16. For example: ip ttl 16 B.4.9. param ax0 Param invokes a device-specific control routine. On a KISS TNC interface, this sends control packets to the TNC. Data values are treated as decimal. This command is used to change TNC parameters such as TXDELAY, TXTAIL, PERSIST, and SLOTTIME. This command is TNC-specific, so you must read the documentation for the KISS implementation for your TNC. Most KISS implementations include good default values, so you shouldn't have to use this feature, but if things don't work, you can use the "param" command to try tweaking the TNC. On a TNC-2, =1 will set TXDELAY (the time after key down when packet information is transmitted) to times 0.01 seconds. To set TXDELAY to 0.5 seconds: param ax0 1 50 On Kantronics TNCs, =1 sets TXDELAY to times 0.01 seconds, as with the TNC-2. For =2, PERSIST is set to . For =3, SLOTTIME is set to X 0.01 seconds. The default values for these parameters are generally acceptable, so it is usually not necessary to include these commands in AUTOEXEC.NOS. To properly set up the serial interface to your TNC, you need to include the following commands, which set RTS (ready to send) and DTR (data terminal ready): param ax0 rts 1 param ax0 dtr 1 B.4.10. route add The "route add" command adds an entry to the routing table, defining how your outgoing packets should be routed. Routing can be a complicated issue, so it would be best for you to get some help on this from an experienced local TCP/IP user. The command syntax is: - 49 - route add [/bits]|default ax0 [] Your objective is to route your packets directly to those hosts that you can "hear" and route your packets to the remaining hosts through hosts that can serve as gateways (similar to AX.25 digipeaters). The destination host for your packets is , which is either an IP address or a host name, as defined in the file DOMAIN.TXT, described in section B.4. The gateway is , also an IP address or host name. Note that it is not necessary to specify the entire sequence of hosts from your system to the destination, but rather only the destination and the first stop on the way. If the routing table on the other hosts has been set up properly, your packets will get to the desired destination. Thus, everyone has to cooperate to keep packets moving. In my area, N6RQR is over 40 miles away, but he is up in the foothills above me and has a good station, so I can communicate with him directly. His IP address is [44.2.0.54], so I route packets directly to him with the statement: route add [44.2.0.54] ax0 The option "/bits" can be used to avoid having to include a route add statement for each and every host you can communicate with directly. To understand this, more details on IP addresses are needed. The IP address is a 32-bit number, with four 8-bit numbers separated with periods (.). Each 8-bit number can range from 0 to 255. The optional "/bits" suffix to the destination host id specifies how many leading bits in the host IP address are to be considered significant in the routing comparisons. If not specified, 32 bits (i.e., full significance) is assumed. With this option, a single routing table entry may refer to many hosts all sharing a common bit string prefix in their IP addresses. For example, [44.0.0.0]/8 would match all addresses in the form [44.*.*.*], where "*" is any number between 0 and 255; the remaining 24 bits are "don't-cares". When an IP address to be routed matches more than one entry in the routing table, the entry with largest "bits" parameter (i.e., the "best" match) is used. This allows individual hosts or blocks of hosts to be exceptions to a more general rule for a larger block of hosts. The "/bits" option can be used to route packets directly to all the hams on TCP/IP in my town. We have been assigned IP addresses in the range [44.2.0.96] to [44.2.0.111], so our addresses agree in the first 24 bits. Further, 96 decimal is 01100000 binary and 111 decimal is 01101111 binary. Thus, our addresses agree in an additional 4 bits, for a total of 28 bits. The command used is: route add [44.2.0.96]/28 ax0 Hams in a neighboring region have been assigned IP addresses of the form [44.4.*.*]. N6RQR can forward packets to them, so we use him as a gateway with the command: - 50 - route add [44.4.0.0]/16 ax0 n6rqr The special destination "default" is used to route datagrams to addresses not in the routing table; it is equivalent to specifying a /bits suffix of /0 to any destination host. Care must be taken with default entries since two nodes with default entries pointing at each other will route packets to unknown addresses back and forth in a loop until their time-to-live value is exceeded (see "ip ttl" above). (Routing loops for specific addresses can also be created, but this is less likely to occur accidentally). In my area, we route packets to all other destinations through our local switch, which has the host name "eyolo." The command used is: route add default ax0 eyolo B.4.11. smtp timer Sets the interval to , in seconds, between scans of the outbound mail queue to determine if there is any new outgoing mail which should be sent. For example, "smtp timer 600" will cause the system to check for outgoing mail every 10 minutes and attempt to deliver anything it finds. For an end-user system that is not normally intended as a mail forwarder, you do not want to set the interval to be too short, as you will be frequently accessing disk needlessly. An interval of 30 minutes (=1800) is probably reasonable. You can also "kick" out the mail manually, as described in section 6.5.1. The suggested command is: smtp timer 1800 B.4.12. smtp gateway Defines the host to be used as a "smart" mail relay. Any mail sent to a host not defined in the file "DOMAIN.TXT" will instead be sent to the gateway for forwarding. You will have to ask locally if there is a host that is used as a mail gateway. If so, include this command in AUTOEXEC.NOS. B.4.13. tcp mss Set the TCP maximum segment size in bytes that will be sent on all outgoing TCP connect requests (SYN segments). This tells the remote end the size of the largest segment (packet) it may send. An mss of 216 will force folks to send you packets of 256 characters or less (counting the overhead). Suggested command: tcp mss 216 B.4.14. tcp window Sets the window parameter, which establishes the maximum number of bytes - 51 - that may be outstanding before your system expects an ack. If the window is twice as big as mss, for example, there will be two active packets on the channel at any given time. Large values of window are a problem on the air. Keep mss <= window <= 2*mss. Suggested command: tcp window 432 B.4.15. start Starts the specified Internet server, allowing remote connection requests. Suggested commands: start ftp start telnet start ttylink start smtp start finger start ax25 B.4.16. ax25 digipeat [on|off] Controls whether AX.25 packets addressed to this station as a digipeater will be repeated or not. If you want to operate as a digipeater (for those poor souls not operating TCP/IP), include the following command: ax25 digipeat on B.4.17. ax25 filter Controls whether the list of call signs heard is logged or not. is chosen from: 0: Log source and destination stations 1: Log destination stations only 2: Log source stations only 3: Disable all logging In this guide, only source station log displays have been covered, so the suggested command is: ax25 filter 2 B.4.18. ax25 maxframe Establishes the maximum number of frames that will be allowed to remain unacknowledged at one time on AX.25 connections. This number cannot be greater than 7. Suggested command: ax25 maxframe 1 - 52 - B.4.18. ax25 paclen Limits the AX.25 packet length. This parameter should be less than or equal to the defined in the attach command. Suggested command: ax25 paclen 256 B.4.20. ax25 retry Limits the number of successive unsuccessful retransmission attempts on AX.25 connections. If this limit is exceeded, link re-establishment is attempted. If this fails "retry" times, then the connection is abandoned and all queued data is deleted. Suggested command: ax25 retry 10 B.4.21. ax25 window Sets the number of bytes that can be pending on an AX.25 receive queue. Suggested command: ax25 window 2048 B.4.22. attended [on | off] This tells the host initiating the chat session if your system is attended or not. The default is "attend on" so if you do not regularly attend your system, you should use the command: attended off B.4.23 motd Sets the "message of the day," which is sent when another stations initiates a keyboard chat (ttylink) session with you. For example: motd "If station is unattended, please leave a mail message" B.4.24. mbox attended [on | off] This tells a users logging into the mailbox if your system is attended or not. Keyboard chat sessions are accepted if this flag is on. If you do not regularly attend your system, you should use the command: mbox attended off - 53 - B.4.25. mbox motd Sets the mailbox "message of the day," which is sent when a user logs into your mailbox. For example: mbox motd "Type 'H' for help, 'I' for information" B.4.26. mbox expert Sets the prompt displayed in the mailbox. When on, the full prompt shown in Section 8.2 will be displayed. When off, the prompt will be reduced to simply ">." B.4.27. log Defines the name of the file for NOS log entries. Don't include this command if you don't want to keep a log. The suggested command is: log \nos\spool\nos.log You should read this file occasionally and then discard it, as it can grow to be quite large. B.4.28 popmail addserver [] If you receive your mail through a local switch, you need to contact the administrator of that system to see if "pop" (post office protocol) is used to deliver the mail. If so, you need to include the popmail addserver, kick, and quiet commands in your AUTOEXEC.NOS file. The "popmail addserver" command defines parameters for receiving mail from a POP server. is the name of the host providing POP service; is the interval in seconds between interrogations of the pop server to see if you have mail waiting, which is typically set to 30 minutes (1800 seconds); is either POP2 or POP3, depending on the service the host is providing; is the name assigned to your mailbox on the pop host (usually your callsign); and and are the username and password assigned by the administrator of the pop server, which are often both set to your callsign. For example, N6GF receives pop mail from the host "eyolo.ampr.org" and includes the following command in his AUTOEXEC.NOS file: popmail addserver eyolo.ampr.org 1800 POP3 n6gf n6gf n6gf If you regularly receive your mail from a pop server, then the mail address you should give to your correspondents is @, where is your mail username (usually your callsign) and is the name of the pop server. This address should be used in the "reply to" field in the BM.RC file, described in section B.6 of this appendix. - 54 - B.4.29. popmail kick Starts a pop session with the specified host to retrieve mail. B.4.30. popmail quiet Set the popmail quiet flag. This flag determines whether you are notified of new mail arriving via pop. B.4.31. remote kick If you receive mail from a local switch that is not running a pop server, then you need to include the "remote" command in your AUTOEXEC.NOS file to "kick" any pending mail deliveries. is the hostname of the switch which is forwarding your mail. If you regularly receive your mail from a switch not running a pop server, then the mail address you should give to your correspondents is %@, where is your mail username (usually your callsign), is the name of your host, and is the name of the switch which forwards your mail. This address should be used in the "reply to" field in the BM.RC file, described in section B.6 of this appendix. B.5. The Host Table -- DOMAIN.TXT The file DOMAIN.TXT, residing in the NOS directory, provides a mapping between an IP addresses and symbolic hostnames. It is used by NOS to look up a hostname to figure out the correct IP address to use. These hostnames may be used in establishing a TCP/IP connection, e.g. it is not necessary to enter "telnet [44.2.0.98]", but merely "telnet n6spe". Each entry takes one line, and the fields are separated by tabs. For example: eyolo.ampr.org. IN A 44.2.0.96 "IN" is the class of the record. It means Internet, and is included in all enties. "A" is the type of the record, and it means that this is an address record. Domain name eyolo.ampr.org therefore has Internet address 44.2.0.96. Another possible entry is the "CNAME" (Canonical Name) record. For example: pc.n6spe.ampr.org. IN CNAME eyolo.ampr.org. This says that domain name "a.n6spe.ampr.org" is actually an alias for the system with (primary, or canonical ) domain name "eyolo.ampr.org." When a domain name having a CNAME record is given to NOS, the system automatically follows the reference to the canonical name and returns the IP address associated with that entry. DOMAIN.TXT is a plain text file and it may be easily edited by the user to add, change or delete records. If there is an established group of TCP/IP - 55 - users in your area, they probably maintain an up-to-date DOMAIN.TXT table that is made available by an ftp file transfer. B.6. Mail Configuration File -- BM.RC The BM.RC file, created in directory indicated by the BMRC environment variable, provides BM with the configuration needed for the operation of the mailer. The format for each line in the BM.RC file is: The variables described below are valid in the BM.RC file. B.6.1. host Sets the local hostname for use in the mail headers. This is a required field. This should match the hostname definition in AUTOEXEC.NOS. B.6.2. user Defines the user name of the person who is sending mail. This is also used as the default mailbox for reading mail. On the AMPRNET this is usually set to your call. There is a DOS limit of 8 characters for the user name. B.6.3. edit \ Defines the name of the text editor you wish to use to compose and edit the text of outgoing messages. is the name of the editor and is the name of the directory where it is stored on the host computer. The use of edit is optional. B.6.4. fullname Provides your full name to the mailer for use in the comment portion of the "From:" header line. The use of fullname is optional. B.6.5. reply Defines the address where you wish to receive replies to messages sent. This option is useful if you are operating your pc on a local area network and would like your mail replies sent to a more "well known host," for example, your local switch. The address specified by reply is used to generate a "Reply-To:" header in outbound mail. The "Reply-To:" header overrides the "From:" header which is the address normally used to reply to mail. This field is optional. B.6.6. mbox Specifies the default file to be used for the "save" command, for saving received messages. This file is in the same format as a mailbox and may later be viewed using the -f option of BM. If this option is not used then the default file name is set to mbox. The full pathname of the file must be - 56 - given, or the file will be created in the root directory. B.6.7. record If defined, a copy of each message sent will be saved in . B.6.8. folder If defined folder contains the directory used by the save command. If not defined, files will be saved in the current directory. B.6.9. smtp Defines the directory containing the mailbox files. The default directory is \spool\mail on the current drive. B.6.10. mqueue Defines the directory containing the outgoing mail files. The default directory is \spool\mqueue on the current drive. B.6.11. Example BM.RC File Here is an example of a BM.RC file: host n6gf.ampr.org user n6gf reply n6gf%n6gf@eyolo edit c:\bin\vi fullname Gary Ford mbox /ford/mail/mbox folder /ford/mail smtp /nos/spool/mail mqueue /nos/spool/mqueue B.7. The Alias File -- ALIAS The ALIAS file provides an easy way to maintain mailing lists. The ALIAS file must be located in the root directory for access from BM, in the NOS directory for access from the mailbox and in both locations for access from both BM and the mailbox. It allows you to send mail to an easily-remembered name, instead of a complicated address. An alias can be any string of characters not containing the "@" symbol. The format for an entry in the alias file is: ... where is the name you have given to this mailing list, which you will use as a mail address and mail address. Note that a long list of aliases can be continued on an additional line by placing a tab or space in the first position of the continuation line. A "#" as the first character on a line indicates a comment. - 57 - Some example aliases are: spe n6spe%n6spe@eyolo dave nn2z@nn2z # mail to local eyolo users ey-gang n6gf%n6gf@eyolo n6spe%n6spe@eyolo In the above example, when specifying ey-gang as the recipient, BM will expand the alias into the list of recipients from the alias file. An alias may not contain another alias from the same file. However, an alias may contain a recipient name that is an alias on the local host or a remote host. For example, if the host "eyolo" contains the following alias in addition to the aliases above: # gang mail gang se-gang@sesac nc-gang@ncsac ey-gang@eyolo then mail addressed to "gang" will be forwarded to the alias "se-gang" at the host "sesac," to the alias "nc-gang" at the host "ncsac" and to the alias "ey-gang" on "eyolo" itself. The mail forwarded to "ey-gang" will then be forwarded again, as indicated by the example alias above for "ey-gang." The use of an ALIAS file is optional. If you are just getting started with TCP/IP, you might want to wait until you are more familiar with mail addressing before you establish this file. More information on mail addressing is given in section 6.4. Your local TCP/IP user group may maintain an alias file, so you should inquire as to its availability. B.8. The FTP and Mailbox Users File -- FTPUSERS Since MS-DOS was designed as a single-user operating system, it provides no access control; all files can be read, written or deleted by the local user. It is usually undesirable to give such open access to a system to remote network users. The ftp server and the mailbox therefore provide their own access control mechanisms. The file "FTPUSERS," created in the NOS directory, is used to control remote ftp and mailbox access. The default for ftp is NO file read/write access. Thus, if the FTPUSERS file isn't created, the ftp server will be unusable. The default for the mailbox is to allow users to read and send mail, but not to have any file read/write access or any access to the mailbox telnet, AX25, or NET/ROM ports. For both ftp and the mailbox, a remote user must first "log in" to the system, giving a login name and password. For ftp, this login name and password must be listed in FTPUSERS for the user to gain access to file transfer commands. For the mailbox, the login name must be a callsign and it and password must be listed in FTPUSERS and have the needed permissions set for the user to transfer files or to use the radio ports. Each entry in FTPUSERS consists of a single line of the form - 58 - There must be exactly one space between each field. Comment lines are begun with "#" in column one. is the user's assigned login name. is the required password. Note that this is transmitted in plain text; therefore it is not a good idea to give general write permission to the root directory. A password of "*" (a single asterisk) means that any password is acceptable. is the list of directories in which the remote user is permitted to have access to files. The directory names in this list must be absolute, i.e., starting from the root directory (/). Multiple directories are specified by separating them with a ";" character and no spaces around it. is a decimal number granting permission for read, write, and overwrite and delete operations for directories in and their subdirectories. The permission codes are: 1 Read files in directories in 2 Create new files in directories in 4 Overwrite and delete existing files in directories in 8 AX.25 gateway operation allowed from the mailbox 16 Telnet gateway operation allowed from the mailbox 32 NET/ROM gateway operation allowed from the mailbox A permission of 2 allows a user to write a new file if it does not overwrite an existing file. A permission of 4 allows a user to write a file even if it overwrites an existing file, and to delete files. These permissions are additive. For example, 3 (2 + 1) means that the user is given read and create permission, but not overwrite/delete permission. Similarly, 7 (4 + 2 + 1) means that the user is given read, write, overwrite and delete privileges. Also, 63 (32 + 16 + 8 + 4 + 2 + 1) provides all read, write, overwrite, and delete permissions and gives access to all gateways. It is a standard convention to keep a repository of downloadable files in the directory \public and to allow users to logon with the username "anonymous" with no password to access these files. In some areas, the public access username is "guest." Every system providing an FTP server is encouraged to provide restricted access to "anonymous" and "guest" users. The appropriate FTPUSERS entries allowing the users "anonymous" and "guest" to read and write files under /public and subdirectories, but not to overwrite or delete any files are: anonymous * /public 3 guest * /public 3 You might want to give a friend access to both his or her own directory as well as the public access directory and to have gateway access. For example: - 59 - n6spe test /users/n6spe;/public 31 This gives user "n6spe," with password "test," read, write, overwrite and delete privileges for files under /users/n6spe and /public and their sub- directories, as well as access to your AX.25 and telnet gateways (permission 31 = 1 + 2 + 4 + 8 + 16). A login name of "univperm" has a special meaning in the user validation mechanism. If univperm is included as a valid login name in FTPUSERS, then any unknown user (not otherwise listed in FTPUSERS) will be given the permissions indicated by the univperm entry. This is primarily useful for giving limited permissions to new mailbox users. For example: univperm * /public 27 This gives an unknown user read and write file access and allows operation on the AX.25 and telnet gateways (permission 27 = 1 + 2 + 8 + 16). B.9. Finger Files Finger files are information files stored in the \nos\finger directory. It is common practice to set up a file for each of the users on the host. Thus, if n6gf is a user, he should have an information file named "n6gf." This file is edited with a text editor and should include information about the user such as his or her full name, address, and phone number. Additionally, information about the packet system, such as computer, TCP/IP software, TNC, radio, and antenna could be included. Using the finger command, as described in section 10.2, the remote user can access the names of the finger files and then have them displayed on his or her console. Thus, you could have a separate information file for your system and include general information about the files available for downloading and your usual hours of operation. There is no specified format for these files. They will be displayed on the remote host just as they appear in the file. B.10. Mailbox Areas File The AREAS file in \nos\spool specifies public message areas which can be accessed from the "areas" command in the mailbox. The area names start in the first column. A line having a space as the first character is taken to be a descriptive comment. The "areas" command in the mailbox, issued without an argument, will display the entire AREAS file to the remote user. An example AREAS file: ________________________________________________________ | Eyolo Public Message Areas | ========================== | | nos Discussion of the NOS software | tcpip General discussion of tcp/ip | packet General discussion of packet radio | | - 60 - To enter an area, type "a" followed by the area name. | For example:"a nos". To then list the messages | available to be read, type "l" | _______________________________________________________| B.11. Mailbox Help Files To complete the implementation of the "help" command in the mailbox, a set of help files must be created in the directory \nos\spool\help. These files must be named as follows: area.hlp finger.hlp list.hlp read.hlp what.hlp bye.hlp help.hlp musers.hlp send.hlp xpert.hlp connect.hlp info.hlp nodes.hlp telnet.hlp zap.hlp download.hlp jheard.hlp operator.hlp upload.hlp escape.hlp kill.hlp ports.hlp verbose.hlp Each file is an ASCII (plain text) file, providing help information for the command indicated by the file name. For example, the file "finger.hlp" provides information about the "finger" command. A set of help files is available and may have been included in the NOS distribution you received, or may be available in the public directories on a local host. If not, you can create these files in a text editor, using the command information provided in this guide. Even if you have acquired a set of help files, you will need to edit the "info.hlp" file, as this file provides information about your packet station. - 61 - Appendix C. IP Address Coordinators Listed below are the coordinators for IP address assignments, as of January 15, 1992. This list is updated several times a year and is generally available on AX.25 PBBS systems. 44.002 Bob Meyer K6RTV Calif: Sacramento 44.004 Douglas Thom N6OYU Calif: Silicon Valley - San Francisco 44.006 Don Jacob WB5EKU Calif: Santa Barbara/Ventura 44.008 Brian Kantor WB6CYT Calif: San Diego 44.010 Terry Neal AA6TN Calif: Orange County 44.012 Steven King KD7RO Eastern Washington,Idaho 44.014 John Shalamskas KJ9U Hawaii & Pacific Islands 44.016 Jeff Angus WA6FWI Calif: Los Angeles - S F Valley 44.017 Dana Myers KK6JQ Calif: Antelope Valley/Kern County 44.018 Geoffrey Joy KE6QH Calif: San Bernardino & Riverside 44.020 Fred Schneider K0YUM Colorado: Northeast 44.022 John Stannard KL7JL Alaska 44.024 Dennis Goodwin KB7DZ Washington state: Western (Puget Sound) 44.026 Ron Henderson WA7TAS Oregon 44.028 Don Adkins KD5QN Texas: Dallas 44.030 J Gary Bender WS5N New Mexico 44.032 Bdale Garbee N3EUA Colorado: Southeast 44.034 Jeff Pierce WD4NMQ Tennesee 44.036 Doug Drye KD4NC Georgia 44.038 Mike Abbott N4QXV South Carolina 44.040 Jeff Jacobsen WA7MBL Utah 44.042 Phil Akers WA4DDE Mississippi 44.044 Ed Thorne WB1FEM Massachusetts: western 44.046 William Simmons WB0ROT Missouri 44.048 Jacques Kubley KA9FJS Indiana 44.050 Ron Breitwisch KC0OX Iowa 44.052 Gary Grebus K8LT New Hampshire 44.054 Ralph Stetson KD1R Vermont 44.056 Don Hughes KA1MF Eastern Mass 44.058 Rich Clemens KB8AOB West Virginia 44.060 Howard Leadmon WB3FFV Maryland 44.062 Jim Dearras WA4ONG Virginia (not DC) 44.064 Dave Trulli NN2Z New Jersey: northern 44.065 Bob Applegate WA2ZZX New Jersey: southern 44.066 John DeGood NU3E Delaware 44.068 Bob Foxworth K2EUH New York: Long Island 44.069 Paul Gerwitz WA2WPI New York: upstate 44.070 Gary Sanders N8EMR Ohio 44.072 Ken Stritzel WA9AEK Chicago - North Ill. 44.074 James Curran KA4OJN North Carolina (east) 44.075 Charles Layno WB4WOR North Carolina (west) 44.076 Kurt Freiberger WB5BBW Texas: south 44.077 Rod Huckabay KA5EJX Texas: west 44.078 Joe Buswell K5JB Oklahoma 44.080 John Gayman WA3WBU Pennsylvania: eastern 44.082 Steven Elwood N7GXP Montana 44.084 Bob Ludtke K9MWM Colorado: Western 44.086 Reid Fletcher WB7CJO Wyoming - 62 - 44.088 Jon Bloom KE3Z Connecticut 44.090 Mike Nickolaus NF0N Nebraska 44.092 Pat Davis KD9UU Wisconsin, upper peninsula Michigan 44.094 Gary Sharp WD0HEB Minnesota 44.096 Don Bennett K4NGC District of Columbia 44.098 Garry Paxinos (waiting) Florida 44.100 Ken Adkisson WB4FAY Alabama 44.102 Jeff King WB8WKA Michigan (lower peninsula) 44.104 Charles Greene W1CG Rhode Island 44.106 Tyler Barnett N4TY Kentucky 44.108 James Dugal N5KNX Louisiana 44.110 Richard Duncan WD5B Arkansas 44.112 Bob Hoffman N3CVL Pennsylvania: western 44.114 Steven Elwood N7GXP N&S Dakota 44.116 Tom Kloos WS7S Oregon: NW&Portland,Vancouver WA 44.118 Jon Andrews WA2YVL Maine 44.120 unassigned 44.122 Dale Puckett K0HYD Kansas 44.124 David Dodell WB7TPY Arizona 44.125 Earl Petersen KF7TI Southern Nevada 44.126 Karl Wagner KP4QG Puerto Rico # # 44.128 is reserved for testing. Do not use for operational networks. # You may safely assume that any packets with 44.128 addresses are bogons # unless you are using them for some sort of testing # 44.128 TEST # # International subnet coordinators by country # 44.129 Japan JG1SLY Tak Kushida, JH3XCU Joly Kanbayashi 44.130 Germany DL4TA Ralf D Kloth 44.131 United Kingdom G6PWY Chris Baron 44.132 Indonesia YB1BG Robby Soebiakto 44.133 Spain EA4DQX Jose Antonio Garcia. Madrid. (EA4DQX @ EA4DQX) 44.134 Italy I2KFX 44.135 Canada VE3GYQ David Toth 44.136 Australia VK2ZXQ John Tanner 44.137 Holland PA0GRI Gerard Van Der Grinten 44.138 Israel 4X6OJ Ofer Lapid 44.139 Finland OH1MQK Matti Aarnio 44.140 Sweden SM0RGV Anders Klemets 44.141 Norway LA4JL Per Eotang 44.142 Switzerland HB9CAT Marco Zollinger 44.143 Austria OE1KDA Krzysztof Dabrowski 44.144 Belgium ON7LE 44.145 Denmark OZ1EUI 44.146 Phillipines DU1UJ Eddie Manolo 44.147 New Zealand 44.148 Ecuador HC5K Ted 44.149 Hong Kong VS6EL 44.150 Yugoslavia YU3FK Iztok Saje 44.151 France FC1BQP Pierre-Francois Monet 44.152 Venezuela OA4KO/YV5 Luis Suarez - 63 - 44.153 Argentina LU7ABF Pedro Converso 44.154 Greece SV1IW Manos 44.155 Ireland EI9GL Paul Healy 44.156 Hungary HA5DI Markus Bela 44.157 Chile CE6EZB Raul Burgos 44.158 Portugal CT1DIA Artur Gomes 44.159 Thailand HS1JC Kunchit Charmaraman 44.160 South Africa ZS6BHD John 44.161 Luxembourg LX1YZ Erny Tontlinger 44.162 Cyprus 5B4TX C. Costis 44.163 Central America TI3DJT Chuck Hast 44.164 Surinam PZ2AC Otto Morroy 44.165 Poland SP5WCA Andrzej K. Brandt 44.166 Korea HL9TG Gary ? 44.167 India VU2LBW Lakshman ("Lucky") Bijanki 44.193 Outer Space-AMSAT W3IWI Tom Clark - 64 - Appendix D. NOS Command Descriptions Given below are all of the commands listed by the "help" command in NOS, with concise descriptions of these commands. If the command is described in more detail in this guide, the section(s) in which it is referenced is given in parentheses. An asterisk (*) after the section reference indicates that not all of the subcommands have been described in this guide. ! Escape to DOS (4.5) abort Abort an ftp get, put, or dir operation in progress. (7.3) arp Address Resolution Protocol. Connects IP addresses with callsigns. asystat Display statistics on attached asynchronous communications interfaces. attach Configure and attach a hardware interface. (B.4.5)* attended Display or set the "host attended" flag. (5.11, B.4.22) ax25 AX.25 (normal packet) services. (10.1, B.4.3, B.4.16-B.4.21)* bbs Enter the local mailbox or BBS (8.2) cd Change directory. (4.4.5) close Close a session. (5.5, 9.3) comm Send a text string via an interface (A) connect AX.25 connect request. (9.1) delete Delete a file. (4.4.8) detach Detach a previously attached interface from the system. dialer Set up an autodialer session for an interface domain Control and show the working of the name to IP address mapping software. dump Shows memory contents in hex and ascii. dir List contents of a directory. (4.4.6) disconnect Close a session (alias for close). (5.5, 9.3) echo Controls telnet keyboard echo. eol Controls telnet end of line behavior. escape Displays or sets the command-mode escape character in hex. - 65 - exit Exit NOS and return to DOS. (4.6) finger Finger information files on remote host. (10.2, B.9) fkey Displays or sets values for the programmable keys on the PC keyboard. ftp File Transfer Protocol. (4.2, 7.1) ftype Displays or sets the default file type (ascii or binary) for ftp. help List NOS commands. (4.4.1) hop Commands to test the connectivity of the network. hostname Display or set hostname. (B.4.2) icmp Display or set the flag controlling the ICMP echo reply packets ifconfig Display a list of interfaces, with a short status for each. info Display information about the version of NOS currently running. ip Internet Protocol. (B.4.4, B.4.8)* isat Display or set the AT flag. (10.3, B.4.6) kick Force an immediate retransmission on a session. log Controls logging of server sessions. (B.4.26) mail Starts a shell escape to the BM mail program. (6.1) mbox Configure and display status of mailbox or BBS. (8.1, 10.6, B.4.24, B.4.25)* memory Display and control memory allocation. mkdir Create a sub-directory in the current working directory (4.4.9) mode Controls transmission mode on AX.25 interfaces. more Display file(s) a screen at a time. (4.4.2) motd Displays or sets the "message of the day." (5.1.2, B.4.23) multitask Displays or sets the multitask flag (4.5, 6.1, B.4.7) netrom Controls NET/ROM services. nntp Controls the network news transfer protocol. nrstat Displays NET/ROM statistics. - 66 - param Invokes a device-specific control routine. (B.4.9)* ping Query a remote host. (10.3) pop Controls the post-office protocol for mail delivery. popmail Controls the delivery of pop mail. (B.4.28-B.4.30)* ppp Controls the point-to-point protocol for serial interfaces. ps Display all current processes in the system. pwd Display name of current directory. (4.4.4) rarp Controls the reverse address resolution protocol. remote Send control commands to a remote host (B.4.28)* rename Rename a file. (4.4.7) record Record telnet or AX.25 session to a disk file. (5.4.1, 9.2.1) reset Reset a session. rip Controls the RIP service, which manages an IP routing table. rlogin Initiates a remote login session. rmdir Remove a directory. (4.4.10) route Controls the routing table. (11., B.4.10)* rspf Controls the radio shortest path first protocol. session Controls sessions selection. (4.3, 5.3, 8.4) sccstat Display statistics on the SCC driver. shell Escape to DOS. Alias for ! (4.5) smtp Simple Mail Transport Protocol. (6.5, B.4.11, B.4.12)* socket Displays information on active sockets. source Reads subsequent commands from a specified file. start Start a server. (B.4.15)* stop Stop a server. status Display NOS status information. (10.5) tail Display the contents of the last 18 lines of a file. (4.4.3) - 67 - tcp Transport Control Protocol. (11.1, B.4.13, B.4.14) telnet Telnet protocol. (8.2) test Start an internal test for an overflow problem. trace Monitor packet traffic. (10.4) ttylink Initiate a keyboard-to-keyboard chat session. (5.2) third-partyRestricts third-party traffic. tip Creates a session that communicates in "dumb-terminal" mode. udp User datagram protocol. upload Upload ASCII file to telnet or AX.25 session. (5.4.2, 9.2.2) watch Displays current software stopwatch values. watchdog Enable or disables the watchdog timer. ? List NOS commands. Alias for help. (4.4.1) Beginner's Guide to TCP/IP on the Amateur Packet Radio Network Using the KA9Q Internet Software Version 2.0 April 8, 1992 Documenting KA9Q NOS 911229 (PA0GRI v2.0h) BM 3.3.2 by Gary E. Ford, N6GF Copyright 1992 by Gary E. Ford. This Document may be reproduced in whole or in part for any non-commercial purpose, as long as credit is given to the author. Beginner's Guide to TCP/IP on the Amateur Packet Radio Network Using the KA9Q Internet Software Contents Page 1. Introduction.................................................. 1 1.1 Objectives of This Guide.................................. 3 1.2 Acknowledgements.......................................... 3 2. Necessary Resources........................................... 4 2.1 Computer.................................................. 4 2.2 TNC....................................................... 5 2.3 Radio..................................................... 5 2.4 IP Address................................................ 5 2.5 KA9Q NOS Software......................................... 5 3. Definitions, Conventions, and Notation........................ 6 3.1 NOS Commands.............................................. 6 3.2 NOS Command Arguments..................................... 7 3.3 Notation.................................................. 8 4. NOS........................................................... 9 4.1 Executing NOS............................................. 9 4.2 Command and Converse Modes................................ 9 4.3 Managing Multiple Sessions................................10 4.4 Utility Commands..........................................11 4.5 Executing DOS Commands....................................12 4.6 Exiting NOS...............................................13 5. Keyboard Chat.................................................13 5.1 Chat Session Messages.....................................13 5.2 Initiating a Chat Session.................................14 5.3 Accepting a Chat Session..................................14 5.4 File Upload and Download..................................14 5.5 Closing a Chat Session....................................15 6. Mail..........................................................15 6.1 Executing BM..............................................16 6.2 BM Main Menu Commands.....................................16 6.3 Text Input Commands.......................................19 6.4 Mail Addresses............................................20 6.5 SMTP......................................................21 6.6 POP.......................................................22 7. File Transfer.................................................22 7.1 Ftp Command...............................................22 7.2 Ftp Converse Mode Commands................................23 7.3 Aborting a File Transfer..............................26 7.4 Ftp Example...............................................26 8. Mailbox or BBS................................................27 8.1 Mailbox Messages..........................................28 8.2 Initiating a Mailbox Session..............................28 8.3 Mailbox Commands..........................................29 9. AX.25 Services................................................33 9.1 Initiating an AX.25 Connection............................33 9.2 File Upload and Download..................................34 9.3 Terminating an AX.25 Connection...........................34 10. Network Information and NOS Status...........................35 10.1 ax25 heard...............................................35 10.2 finger...................................................35 10.3 ping.....................................................36 10.4 trace....................................................37 10.5 status...................................................38 10.6 mbox status..............................................39 11. Advanced Topics...............................................39 11.1 TCP......................................................39 Appendix A. TNC KISS Mode........................................42 Appendix B. Installation of NOS and BM...........................43 B.1 Installation Overview.....................................43 B.2 File Structure............................................44 B.3 DOS Environment -- AUTOEXEC.BAT...........................44 B.4 NOS Configuration File -- AUTOEXEC.NOS....................45 B.5 The Host Table -- DOMAIN.TXT..............................54 B.6 Mail Configuration File -- BM.RC..........................55 B.7 The Alias File -- ALIAS...................................56 B.8 The FTP and Mailbox Users File -- FTPUSERS................57 B.9 Finger Files..............................................59 B.10 Mailbox Area File -- AREAS...............................59 B.11 Mailbox Help Files.......................................60 Appendix C. IP Address Coordinators..............................61 Appendix D. NOS Command Descriptions.............................64