AmiTCP

Karl Jeacle

In 1993, a group of students from the Helsinki University of Technology, caused great excitement in the Amiga Internet community by announcing a free implementation of TCP/IP for the Amiga which they had built as a part of a software engineering course. Until then, the only available Amiga implementation of the Internet protocol suite was Commodore's somewhat incomplete and costly AS225 software.

The confused Internet Protocol Suite

TCP/IP is the name commonly given to the Internet suite of communication protocols --- simply, the software that lets all the machines connected to the Internet talk to each other. The name TCP/IP is somewhat of a misnomer, as IP (Internet Protocol) is the basic building block of Internet communications. Built above IP, are two protocols, TCP (Transmission Control Protocol), a connection oriented protocol, and UDP (User Datagram protocol), a connectionless protocol. As TCP is the most commonly used protocol, people tend to refer to the whole collection as TCP/IP.

The most simple explanation of TCP and UDP is based on the analogy between the telephone and postal systems. Using TCP is like using the telephone, while UDP is similar to posting a letter.

When you open a connection to another machine using TCP, it's like dialing someone's telephone number. You have a permanent connection to the other party for the duration of your call. The connection is reliable, and all the data gets through in the correct order. Is is connection oriented.

Using UDP, on the other hand, is like sending someone a letter. You write the destination on the cover and somehow, the letter finds is way through. It may get lost, it may arrive out of order relative to other letters you have sent to the same address, or it might even get damaged. Each letter you send may take a different route to the same destination. It is connectionless.

Internet Applications

So, all this is great. But what use is AmiTCP? What does it do? Well, basically, it's the software that will connect your Amiga directly to the Internet. This is, of course, assuming that you can get an IP feed to your Amiga, which is admittedly an unfortunately large assumption.

But let's say you have got IP connectivity, what applications can you run? Well, thanks to the AmiTCP authors and many other Amiga Internet programmers, all of the classic Internet applications are available on the Amiga. Some of the more popular being:

Telnet  -       The Internet's remote login program. Using telnet lets
                you use a machine remotely. It's as though you're sitting
                typing on the keyboard of the remote machine. AmiTCP can be
                set up to allow someone on the other side of the world to
                telnet to your Amiga and get up an AmigaDOS shell.

FTP     -       File Transfer Protocol. The standard way of transferring
                files around the Internet. Connect to FTP archives and 
                transfer files between the remote site and your Amiga.

Gopher  -       Allows you to browse Internet resources using menus. Mostly
                text based tool that lets you transparently navigate a
                route through information servers on the Internet by
                continuously selecting menu items.

Mosaic  -       A browser for the World Wide Web hypermedia document system.
                Imagine AmigaGuide documents with embedded images, audio,
                and links pointing to pages not just on your local hard
                disk, but to pages on other machines around the Internet.
                The most user-friendly and exciting tool for surfing the
                Internet.

NFS     -       Sun Microsystems' Network File System. I never get tired
                of this. Mount remote disks on your local system. Picture
                it: you hear about a new file in the Aminet archives, and
                you want a copy. You know that Washington University in St. 
                Louis keeps a copy of the archives and their Internet 
                address is wuarchive.wustl.edu. So, you type: 

                        mount wuarchive.wustl.edu:/aminet My_Aminet:

                and hey presto, an icon called My_Aminet appears on your
                workbench. A hard disk thousands of miles away is now
                virtually connected to your Amiga. Just double-click, and
                drag-and-drop to take a copy of the file you want.

And, of course, you can now have Email and Usenet news sent directly to and from your Amiga. Implementations of protocols like SMTP (Simple Mail Transfer Protocol) and POP (Post Office Protocol) are available. Other systems like Whois, Talk, IRC, WAIS, Veronica, and so on, are all either available or accessible indirectly through the applications listed above.

The Layered Approach

The most common place to find IP running is over a Local Area Network, usually Token Ring or Ethernet. However, since you can't really run an ethernet cable from your IP provider to your Amiga at home, you'll have to make do with a modem i.e. serial communications.

To run IP over serial lines, you need SLIP (Serial Line Internet Protocol) or CSLIP (Compressed\footnote{CSLIP compresses the IP headers, not the data it's carrying.} SLIP). More recently, the smarter PPP (Point-to-Point Protocol) has become popular.

All of these are available for AmiTCP in the form of SANA-II drivers. SANA is a Network Device Driver Specification written by Commodore which provides an Amiga software interface between networking hardware and network protocol stacks such as AmiTCP. What it means for you is that AmiTCP can run IP over any type of network for which there exists a SANA-II driver. A quick look in my devs:networks directory shows drivers for Ethernet, Token Ring, Hydra, SLIP, CSLIP and PPP.

This layering is illustrated in Figure 1. Applications are built using AmiTCP's API (Application Programmers Interface) and don't care what goes on beneath them. Similarly, AmiTCP doesn't care what kind of hardware it's using, it just talks to the SANA-II interface of the device you specify. The SANA-II devices talk almost directly to the devices they abstract.


amitcp1


A hypothetical network

In an attempt to help you understand the kind of information you need before you set up AmiTCP and indeed to just give you an overall picture of what we're talking about, here's a not-so-contrived example of a hypothetical network.

Let's say the setup shown in Figure 2 belongs to an Irish group called CUGI. Their domain name is cugi.ie and they have a "Class C" internet (or IP) address of 192.103.112.0 assigned to their network. The class C address means that the 192.103.112 part of their internet address is fixed, but they are free to use the final part to assign numbers to machines on their network (up to 255 machines). Every machine on the Internet has a unique address.


amitcp2


Their network consists of several PCs, Macs, Suns, and of course, Amigas. One Amiga is directly connected to the ethernet using a CBM A2065 card, and the other is remotely connected via modem.

Their connection to the Internet is via a Cisco Router which routes IP packets to and from the outside world to and from the different machines on their ethernet. The router is known as their Internet gateway.

To convert between Internet names (such as pc.cugi.ie) and IP addresses (such as 192.103.112.3) one of their Suns (Sun2) is running a nameserver which other machines can query.

Their remote Amiga is running AmiTCP using the SANA-II cslip.device. The CSLIP destination address for AmiTCP's configuration is 192.103.112.5. Sun1 which has a modem attached is running a public domain version of CSLIP. There is an account on Sun1 called "csliplogin" which instead of running a shell for a user, runs CSLIP. AmiTCP on Amiga2 has an AREXX script which dials Sun1 and logs into this account before starting AmiTCP.

A program called ARP (Address Resolution Protocol) is run on Sun1 which intercepts any ethernet packets addressed to Amiga2 and redirects them down the serial line.

The AmiTCP package

AmiTCP comes in three archives: the binaries, the documentation and the source code. The documentation is quite extensive, and a full description of the AmiTCP programming interface is given (essentially, a BSD Socket emulation library).

The binary archive has everything you need to install AmiTCP. A standard CBM Install script is provided, and after several releases of the software is now pretty good. It can be quite daunting though, if you're not certain what you want. Default domains, gateways and nameservers may not mean too much to the neophyte. You'll probably find yourself installing the package several times over as you figure out exactly what you're doing.

The install script creates all the necessary config files for AmiTCP, and once you understand the structure of these files, you won't need to go near the install script again.

Applications included with AmiTCP are the basic Telnet, FTP and Finger. Numerous other tools such as netstat, route, ping, and arp are included for configuring and troubleshooting your IP link.

In addition to these standard networking utilities from the Unix world is an Amiga specific application called NetFS. This is similar to Sun's NFS system mentioned earlier, except it's custom built for Amigas. It won't interwork with machines running NFS.

Alternatives to AmiTCP

Just one other TCP/IP implementation is available for the Amiga --- Commodore's AS225 networking software. Only version 1.0 is available, as 2.0 although finished and in use by developers, was never shipped.

Version 1.0 is apparently a reasonably complete IP implementation with regular tools such as Telnet, FTP, etc. It also has client NFS i.e. you can mount remote disks, but you can't allow remote machines to mount your disks. Version 2.0 is said to be much more complete with many bug fixes and server NFS support.

The disadvantage to buying AS225 at this stage is that AmiTCP is becoming the most popular way to write TCP/IP applications for the Amiga. Since, AmiTCP uses a different API to AS225, additional work is involved in supporting both systems. Some programs however, such as AMosaic, do support both, but many tools are being written exclusively for use with AmiTCP.

Conclusion

Some of the software I've mentioned may still be in beta-testing when you read this article, but it really is out there. AmiTCP itself is currently at version 2.3, and 3.0 is expected soon.

One problem with AmiTCP is installation. Getting it up and running isn't quite a black art, but having SnoopDOS handy, does help. Hopefully version 3.0 will be a little easier to install but unfortunately, without having an understanding of how IP works, troubleshooting software like this is always going to be difficult.

If you're looking for IP for your Amiga, or have a few machines you'd like to network together, AmiTCP could be for you. While it might cause a few headaches, it's good fun to set up, and you'll probably learn a thing or two about networking in the process.