You bring up a lot of interesting points. Data transfer is indeed a complicated process and one could definitely make a science project out of it. Yeah, you are right about all the variables like active FTP, passive FTP, network address translation/UDP handling, latency, the client software...