BitTorrent
BitTorrent on peer-to-peer (P2P) -protokolla ja -ohjelma, jonka alunperin kehitti Bram Cohen. Nykyään sitä kehittelee Cohenin yritys BitTorrent, Inc.. Alkuperäinen BitTorrent-asiakasohjelma on kirjoitettu Python-kielellä ja se julkaistiin BitTorrent Open Source -lisenssin alaisena.
Tiedostojen tai tiedoston siirtäminen BitTorrentin avulla vaatii kolme vaihetta:
- .torrent-tiedoston luomisen
- .torrent-tiedoston jakaminen muille käyttäjille
- torrentin "seedaus"
.torrent-tiedosto luodaan ohjelmalla (yleensä jokin torrent-ohjelma), joka kerää jaettavasta tiedostosta tai tiedostoista tietoa erilliseen .torrent-tiedostoon. Näihin tietoihin kuuluvat mm. tiedostonimet, tiedostojen koot ja osien tarkistussummat. Sitten .torrent-tiedostoon lisätään yksi tai useampi trakkeri (tracker), joka on palvelin mistä torrent-ohjelmat voivat käydä kysymässä niiden asiakkaiden IP-osoitteita, jotka joko seedaavat tai lataavat kyseisen torrentin sisältöä.
.torrent-tiedosto ei siis itsessään sisällä ladattavia tiedostoja, vaan se on kuvaus torrent-ohjelmalle siitä mitä pitää ladata ja mistä muita käyttäjiä löytyy.
Tiedoston tai tiedostojen siirtämistä varten torrent-ohjelma jakaa tiedoston tai tiedostot pienempiin osiin, joten torrent-ohjelmat eivät siirrä keskenään suoraan esim. 700 megatavun Linux-imagea, vaan image on jaettu esim. 1 megatavun kokoisiin osiin, joita torrent-ohjelmat siirtävät toisilleen. Tämä sen vuoksi, että käyttäjät voivat täten vaihdella eri osia helposti keskenään ja epäonnistunut siirto koskee vain pientä osaa kokonaisuudesta, jolloin esim. sähkökatko ei pilaa koko latausta.
Torrentin seedaus tarkoittaa sitä että käyttäjä, jolla on kaikki kyseisen torrentin osat, toimii solmuna. Kun muut käyttäjät sitten tulevat kysymään osia tältä solmulta, se lähettää tiedosto(je)n osia kysyjille. Nämä sitten jakavat edelleen muille halukkaille osia, joita heillä on ja lataavat itse samalla lisää osia.
Torrent-ohjelmat koettavat myös etsiä nopeinta reittiä, jos käyttäjiä on paljon. Ohjelmat myös tarkistavat ladattujen osien eheyden tarkistussumman eli hashin avulla ja lataavat osan uudestaan, jos se ei ole tullut ehjänä perille. Monet ohjelmat myös hylkäävät solmun, jos siltä tulee liian monta viallista pakettia ja näin parantavat verkon toimivuutta, jos verkko on osittain rikki tai joku koettaa tahallaan sotkea tai häiritä liikennettä.
Näistä lataajien ja solmujen yhteenliittymistä käytetään myös usein termiä swarm.
BitTorrent suosii tiedostoja ladatessa käyttäjiä, jotka myös jakavat muille käyttäjille mahdollisimman paljon. Nämä tiedot ovat torrent-kohtaisia, eikä itse P2P-verkko kerää erillistä statistiikkaa siitä, miten paljon käyttäjä siirtää tietoa sen kautta. Tällä on tarkoitus estää monen muun P2P-verkon ongelma Leeching, eli kun käyttäjät vain lataavat muilta jakamatta itse mitään.
Kun lataaja on saanut kaikki osat ladattua, se muuntuu itse solmuksi (seed) eli se ainoastaan jakaa osia muille lataajille. Muita verkon käyttäjiä ajatelle on hyvä asia pitää oma solmu mahdollisimman pitkään elossa, jotta lataaminen on mahdollisimman joutuisaa muille. Suositeltavaa ainakin jakaa osia saman verran eteenpäin kuin niitä on ladannutkin. Tämä jaettu:ladattu suhdeluku kertoo sen hetkisen tilanteen ja tunnetaan myös nimellä ratio. Eli kun luku on alle 1, niin on ladattu enemmän kuin jaettu ja kun se on yli 1, niin on jaettu enemmän kuin ladattu. Monilla trackereilla on myös vastaava ratio kaikista torrenteista, joita käyttäjä on ollut jakamassa tai lataamassa ja trackerin ylläpito saattaa estää trackerin käytön, jos käyttäjän yleinen ratio on liian pieni.