Torrent

Allikas: Kuutõrvaja
Redaktsioon seisuga 14. oktoober 2010, kell 15:00 kasutajalt Jj (arutelu | kaastöö) (Lingid)

Sisejuhatus

Torrent'it http://en.wikipedia.org/wiki/BitTorrent_(protocol) (ehk täpsemalt bittorrent'it, mis protokolli ametlikuks nimeks) seostatakse enamasti ebaseaduslike ja autoriõigusteta materjalide levitamises. Tegelikult on torrent mõeldud kõiksuguse materjali mugavaks levitamiseks (nagut iso tõmmitsad, vabavaralised materjalid jms.), mida teeb ka veebiserver Apache. Tegemist on võimsa ja pidevalt areneva ning täieneva protokolliga.

Võib tekkida juhus kui on vaja arvutite vahel vahetada suuri andmehulki, samas tsentraalses serveris aga kettaruumi ja võrguressurssi napib. Klient arvutitesse mingi teenuse (näiteks FTP, Apache) installeerimine on paraku ebapraktiline ja tülikas.

Torrent'i üheks suurimaks eeliseks on see, et andmete allatõmbamise hetkel jagab ta seda ka teiste klientidega, kiirendades sedasi klient-arvutites allalaadimist ning hajutades sujuvamalt võrgukoormust.

Torrent kasutab klient<->server arhidektuuri. Jagamine koosneb kahest osast: tracker kui server ning klient nt. utorrent windowsis (http://www.utorrent.com/) ja ktorrent (http://ktorrent.org Linuxis/FreeBSD's). Failide vahetamiseks tekitatakse klientprogrammiga .torrent fail, mis sisaldab kohalikus falisüsteemis olevate failide infot, mida soovitakse jagada ning tracker'i infot, läbi mille faile jagatakse. Peale .torrent faili laadimist klientprogrammi, teatatakse trackerile et fail on jagamiseks valmis. Kliendid, kes laevad oma arvutisse .torrent faili ning selle avavad, saavad trackeri käest infot, kellelt võimalik faili alla laadida. Kõik jagatavad failid lammutatakse nö. tükkideks (chunk), mida tõmbajate vahel vahetatakse.

Kirjeldatud tööpõhimõtet iseloomustab ehk kõige paremini allolev skeem


                      ___
                     |   |  
                     |___| tracker                   
                       *
                       *                             
              *******************                           
              *        *        *
              *       _*_       *
              *      |38%|A     *
              *      |___|      *
              *      /   \      *
              *     /     \     *
              *    /       \    *       Swarm
              *   /         \   *
              *  /           \  *
              * /             \ *
              */               \*
             _*_ B             _\_ C
            |67%|_____________|100|
            |___|             |_%_|

A kasutaja omab 38% 
B kasutaja omab 67%
C kasutaja omab tervikut ja ainult jagab seda 

* trackeri ja klientide vaheline info seoses sellega, kes mida omab
/- andmed, ehk kasutajate vaheline liiklus

Opentracker

Järgnevas tekstis vaadeldakse üht lihtsat robustset ja kergelt seadistatavat opentrackeri nimelist torrent serverit. Server kasutab libowfat'i ning vajab tööks suvalist POSIX ühilduvat OSi. Seda trackerit kasutab ka The Pirate Bay.

http://erdgeist.org/arts/software/opentracker/

Selle saab paigaldada OS enda vahenditega. Järgmine tekst on kirjutatud versiooni opentracker-0.2009.06.27 kohta. Olgu kohe ka öeldud, et antud tarkvara on mõeldud peamiselt avatud trackerite loomiseks, mistõttu kinniste passkeydega (võtmetega) süsteemide jaoks tuleb uurida pigem teisi servereid.

Kogu trackeri häälestus toimetatakse läbi opentrackeri seadistusfaili, nimega opentracker.conf, mis paigaldatakse installeerimisel operatsioonisüsteemi /etc/opentracker nimelisse kausta. Häälestusvõimalusi on palju: white ja blacklist ning nende asukoht (korraga saab vaid üht kasutada neist), statistika, opentracker'i port, teiste trackeritega syncimine jms. Muideks, kõiki parameetreid saab enne seadistusfaili kirjutamist proovida ka käsurealt.

Trackeri tarkvara käivitamine

Tarkvara on peale paigaldamist kasutatav vaikimisi seadistusfailiga.

Serveri saame käivitada käsuga

opentracker -i 127.0.0.1 -P 6969 -p 6969

Peale startimise näeb programmi kuulamas udp ja tcp pordil

nobody   opentracke 47997 4  tcp4   *:6969                *:*
nobody   opentracke 47997 6  udp4   *:6969                *:*

Mis tähendab, et meie tracker on tööks valmis

Jagamisele minevast failist torrent'i tekitamine

Avame testimiseks enda torrenti kliendi ja valime new torrent'. Valime faili või kausta, mida soovime jagada. Lülitame sisse valiku, et tahame kohe seedida ning vajadusel ka DHT keelamine, et torrent oleks privaatne. Lisame trackeri aadressi, mis on meie näites http://torrent.zoo.edu.ee:6969/announce ning salvestame torrenti kettale nimega test.torrent.

Seejärel võime saata .torrent faili neile, kellega soovime andmeid jagada. Torrent faili maht on üldiselt mõnikümmend kilobaiti kuni paar mega. Faili suurus oleneb jagatavate failide hulgast ning suurusest, mõnekümmne gigabaidi puhul võib suurus kasvada megabaitideni, kuna .torrent faili peavad ära mahtuma kõik kontrollsummad. Väga suurte failide puhul ongi mõistlik torrenti loomisel määrata piece size'i (osa suurust), et kontrollsummasid oleks vähem. uTorrent toetab 4MB ja KTorrent isegi 8MB suurusi tükke.

Juhul kui klientprogramm ei hakka mingil põhjusel seed'ima (jagama), siis tuleks torrent peatada ja uuesti käivitada (stop & start).

Opentracker'i statistikat näeb url'il http://torrent.zoo.edu.ee:6969/stats

2
2
opentracker serving 1 torrents
opentracker

XML formaadis väljunid kuvamiseks http://torrent.zoo.edu.ee:6969/stats?mode=everything

Käsurealt torrenti faili tegemiseks Linuxi ja BSD OS'ide pakihalduses tarkvara nimega createtorrent, mille kasutamiseks tuleb anda käsk createtorrent -a <tracker> <jagatav fail> <torrenti nimi>.

Näiteks:

createtorrent -a http://torrent.zoo.edu.ee:6969/announce fail.txt test.torrent

Alternatiivne algkoodist install

Juhul kui paketihaldus ei sisalda opentrackerit, saab selle paigaldada lähtekoodist. Selleks tuleb anda käsud

cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat
cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker
cd libowfat/
make
make install
cd ../opentracker/
make

Keerukamad kasutusjuhused

blaclistid, krüpteeringud, clustrid, privaatsed failid jms

TODO

Väike terminite sõnastik

  • .torrent file = Väike kontrollfail, mis sisaldab endas nimekirja failidest ja kõigist tükkidest milledeks fail jagatud (chunks) ning nende kontrollsummasid SHA1 hashing algoritmis koos muu infoga.
  • Swarm = Hulk kasutajaid (peers) kes omavahel ühendatud ning jagavad kindlat torrenti faili
  • Peer = Kasutaja, kes kasutades bit-torrent klienti jagab mõnd faili
  • Seed = Uploader e. üleslaadija, kellel terviklik(ud) fail(id) olemas ja jagab seda teistele
  • Leech = Downloader e. allatõmbaja
  • Client = programm, mis laeb torrent faili nii alla kui üles
  • Tracker = server, mis ühendab omavahel seed'id ja peer'id. Tegeleb ainult andmebaasi pidamisega ning ei uploadi ega downloadi
  • Chunk = Iga jagamisele minev fail on jaotatud tükkideks. Tüki suurus on 256K kuni 8M. sõltuvalt määrangust .torrent faili loomisel. Tükkide info talletatakse .torrent faili
  • Error-correction = Igast allalaetud tükist genereeritakse kontrollsumma, mida võrreldakse .torrent failis oleva summaga. Kui see ei klapi, siis tõmmatakse tükk uuesti alla.

Lingid

http://valadilene.org/2009/06/24/how-to-create-a-torrent-tracker-with-php-and-xbtt-part-1/

http://egopoly.com/2008/05/22/how-to-set-up-a-private-bittorrent-tracker/

http://ashughes.com/?q=node/85 opentracker ja torrent /usr/ports/net/opentracker

http://morehawes.co.uk/a-beginners-guide-to-bittorrent kuidas torrent töötab

http://torrentfreak.com/the-pirate-bay-tracker-shuts-down-for-good-091117/ Piratebay ja magnet

http://torrentfreak.com/download-torrentless-torrents-from-torrentz-with-firefox-091109/ tracker ja magnet

http://www.btiteam.org/ veebiportaal torrentite jagamiseks

http://libtorrent.rakshasa.no/ käsurea torrenti klient

http://maketecheasier.com/create-torrent-tracker-with-rivettracker/2010/03/02

http://sourceforge.net/projects/tbsource/ tbdev tracker