Peer to peer sítě od A do Z: Bittorrent a eDonkey

25. 7. 2008
Doba čtení: 7 minut

Sdílet

Autor: 29
V prvním díle malého seriálu o peer-to-peer sítích jsme se v krátkosti podívali na přenos dat v sítích a představili jsme si první dvě výměnné sítě. V dnešním díle si představíme další dva známé zástupce těchto služeb: Bittorrent a eDonkey.

První díl seriálu s úvodem do problematiky výměnných sítí vyšel na Lupě před týdnem.

Bittorrent

V současné době je pravděpodobně nejpoužívanější P2P sítí bittorent, přičemž tento název nesou celkem tři prvky. Za prvé jde o název distribučního protokolu, za druhé pro originální klientskou aplikaci pro tento protokol a za třetí se jedná o název typu souboru. Bittorrent byl vlastně přímo vytvořen k distribuci objemných dat, bez toho aby distributor musel k šíření vynaložit velké finance. Protokol vymyslel programátor Bram Cohen v dubnu roku 2001. O tři měsíce později, přesněji 2. července 2001, byla vydána první verze Bittorrentu. Originální BitTorrent klient byl napsán v Pythonu a zdrojový kód byl vydán pod BitTorrent Open Source Licencí. Pro tuto síť nakonec vzniklo mnoho klientů napsaných v různých programovacích jazycích a fungujících na různých platformách. Mezi ty nejznámější patří dnes velice populární μTorrent a také Azureus.

Síť bittorrent se od ostatních liší především v tom, že neobsahuje žádný způsob vyhledávání. Tím je celkově zjednodušena a šetří svou přenosovou kapacitou. Pro účel hledání souborů existují speciální www servery, které obsahují množství malých binárních souborů, zvaných (bit)torrenty. Tyto soubory v sobě nesou takzvaná metadata, většinou se jedná o jméno, velikost, datum vytvoření souboru, dále pak adresu trackeru, velikost bloku (části souboru) a binárně uložené SHA1 kontrolní součty jednotlivých bloků. Soubor s těmito metadaty má obvykle kolem 50 až 100 kB, navíc využívá formátu zvaného „bencoding“ pro zakódování dat. Tento formát je také využíván při komunikaci uživatelů s trackery a například zpráva „něco“ je zakódována jako „4:něco“ tedy {délka řetězce}:{řetězec}. Čísla se u tohoto formátu kódují jako „i{číslo}e“ takže číslo –7 máme zakódováno jako „i-7e.“

Tracker je speciální server, který pouze spojuje klienty stahující stejný soubor a snaží udržovat jejich aktuální seznam, přičemž na trackeru nejsou uložena žádné části těchto souborů. Tracker je pro správné fungovaní bittorentu nutností, bez něho stahování většinou nelze zahájit, pouze dokončit (když jsou již klienti spojeni). Využívá architektury klient-server a s klienty komunikuje pomocí protokol HTTP, obvykle na portu číslo 6969. Tracker také hlídá ratio (poměr download:upload) a většinou i nabízí různé doplňkové služby, jako jsou statistiky s chat.
bittorrent

zdroj: wiki

Ve chvíli, kdy klient obdrží metadata o souboru, snaží se připojit na tracker, ze kterého dostane seznam uzlů, které mají o daný soubor také zájem. Uzly jsou v síti bittorrent rozděleny do dvou typů: seeds, které mají daný soubor kompletní a již pouze odesílají, a peers, které daný soubor stahují a zároveň již také odesílají stažené části. Klienti se mimo jiné musí pravidelně ohlašovat trackeru, hlásí mu přenesená data, počet zbývajících dat a v neposlední řadě i svou IP adresu a číslo portu (tzv. peer_id). Poslední dvě zmíněné informace poté tracker předává ostatním uzlům, které stahují stejný soubor, viz začátek odstavce.

Klient již tedy obdržel od trackeru informace,kde se daný soubor v sítí nalézá a může se tedy připojit k ostatním peerům. Každý soubor je mimo jiné rozdělen na bloky, ty mívají obvykle kolem 250 KB. Po připojení si tyto uzly mezi sebou vymění seznamy svých bloků a klient si tedy může vybrat, o který blok požádá. V praxi se dnes používají dvě metody. Buď si klient požádá o náhodný blok nebo o blok nejméně se vyskytující. Krom toho si každý seed i každý peer může vybrat, komu svá data pošle. Nejčastěji je to uzel, který na oplátku posílá svá data. Každý blok je po stažení zkontrolován kontrolním SHA1 součtem uvedeným mezi metadaty v (bit)torrent souboru. Při dosažení 100 % souboru se peer okamžitě stává seedem, který nic nevyžaduje, pouze rozdává bloky. Je důležité, aby existoval vždy alespoň jeden seed s kompletním souborem, jinak není stažení kompletního souboru nikterak zaručeno.

Tato síť je tedy celkově na dobré technické úrovni a vše se stále vylepšuje. Noví klienti pro tuto síť například od roku 2007 umí pracovat s více trackery najednou, když jeden přestane fungovat, nahradí ho druhý. Dříve by v takovém případě bylo stahování onoho souboru skončeno. Jednoduchost šíření objemných dat nezůstala bez povšimnutí, a tak některé společnosti využívají bittorrent pro šíření svých děl. Za všechny lze jmenovat populární hru World of Warcraft, která bittorrent využívá pro šíření svých updatů. Většina linuxových distribucí je také šířena skrze torrenty.

Bittorrent samozřejmě nemohl zůstat nepovšimnut ze stran protipirátských organizací. Ty se mu věnují již téměř od jeho počátku a v poslední době to vypadá na skutečnou válku. V Malajsii nedávno vláda přikázala zrušit všechny hostované bittorrent trackery. Hostovala jich tam převážná většina a na chvíli byla síť částečně ochromena. Pozadu nezůstává ani švédská vláda, která hodlá podporovat monitoring webů s torrenty. Svítá na horší časy …

eDonkey

Jinak také nazývána eDonkey2000 či zkráceně eD2k. Síť vytvořil tým programátorů společnosti MetaMachine. Poučili se z chyb sítě Napster a podařilo se jim vytvořit velice oblíbenou síť. Jak to tak ale chodí, protipirátské organizace zasáhly a společnost MetaMachine dala od sítě ruce pryč. Síť však nyní funguje díky silné komunitě na mnoha neoficiálních serverech. Mezi populární programy patří eDonkey2000 a eMule.

emule

eDonkey je síť částečně závislá na centrálních serverech, které poskytují hledání, chat a obdobné věci. Serverů je dnes mnoho, je však ale téměř jedno, na který se připojíte. Servery, na rozdíl třeba od DirectConnect, spolu totiž komunikují a vyměňují si informace o svých uživatelích. V současné době existují tři typy serverového softwaru. První, originální software od firmy MetaMachine, je napsaný v C++. Má uzavřený kód a již delší dobu není podporován. Druhý je nazvaný jednoduše eserver, jehož autorem je programátor s přezdívkou Lugdunum. Má sice také uzavřený kód, ale je nadále vyvíjen a podporován. Většina dnešních eDonkey serverů běží právě na eserveru. Třetím je software nazvaný satan-edonkey-server. Ten byl vydán až v roce 2007, pár dní po zavření několika důležitých serverů. Vzbudil tedy podezření, že by se mohlo jednat o podvodný software, který by odesílal data o uživatelích třetí straně. Toto podezření se však nikdy nepotvrdilo.

Servery na síti eDonkey podporují nejen vyhledávání podle názvu, ale i vyhledávání dle velikosti souboru, bitrate a podobně. Nově jsou podporovány operátory AND, OR a NOT. Některé servery jsou umístěny přímo v USA, ostatní jsou roztroušeny po zbytku světa. A právě servery umístěné v USA vykazují ohromné množství uživatelů, až 1,5 milionu, což celkově dělá kolem 10–13 milionů uživatelů sítě eDonkey. Přesná čísla samozřejmě nelze zjistit. Původní eDonkey protokol byl pro lepší funkčnost rozšířen o některé nové prvky, stejně jako eserver a eMule. Ani základní verze, ani rozšířená verze protokolu však zatím není nikterak formálně zdokumentována.

p2country

Všechny soubory v sítí eDonkey jsou snadno identifikovatelné pomocí MD4 hashe. To pomáhá identifikovat stejná data s různými názvy a rozlišovat různá data se stejnými názvy. Jinak by totiž v síti vznikal obrovský chaos. Je také možné, že dvě odlišné části souboru mají stejný hash a tváří se tedy stejně, ale šance, že toto nastane, je malá a v praxi se tedy tento hash považuje za jedinečný identifikátor. Každý soubor je navíc rozdělen na bloky o velikosti přibližně 9 MB a každý z nich je kontrolován 128bitovým MD4 kontrolním součtem. Pokud by u kontrolního součtu došlo k chybě, musel by klient stahovat znovu celý 9MB blok. eDonkey však využívá metodu ICH (intelligent corruption handling), kdy 9MB blok rozdělí na 53 menších bloků o velikosti 180 KB, ty klient postupně stahuje a ověřuje, zda kontrolní součet již sedí. Kompletní stažené bloky jsou také ihned odesílány jiným uživatelům.

MM Influenceři

eDonkey má ale i řadu nevýhod. Tou zásadní je především dlouhá čekací doba na stahování. Tomu se lze ale částečně vyhnout, protože stejně jako u některých jiných sítí jsou upřednostňováni uživatelé, kteří nějaká data odesílají. Čím víc klient odesílá dat, tím více dostane bodů, které ho pak mohou vynést až na začátek fronty. Tyto body klient dostává od ostatních uzlů, je zde tedy poměrně malá možnost zneužití. Pokud tedy nic nenabídnete, moc toho také nestáhnete. A když stáhnete, často se jedná o fake soubory, kterými je síť doslova prosycena. Bohužel.

Tímto jsme zakončili dnešní díl našeho malého seriálu,v třetím pokračování se podíváme na nepříliš známou síť eXeem, populární FastTrack (Kazaa) a na zcela decentralizovanou síť Kademlia. V abecedním pořadníku jsme zatím vynechali síť Direct Connet, která přijde jako poslední a bude jí věnován celý článek.

Budou podle vás p2p sítě jednou využívány zejména k šíření legálního obsahu?

Autor článku

Autor je studentem univerzity Pardubice a zaměřuje se předevšim na informační technologie. Občas píše také do magazínu Slunečnice, a na svůj blog, kde se věnuje většinou hudbě.
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).