Bit T orent protokolas
description
Transcript of Bit T orent protokolas
BitTorent protokolasParengė: xxx
Turinys Kas yra BitTorrent protokolas BitTorrent protokolo terminologija Bencoding Failo dalys ir blokai Standartinis failų atsisiuntimas BitTorrent failų atsiuntimas BitTorrent failų skleidimas BitTorrent veikimo pavyzdys Mazgo užkimšimas Failų siuntimo pabaiga Privalumai Trūkumai Kas naudoja BitTorrent Klausimai
Kas yra BitTorrent protokolas
Atvirojo kodo protokolas sukurtas efektyviam didelių failų keitimuisi
Duomenų siuntimas ir gavimas vyksta tuo pat metu
BitTorrent protokolas susideda iš Tracker HTTP ir Peer Wire Protokolų
Klientas - Serveris BitTorent technologijos tinklas
BitTorrent protokolo terminologija Agentas (angl. “tracker”) – serveris, kuris
teikia informaciją mazgamsMeta duomenų failas (.torrent) – saugo
informaciją apie torrent failus. (pvz.: URL į agentą)
Torrent – failas ar jų grupė, kuriuos klientas siunčiasi naudodmasis BitTorrent protokolu
Mazgas (angl. “peer”) – torrent tinklo klientas (veikia ir kaip siuntėjas ir kaip gavėjas).
BitTorrent protokolo terminologija Skleidėjas (angl. “seeder”) –
klientas, kuris teikia failą persiuntimui
Siuntėjas (angl. “leecher”) – klientas, kuris siunčiasi iš skleidėjų
Dalis (angl.“piece”) – failo segmentas
Blokas (angl. “block”) – failo dalies blokas.
Bencoding
Tipas Formatas PvzEilutė <ilgis>:<duomen
ys>4:user
Sveikas skaičius i<sveikas skaičius>e
I3e
Sąrašas l<turinys>e l3:man5:šaltaeŽodynas d<raktas><reikš
mė>ed3:mani1e2:dui2e4:trysi3ee
Duomenų kodavimas naudojamas meta duomenų faile ir agento atsakymams
Užkoduoto failo pavyzdys
Failo dalys
Dalių skaičius yra nustatomas iš meta duomenų failo. Jis visada išlieka pastovus
Kiekviena suskaidytą dalį galima patikrinti naudojant SHA1 maišos funkciją
Dalies dydžio apskaičiavimo formulė: failoDaliesDydis = torrentFailoDydis /
daliųSkaičius (nustatomas torrent talpintojo) Torrent failas/ai yra sujungiami į vieną
baitų srautą. Tik baigus siuntimą jie yra patikrinami ir perverčiami į failus
Blokai
Jie skaičiuojami po failo išskaidymo dalimis Apskaičiavimo formulė:
blokųSkaičius = (fiksuotasDaliesDydis / fiksuotoBlokoDydis)
+ !!(fiksuotasDaliesDydis % fiksuotoBlokoDydis)
Bloko eilės (indekso) apskaičiavimas failo dalyje: blokoIndeksas = blokoNuokrypis% fiksuotasBlokoDydis
0 arba 1
Standartinis failų atsisiuntimas Kliento-Serverio siuntimas paremtas vieno
serverio, turinčio failą, darbu, kai visa apkrova tenka jam vienam iš visų besisiunčiančių klientų
Dirba tokiu principu: Atidaromas puslapis ir paspaudžiama failo
atsisiuntimo nuoroda Interneto naršyklės programa kompiuteryje (kliente)
pasako serveriui (centriniam kompiuteriui, kuriame yra failas) kad reikia persiųsti failo kopiją mūsų kompiuteriui
Persiuntimas yra atliekamas naudojantis protokolu (FTP ar HTTP) iš vieno šaltinio
Kliento-Serverio atsisiuntimas
Kontrolinis klausimas
Kokie yra Kliento-Serverio trūkumai?
Kliento-Serverio trūkumai Interneto srauto grūstis tinkle buvo problema
jau nuo kliento-serverio technologijos naudojimo pradžios. Nes vienu metu ateinančių kliento užklausų vienam serveriui augant, serveris gali būti perkraunamas
Kliento-serverio technologija neturi gero P2P tinklo patikimumo. Naudojant kliento-serverio technologiją, kritiniam serveriui nebeveikiant, užklausos tampa nebevykdomos. P2P tinkluose, resursai yra paskirstyti po daug mazgų
BitTorrent failų atsisiuntimas
Turi būti gautas meta duomenų failas Instrukcijos leidžiančios susisiekti su
kitais mazgais turi būti periodiškai gaunamos iš agento
Dalinamas failas turi būti atsiųstas keičiantis jo dalimis su kitais klientais naudojant Peer Wire Protokolu
BitTorrent failų skleidimas
Turi būti sukonfigūruotas agentas Turi būti paskleistas meta
informacijos failas su informacija apie torrent failo/ų struktūrą ir agento URL
Bent vienas mazgas turi skleisti torrent failą/us
BitTorrent veikimo pavyzdys
Pirminis skleidėjas išskaido dalinamą bylą
1 2 3 4 ... 100
Dalis (64KB – 16MB)
BitTorrent veikimo pavyzdys Siuntėjas atsisiunčia .torrent failą,
kuris nurodo į agentą (“tracker”) Atsisiunčia visą failo dalį sudaryta iš
blokų Automatiškai tampa skleidėju ir ją
pradeda skleisti kitiems siuntėjamsKuo daugiau skleidėjų, tuo daugiau dalių kopijų ir didesnis atsiuntimo
greitis
BitTorrent veikimo pavyzdys Kitas siuntėjas atsisiųs .torrent failą Iš agento (“tracker”) gaus (50)
skleidėjų sąrašą Pradės siųstis dalis iš skleidėjų vienu
metu
1 2 3 ...
100
1 2 3 ...
100
1 2 3 ...
100
Mazgo užkimšimas
234
1234
01
0
Skleidėjas
Siuntėjas
Išsiunčiama
3?Nėra vietų (Užkimta)
Failų siuntimo pabaiga
Paskutiniai failo dalies blokai gali siųstis labai lėtai, todėl ją bandoma gauti iš visų mazgų
Ją gavus iš kart išsiunčiama atšaukimo žinutė visiems kitiems mazgams
BitTorrent privalumai
Didelis atsiuntimo greitis Apkrovų paskirstymas (geresnis
pralaidumas) Failų dalijimasis tik nedidelėje
bendruomenėje Daugiaplatformiškumas Atviras protokolas. Kiekvienas gali
sukurti klientą
Kontrolinis klausimas
Kokie yra BitTorrent trūkumai?
BitTorrent trūkumai
Anonimiškumo trūkumas – BitTorrent nesuteikia vartotojams anonimiškumo
Leechers trūkumas – BitTorrent vartotojas gali nuspręsti palikti basidalinančių kompiuterių klasterį iškart po failo kopijos atsisiuntimo
Sukčiavimo problema – yra sukčiaujančių atsisiuntimo programų, kaip BitThief, kurios leidžia siųstis failą be jo išsiuntimo
Greitis – vidutinis BitTorrent atsisiuntimo greitis yra apribotas apjungtu leechers ir seeders vidutiniu išsiuntimu greičiu
Kas naudoja BitTorrent
Žaidimų kompanijos (platinti didelius failus)
Britų vyriausybė (platinti biudžeto ataskaitoms)
Universitetai (tyrimų duomenims platinti)
Redhat (platinti CD/DVD atvaizdus) Piratai (platinti nelegalius failus) Facebook ir Twitter (serverių
atnaujinimams siųsti)
Kontrolinis klausimas
Kada dar gali įvykti mazgo užkimšimas (choke)?
Mazgo užkimšimas
Klientas jau išsiunčia visu savo pajėgumo (pasiekė maksimalaus išsiunčiamų kanalų limitą)
Klientas yra tik seeder, kuriuo atveju jis nenori jokių failo dalių
Klientas buvo užblokuotas (blacklisted) dėl naudojimosi užblokuota BitTorrent atsisiuntimo programa iš juodojo sąrašo
Klausimai?