I was looking through MLDonkey wiki when
I ran into this technical yet compact explanation of how BitTorrent protocol
works. I already know how BT works but I thought my fellow geeks might find
this useful since the diagrams at the official BT site aren't that useful:


It [BitTorrent] divides shared data (a single file or a directory) into pieces, typically
of 256 KiB. A SHA-1 checksum is computed for each piece, and used to check the piece
has been correctly downloaded. The checksums are stored in a .torrent file, along
with filenames. The .torrent file also nominates a tracker, a Web resource that introduces
peers to each other. Peers contact each other, learn what pieces they have available,
request the rarest (least commonly seen) pieces first, and send requested pieces.


Just in case you are wondering, MLDonkey is a universal client of sort for many
P2P networks
including FastTrack, eDonkey2000, Gnutella, and Direct Connect.
It supports BitTorrent too but then BitTorrent is not really a network. While
MLDonkey is open source, it's written in Ocaml which is powerful but non-mainstream.

[Don Park's Blog]