What is BitTorrent?
BitTorrent is a protocol designed for
transferring files. It is peer-to-peer in
nature, as users connect to each other directly
to send and receive portions of the file.
However, there is a central server (called a
tracker) which coordinates the action of all
such peers. The tracker only manages
connections, it does not have any knowledge of
the contents of the files being distributed, and
therefore a large number of users can be
supported with relatively limited tracker
bandwidth. The key philosophy of BitTorrent is
that users should upload (transmit outbound) at
the same time they are downloading (receiving
inbound.) In this manner, network bandwidth is
utilized as efficiently as possible. BitTorrent
is designed to work better as the number of
people interested in a certain file increases,
in contrast to other file transfer protocols.
Where can I
download the BitTorrent program?
-
Azureus - A very nice Java client
that incorporates a full-featured GUI with
extensive visualizations/statistics about
the transfer. You will need the 1.4 JRE
installed to run this, which can be obtained
from
this link. See also:
Screen shots.
- The
Shad0w's experimental client - This
client incorporates the codebase of the
official version as well as all the
improvements of the experimental version,
below. Additionally, there are some misc.
bug fixes, improvements from the latest
development CVS sources, a user preferences
feature that remembers its settings, and
more. I highly recommend this version!
(alternate)
(alternate 2)
-
burst! - This client features a
smaller memory footprint compared to the
others, due to replacing the wxPython GUI
with one written in Delphi. The GUI lets you
control multiple transfers from a single
window, in addition to many other handy
features such as a built-in TorrentSpy-like
capability. It uses the same Python back-end
as The Shad0w's client so you also get all
of the recent developments included therein.
-
burst plus! - A client which is
based on the burst base and includes Spanish
language support, as well as some other
additions.
-
SimpleBT - Another fork of the burst
code base that features Chinese language
support.
-
ABC ("Another BitTorrent Client") -
This is a relatively new client that
includes many of the most recent changes in
the experimental versions, as well as other
added features such as controling multiple
downloads from a single window, queueing,
automatic seeding, etc. See also:
Sourceforge page.
-
Official client - This is the
"official" client in that it is the latest
supported version from Bram Cohen, architect
of BitTorrent. It has the fewest features of
all the clients, and releases are much more
conservative than the experimental versions.
Use this if you want stability but don't
need any of the common features of the other
clients, such as upload rate limiting. See
also:
(CVS view),
Sourceforge page.
-
Eike Frost's Experimental client -
This is based on the official version, with
patches to allow upload rate control and
show statistics about the number of peers
and seeds, among other things. New in the
"-2" revision is support for displaying
additional details about the peers that are
connected, as well as some annoyance and bug
fixes.
-
Personal Torrent Collector (PTC) -
This is an alternative GUI interface to the
Python BitTorrent client. It has support for
a number of interesting features, such as
the ability to control the total bandwidth
usage of a group of BitTorrent transfers,
and RSS syndication for organizing torrent
files. See also:
SourceForge page.
-
Shareaza - Newer public beta
versions of this program now include
BitTorrent support, in addition to the
eDonkey2k and Gnutella protocols. However,
the BitTorrent support may still have bugs,
and some things (such as seeding a file) may
not be as straightforward as with dedicated
BitTorrent clients.
-
BitTorrent++ - This is an
alternative to the official client. It
supports extra functionality such as
multiple downloads from a single GUI. Some
people (myself included) have experienced
major bugs with this program, so consider it
unstable and use a different client unless
you want to experiment. It appears to be
abandoned and has not had any bug fixes in a
long time.
I've installed
BitTorrent, now what? There's no program to run!
BitTorrent is not like other peer-to-peer
applications (such as Winmx, Kazaa, Gnutella,
etc.) in that it does not have its own
"universe." Put another way, BT lives on top of
the Web, which means that all of the
searching/listing of available files is done on
the web. When you find a file you want to
download, you click on it and the BitTorrent
client program will run and ask you where to put
it, and then start downloading. See the links
section for some starting points on the web if
you're new.
I just
installed BitTorrent but whenever I click on a link
I just get a small file and nothing happens?
Try closing and restarting your web browser.
When BitTorrent installs, it registers a new
MIME-Type (application/x-bittorrent) and this
change will not take effect until the next time
the web browser is opened.
What do all
these words mean? (seeding, uploading, share rating,
etc.)
Here is a brief list of words associated with
BitTorrent and their meanings.
- torrent
- Usually this refers to the small metadata
file you receive from the web server (the one
that ends in .torrent.) Metadata
here means that the file contains information
about the data you want to download, not the
data itself. This is what is sent to your
computer when you click on a download link on a
website. You can also save the torrent file to
your local system, and then click on it to open
the BitTorrent download. This is useful if you
want to be able to re-open the torrent later on
without having to find the link again.
- In some uses, it can also refer to
everything associated with a certain file
available with BitTorrent. For example, someone
might say "I downloaded that torrent" or "that
server has a lot of good torrents", meaning
there are lots of good files available via
BitTorrent on that server.
- peer
- A peer is another computer on the internet
that you connect to and transfer data. Generally
a peer does not have the complete file,
otherwise it would be called a seed. Some people
also refer to peers as leeches, to distinguish
them from those generous folks who have
completed their download and continue to leave
the client running and act as a seed.
- seed
- A computer that has a complete copy of a
certain torrent. Once your client finishes
downloading, it will remain open until you click
the Finish button (or otherwise close it.) This
is known as being a seed or seeding. You can
also start a BT client with a complete file, and
once BT has checked the file it will connect and
seed the file to others. Generally, it's
considered good manners to continue seeding a
file after you have finished downloading, to
help out others. Also, when a new torrent is
posted to a tracker, someone must seed it in
order for it to be available to others.
Remember, the tracker doesn't know anything of
the actual contents of a file, so it's
important to follow through and seed a file if
you upload the torrent to a tracker.
- reseed
- When there are zero seeds for a given
torrent (and not enough peers to have a
distributed copy), then eventually all the peers
will get stuck with an incomplete file, since no
one in the swarm has the missing pieces. When
this happens, someone with a complete file (a
seed) must connect to the swarm so that those
missing pieces can be transferred. This is
called reseeding. Usually a request for a reseed
comes with an implicit promise that the
requester will leave his or her client open for
some time period after finishing (to add
longevity to the torrent) in return for the kind
soul reseeding the file.
- swarm
- The group of machines that are collectively
connected for a particular file. For example, if
you start a BitTorrent client and it tells you
that you're connected to 10 peers and 3 seeds,
then the swarm consists of you and those 13
other people.
- tracker
- A server on the Internet that acts to
coordinate the action of BitTorrent clients.
When you open a torrent, your machine contacts
the tracker and asks for a list of peers to
contact. Periodically throughout the transfer,
your machine will check in with the tracker,
telling it how much you've downloaded and
uploaded, how much you have left before
finishing, and the state you're in (starting,
finished download, stopping.) If a tracker is
down and you try to open a torrent, you will be
unable to connect. If a tracker goes down during
a torrent (i.e., you have already connected at
some point and are already talking to peers),
you will be able to continue transferring with
those peers, but no new peers will be able to
contact you. Often tracker errors are temporary,
so the best thing to do is just wait and leave
the client open to continue trying.
- downloading
- Receiving data FROM another computer.
- uploading
- Sending data TO another computer.
- share rating
- If you are using the experimental client
with the stats-patch, you will see a share
rating displayed on the GUI panel. This is
simply the ratio of your amount uploaded divided
by your amount downloaded. The amounts used are
for the current session only, not over the
history of the file. If you achieve a share
ratio of 1.0, that would mean you've uploaded as
much as you've downloaded. The higher the
number, the more you have contributed. If you
see a share ratio of "oo", this means infinity,
which will happen if you open a BT client with a
complete file (i.e., you seed the file.) In this
case you download nothing since you have the
full file, and so anything you send will cause
the ratio to reach infinity. Note: The share
rating is just a number that is displayed for
your convenience. It does not directly affect
any aspect of the client at all. In general, out
of courtesy to others you should strive to keep
this ratio as high as possible, of course.
- distributed copies
- In some versions of the client, you will see
the text "Connected to n seeds; also seeing
n.nnn distributed copies." A seed is a machine
with the complete file. However, the swarm can
collectively have a complete copy (or copies) of
the file, and that is what this is telling you.
Referring again to the "people at a table"
analogy, consider the case where the book has 10
pages, and person A has pp.1-5 and B has
pp.6-10. Collectively, A and B have a complete
copy of the book, even though no one person has
the whole thing. In other words, even if
there are no seeds, as long as there is at least
one distributed copy of the file everyone can
eventually get a complete file. Meditate on
this, the Zen of BitTorrent, grasshopper.
- choked
- This is a term used in the
description of the BitTorrent protocol. It
refers to the state of an uploader, i.e. the
thread that sends data to another peer. When a
connection is choked, it means that the
transmitter doesn't currently want to send
anything on that link. A BT client signals that
it's choked to other clients for a number of
reasons, but the most common is that by default
a client will only maintain --max_uploads
active simultaneous uploads, the rest will be
marked choked. (The default value is 4 and this
is the same setting that experimental client GUI
lets you adjust.) A connection can also be
choked for other reasons, for example a peer
downloading from a seed will mark his connection
as choked since the seed is not interested in
receiving anything. Note that since each
connection is bidirectional and symmetrical,
there are two choked flags for each connection,
one for each Tx endpoint.
- interested
- Another term used in the protocol
specification. This is the corollary to the
choked flag, in that interested refers to the
state of a downloader with respect to a
connection. A downloader is marked as interested
if the other end of the link has any pieces that
the client wants, otherwise the connection is
marked as not interested.
- snubbed
- If the client has not received anything
after a certain period (default: 60 seconds), it
marks a connection as snubbed, in that the peer
on the other end has chosen not to send in a
while. See the definition of choked for reasons
why an uploader might mark a connection as
choked. The real function of keeping track of
this variable is to improve download speeds.
Occasionally the client will find itself in a
state where even though it is connected to many
peers, it is choked by all of them. The client
uses the snubbed flag in an attempt to prevent
this situation. It notes that a peer with whom
it would like to trade pieces with has not sent
anything in a while, and rather than leaving it
up to the optimistic choking to eventuall select
that peer, it instead reserves one of its upload
slots for sending to that peer.
- optimistic unchoking
- Periodically, the client shakes up the list
of uploaders and tries sending on different
connections that were previously choked, and
choking the connections it was just using. You
can observe this action every 10 or 20 seconds
or so, by watching the "Advanced" panel of one
of the experimental clients.
|