BitTórrent (lit. englanti) Bitstream on vertaisverkkoprotokolla (P2P ) yhteistoiminnalliseen tiedostojen jakamiseen Internetin kautta .
Tiedostot siirretään osissa, jokainen torrent - asiakas vastaanottaa (lataa) nämä osat, samalla antaa (lataa) ne muille asiakkaille, mikä vähentää kuormitusta ja riippuvuutta kustakin lähdeasiakkaasta ja tarjoaa datan redundanssin .
Protokollan loi Bram Cohen , joka kirjoitti ensimmäisen BitTorrent - torrent - asiakkaan Pythonissa 4. huhtikuuta 2001 . Ensimmäinen versio julkaistiin 2. heinäkuuta 2001 .
On olemassa monia asiakasohjelmia tiedostojen vaihtamiseen BitTorrent-protokollan avulla.
Metatietotiedosto on bencode -muotoinen sanakirja, jonka tunniste on .torrent - se sisältää tietoa jakelusta (tiedostot, seurantalaitteet jne.)
Ennen lataamista asiakas muodostaa yhteyden trackeriin torrent-tiedostossa määritettyyn osoitteeseen, kertoo sille osoitteensa ja torrent-tiedoston hash-summan, johon asiakas saa vastauksena muiden samaa tiedostoa lataavien tai jakavien asiakkaiden osoitteet. Lisäksi asiakas ilmoittaa ajoittain jäljittäjälle prosessin edistymisestä ja saa päivitetyn osoiteluettelon. Tätä prosessia kutsutaan ilmoitukseksi .
Asiakkaat muodostavat yhteyden toisiinsa ja vaihtavat tiedostosegmenttejä ilman seurantalaitteen suoraa osallistumista, joka tallentaa vain keskukseen liitetyiltä asiakkailta saadut tiedot, listan asiakkaista itsestään ja muita tilastotietoja. Jotta BitTorrent-verkko toimisi tehokkaasti, on välttämätöntä, että mahdollisimman monet asiakkaat voivat ottaa vastaan saapuvia yhteyksiä. Virheelliset NAT- tai palomuuriasetukset voivat estää tämän.
Yhteyden yhteydessä asiakkaat vaihtavat välittömästi tietoja omistamistaan segmenteistä. Asiakas, joka haluaa ladata segmentin ( leecher ), lähettää pyynnön ja, jos toinen asiakas on valmis antamaan, vastaanottaa tämän segmentin. Asiakas tarkistaa sitten segmentin tarkistussumman. Jos se vastaa torrent-tiedostoon tallennettua segmenttiä, segmentti katsotaan onnistuneesti ladatuksi, ja asiakas ilmoittaa kaikille yhdistetyille vertaisille, että sillä on tämä segmentti. Jos tarkistussummat poikkeavat toisistaan, segmentin lataus alkaa uudelleen. Jotkut asiakkaat kieltävät ne vertaiset, jotka antavat vääriä segmenttejä liian usein.
Siten palvelutietojen määrä (torrent-tiedoston koko ja segmenttiluettelon sisältävien viestien koko) riippuu suoraan segmenttien lukumäärästä ja siten segmenttien koosta. Siksi segmenttiä valittaessa on tarpeen säilyttää tasapaino: toisaalta suurella segmentin koolla palveluinformaation määrä on pienempi, mutta tarkistussumman vahvistusvirheen sattuessa on lisättävä tietoa. ladata uudelleen. Toisaalta pienellä koolla virheet eivät ole niin kriittisiä, koska pienempi määrä on ladattava uudelleen, mutta torrent-tiedoston ja olemassa olevien segmenttien viestien koko kasvaa.
Jokaisella asiakkaalla on mahdollisuus tilapäisesti estää palautus toiselle asiakkaalle ( eng. choke ). Tämä tehdään paluukanavan tehokkaamman käytön vuoksi. Lisäksi valittaessa, kenen esto poistetaan, etusija annetaan vertaisille, jotka ovat itse siirtäneet useita segmenttejä tälle asiakkaalle. Siten juhlat hyvillä tuottoprosentteilla rohkaisevat toisiaan periaatteen "sinä - minulle, minä - sinulle" mukaisesti.
Segmenttien vaihto tapahtuu periaatteen "sinä - minulle, minä - sinulle" mukaisesti symmetrisesti kahteen suuntaan. Asiakkaat kertovat toisilleen, mitä sirpaleita heillä on, kun he muodostavat yhteyden ja sitten kun he saavat uusia sirpaleita, jotta jokainen asiakas voi tallentaa tietoja siitä, mitä sirpaleita muilla yhdistetyillä vertaisilla on. Vaihtojärjestys valitaan siten, että asiakkaat vaihtavat ensin harvinaisimmat segmentit: tämä lisää tiedostojen saatavuutta jakelussa. Samalla segmentin valinta harvinaisimpien joukosta on satunnaista, joten voidaan välttää tilanne, jossa kaikki asiakkaat alkavat ladata samaa harvinaista segmenttiä, mikä vaikuttaisi negatiivisesti suorituskykyyn.
Tiedonvaihto alkaa, kun molemmat osapuolet ovat kiinnostuneita siitä, eli kummallakin osapuolella on segmenttejä, joita toisella ei ole. Lähetettyjen segmenttien määrä lasketaan ja jos jompikumpi osapuolista havaitsee lähettävänsä keskimäärin enemmän kuin vastaanottaa, se estää ( eng. choke ) hetkeksi paluuta toiselle puolelle. Siten protokollaan on sisällytetty suojaus ilkivaltaa vastaan .
Segmentit on jaettu lohkoihin, joiden koko on 16-4096 kilotavua , ja jokainen asiakas pyytää juuri näitä lohkoja. Lohkoja eri segmenteistä voidaan pyytää samanaikaisesti. Lisäksi jotkut asiakkaat tukevat saman segmentin lohkojen lataamista eri vertaisversioilta. Tässä tapauksessa edellä kuvatut algoritmit ja vaihtomekanismit soveltuvat myös lohkotasolle.
Kun lataus on melkein valmis, asiakas siirtyy erikoistilaan, jota kutsutaan loppupeliksi. Tässä tilassa se pyytää kaikkia jäljellä olevia segmenttejä kaikilta yhdistetyiltä vertaisilta, mikä välttää lähes valmiin latauksen hidastumisen tai täydellisen "jäätymisen" useiden hitaiden asiakkaiden takia.
Protokollaspesifikaatiossa ei määritellä tarkasti, milloin asiakkaan tulee päästä peliin, mutta siinä on joukko yleisesti hyväksyttyjä käytäntöjä. Jotkut asiakkaat siirtyvät tähän tilaan, kun ei-toivottuja lohkoja ole jäljellä, toiset kunnes jäljellä olevien lohkojen määrä on pienempi kuin lähetettyjen ja enintään 20. On ääneen lausumaton mielipide, että on parempi säilyttää odottavien lohkojen määrä alhainen (1 tai 2) redundanssin minimoimiseksi, ja satunnaisessa pyynnöstä pienempi mahdollisuus saada saman lohkon kaksoiskappaleita [1] [2] .
Kun täysi tiedosto vastaanotetaan, asiakas siirtyy erityiseen toimintatilaan, jossa se lähettää vain dataa (muuttuu siemeneksi). Lisäksi siemen ilmoittaa ajoittain trackerille torrentien (latausten) tilan muutoksista ja päivittää IP-osoitteiden luettelot.
Asiakkaat muodostavat yhteyden seurantalaitteeseen TCP -protokollan avulla . Yleisimmin käytetty seurannan saapuva portti : 6969. Yleisimmin käytetty asiakkaan saapuvan portin alue: 6881-6889.
Porttinumeroita ei ole määritetty protokollamäärityksessä ja niitä voidaan muuttaa tarpeen mukaan. Tällä hetkellä useimmat seurantalaitteet käyttävät HTTP -porttia 80, ja on suositeltavaa, että asiakkaat valitsevat satunnaisen saapuvan portin. Lisäksi jotkin seurantalaitteet eivät salli asiakasporttien käyttöä vakioalueelta 6881-6889, koska jotkut palveluntarjoajat kieltävät tämän porttialueen käytön.
BitTorrent-asiakkaiden DHT -verkko käyttää UDP-protokollaa .
Lisäksi UDP-protokollaa käyttävät UDP-seuraajat (kaikki asiakkaat eivät tue, eikä se ole protokollan virallinen osa) ja asiakkaiden yhdistämiseen toisiinsa UDP NAT Traversal -sovelluksen kautta (käytetään vain BitComet-asiakkaassa ja on ei ole pöytäkirjan virallinen osa).
Tracker ( englanniksi tracker ; /ˈtɹækə(ɹ)/ ) on erikoistunut palvelin , joka toimii HTTP-protokollan yli . Seuranta tarvitaan, jotta asiakkaat löytävät toisensa. Itse asiassa seurantalaite tallentaa IP-osoitteet , saapuvat asiakasportit ja hash-summat , jotka tunnistavat yksilöllisesti latauksiin liittyvät objektit. Standardin mukaan tiedostonimiä ei tallenneta seurantalaitteeseen, eikä niitä voida tunnistaa hash-summien perusteella. Käytännössä seurantalaite kuitenkin usein suorittaa päätehtävänsä lisäksi myös pienen verkkopalvelimen tehtävää . Tällainen palvelin tallentaa metatietotiedostoja ja kuvauksia hajautetuista tiedostoista, tarjoaa lataustilastoja eri tiedostoille, näyttää nykyisen yhdistettyjen vertaisversioiden määrän jne.
Protokollan uudet versiot ovat kehittäneet jäljittämättömiä järjestelmiä , jotka ratkaisevat osan aiemmista ongelmista. Seuraajan vika tällaisissa järjestelmissä ei automaattisesti johda koko verkon epäonnistumiseen.
Vuoden 2015 lopussa julkaistusta virallisen asiakkaan versiosta 4.2.0 alkaen on otettu käyttöön DHT Kademliaan perustuva trackerless työtoiminto . Tällaisessa toteutuksessa seuranta on saatavilla hajautetusti asiakkaille hajautetun hash-taulukon muodossa .
Tällä hetkellä kaikki asiakkaat eivät käytä protokollaa, joka on yhteensopiva keskenään. BitComet , µTorrent , Deluge , KTorrent , Transmission , qBittorrent ja virallinen BitTorrent-asiakasohjelma ovat yhteensopivia keskenään . Vuzella (Azureus) on myös seurantaton tila, mutta sen toteutus poikkeaa virallisesta, minkä seurauksena se ei voi toimia DHT:n kautta yllä olevien asiakkaiden kanssa [3] . Vuzella on kuitenkin vakio-DHT-tuki Mainline DHT -laajennuksen kautta.
Työskentely ilman seurantalaitetta on mahdollista myös käytettäessä moniprotokolla-asiakkaita, jotka tukevat BitTorrentia. Shareaza vaihtaa muiden tuettujen verkkojen tiivisteitä ja vertaisosoitteita, mukaan lukien BitTorrent, Gnutella2 -verkon kautta . BitTorrent-tuki on suunniteltu GreyLink 6.0 : ssa , kun taas Direct Connect -verkkoa voidaan käyttää paitsi muuntamiseen TTH :ksi , myös vertaisten löytämiseen.
Tiedostojen ottamiseksi ja jakamiseksi torrent-verkoissa ei tarvitse käyttää erityisiä ohjelmia. On olemassa useita palveluita, joiden avulla voit ladata tiedostoja vain selaimella [4] .
Lisätietojen, kuten lisälähteiden ja valinnaisten tiivisteiden, läsnäolo metatietotiedostoissa mahdollistaa .torrent-metatietotiedoston käytön samalla tavalla kuin Metalink- , MAGMA- , File List (Direct Connect) -muodoissa . Shareaza - asiakas käyttää valinnaisia tiivisteitä etsiäkseen vaihtoehtoisia lähteitä muista verkoista.
Yksi käyttötapaus on ns. verkkokylvö. Joskus eri syistä täysimittaista torrent-asiakasta ei voida käynnistää palvelimella. Tässä tapauksessa HTTP-protokollan kautta toimiva palvelin toimii jakelulähteenä. Pääsääntöisesti asiakkaat suosivat muita BitTorrent-asiakkaita ja pääsevät verkkosiemenelle vain tarvittaessa. Huomaa, että tämä käyttötapaus on toteutettu ainakin kolmella tavalla: BEP0017 BitTornado -tyylinen webseed , BEP0019 GetRight -tyylinen webseed ja Ulkoinen lähde , joista jokainen eroaa toteutustietojen osalta.
Sen loi ensin John "TheSHAD0W" Hoffman, joka loi BitTornadon [5] . Koska BitTorrent-asiakkaan versio 5.0 tukee web-siemeniä ja latauksia verkkosivustoilta, on luotu yksinkertainen työkalu torrent-web-siemenjulkaisujen luomiseen. μTorrent lisäsi tuen verkkosiementen hankkimiseen versiossa 1.7. BitComet lisäsi tuen verkkosiementen hankkimiseen versiossa 1.14.
Tämä on metatietotiedoston Info-kentän SHA-1 - tiiviste . Tätä hashia käytetään magneettilinkeissä sekä tunnistukseen jäljittimessä ja asiakkaiden välillä. Kun lähetät metatietotiedoston seurantalaitteeseen , sen Info Hash voi muuttua, koska seurantaohjelma voi muuttaa tietokenttää asettamalla yksityisen jakelun lipun tai muuttamalla/lisäämällä kenttiä tietoihin. Siksi sinun on ladattava metatietotiedosto (.torrent-tiedosto) jäljittimestä uudelleen ja lisättävä se asiakkaalle [6] .
Määritelty seuraavasti:
btc://[Адрес]: [Порт]/[Peer ID]/[ BTIH ]
Tällainen linkki viittaa jakeluun ja sen lähteeseen. Tuettu Shareazassa .
Jos jakelu on epäsuosittu, voi syntyä tilanne, jossa ei ole yhtään siementä ja läsnä olevilla vertaisryhmillä ei ole tarpeeksi tietoa latauksen suorittamiseen. Tässä tapauksessa on odotettava joko siemenen tai vertaisen ilmestymistä, jolla on segmenttejä, jotka puuttuvat muista. Voit käyttää myös muulla tavalla hankittuja kopioita tiedostoista. Kättä, jossa ei ole pitkään aikaan siementä, kutsutaan "kuolleeksi".
Arpajaispalkintojen kannustamiseksi on jopa luotu BitTorrent-tunnus [7] .
BitTorrent-protokollan periaate tarkoittaa, että jokainen asiakas tietää ainakin muiden palvelimelta saatujen asiakkaiden IP-osoitteet. Erilaisten protokollalaajennusten käyttö mahdollistaa joissain tapauksissa myös muiden parven ystävien osoitteiden selvittämisen. Siksi:
Anonymiteetin ongelma voidaan ratkaista Torilla [8] . Vuze BitTorrent -asiakasohjelmassa on sisäänrakennettu ohjelmistotuki tälle nimettömälle verkolle . Mutta tämä menetelmä ei ole 100 % tehokas [9] .
Toisaalta protokolla ei sisällä lempinimien käyttöä. Ei keskustelua vertaisten välillä. Vertaistiedostoja ei voi luetteloida (etsii muita tiedostoja, jotka saattavat kiinnostaa). Suurin osa näistä ominaisuuksista on toteutettu muissa protokollissa (kuten Direct Connect ).
Jotkut käyttäjät, etenkään rekisteröintiä vaatimattomissa seurantajärjestelmissä, eivät tue jakelua latauksen päätyttyä, mikä johtaa kokonaissuorituskyvyn heikkenemiseen, joten jotkin torrent -seuraajat ottavat huomioon myös ladattujen / luovutettujen määrän ja antavat luvan. ladata asiakkaan antamien tietojen koon mukaan.
Toisin kuin monet kaupalliset mediasisällön jakeluprotokollat, protokolla-arkkitehtuuri ei tarjoa tarkkaa mekanismia verkkopisteiden välisen liikenteen laskemiseen ja ohjaamiseen. Siellä on vain ladatut ja ladatut kentät, joissa asiakkaat välittävät jäljittimelle datan lataamisessa / lataamisessa huomioon otettujen tavujen määrän edellisen ilmoituksen jälkeen. Kukaan muu kuin asiakas ei kuitenkaan hallitse niitä, ne voidaan helposti huijata. Tätä varten käyttäjät määrittävät staattisesti näiden kenttien arvot seuranta- URI :lle, käyttävät korjaustiedostoja asiakkaille tai erillisille ohjelmille (RatioMaster, GiveMeTorrent, GreedyTorrent jne.) tai yksinkertaisesti poistavat seurantatietueen asiakkaasta heti saatuaan luettelo verkkopisteistä seurantasovelluksesta. Kaiken tämän avulla voit ohittaa monien yksityisten ja julkisten seurantalaitteiden hallinnon luomat keinotekoiset rajoitukset.
Toisen version BitTorrent-protokollaa on työstetty vuodesta 2008 lähtien. Protokolla on siirtynyt pois SHA-1-algoritmista, jolla on ongelmia törmäysten valinnassa, SHA2-256:n hyväksi. SHA2-256:ta käytetään sekä tietolohkojen eheyden ohjaamiseen että hakemistojen (info-sanakirja) merkintöihin, mikä rikkoo yhteensopivuuden DHT:n ja seurantalaitteiden kanssa. Uutta etuliitettä "urn:btmh:" on ehdotettu magneettilinkkeille torrenteihin, joissa on SHA2-256-tiiviste (SHA-1- ja hybriditorrenteissa käytetään "urn:btih:").
Koska tiivistefunktion muutos rikkoo protokollien yhteensopivuuden (hash-kenttä 32 tavua 20 tavun sijasta), BitTorrent v2 -spesifikaatioiden kehitys ei alun perin ollut taaksepäin yhteensopivaa, ja siihen tehtiin muita merkittäviä muutoksia, kuten Merkle-hash :n käyttö. puu indekseissä torrent-tiedostojen koon pienentämiseksi ja ladattujen tietojen tarkistamiseksi lohkotasolla.
Muita BitTorrent v2:n muutosten kohokohtia ovat siirtyminen erillisten hash-puiden liittämiseen jokaiselle tiedostolle ja tiedostojen tasauksen soveltamiseen osissa (lisäämättä ylimääräisiä täyteyksiä jokaisen tiedoston jälkeen), mikä eliminoi tietojen päällekkäisyyden, kun on identtisiä tiedostoja ja helpottaa tunnistamista. eri lähteistä tiedostoille. Parannettu torrent-hakemistorakenteen koodaustehokkuutta ja lisätty optimointia suurten pienten tiedostomäärien käsittelemiseksi.
BitTorrent v1:n ja BitTorrent v2:n rinnakkaiselon tasoittamiseksi on toteutettu kyky luoda hybridi torrent-tiedostoja, jotka sisältävät SHA-1-tiivisterakenteiden lisäksi indeksejä SHA2-256:lla. Näitä hybriditorrenteja voidaan käyttää asiakkaiden kanssa, jotka tukevat vain BitTorrent v1 -protokollaa. Kehitys on myös käynnissä WebTorrent-protokollan tukemiseksi [10] . Siirtyminen SHA-1:stä itsessään luo yhteensopimattomuutta DHT-verkoissa, seurantajärjestelmissä (jolla on kiinteä info-hash-pituus 20 merkkiä). Jotta yhteensopivuus ei menetä, voit aluksi tarkistaa sekä SHA-1:n että SHA-256:n vähentäen 32-merkkistä, vanhan BitTorrent v1 -protokollan SHA-256:n kanssa yhteensopimatonta 20 merkkiin [11] .
BitTorrent tiedostonvaihtoprotokolla ( asiakasohjelmat ) | |
---|---|
Kirjailijat | Henkilöt Eric Klinker Bram Cohen Navin Yritykset BitTorrent Inc. Vuse, Inc. |
Tekniikka |
|
Jäljittäjät | |
Moottorit |
|
Aiheeseen liittyvät artikkelit |
TCP /IP-perusprotokollat OSI -mallin kerroksittain | |
---|---|
Fyysinen | |
kanavoitu | |
verkkoon | |
Kuljetus | |
istunto | |
Edustus | |
Sovellettu | |
Muuta sovellettu | |
Luettelo TCP- ja UDP-porteista |