(Last Updated: 25th June 1996)
These are the answers to some of the frequently asked questions about FSP. Posted twice monthly to alt.comp.fsp, alt.answers and news.answers.
This information is mostly compiled from the alt.comp.fsp
newsgroup, although many other people and information sources
also contribute. It is edited and prepared by Andy Doherty
(A.J.Doherty@reading.ac.uk) - who is also the current maintainer of the FSP software.
This FAQ may be found in the alt.comp.fsp newsgroup and from the news archives at rtfm.mit.edu . However, the most recent version will always be found at its WWW home of http://itu.rdg.ac.uk/misc/fsp/faq/faq.htm
Alt.comp.fsp is a Usenet newsgroup for discussing the FSP file transmission protocol. It was created on Tuesday 4th May 1993 by Wen-King Su (email@example.com) after there was no objection on alt.config. Before the newsgroup, there was a mailing list (fsp-discussion) for talking about FSP software internals. This newsgroup is for discussion of both writing and using the software.
FSP is a protocol, a bit like FTP (but see below), for moving files around. It's designed for anonymous archives, and has protection against server and network overloading. It doesn't use connections, so it can survive things falling over.
Quote: `FSP is what anonymous FTP *should* be'.
The `official' place for FSP distributions is ftp.germany.eu.net
It is available both by FTP and FSP: the FSP server is on port 2001.
The latest release versions for each platform are:
The Unix version is the `original', and was originally written by Wen-King Su: Joseph Traub took over for a while, followed by Phil Richards and Pete Bevin, Andrew Doherty maintains it currently. The same distribution contains patches by Sven Pechler to make it run on VMS. Larkin Lowrey wrote the OS/2 version, Lindsey Smith wrote the MS-DOS version and Garrick Lau wrote the Windows-95/NT version. Email addresses are in Section 4.
If you're already familiar with FTP, you might want to use one of the FTP-like clients instead, or even a graphical interface. See the answers to questions 2.1 and 2.2 below for details of how to get them.
The following tutorial is adapted from an article in alt.comp.fsp by David DeSimone (firstname.lastname@example.org).
The original FSP seems to have been designed for use with csh aliases, so if you use csh, try these aliases in your .cshrc:
# FSP aliases: alias fcat '(set noglob; exec fcatcmd \!*)' alias fcd 'setenv FSP_DIR `(set noglob; exec fcdcmd \!*)`' alias fget '(set noglob; exec fgetcmd \!*)' alias fgrab '(set noglob; exec fgrabcmd \!*)' alias fls '(set noglob; exec flscmd -F \!*)' alias fll '(set noglob; exec flscmd -l \!*)' alias fpro '(set noglob; exec fprocmd \!*)' alias fpwd 'echo "$FSP_HOST ($FSP_PORT): $FSP_DIR"' alias frm '(set noglob; exec frmcmd \!*)' alias frmdir '(set noglob; exec frmdircmd \!*)' alias fhost 'set fsp_host=(\!*); source ~/bin/fhost; unset fsp_host'
The last alias, "fhost", is my own invention, and the ~/bin/fhost file looks like this:
#!/bin/csh # # Since this script sets environment variables, it really needs # to be source'd rather than executed. Thus the following alias # should be used: # # alias fhost 'set fsp_host=(\!*); source ~/.bin/fhost; unset fsp_host' # if ( $#fsp_host > 0 ) then setenv FSP_HOST $fsp_host if ( $#fsp_host > 1 ) then setenv FSP_PORT $fsp_host else setenv FSP_PORT 21 endif if ( $#fsp_host > 2 ) then setenv FSP_DIR $fsp_host else setenv FSP_DIR / endif endif if ( $?FSP_HOST ) then echo "$FSP_HOST ($FSP_PORT): $FSP_DIR" endif
This alias lets you "connect" to a host quickly and easily. For instance, to start out I give the following command:
% fhost wuarchive.wustl.edu wuarchive.wustl.edu (21):
The "fhost" command tells me where I'm connected, on what port, and in what directory.
Since all "fhost" does is set up some environment variables, we aren't REALLY connected. To find out if the site is responding, just do a quick "fls":
% fls README etc/ mirrors2/ pub/ README.NFS graphics/ mirrors3/ systems/ edu/ mirrors/ private/
Looks like we're up and running! Navigating with FSP is now just like using the local filesystem, except the commands have "f" in front of them. For instance:
% fcd /systems/amiga/incoming directory mode: (owner: some other machine)(delete: NO)(create: NO) % fls AT3D-Demo.bad devel/ utils/ AT3D-Demo.readme fish/ wb30/ comm/ programming/ demos/ text/
Other nice commands like "fcat filename" let me see what's out there, or for larger files, "fcat filename | less" is very effective.
Once I see a nice file that I want copied to my local system, I just give the "fget filename" command and away it goes. Usually I type "fget filename &" which throws the transfer request into the background. Then I can immediately go off and "fcd" to some other directory and look for more files to grab, "fcat"-ing the README files and such.
When FSP doesn't get any response from the server, it keeps on sending requests. The first time it retries, it prints an "R", (meaning "Retry"), and the second, third, and subsequent times, it prints an "I". You might also see an "E", which means "error": FSP got a packet, but it was corrupted for some reason.
Fspclient does it slightly differently: it starts by printing "r" and "R" characters, and then uses "-\|/" characters to draw a spinning bar. As Phil Richards (the author) says, `I quite often see spinning bars, but usually only after the fifth pint'.
Because it's one more way people can access your site, and it won't cost you much extra load on the machine. The FSP daemon never forks, so it won't increase your load average by more than one. FSP doesn't add much to the network load either, and you can limit the amount of data the daemon will send out per second.
FSP allows comprehensive logging, running off inetd, README files per directory, banning on per-host or per-network basis, reverse naming and read-only sites. The only thing anonymous FTP gives that FSP doesn't is having the user type in an email address, and of course, this can easily be faked. FSP logs give the user's hostname, which is harder to fake.
When unable to get a response to it's last request an FSP client use a non-linear algorithm to increase the delay until they re-try. Effectively this means that during a transfer a client may appear to be sitting their doing nothing for periods of time, as the timeout in use increases to high values, to paraphrase Wen-King Su - "the algorithm is brain damaged". This problem has been addressed in the next release of FSP (in beta testing).
Phil Richards' (email@example.com) fspclient. The latest version (still pre-alpha, but more reliable than your average beta release) is fspclient.0.0-h. You can get it by FTP from
Another interface to use is Nicolai Langfeldt's 'fspcli'. It has a ftp like interface and more. It has been posted on alt.sources. Another nice thing about it is that it's a small(ish) perl script rather than a large compiled executable, and it's not alpha OR beta. Presently the latest version is 1.2.1 and is available at
Ove Ruben R Olsen (Ruben@uib.no) has written a client quite similar to Nicolai's, but even smaller. It is available at
Note that if you want to use either of the last two clients, you'll have to have the Perl language installed. You can get the latest version by FTP from prep.ai.mit.edu in /pub/gnu/perl*, or from most sites which mirror GNU, such as ftp.germany.eu.net .
The interface I use is FSPtool (not suprising really :-) ) by myself [Andy Doherty (A.J.Doherty@reading.ac.uk)]. It is an XView based client for the X Window System. Available from:
Like fspcli and fspshell, it acts as an interface to the standard FSP shell commands, rather than rewriting them itself.
Note that to use this package, you will need the XView libraries, if you're using a Sun workstation, or the standard MIT X11R5/R6 distribution you should be you're OK: otherwise, you might have to get and compile them yourself.
winfsp12.zip by Ian Heath (firstname.lastname@example.org) is a MSW client using WINSOCK.DLL . It's available from
fsp4win.zip by Ben Youngdahl (email@example.com) is another MSW client using WINSOCK.DLL . Still in Beta release it's available from
If you're an OS/2 user, you can use the OS/2 client by Albert Crosby (firstname.lastname@example.org). It wraps around the OS/2 FSP software (see 1.2), and also requires RexxMenu and RxU. It can read a list of files in the standard FSP host listing format, and uses RexxMenu's point-and-click interface.
Alternatively Larkin Lowrey (email@example.com) has an OS/2 FSP client (version 1.0). This can be found at ftp.cdrom.com as ftp://ftp.cdrom.com/pub/os2/network/tcpip/fsp2_10a.zip
This version includes clients for IBM's TCP/IP 1.2.1 and TCP/IP 2.0. Both are 32-bit and fully handle longfilenames.
Jim Browne (firstname.lastname@example.org) is working on a version for the Macintosh. If you're interested you can ask to be put on a mailing list by mailing him at email@example.com. The latest version is available at http://www.jbrowne.com/Projects/MacFSP.html. Older versions are available from the following places:
Alternatively another beta client - Modris Berzonis' (firstname.lastname@example.org), "FSP Client for Macintosh 2.7.1b9" - is available from:
Last but not least is Tim Endres' (email@example.com) "FSPMac 1.1" available from:
All email enquires about FSPMac should be sent to (firstname.lastname@example.org).
Dan Charrois's provides both a "finger" based read-only service and a WWW based service.
Interruptions have been experienced with the "finger" service at Dan's site, in case of difficulty use the WWW service instead.
He is also happy to accept new site information and updates via direct email (email@example.com), this information would then be available via the finger and WWW services.
A second WWW based FSP list service can also be found at:
This site is based upon the server originally maintained by Roy Svendsen and now re-hosted to these locations. It allows list additions to be made direct from forms supporting browsers.
A small list of sites can be found in Section 5.
You are encouraged to make use of these site information services or to post site information to alt.comp.fsp . If you post in the format below, most people will be able to slurp your list straight into their front-end programs.
The standard for the format is:
hostname port alias root-directory # comment
ftp.germany.eu.net 2001 germany / # big German archive (FSP)
Hostnames should be actual names rather than IP addresses wherever possible.
Seriously, FSP has a reputation of being for "crooks and perverts". If you know any sites carrying illegal material, then do them a favour and keep them to yourself. Posting them won't make you any friends.
If someone posts a list of sites, and you didn't want them to, please don't publicly flame them. It doesn't endear you to anyone. If you must put them right, send email. Thank you.
PS: Don't ask me either.
The revision of the FSP protocol to version 3.0 is currently on going. Forums for discussion are the alt.comp.fsp newsgroup and the firstname.lastname@example.org mailing list.
Current work in progress includes an FSP RFC (Request For Comments) - basically an internet specification of the protocol; alterations to improve security facilities; a programmers API and miscellanous extra features & facilities.
In the meantime a new release (v.2.8.1 Beta 1) was released to Beta testing in January 1996, superseding the previous 2.8.0 Beta series. It fixes a number of portability issues, known bugs and documentation errors. It also provides scope for backwards compatibility with revisions to the FSP protocol which are scheduled for FSP 2.9.0 and beyond.
The next scheduled release is v.2.9.0. This is intended to act as a migratory step to 3.0. Some alternations will be made to the client and server functionality in 2.9.0, but this release is mainly intended to greatly simplify and tidy the code base, bringing it up to date with ANSI C/C++ and the POSIX standards. This release is also intended to provide a foundation for much easier porting of the software between platforms, including Win32/Winsock 2.0 support scheduled for inclusion in 3.0.
From the user's point of view, the differences are not that great, except that some of the more annoying features of FTP are gone. Here are the main differences.
From the programmer's point of view, fsp is a complete rewrite.
By default, the FSP daemon keeps logs of transactions, along with their site names. An FSP administrator could use this to find out who you are, with a reasonable degree of certainty.
In short, FSP gives you no more privacy than anonymous FTP. Anyone who tells you different has a less devious mind than most FSP admins I know.
Why not make FSP more anonymous? Well, it's impossible to make a protocol with complete anonymity, since at some point, the remote site will have to send a file back to you, and it needs at least an address to send it to.
If you really need privacy, you can encrypt any files you make available, and only give out the decryption password to a select few. But of course, you have to trust them to keep the password safe.
Thanks to Joseph Traub for the material for this section)
As of 12th August 1993, FSP stands for `File Service Protocol'. Thanks to Michael Grubb (email@example.com) for the words, and Wen-King for the initials.
Other suggestions were:
The previous maintainers were Phil Richards (firstname.lastname@example.org) and Pete Bevin (email@example.com) from July 1993 to March 1994. Phil is also the maintainer of fspclient, an FTP-like interface for FSP.
Joseph Traub (firstname.lastname@example.org) was maintainer from Dec 1992 to July 1993 (versions 2.6.5 to 2.7.1).
Wen-King Su (email@example.com) wrote the original Unix version (versions 1.0 to 2.6.4).
Jim Browne (firstname.lastname@example.org) and Modris Berzonis (email@example.com) are both writing (soon to be released?) Macintosh clients. See Section 2.2.3.
Andy Doherty (A.J.Doherty@rdg.ac.uk) wrote and maintains 'FSPtool' an X-Windows based Unix client. Also the FSP and alt.comp.fsp FAQ maintainer.
Ian Heath (firstname.lastname@example.org) wrote 'winfsp' an MS-Windows based client.
Nicolai Langfeldt's (email@example.com) wrote and maintains 'fspcli' a Perl based client.
Ove Ruben R Olsen (Ruben@uib.no) wrote and maintains 'fspsh', another Perl based client.
Phil Richards' (firstname.lastname@example.org) wrote and maintains 'fspclient'.
The following people have contributed to the FAQ. Thanks very much to all of them.
The following is a small list of the some sites which are available through the FSP protocol. This list should be reasonably up to date but comes with no warranty. It is in the unofficial "taxus" format. ftp.germany.eu.net is the official home for FSP, the FSP software distributions and other related packages can be found there.
genie.lut.ac.uk 21 genie / # small UK site ftp.germany.eu.net 2001 germany / # big German archive (FSP) fsp.luth.se 6969 luth / # Top of Europe src.doc.ic.ac.uk 21 src / # SUNsite Northern Europe terra.stack.urc.tue.nl 21 terra / # big Netherlands site ftp.wustl.edu 21 wu / # lots of mirrors ...
For more site information sources see Q.2.3
At least one non-english language translation of the FAQ is now available, so this section details it, and any others that may come along over time.
Bear in mind that changes to the main FAQ may take a while to filter down through translations. Keep an eye on the date at the top of this copy and see if it matches up to the FAQ source at http://itu.rdg.ac.uk/misc/fsp/faq/faq.htm.
Nello Castiglione (email@example.com) has translated the FAQ into Italian, many thanks to him for the time and effort spent. This translation is available from:
Commentsand suggestions should be sent to A.J.Doherty@rdg.ac.uk. The information in this FAQ is in no way associated with the University of Reading or its Information Technology Unit. This FAQ represents the efforts of many people to help consolidate information about FSP. There is no guarantee that the information in this FAQ is correct, nor can anyone contributing to this FAQ be held responsible for the information they provide.
Addresses in () after the answer are the email addresses of people who have contributed. Please let me know if you don't wish to be identified when you contribute.