A good alternative that I haven't seen mentioned is NCSA Telnet. NCSA
Telnet not only is a very good telnet client, but it also has a built in
FTP server. It will work with a packet driver, and there is also a
version that has support for popular network cards built-in directly so
that a packet driver is not necessary. The performance of FTP transfers
is very good.
NCSA doesn't give you a stack that you can use for your own apps.
Source code is available.
On a slightly related note, I've been working on my own TCP/IP for small
IBM PC class machines for about a year. It's in C using Borland Turbo
C++ 3.0 for DOS. It supports ARP, UDP and TCP at the moment - no ICMP
yet. Performance compared to other stacks is *very* good:
Test machine: IBM PC XT with original 10MB hard disk, 3Com 3C503 NIC
File send rate: 26.5KB/sec
File receive rate: 24.6KB/sec
Memory footprint varies .. it depends on how much buffering you want in
your app and at the packet level. Code is about 50KB with all of the
debug options and messages compiled in.
Mike