For what version of Python?
Depending on what's at the far end of your connection, you may not need
to do much at all. For example, if you have an ftp server, check out
http://docs.python.org/2/library/ftplib.html
in the standard library.
Since you're doing performance testing, be aware that it's quite tricky
to get meaningful results. For example, some connections have a
satellite link in them, and thus have very long latency. A simple
protocol will go very slowly in such a case, but most downloaders will
open multiple sockets, and do many transfers in parallel. So you could
either measure the slow way or the fast way, and both numbers are
meaningful.
Of course, it's more than a 2-way choice. Some protocols will compress
the data, send it, and decompress it on the other end. Others (like the
one rsync uses) will evaluate both ends, and decide which (if any) files
need to be transferred at all. I believe it also does partial file
updates if possible, but I'm not at all sure about that.
Naturally, the throughput will vary greatly from moment to moment, and
may be affected by lots of things you cannot see.