Elektronika.lt

Elektronika.lt - elektronikos, informacinių ir
ryšių technologijų portalas

Adresas: http://www.elektronika.lt
El. paštas: info@elektronika.lt
 Atspausdinta iš: http://www.elektronika.lt/produktai/programos/1302/bittorrent-p2p-tinklo-anatomija/spausdinti/

BitTorrent p2p tinklo anatomija

Publikuota: 2005-06-05 07:37
Tematika: IT sprendimai, programinė įranga
Autorius: el. paštas Artūras Vedrickas
Aut. teisės: el. paštas ©Lietuvos Rytas, UAB
Inf. šaltinis: el. paštas Kompiuterija – PC World

Praėjusių metų pabaigoje atliktų tyrimų duomenimis, net 30 proc. viso interneto duomenų srauto sudaro BitTorrent protokolo duomenys. Žinoma, gana sunku patikrinti šią informaciją, tačiau aišku viena – BitTorrent pakeitė p2p (peer to peer) tinklų pasaulį. Taigi, pasiaiškinkime, kas tai ir kaip tai vekia.


Praėjusių metų pabaigoje atliktų tyrimų duomenimis, net 30 proc. viso interneto duomenų srauto sudaro BitTorrent protokolo duomenys. Žinoma, gana sunku patikrinti šią informaciją, tačiau aišku viena – BitTorrent (BT) pakeitė p2p (peer to peer) tinklų pasaulį.

BT autorius – Bramas Cohenas. Pradinės šios programos versijos nebuvo itin patrauklios, tačiau tinklo koncepcija nesikeitė. Tikriausiai tada niekas net nepagalvojo, koks efektyvus gali būti BitTorrent tinklas, leidžiantis dalytis didelės apimties duomenimis. Originali BitTorrent programa parašyta Python programavimo kalba, kurią patogu kompiliuoti ir Windows, ir Linux aplinkose.

BT tinklui gyvybiškai svarbi WWW tarnybinė stotis („tracker“), veikianti kaip visų tinklo vartotojų tarpininkė. Visi duomenimis besikeičiantys asmenys nustatytais laiko intervalais turi prisijungti prie tarnybinės stoties ir atnaujinti kitų klientų duomenis (IP adresą ir jungties numerį). BT tinklo vartotojai turėtų suderinti savo užkardas taip, kad prie pasirinktos BT jungties (pavyzdžiui, 7000) būtų leista prisijungti iš išorės, nes tik tokiu būdu duomenys siunčiami sparčiausiai. Svarbu nepamiršti nurodyti jungties numerio ir pačioje programoje.

Kaip suderinti kelvedį darbui su interneto programomis, sužinosite portforward.com svetainėje. Tačiau derinti kelvedžio galbūt net neprireiks, nes geriausios BT programos automatiškai atveria tarnybines kelvedžių (uPnP) ar Windows XP jungtis.

Dėl didelio vartotojų srauto labai apkraunama „tracker“ tarnybinė stotis, todėl kartais informacija perduodama UDP (Universal Datagram Protocol) protokolu, nereikalaujančiu tikrinti siunčiamų paketų.

Šiemet pradėtas įgyvendinti eXeem projektas, kuriuo tikimasi susieti geriausias BitTorrent ir Kazaa tinklų savybes. eXeem tinklui nereikia paskirtos tarnybinės stoties, nes dešimties vartotojų kompiuteriai veikia kaip tarpinis mazgas (node), kuriuo keičiamasi duomenimis.

eXeem sukūrė asmuo, pasivadinęs „Sloncek“. Programos autorių teisės priklauso kompanijai Swarm Systems, kuri „nepamiršo“ į eXeem diegimo rinkmeną įtraukti ir „spyware/adware“ reklamos modulio. Vėliau (0.21 Public Beta versija) Cydoor reklamos ir duomenų rinkimo modulis buvo pašalintas. Niekas neabejoja projekto eXeem ateitimi, nauda ir paskirtimi, nes šis tinklas labai greitai gali tapti virusais ir interneto šiukšlėmis užteršto Kazaa tinklo alternatyva.

BitTorent autorius B.Cohenas atsiribojo nuo šio projekto ir pareiškė, kad eXeem yra tik dar viena programa, padedanti keistis piratiniais duomenimis. B.Cohenas ir ateityje ketina tobulinti BitTorrent technologiją, kad ją būtų paprasčiau pritaikyti didelių kompanijų tinklams ir ji padėtų susidoroti su duomenų srautų problemomis. Akivaizdu, kad eXeem ir BT pasuko skirtingais keliais.

RIAA ir MPAA agentūros aktyviai kovoja su nelegaliu vaizdo ir garso įrašų platinimu internetu. Didelį susidomėjimą asociacijoms kelia BitTorret tinklo vartotojai. Kiekviena BT tinkle esanti rinkmena sukuria savo uždarą p2p tinklą, todėl sekti vartotojus (kuris pirmasis išplatino nelegalius duomenis ir pan.) gerokai sudėtingiau nei Gnutella tinkluose. Pastaruosiuose galima paleisti specialius „vorus“, naršančius po kompiuterius, ieškančius nurodytų duomenų (filmų, muzikos įrašų, žaidimų) ir registruojančius IP adresus. Kita vertus, siunčiant duomenis BT tinklu, aiškiai matyti visų vartotojų IP adresai, todėl susisiekus su jų IPT galima lengvai nustatyti tapatybę.

Bendrovė BayTSP paskelbė išleidusi programą, padedančią nustatyti asmenį, tinkle išplatinusį pradinę duomenų kopiją (initial seed). Siekis apsaugoti BT tinklą nuo trečiųjų stebėtojų paskatino tokių programų kaip „Protowall“ ir „PeerGuardian“ plėtrą. Šios programos neleidžia prisijungti iš IP adresų, priklausančių valstybės, autorių teisių ir kitoms institucijoms.

Jei manote, kad BitTorrent tinklu tik keičiamasi nelegalia informacija, jūs labai klystate. Juk egzistuoja daugybė legalių svetainių, kuriose skelbiama medžiaga nepažeidžia autorių teisių: tai Linux paketų tinklalapiai, muzikos grupių koncertų įrašai, pačių vartotojų filmuota vaizdo medžiaga ir kt.

BitTorrent tinklo populiarumo priežastis – maksimaliai išnaudojamas interneto kanalo pralaidumas. Tačiau siuntimo sparta taip pat labai priklauso ir nuo duomenimis besidalijančių vartotojų skaičiaus. Kuo daugiau žmonių siunčia konkrečius duomenis, tuo greičiau jie atkeliauja. Kai kurie Gentoo Linux paketai yra platinami tik BT protokolu, tokiu būdu taupant brangų tarnybinių stočių duomenų srautą, kurio prireiktų nesinaudojant BitTorrent.

Jau yra sukurta nemažai BitTorrent tinklo klientų programų. Dauguma jų naudoja modifikuotą Python kodą, o kitos parašytos C++ programavimo kalba.

Šiuo metu geriausios BT programos yra BitSpirit, BitComet, Azureus ir Rufus, tačiau tik jas išmėginus galima pasirinkti tinkamiausią.

Azureus – puiki programa, turinti daugybę patogių priedų, tačiau JAVA kalbos interpretatorius naudoja sąlygiškai daug sistemos išteklių. Kita vertus, Azureus galima paleisti ir Linux operacinėje sistemoje. Jei norite sužadinti BT kliento programą tarnybinėje stotyje, naudokite TorrentFlux, tačiau tarnybinėje stotyje turi būti įdiegtos PHP bei Python kalbos, MySQL tarnyba bei Apache WWW programa. TorrentFlux versija jau sukurta ir Windows operacinei sistemai. Rinkmenas .torrent galima kurti MakeTorrent programa, tačiau į daugumą minėtų programų jau būna įdiegtos .torrent rinkmenų kūrimo priemonės.

Paleidus programą TorrentSpy nepradedant siuntimo galima sužinoti, kiek žmonių dalijasi konkrečiais duomenimis.

Minėtos programos suteikia galimybę siųsti tik tai, ko iš tiesų reikia. Į geriausias BT programas yra įdiegtos interneto srauto ribojimo priemonės. Nurodykite, kad būtų išnaudojama ne daugiau kaip 90 proc. kanalo pralaidumo, antraip gali sutrikti darbas. Be to, tikriausiai norėsite tuo pačiu metu naršyti internete, todėl BT programos ir siunčiamą, ir gaunamą srautą rekomenduojama apriboti dar daugiau. Taip pat didžiausia sparta vienu metu nesiųskite daugiau kaip 3 – 4 rinkmenų (jei sparta ne didesnė kaip 512 kbps).

Kuo daugiau skirtingų duomenų (iš skirtingų šaltinių) siunčiate, tuo neefektyviau išnaudojamas kanalas. Tarkim, vienai rinkmenai atsisiųsti su kitais vartotojais užmezgama daugiau kaip 30 ryšių, kuriais taip pat perduodama tarnybinė informacija. Dėl to mažėja reali siuntimų sparta, nes programa turi nuolat palaikyti ryšį – išsiųsti ir gauti tūkstančius tarnybinių paketų. Jei norite efektyviai išsiųsti duomenis kitiems vartotojams, sumažinkite galimą siuntimo spartą iki 80 proc. Windows XP Service Pack 2 pataisos apribojo užmezgamų TCP/IP jungčių skaičių, todėl šią reikšmę reikėtų padidinti EventID 4226 Patcher programa. Tikėkimės, kad ateityje BT tinklas bus naudojamas vaizdo ir garso įrašų transliacijoms, padės veiksmingiau naršyti internete.

BitTorrent klientai

Azureus, BitComet, BitTorrent for Windows, BitTornado, ABC [Yet Another Bittorrent Client], BitSpirit, Rufus, TorrentFlux, TorrentStorm, G3 Torrent, Burst!, BitAnarch, SimpleBT, BT++, BitTorrent for Mac OS, cTorrent.

BitTorrent jungimosi prie „tracker“ tarnybinės stoties seansas

BT tinklo klientas siunčia užklausą į www tarnybinę stotį („tracker“):

GET
/announce.php?info_hash=c%97%91%C5jG%951%BE%C7M%F9%BFa%03%F2%2C% ED%EE%0F&peer_id=S588----- gqQ8TqDeqaY&port=6882&uploaded=0 &downloaded=0&left=753690875&event=started

Užklausos reikšmės:

  • info_hash – rodo, kokia .torrent rinkmena yra veikli;
  • peer_id – rodo BT programos pavadinimą (šiuo atveju s588 – Shad0wÕs v5.8.8 programa, o kitos reikšmės atsitiktinės);
  • port – TCP/IP jungtis, kuria bus jungiamasi iš išorės;
  • uploaded=0 – rodo, kiek duomenų išsiųsta;
  • downloaded=0 – rodo, kiek duomenų gauta;
  • left=753690875 – rodo, kiek duomenų liko (baitais);
  • event=started – pradedama siųsti.

Šioje užklausoje nenurodytas kliento IP adresas – tarnybinė stotis jį nustato automatiškai. Tačiau nuostatų skyriuje galima nurodyti, kad būtų siunčiamas konkretus IP adresas. Gavusi anksčiau pateiktą užklausą, tarnybinė stotis atgal išsiunčia duomenimis besidalijančių vartotojų sąrašą (IP adresus su nurodytomis jungtimis), kad programa savarankiškai galėtų jungtis prie jų tiesiogiai. Nustatytais laiko intervalais (pavyzdžiui, kas 90 sek.) BT programa jungiasi prie „tracker“ tarnybinės stoties ir gauna atnaujintus vartotojų IP sąrašus. Sustabdžius duomenų siuntimą, įvykis „event“ įgyja reikšmę „stopped“. Vėliau siunčiamos užklausos skiriasi nuo pradinės, nes jose nurodoma, kiek IP adresų reikia gauti (šiuo atveju 20):

GET
/announce.php?info_hash=c%97%91%C5jG%951%BE%C7M%F9%BFa%03%F2%2C% ED%EE%0F&peer_id=S588----- gqQ8TqDeqaY&port=6882&uploaded=67960832& downloaded=40828928&left=715417851&numwant=20

Programai baigus siųsti duomenis, išsiunčiama tokia užklausa:

GET
/announce.php?info_hash=c%97%91%C5jG%951%BE%C7M%F9%BFa%03%F2%2C% ED%EE%0F&peer_id=S588---- gqQ8TqDeqaY&port=6882&uploaded=754384896& downloaded=754215163&left=0&numwant=0&event=completed

Tai reiškia, kad duomenys jau atsiųsti. Atsižvelgiant į BT programą, gali įsijungti „sėklų barstymo“ (seed) režimas – kiti tinklo vartotojai jau galės iš jūsų atsisiųsti visą duomenų kopiją. Daugiau informacijos apie ryšio seansą ir „bencoded“ tipo .torrent rinkmenų kodavimą rasite bittorrent.com tinklalapyje.



Straipsnį pateikė Kompiuterija - PC World.

‡ 1999–2024 © Elektronika.lt LTV.LT - lietuviškų tinklalapių vitrina Valid XHTML 1.0!