Hlavní navigace

BitTorrent - Technologie

Radim Kolář 7. 4. 2004

V tomto článku si stručně popíšeme, jak funguje BitTorrent, peer to peer bandwidth saving systém určený k distribuci velkých souborů.

Proč

Distribuce velkých souborů přináší několik problémů:

1) Soubor se downloaduje delší dobu a tím pádem je během stahování k serveru současně připojeno více uživatelů.

2) Zdroje serveru je nutné rozdělovat mezi více uživatelů – každý dostane menší díl CPU, paměti a přenosového pásma.

3) Pokud se celý soubor nevejde to cache serveru, je nutné provádět mnoho diskových seek operací – v nejhorším případě jeden seek na každý odeslaný blok, což dále snižuje výkon. Proto jsou zatížené fileservery vybaveny velkým množstvím paměti (obvykle 4 GB a více).

4) Velké soubory spotřebovávají zdroje ostatním službám na serveru.

5) Největším problémem je potřeba velkého přenosového pásma. Nemilé je to zvláště v případě, pokud platíme za přenesené bajty.

BitTorrent se snaží tyto problémy řešit. Je založen na jednoduché myšlence: Uživatelé, kteří si stahují velký soubor, si mohou mezi sebou kopírovat to, co si již stáhli.

BitTorrent pracuje ve třech fázích

Fáze 1: Získání metadat

Metadata jsou uložena v souboru s koncovkou .torrent (application/x-bittorent). Tato metadata najdete na webové stránce spolu s upozorněním na možnost stažení souboru pomocí BT. Je vhodné mít webbrowser nakonfigurován tak, aby podle koncovky nebo MIME typu automaticky spustil BT klienta. Metadata lze získat i jinou cestou (FTP, IRC, Email, …) a pak na ně spustit BT klienta ručně.

Metadata jsou malý binární soubor obsahující údaje o stahovaném souboru: jméno, velikost, datum vytvoření, URL trackeru, velikost bloku, případný komentář a binárně uložené SHA1 checksumy jednotlivých bloků. Soubor metadat pro 690MB CD-ROM image je veliký zhruba 50 kB. Metadata jsou kodována pomocí tzv. bencoding (např. řetězec je uložen jako velikost:řetězec, integer jako ičísloe).

Příklad úvodní textové části .torrent souboru:

d8: announce30: http://localhost:6969/announce7: comment30: NetBSD
1.6.2 for I386 - Disc 213: creation datei1078940925e4: infod6:
lengthi690257920e4: name21: NetBSD-i386-1.6.2.ISO12: piece lengthi262144e6:
pieces52680: 

(pozn. ed.: všechny mezery za dvojtečkami dodány násilím kvůli sazbě –Johanka)

Fáze 2: Hledání ostatních stahujících

Po získání a zpracování metadat začne BT klient hledat ostatní počítače stahující tentýž soubor. K jejich vyhledání slouží služba Tracker. URL této služby je uvedeno v položce announce v .torrent souboru. Existuje neoficiální rozšíření syntaxe ‚announce-list‘, které umožňuje zadat seznam více Trackerů. Pokud je tracker nedostupný, nelze totiž soubor stáhnout.

Tracker je služba používající architekturu klient-server. Tracker komunikuje HTTP protokolem a obvykle běží na portu 6969. Úkolem služby Tracker je udržovat aktualizovaný seznam počítačů stahujících příslušný soubor. Tracker kromě toho shromažduje statistické informace o klientech (počet přenesených dat) a počítá downloady. Jeden Tracker může obsluhovat více .torrent souborů současně. Odhaduje se, že jeden Tracker zvládne okolo 10 000 klientů současně. Většina trackerů poskytuje po připojení web browserem různé doplňkové služby (statistika, chat, možnost hledání a stáhnutí .torrent souborů).

Klienti pravidelně ohlašují Trackeru svůj stav (started, stopped, completed), celkový počet přenesených bajtů (uploaded, downloaded), počet zbývajících bajtů (left). Nejdůležitějšími informacemi předávanými Trackeru jsou 20bajtové peer_id, IP adresa a číslo portu, na které jsou pro ostatní klienty k zastižení. Od Trackeru obdrží BT klient seznam několika ostatních a začne s nimi přímo komunikovat.

Fáze 3: Peer to peer

V peer to peer síti Bit Torrent existují dva typy uzlů: peer a seed. Rozdíl mezi těmito uzly není technický, ale spíše politický. Po technické stránce jsou oba dva naprosto shodné: používají stejný protokol a stejně se Trackeru ohlašují. Jediný rozdíl je ten, že seed vlastní kompletní kopii souboru, zatímco peer nikoliv. Seedem se stává peer uzel automaticky v době, kdy má k dispozici kompletní stahovaný soubor. Pokud je spuštěn BT klient na již downloadovaný soubor, stane se seedem.

Myšlenka peer to peer sítě je založena na vzájemné spolupráci. Peer uzly se navzájem spojují a vyměňují si mezi sebou jednotlivé části souboru, a to nejlépe v poměru 1:1. Ty mně dáš jeden blok, co ještě nemám, a já ti za to dám jeden blok, co ty nemáš. Každý soubor je totiž předem rozdělen na bloky (obvykle 256K), jejichž SHA1 checksumy jsou známé z .torrent souboru.

Každý peer uzel se snaží připojit k rozumné míře (zhruba 10) ostatních uzlů. Po připojení si uzly navzájem vymění seznamy svých bloků. Uzel si tak může vybrat, o který blok požádá. V současné době se používají dvě strategie: náhodný výběr {random} a nejméně se vyskytující (rarest first) blok. Protože peer uzel nechce poskytovat své bloky zadarmo, začne nejprve vyměňovat své bloky za nějaké, které ještě nemá. Teprve potom, co nemá již nic na výměnu, dává semtam nějaké bločky ostatním zdarma, protože doufá, že od nich také něco dostane. Dávání bloků zdarma je nezbytné pro správnou funkci sítě – odstranění dead-lock stavu. Uzel čas od času doluje z Trackeru seznam dalších uzlů.

Peer uzly si také mohou vymýšlet. Aby zvýšily svou šanci na získání bloků, mohou předstírat, že mají více bloků na výměnu než ve skutečnosti. V současné době se používají dvě metody podfuků: buďto se peer uzel na žádost o blok neobtěžuje nic poslat, nebo pošle náhodná data. Většina klientů tyto podfukáře rychle pozná a přestane dále komunikovat. V současné době neexistuje metoda, jak tyto uzly bonznout Trackeru. Při stahování delších souborů (ISO Image) se podvody nevyplácejí, při stahování MP3 to většinou projde, protože než to ostatní zjistí, máte již staženo.

Uzel typu seed je narozdíl od uzlu typu peer velice štědrý. Protože má všechno a nic nepotřebuje, dává zadarmo bločky komukoliv, kdo o ně požádá. Uzel typu seed se s výjimkou Trackeru nikam nespojuje, pouze čeká na příchozí spojení. Aby se zabránilo jejich přetížení, jsou seed uzly omezovány, a to jak počtem připojených peer uzlů, tak objemem přenesených dat za sekundu.

Pro zajištění úspěšného downloadu je žádoucí, aby byl vždy připojen alespoň jeden uzel typu seed. BT technologie umožňuje download i v případě tzv. distribuované kopie – klienti mají rozdílnou sadu bloků, která po složení dá celý soubor.

Seznam doporučovaných URL

wiki.theory.or­g/index.php/Bit­TorrentSpecifi­cation
www.bitconjurer­.org/BitTorren­t/protocol.html

Našli jste v článku chybu?

13. 1. 2010 20:38

Mikiq (neregistrovaný)

Ja som úplný začiatočník v sťahovaní filmov. Podarilo sa mi omylom staihnúť za týždeň až jeden. Ale titulky k nemu nie. Návodov je mnoho no ja som z nich magor. Neviem nastaviť napríklad utorrent. Neposlal by si mi email na komako1@post.sk ako stiahnúť nejaký film a čím ? Vopred díky aj keď vyzerám ako idiot.

1. 11. 2008 19:51

uživatel si přál zůstat v anonymitě
Doporučuji spíše stáhnout českou verzi programu z http://www.bittorrent.cz
Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Root.cz: Pinebook: linuxový notebook za 89 dolarů

Pinebook: linuxový notebook za 89 dolarů

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?