Jak začít, podrobný popis
Jak začít
1.stažením, instalací a konfigurací klienta pro bittorrent / vybrat si můžete
v sekci download /
2.vyhledáním příslušného torent souboru na trackeru / tracker - server
kde
se skladují torrent soubory /
3.stahovat
<>Klienti a Torrentcreatory - stručný seznam nejznámějších
aplikací.
ABC Bittorrent Client CZ DOPORUČENO
Toren Topia Client DOPORUČENO
Official Bittorrent Client v3.3
g3-torrent
PTC Bittorrent Client
TheSHAD0W's EXPERIMENTAL Bittorrent Client
Original EXPERIMENTAL Bittorrent Client
Azureus Client CZ DOPORUČENO
Completedir (Creates Torrents)
MakeTorrent CZ DOPORUČENO>
Trackery aneb kde hledat
Asi nejznámější trackerem s největší databází torrent souborů je
suprnova.org
Nejlpším vyhledávačem pak asi isohunt.com
Existuje ale další velké množství specificky zaměřených trackerů.
Eventuelně můžete použít nějaký vyhledávač torrent souborů
např. GoSuprnova. Pozor na aplikaci torentsearch prolezlou spywarem.

Co je to Bittorrent - podrobný popis
BitTorrent je protokol určený k distribuci souborů. Narozdíl od běžného
přenosu souboru přes HTTP nebo FTP zde jednotlivé počítače stahující
soubor zároveň slouží jako servery a nabízejí ke sdílení již staženou
část souboru. To znamená, že s rostoucím počtem připojených klientů
jsou data na síti zastoupena ve stále větším počtu kopií, což snižuje
zátěž původního serveru (uživatelé nestahují soubor pouze z něj, ale i
od sebe navzájem).
Všechny podpůrné aplikace jsou napsané v jazyce Python. BitTorrent je
open source aplikace, vydaná pod MIT licencí. Autorem BitTorrentu je
Brian Cohen, domovská stránka projektu je
http://bitconjurer.org/BitTorrent/.
Architektura
Tracker je aplikace běžící zpravidla na výchozím serveru. Jeho úkolem
je koordinovat spojení mezi jednotlivými klienty a řídit distribuci
souborů. Jeden tracker může koordinovat stahování velkého počtu
souborů, jednotlivé relace jsou identifikovány SHA1 hashem svého
metasouboru.
Metasoubor (.torrent) je soubor obsahující URL trackeru a informace o
souboru (souborech) k jejichž distribuci slouží. Jeho struktura bude
podrobněji popsána dále.
BitTorrent klient (downloader) je aplikace sloužící k vlastnímu
stahování souboru. Zároveň slouží jako server a umožňuje stažení již
přenesených dat. Pokud jsou stažena všechna data, slouží BitTorrent
klient čistě jako server.
Pro distribuci souborů je zapotřebí
Web server
Na webovém serveru jsou k dispozici metasoubory (.torrent) k
distribuovaným datům. Spuštění downloaderu na klientském počítači je
zajištěno pomocí MIME asociace (application/x-bittorrent).
Tracker Stačí jeden i pro velký počet souborů. Musí běžet na počítači
přístupném zvenčí, počítač by měl běžet pokud možno nepřetržitě.
Zdroj (downloader) pro každý metasoubor.
Distribuované soubory
Klientský PC vyžaduje webový prohlížeč, BitTorrent downloader
Komunikace probíhá následovně:
Klient si vyžádá z web serveru metasoubor.
Spustí se downloader, uživatel si vybere, kam chce uložit soubory
popsané příslušným metasouborem.
Pokud soubory existují, downloader si ověří jejich obsah (pomocí SHA1
hashe). Pokud ne, alokuje pro ně místo na disku (vytvoří adresářovou
strukturu se soubory vyplněnými samými nulami (00H).
Downloader získá od trackeru náhodný seznam dalších downloaderů. Tento
přenos probíhá přes HTTP nebo HTTPS.
Downloader zasílá trackeru informace o svém aktuálním stavu, zároveň
downloadery přenášejí data mezi sebou. To se děje pomocí BitTorrent
protokolu, který je vybudován nad TCP. Zdroj se chová stejně jako
ostatní downloadery, protože však již má kompletní soubory, data pouze
odesílá.
Protokol
Komunikace s trackerem – HTTP nadstavba. Metasoubory.
Data jsou posílána v ASCII, mohou obsahovat řetězce, celá čísla,
seznamy (lists) a struktury (dictionaries). Kódování je následující:
Řetězec: <délka>:<text>
Příklad: 10:BitTorrent
Celé číslo: i<číslo>e
Číslo nesmí začínat nulou, pokud to není nula.
Příklad: i42e
Seznam: l<položka><položka>...e
Příklad: l10:BitTorrent5:pokuse
[‘BitTorrent’,’pokus’]
Struktura: d<klíč><hodnota><klíč><hodnota>...e
Klíč musí být řetězec.
Příklad: d4:file14:BitTorrent.txt6:lengthi3520ee
(‘file’:’BitTorrent.txt’,’length’:3520)
Metasoubor (.torrent) je struktura se dvěma položkami:
announce URL trackeru
info struktura popisující dat
Struktura info
name doporučené jméno souboru / výchozího adresáře
piece length délka datového bloku – menší je zpravidla lepší, ale
zvětšuje velikost metasouboru.. Běžně se používá 256 KB.
pieces řetězec skládající se z SHA1 hashů jednotlivých datových bloků.
Každému bloku přísluší 20 bytů.
length délka souboru v bytech
files seznam souborů
Struktura info obsahuje buď položku length (pokud popisuje jediný
soubor) nebo položku files (pokud popisuje adersářovou strukturu s více
soubory)
Položka files:
Seznam struktur se 2 položkami:
length délka souboru v bytech
path seznam udávající cestu k souboru, položky jsou jednotlivé
podadresáře výchozího adresáře, poslední položka je jméno souboru
Komunikace s trackerem probíhá následovně:
Downloader zasílá trackeru HTTP GET žádost s následujícími parametry:
info_hash SHA1 hash struktury info z metasouboru
peer_id 20 znaků dlouhý identifikátor downloaderu. Generuje se náhodně
při spuštění.
ip IP adresa počítače na kterém downloader běží. Nepovinná položka.
port číslo portu na kterém downloader běží. Implicitně první volný port
>= 6881.
uploaded zatím odesláno dat
downloaded zatím přijato dat
left počet bytů, které je ještě potřeba stáhnout
event nepovinná položka – viz dále
Parametr event může nabývat následujících hodnot:
started při zahájení stahování
completed když jsou stažena všechna data – dále se již jen odesílá
stopped při ukončení stahování
<prázdný> běžná zpráva – zasílá se periodicky
Odpověď je struktura v Pythonu zakódovaná stejně jako metasoubor.
Obsahuje buď klíč failure reason s chybovým hlášením (které se zobrazí
uživateli), nebo 2 klíče:
interval doba v sekundách mezi pravidelnými žádostmi. Downloader může
poslat žádost i mimo přidělený interval, pokud např. nemá odkud
stahovat.
peers seznam dalších klientů pro komunikaci
Položka peers je seznam následujících struktur:
id identifikátor downloaderu
ip IP adresa nebo DNS jméno počítače s downloaderem
port port který má downloader otevřený
Komunikace mezi downloadery
Spojení je realizováno na bázi TCP. Je symetrické – zprávy v obou
směrech vypadají stejně a data mohou téct oběma směry.
Bloky dat jsou indexovány od nuly v pořadí, v jakém jsou uvedeny v
metasouboru. Po obdržení bloku a ověření, že je neporušený (shoduje se
hash) jsou na to upozorněny všechny downloadery na seznamu.
Každé spojení má na každém konci 2 stavové bity: interested a choked.
Bit interested znamená, že druhá strana má nějaký blok, který tento
downloader ještě nemá. Bit choked znamená, že spojení je z této strany
blokováno – druhá strana nebude dostávat data, dokud nebude
odblokována. Počáteční stav každého spojení je choked=1 a interested=0.
Pro zvýšení efektivity přenosu jsou bloky rozděleny do podbloků a vždy
je k dispozici fronta žádostí o podblok – jakmile je jeden stažen,
vysílá se žádost o další.
Navázání spojení (handshake)
Spojení začíná znakem 19d, následuje řetězec „BitTorrent protocol“.
Celočíselné hodnoty v dalších fázích protokolu jsou vždy big-endian na
4 byty.
Po hlavičce následuje 8 bytů, jejich hodnota je zatím 0 a jsou
rezervovány pro pozdější rozšíření.
Dále následuje 20 bytů SHA1 hash struktury info z metasouboru.
Následuje 20 bytů identifikační kód downloaderu
Tím končí handshake, následují zprávy prefixované délkou. Zprávy délky
0 slouží pro udržení spojení, implicitně se posílají každé 2 minuty.
První byte každé zprávy s délkou >0 určuje její typ. Může to býr
0 – choke
1 – unchoke
2 – interested
3 – not interested
4 – have
5 – bitfield
6 – request
7 – piece
8 – cancel
Zprávy choke, unchoke, interested a not interested nenesou žádná další
data a slouží k oznámení stavu bitů choked a interested na straně
odesílatele. Posílají se při změně.
Zpráva bitfield se zasílá na začátku spojení. Downloader jí oznamuje,
které bloky má již stažené a k dipozici. Data zprávy jsou bitové pole.
Jednotlivé bity počínaje nejvýznamnějším odpovídají blokům počínaje
blokem s indexem 0. Nevyužité bity mají hodnotu 0. Pokud downloader
začíná a nemá ještě žádná data, zprávu bitfield může vynechat.
Zpráva have obsahuje index právě staženého bloku. Zasílá se všem
ostatním po úspěšném ověření hashe.
Zpráva request slouží k vyžádání podbloku od jiného downloaderu.
Obsahuje index bloku, začátek a délku. Ofset začátku a délka musí být
mocniny dvou.
Zpráva cancel slouží ke zrušení žádosti poslané zprávou request.
Parametry má stejné.
Zpráva piece slouží k vlastnímu přenosu dat. Obsahuje index bloku,
ofset začátku a data.
Strategie výběru, řízení toku
Výběr partnerů pro download
V současné implementaci je prováděna náhodně. Je experimentálně
ověřeno, že takto získaný graf má vyhovující parametry. Alternativou
bývá stromová topologie, tam se ale nevyužije upload kapacita listů.
Pipelining
Aby během přenosu nebyly výpadky v toku dat, jsou bloky rozděleny na
podbloky (zpravidla 16 KB velké). Každé spojení má frontu zpravidla 5
čekajících žádostí, jakmile je obdržen podblok, posílá se další žádost.
Začátek downloadu
Je zapotřebí rychle získat alespoň 1 blok, aby bylo co uploadovat (což
má za následek rychlejší download). Snažit se v tomto okamžiku získat
nejvzácnější blok v síti by nebylo dobrou strategií, lepší je volit
takové bloky, které má více uživatelů (a lze tedy stahovat více
podbloků najednou). Jakmile je stažen první kompletní blok, přejde se
na následující strategii.
Download
Při výběru bloku během hlavní fáze downloadu se používá strategie
„nejvzácnější-nejdřív“, tj. stahují se přednostně ty bloky, které má
nejméně uživatelů v síti. To znamená, že:
- dokud zdroj nerozešle všechny bloky, nikdo nemůže ukončit stahování.
Tato strategie zajistí, že zdroj určitě odešle všechny bloky dříve, než
se některé začnou opakovat.
- vzácné bloky, u kterých má výpadek klienta, který je poskytuje,
největší dopad na rychlost celého systému, se zálohují přednostně
- rozšířené bloky se nechávají na konec, takže šance, že klient s
volnou kapacitou pro upload nemá žádná užitečná data, je menší
Závěrečná fáze
Během downloadu může nastat situace, kdy některý blok je stahován od
uživatele s velmi malou přenosovou rychlostí. Normálně to není problém
(je otevřených mnoho spojení současně a nízká rychlost jednoho nemá na
výsledek vliv), v závěrečné fázi, kdy tento přenos může být poslední,
to zbytečně zdržuje. Proto v okamžiku, kdy je na všechny zbývající
podbloky odeslána žádost (zpráva request), klient pošle žádost o
všechny podbloky všem ostatním klientům v síti. Jakmile některý z nich
obdrží, zruší tuto žádost u všech ostatních klientů pomocí zprávy
cancel.
Tato metoda přináší velké zrychlení závěrečné fáze downloadu za cenu
mírného zvýšení zátěže sítě (netrvá příliš dlouho, takže negativní
dopad není nijak vážný).
Blokování a odblokování
Blokování (choking) se používá ze dvou důvodů:
1) při současném odchozím provozu přes velký počet socketů dochází
nefungují mechanismy řízení toku dat u TCP optimálně, je tedy vhodné
počet odchozích aktivních spojení omezit
2) jako mechanismus „odměňování“ klientů poskytujících rychlý upload a
naopak „trestání“ těch, co data pouze přijímají.
Blokované TCP spojení zůstává otevřené, klient přes něj ale neposílá
data.)
BitTorrent klient standardně používá 4 otevřená spojení. Stav se
aktualizuje každých 10 sekund, kritériem pro výběr je klouzavý průměr
rychlosti downloadu z jednotlivých spojení za posledních 20 sekund.
V každém cyklu klient odblokuje (choked=0) 4 klienty, od kterých má
nejrychlejší download a mají zájem o data (interested=1). Pokud
existuje klient s vyšší rychlostí downloadu, který nemá zájem o data,
je též odblokován. Pokud se během cyklu změní jeho stav interested na
1, bude zablokován nejpomalejší ze 4 klientů vybraných předtím.
Tato metoda by sama o sobě neumožňovala zjistit, jestli některé z právě
nevyužívaných spojení není lepší než ta právě využívaná. Proto je v
každém okamžiku jeden klient odblokován bez ohledu na rychlost
downloadu od něj. To, který klient to je, se mění jednou za 3 cykly (30
sekund). Klient, který dosud nemá žádná data, která by mohl nabízet, má
3x vyšší šanci, že bude takto odblokován. Pokud tento klient začne
stahovat (interested=1), počítá se mezi 4 povolená aktivní spojení, na
rozdíl od nich ale nemůže být zablokován, pokud je nejpomalejší.
Dokončené stahování
Po dokončení stahování se již nelze rozhodovat podle rychlosti
downloadu. Klient proto preferuje poskytování dat klientům, ke kterým
má nejrychlejší upload, a klientům, kterým momentálně nikdo neposílá
data.
Výhody a nevýhody
Výhody
Pro distribuci souborů stačí linka s mnohem menší propustností než
např. u FTP.
Výsledná přenosová rychlost u koncového uživatele se u běžných
připojení blíží propustnosti linky.
Systém dobře zvládá velké nárazové zatížení (např. při uvolnění nové
verze programu), protože s počtem požadavků roste i počet „serverů“.
Systém by měl být odolný vůči žalobě – žaloby proti výměnným sítím jsou
stále velmi populární, u BitTorrentu se však dá snadno nastavit, co
přesně se bude sdílet (jednalo by se o drobnou modifikaci zdrojového
kódu trackeru, aby přijímal pouze spojení, která mají svůj hash uvedený
v seznamu). Argumenty, že se BitTorrent používá k nelegálnímu sdílení
souborů, by pak neměly šanci obstát.
Nevýhody
BitTorrent downloader během stahování souboru zároveň odesílá velké
množství dat ostatním downloaderům. Jelikož je to podmínkou pro
dosažení použitelné rychlosti stahování (viz kapitola o řízení toku),
není možné tento objem dat příliš omezovat. Vzhledem k tomu, že v ČR
toto často znamená omezení celkového objemu upload+download, je tento
protokol v našich podmínkách pro uživatele počítaného připojení značně
nevýhodný (stažení souboru je 1,5-3x dražší).