# BitTorrent

Jakajan tiedonsiirtokapasiteetin kuormitus vähenee huomattavasti kun tiedostoja lataavat käyttäjät jakavat tiedostoja samanaikaisesti toisilleen.
**BitTorrent** on tiedostojen siirtoon tarkoitettu vertaisverkon muodostava protokolla. BitTorrent-protokollan ja ensimmäisen sitä käyttävän toteutuksen kehitti yhdysvaltalainen Bram Cohen. Perinteisesti tiedostojen jakamiseen on tarvittu palvelin ja paljon tiedonsiirtokapasiteettia. BitTorrent eliminoi tämän tarpeen, sillä kaikki tiedostoa tai tiedostoja lataavat käyttäjät jakavat tiedostoja samanaikaisesti myös toisilleen. Ensimmäinen täysin toimiva versio julkaistiin vuonna 2003.

7. joulukuuta 2006 virallista BitTorrent-asiakasohjelmaa kehittävä BitTorrent Inc. ilmoitti ostaneensa µTorrent AB:n, suosittua µTorrent-asiakasohjelmaa valmistavan yrityksen. Bram Cohen ja µTorrentin kehittäjä Ludvig "Ludde" Strigeus julkaisivat asiasta yhteisen tiedotteen µTorrentin keskustelualueella. Kaupalla yritykset pyrkivät yhdistämään µTorrentin tehokkaan toteutuksen ja käyttöliittymän BitTorrentin asiantuntemukseen verkkoprotokollista. µTorrentin käyttäjäyhteisöissä uutista ei tosin otettu vastaan kovin tervetulleena.

## Rakenne ja toiminta

BitTorrentilla jaettava tieto koostuu kahdesta osasta: varsinaisista jaettavista tiedostoista sekä pienestä *.torrent*-päätteisestä aputiedostosta, jonka tiedostojen jakaja luo asiakasohjelmansa avulla. Tiedon jakamiseen kuuluu yleensä kolme osapuolta: käyttäjät, seurantapalvelin eli *trakkeri* (engl. "tracker"), sekä WWW-palvelin joka levittää *.torrent*-tiedostoja. Yleensä nämä kaksi jälkimmäistä ovat yksi ja sama palvelin. Tiedonsiirto ilman varsinaista seurantapalvelinta on myös tullut mahdolliseksi laajennusten avulla.

Käyttäjä lataa *.torrent*-päätteisen tiedoston palvelimelta, ja BitTorrent-asiakasohjelma huolehtii sen käsittelystä. .torrent-tiedostosta löytyy varsinaisen seurantapalvelimen osoite sekä tiedoston palasten SHA-1-tarkistussummat ja koot. Tämän jälkeen asiakasohjelma ottaa yhteyttä seurantapalvelimeen ja saa sitä kautta selville, missä muita tiedostojen osia tarjoavat käyttäjät ovat ja alkaa hakea heiltä tiedostojen osia.

WWW-palvelimia on tarpeen mukaan monenlaisia; mikään ei estä *.torrent*-tiedostojen laittamista normaaleille WWW-sivuille, mutta esimerkiksi julkiset BitTorrent-seurantapalvelimet tarjoavat monipuolisempia kategorisointi- ja hakutoimintoja. Periaatteessa mikään ei estä muitakaan tapoja levittää *.torrent*-tiedostoja. Niitä voi levittää esimerkiksi IRCissä.

Tiedostojen lataajat tarvitsevat BitTorrent-asiakasohjelman ("client"). Koska BitTorrent on avoimen lähdekoodin protokolla, erilaisia asiakasohjelmia on syntynyt useita. BitTorrentin tekijän virallinen asiakasohjelma on hyvin yksinkertainen, kun taas monipuolisemmissa ohjelmissa on erilaisia latausjono- ja nopeusrajoitusjärjestelmiä.

## Käyttötavat

Perinteisestä vertaisverkkojakamisesta (mm. FastTrack tai eDonkey2000) BitTorrent eroaa siten, että se on tarkoitettu yksittäisten tiedostojen tai tiedostopakettien levittämiseen. Kukin käyttäjä jakaa niitä tiedostoja, joita he itse ovat äskettäin BitTorrentilla ladanneet tai ovat parhaillaan lataamassa. Esimerkiksi useiden Linux-jakelujen CD-kuvatiedostoja (image) on ladattavissa BitTorrentilla. Myös esimerkiksi Opera-selain on ladattavissa BitTorrentilla Opera Softwarelta saatavan torrentin avulla ja Opera 9 -selain sisältää itsessään BitTorrent-tuen. Wikipedian sisällöstä opetuskäyttöön tehty CD tulee jakeluun BitTorrentilla.*lähde?*

Kaikki tiedoston lataajat jakavat samaa tiedostoa muille, mikä mahdollistaa erittäin suuret siirtonopeudet. Varjopuolena on se, että torrentit "kuolevat" nopeasti, usein jo parin viikon päästä torrentin julkaisusta sillä ei ole enää yhtään jakajaa. Uudet lataajat eivät sitten enää saa tiedostoa kuin pyytämällä jotakuta jakamaan tiedostoa uudelleen ("reseed"). Periaatteena on, että se joka kopioi itselleen jotakin, myös lähettää takaisin saman määrän dataa (1:1 suhde), jolloin lähetys on saatavilla myös muille.

BitTorrent sopii mm. tiettyinä aikoina julkaistavien tiedostojen pikaiseen levittämiseen, kun taas esimerkiksi jonkin musiikkikappaleen etsimiseen järjestelmää ei voi käyttää. BitTorrent ei sisällä minkäänlaisia hakumahdollisuuksia.

Microsoftin Windows XP:n Service Pack 2 -päivitys laitettiin ilman lupaa jakoon torrenttina, koska ylikuormittuneilta Microsoftin palvelimilta sitä sai odotella pitkään. Microsoft kuitenkin kielsi sen jakamisen P2P-verkoissa. Saman kohtalon koki myöhemmin myös vistatorrent.com-sivusto, joka yritti helpottaa Windows Vista Beta 2 -kokeiluversion jakelua.

## Juridiset ongelmat

Protokolla itsessään on täysin laillinen. Ongelmia syntyy kun jaetaan tekijänoikeuksia rikkovaa materiaalia.

BitTorrent-seurantapalvelimien käytöstä on ollut paljon kiistelyä. BitTorrent-metatiedostot eivät sisällä tiedostojen sisältöä, joten BitTorrent itsessään ei ole laiton. On kuitenkin kiistanalaista, rikkooko BitTorrent-metatiedostojen julkaisija tekijänoikeuksia linkittämällä tekijänoikeuksien alaiseen materiaaliin ilman oikeudenomistajien lupaa. Vaikka metatiedosto ei sisälläkään itse varsinaista ladattavaa materiaalia, ilman sitä ei kyseistä materiaalia käytännössä ole olemassa, sillä sen levittäminen ei onnistu.

Merkittävä osa torrent-liikenteestä on tekijänoikeuksia rikkovien tiedostojen siirtämistä. Seurantapalvelimia pyörittäville verkkosivustoille on langetettu useita tuomioita. Huomiota herättäneitä esimerkkejä ovat Suprnova.org, Torrentspy, LokiTorrent, Mininova ja OiNK.cd. Ruotsalaisen ryhmän perustama .torrent-tiedostoja jakava The Pirate Bay -verkkosivusto on tunnettu "lakiuhkaukset"-osiostaan, jossa julkaistaan sivuston saamia väitettyjä tekijänoikeusrikkomuksia koskevia kirjeitä ja vastauksia niihin. Ruotsin poliisi sulki 31. toukokuuta 2006 The Pirate Bayn Ruotsissa sijaitsevat palvelimet MPAA:n esittämien syytösten perusteella. Sivusto sai kuitenkin seurantapalvelimensa toimintaan kolmen päivän kuluttua.

## Laajennukset

### MSE/PE

**Protocol Encryption (PE)**, **Message stream encryption (MSE)** ja **Protocol header encrypt (PHE)** ovat tekniikoita, joita BitTorrent-ohjelmat käyttävät oman protokollansa salaamiseen. Protokollan salauksen tarkoitus on vaikeuttaa palveluntarjoajien käyttämää bittorrent-verkkoliikenteen rajoittamista salaamalla käyttäjien väliset yhteydenotot siten, ettei niitä voida tunnistaa bittorrent-liikenteeksi ja rajoittaa. PE/MSE-tekniikkaa tukevat tällä hetkellä kaikki suosituimmat BitTorrent-asiakasohjelmat: µTorrent, Azureus, BitComet, rtorrent ja KTorrent. Vanhempi PHE-tekniikka oli käytössä vanhoissa BitComet-versioissa.

### DHT

**Distributed Hash Table** eli torrenttien tiivistetietokannan hajauttaminen Kademlia-tyyppisesti. DHT:tä tukevat asiakasohjelmat osaavat etsiä verkosta käyttäjiä pelkän .torrent-tiedostosta saamansa *info\_hash*-tiivisteen avulla. Ohjelma etsii verkosta sellaisen palan tietokantaa, josta löytyy latauksessa olevan torrentin *info\_hash*-tunniste ja tätä torrentia jakavien tai lataavien käyttäjien osoitteet. Näin erillinen seurantapalvelin tulee tarpeettomaksi. Tekniikan ongelmana on useat eri toteutustavat, jotka eivät ole keskenään samassa verkossa. Monet seurantapalvelimet kuitenkin haluavat käyttäjiensä hakevan tiedot toisista käyttäjistä pelkästään omalta palvelimeltaan, jolloin ne lisäävät itse tai pakottavat torrenteja sivustolle lisäävät käyttäjät lisäämään torrenteihin ns. *private*-lipun. Tämä kehottaa asiakasohjelmaa estämään DHT:n käytön tämän torrentin kohdalla.

### PeX

**Peer Exchange** eli käyttäjien osoitteiden jakaminen käyttäjien keskuudessa. Käyttäjien vaihtoa tukevat ohjelmat vaihtavat listaa tietämistään samaa torrentia lataavista käyttäjistä muiden jo yhteydessä olevien käyttäjien kesken. Myös PeX-toimintoon vaikuttaa sama *private*-lippu kuin yllä olevaan DHT:hen.

### Broadcatching

Broadcatchingillä voidaan yhdistää RSS-syötteet BitTorrentiin. Kyse on yksinkertaisesti siitä, että asiakasohjelma kirjautuu esimerkiksi syötteeseen, joka listaa jonkin TV-sarjan jaksot heti kun nämä tulevat saataville. Aina kun syötteeseen tulee uusi ilmoitus, lataa ohjelma siinä osoitetun .torrentin ja sitä kautta varsinaisen jakson täysin automaattisesti. Broadcatchingia tukee suosituimmista ohjelmista tällä hetkellä vain µTorrent, joskin se on saatavilla myös Azureukseen lisäosana.

### Web seed

**Web-lähteellä** tarkoitetaan laajennusta, joka mahdollistaa tavallisen Web-palvelimella olevan tiedoston toimimisen torrentin lähteenä - jakavien käyttäjien ohella. Tämä laajennus helpottaa varsinkin tiedoston julkaisijan työtä, sillä tiedoston jakoon ei näin tarvitse asettaa varsinaista BitTorrent-asiakasohjelmaa. Ensimmäiset torrentin lataajat lataavatkin tiedoston Web-palvelimelta, eivätkä tavanomaisesti joltain jakavalta käyttäjältä. Laajennus ratkaisee web-palvelimen kuormitusongelmat kun lataajia on paljon, mutta mahdollistaa myös tiedoston lataamisen vaikka tavallisia jakajia sille ei enää olisikaan - estäen näin torrentin *kuolemisen*.

### LPD

**Local Peer Discovery** on menetelmä torrentin käyttäjien etsintään lähiverkosta. Usein lähiverkon nopeus on suurempi kuin internet-liittymän nopeus, koska kaikki liikenne tapahtuu operaattorin sisäisessä verkossa tai jopa käyttäjän omassa lähiverkossa. Näin liikenne ei siis kierrä lainkaan ulkoverkon (Internet) kautta. Mikäli sisäverkosta löytyy käyttäjiä, on sillä usein merkittävä vaikutus tiedonsiirron nopeuteen. Lähikäyttäjien haussa *LPD* hyödyntää Multicastia, koska se ei voi reitittyä Internetiin. Näin siis kaikki Multicastilla mahdollisesti löytyvät käyttäjät ovat samassa lähiverkossa kuin hakija.

## Termejä

announce
* *ilmoitus, tiedustelu*
* Asiakasohjelma pyytää seurantapalvelimelta tietoja torrentin tilasta ja ilmoittaa samalla, kuinka paljon itsellä on valmiina. Announcella (toisin kuin scrapella) asiakasohjelma ilmoittaa myös palvelimelle, että se haluaa liittyä parveen. Vastauksena ohjelma saa muiden torrentia lataavien ja jakavien käyttäjien IP-osoitteet, portit ja valmiuden. Tiedustelu suoritetaan uudelleen tietyin väliajoin, usein noin 15-30 minuutin välein, jotta saataisiin mm. mahdollisten uusien käyttäjien osoitteet.

availability, distributed copies
* *saatavuus, kokonaisia, valmiita*
* Kokonaisten saatavilla olevien kopioiden määrä. Yksi jakaja tekee torrentin saatavuudeksi 1,0. Kun jakajan lisäksi on kaksi lataajaa joilla on 20 % ja 6 %, on saatavuus 1,26, mikäli lataajilla **ei ole yhtäkään** samaa osaa. Mikäli taas jakajan lisäksi on kaksi lataajaa, joilla on **samat** 15 % torrentista, saatavuus on 1,15.

leecher
* *lataaja*
	+ Käyttäjä, jolla ei ole kaikkia torrentin tiedostoja ja joka lataa niitä muilta käyttäjiltä ja samalla jakaa edelleen muille lataajille
	+ Negatiivisessa merkityksessä käyttäjä, joka on haitaksi parvelle pelkästään lataamalla torrentia. *Leecher*:in tunnistaa huonosta jakosuhteesta, hänellä saattaa olla epäsymmetrinen internet-yhteys (esim. 8/1), eikä hän jätä torrentia jakamaan, kun on itse saanut 100 % ladattua.

peer, client
* *käyttäjä, vertainen, lataaja*
	+ Kuka tahansa kyseistä torrentia lataava tai jakava käyttäjä
	+ Käyttäjä, jolla ei ole kaikkia torrentin tiedostoja ja joka lataa niitä muilta käyttäjiltä ja samalla jakaa edelleen muille lataajille

ratio
* *jakosuhde*
* Paljonko tietoa on lähetetty suhteessa latausmäärään. Mitä suurempi tämä suhde on, sen parempi. Hyvänä suhteena voidaan pitää 1,5 eli on jaettu 1,5 kertaa niin paljon kuin on ladattu. Riittävänä suhteena voidaan puolestaan pitää 1,0. Toisaalta invite-only trackerissa ongelmaksi koituu myös liian iso ratio-suhde.

scrape
* *raapaisu, pikapäivitys*
* Melkein sama asia kuin announce, mutta scrapella asiakasohjelma vain kysyy palvelimelta tietoja torrentin (tai tarkemmin sen parven) tilasta. Scrape ei siis lisää käyttäjää mukaan palvelimen tietämään parveen.

seeder
* *jakaja, lähde*
* Käyttäjä, jolla on kaikki torrentin tiedostot ja joka tarjoaa niitä muille ladattaviksi. Mitä enemmän jakajia löytyy, sitä paremmat ovat latausnopeudet ja sitä varmemmin torrent valmistuu.

swarm
* *parvi, ryhmä*
* Kaikki torrentia lataavat ja jakavat käyttäjät yhdessä. Lataajien ja jakajien parvien koko näkyy ohjelmissa muodossa **12(78)**, missä **78** on käyttäjien määrä parvessa yhteensä ja **12** niiden käyttäjien lukumäärä, joihin juuri nyt ollaan yhteydessä.

tracker
* *seurantapalvelin*
* Erillinen palvelin, joka pitää kirjaa kunkin parven jakajista ja lataajista. *Tracker* kertoo myös asiakasohjelmille muiden käyttäjien osoitteet, jotta nämä voivat aloittaa itsenäisen tiedonsiirron. Keskitetyn seurantapalvelimen tilalle on kehitelty myös hajautettu DHT-tekniikka, jossa verkon käyttäjät toimivat toistensa *trackereina*. Seurantapalvelimia on avoimia (torrent-tiedostot ovat kaikkien saatavilla) ja suljettuja, kutsuperiaatteella toimivia (sisäänpääsyyn vaaditaan kutsu).

## Lähteet

## Aiheesta muualla

* BitTorrentin virallinen kotisivu (englanniksi)
* BitTorrent protokollan määritykset (englanniksi)

**Muita BitTorrent-asiakasohjelmia Leap ja Vuze – Monipuolinen, avoin lähdekoodi ja käyttöjärjestelmäriippumaton (java).
* Transmission – Kevyt, avoimen lähdekoodin ohjelma OS X:lle, Linuxille, FreeBSD/OpenBSD/NetBSD sekä BeOs:lle.
* µTorrent – Kevyt ja monipuolinen Windowsille ja OS X:lle. Toimii myös Linuxilla Winen tai Cedegan kautta.
* qBittorrent - Monipuolinen Android, FreeBSD, Linux, OS X, OS/2 ja Windows laitteille,
* ABC – Kevyeksi rakennettu avoimen lähdekoodin ohjelma Windowsille.
* Myös Opera-selaimessa on BitTorrent-tuki.