Jego najwiekszą zaletą w prorównaniu do protokołu HTTP, jest podział pasma pomiędzy osoby, które w tym samym czasie pobierają dany plik.
Dzięki temu kopiowanie pliku przebiega głównie pomiędzy komputerami użytkowników, tworzącymi wtedy sieć P2P. Użytkownik, który skopiował fragment pliku, udostępnia go innym użytkownikom. W ten sposób prędkość kopiowania pliku nie jest limitowana możliwościami serwera i jego łącza sieciowego, nawet gdy plik kopiowany jest przez wielu użytkowników naraz.
System jest zintegrowany ze stroną WWW serwera a sam proces pobierania od strony użytkownika jest zbliżony do transmisji pliku za pośrednictwem protokołu HTTP. Od strony serwera system składa się z udostępnionych publicznie metaplików o rozszerzeniu .torrent, trackera oraz programu wysyłającego pliki.
Macierzysty program do wymiany danych w tej sieci został napisany w języku Python i również nosi nazwę BitTorrent.
Procedura rozpoczyna się od pobrania ze strony WWW metapliku o rozszerzeniu .torrent zawierającego, między innymi, informacje o zawartości, adresie trackera i sumach kontrolnych poszczególnych plików przesyłanych przez sieć. Następnie, klient sieci łączy się z trackerem otrzymując od niego informacje o pozostałych użytkownikach oraz periodycznie utrzymuje z nim kontakt w celu aktualizacji. Od tej chwili zaczyna się już właściwy proces pobierania pliku.
Schemat transferu plików:
Budowa pliku .torrent:
- announce – ta informacja zawiera adres url do trackera na jakim został uruchomiony dany torrent,
- comment – najczęściej notka od uploadera (osoby tworzącej torrent) lub reklama serwisu z jakiego został pobrany plik,
- creationdate – jak sama nazwa wskazuje informacja ta zawiera datę utworzenia pliku torrent,
- encoding – informuje klienta o kodowaniu plików w jakim został utworzony plik .torrent,
- createdby – informacja dodatkowa, informuje o programie jakim stworzono torrenta,
- private – flaga informująca czy klient bittorrenta może załączyć wymianę peerów oraz DHT,
- annuonce-list – jest to lista trackerów oddzielonych pustą linią (tzw. multitracker). Multitrackery tworzy się by zapobiec
- piece length – rozmiar kawałka. Plik, który zostaje rozpowszechniany poprzez bittorrenta jest dzielony na małe kawałki (tzw. chunki) by już po pobraniu jednego kawałka móc dzielić się danymi z innymi użytkownikami.