From 24f24ba091ce765177432002dcff00b8b6b1530c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Wed, 1 Mar 2023 00:35:14 +0100 Subject: konec.rn --- citati.bib | 59 ++++++++++++++++++ inf/rn/dok/lyx/Acknowledgments.lyx | 27 +++++++++ inf/rn/dok/lyx/Appendix.lyx | 100 ++++++++++++++++++++++++++++++ inf/rn/dok/lyx/eksperimentalni.lyx | 105 ++++++++++++++++---------------- inf/rn/dok/lyx/razprava.lyx | 108 +++++++++++++++++++++++++++------ inf/rn/dok/lyx/rezultati.lyx | 38 ++++++------ "inf/rn/dok/lyx/teoreti\304\215ni.lyx" | 42 ++++++++----- inf/rn/dok/lyx/thesis.lyx | 61 +++++++++++++++++++ inf/rn/dok/lyx/uvod.lyx | 53 ++++++++++------ "inf/rn/dok/lyx/zaklju\304\215ek.lyx" | 7 +-- inf/rn/dok/qbittorrent.png | Bin 0 -> 7458 bytes 11 files changed, 476 insertions(+), 124 deletions(-) create mode 100644 inf/rn/dok/qbittorrent.png diff --git a/citati.bib b/citati.bib index a036396..37d9097 100644 --- a/citati.bib +++ b/citati.bib @@ -143,3 +143,62 @@ url = {https://dis-slovarcek.ijs.si/}, urldate = {2023-02-28} } +@online{rhilip20, + author = {Rhilip}, + year = {2020}, + urldate = {2023-02-28}, + url = {https://github.com/Rhilip/Bencode}, + title = {A pure and simple PHP library for encoding and decoding Bencode data} +} +@conference{Kluyver2016jupyter, + Title = {Jupyter Notebooks -- a publishing format for reproducible computational workflows}, + Author = {Thomas Kluyver and Benjamin Ragan-Kelley and Fernando P{\'e}rez and Brian Granger and Matthias Bussonnier and Jonathan Frederic and Kyle Kelley and Jessica Hamrick and Jason Grout and Sylvain Corlay and Paul Ivanov and Dami{\'a}n Avila and Safia Abdalla and Carol Willing}, + Booktitle = {Positioning and Power in Academic Publishing: Players, Agents and Agendas}, + Editor = {F. Loizides and B. Schmidt}, + Organization = {IOS Press}, + Pages = {87 - 90}, + Year = {2016} +} +@online{sampleih, + author = {The 8472}, + url = {https://www.bittorrent.org/beps/bep_0051.html}, + title = {DHT Infohash Indexing}, + urldate = {2023-02-28}, + year = {2017} +} +@Article{Hunter:2007, + Author = {Hunter, J. D.}, + Title = {Matplotlib: A 2D graphics environment}, + Journal = {Computing in Science \& Engineering}, + Volume = {9}, + Number = {3}, + Pages = {90--95}, + abstract = {Matplotlib is a 2D graphics package used for Python for + application development, interactive scripting, and publication-quality + image generation across user interfaces and operating systems.}, + publisher = {IEEE COMPUTER SOC}, + doi = {10.1109/MCSE.2007.55}, + year = 2007 +} +@online{norberg14, + author = {Norberg, Arvid}, + title = {DHT Security extension}, + url = {https://www.bittorrent.org/beps/bep_0042.html}, + urldate = {2023-02-28}, + year = {2016} +} +@InProceedings{10.1007/3-540-45748-8_24, + author="Douceur, John R.", + editor="Druschel, Peter + and Kaashoek, Frans + and Rowstron, Antony", + title="The Sybil Attack", + booktitle="Peer-to-Peer Systems", + year="2002", + publisher="Springer Berlin Heidelberg", + address="Berlin, Heidelberg", + pages="251--260", + abstract="Large-scale peer-to-peer systems face security threats from faulty or hostile remote computing elements. To resist these threats, many such systems employ redundancy. However, if a single faulty entity can present multiple identities, it can control a substantial fraction of the system, thereby undermining this redundancy. One approach to preventing these ``Sybil attacks'' is to have a trusted agency certify identities. This paper shows that, without a logically centralized authority, Sybil attacks are always possible except under extreme and unrealistic assumptions of resource parity and coordination among entities.", + isbn="978-3-540-45748-0" +} + diff --git a/inf/rn/dok/lyx/Acknowledgments.lyx b/inf/rn/dok/lyx/Acknowledgments.lyx index f700bc6..d51996f 100644 --- a/inf/rn/dok/lyx/Acknowledgments.lyx +++ b/inf/rn/dok/lyx/Acknowledgments.lyx @@ -126,6 +126,11 @@ adds table of contents entry \end_layout +\begin_layout Standard +\begin_inset Branch anonimno +inverted 1 +status open + \begin_layout Standard Za pomoč pri obdelavi podatkov se zahvaljujem Oliverju Wagnerju ( \begin_inset CommandInset href @@ -148,5 +153,27 @@ literal "false" ). \end_layout +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Branch anonimno +inverted 0 +status open + +\begin_layout Standard + +\family typewriter +[za omogočanje objektivnega ocenjevanja je bila zahvala odstranjena iz dokumenta + v anonimni različici] +\end_layout + +\end_inset + + +\end_layout + \end_body \end_document diff --git a/inf/rn/dok/lyx/Appendix.lyx b/inf/rn/dok/lyx/Appendix.lyx index 4e2cf73..2e10d6f 100644 --- a/inf/rn/dok/lyx/Appendix.lyx +++ b/inf/rn/dok/lyx/Appendix.lyx @@ -453,6 +453,29 @@ ipynb \family default za analizo in vseh ostalih programov je objavljena na internetu na spletnem naslovu +\begin_inset Branch anonimno +inverted 0 +status open + +\begin_layout Standard +\begin_inset CommandInset href +LatexCommand href +target "http://anonimno.4a.si./sci/2023/travnik-anonimno.tar.gz" +literal "true" + +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Branch anonimno +inverted 1 +status open + +\begin_layout Standard \begin_inset CommandInset href LatexCommand href name "http://ni.šijanec.eu./sijanec/travnik/" @@ -461,6 +484,11 @@ literal "true" \end_inset + +\end_layout + +\end_inset + . Vključitev vseh programov v prilogo zaradi njihove obširnosti ni mogoča. \end_layout @@ -509,6 +537,11 @@ LaTeX \end_inset ), je objavljena na internetu na naslovu +\begin_inset Branch anonimno +inverted 1 +status open + +\begin_layout Standard \begin_inset CommandInset href LatexCommand href name "http://ni.šijanec.eu./sijanec/sola-gimb-4/" @@ -517,7 +550,74 @@ literal "false" \end_inset + +\end_layout + +\end_inset + + +\begin_inset Branch anonimno +inverted 0 +status open + +\begin_layout Standard + +\family typewriter +[to je anonimna objava za ocenjevalce, zato povezava ni navedena] +\end_layout + +\end_inset + . +\end_layout + +\begin_layout Section +Prenos korpusa torrentov te naloge +\end_layout + +\begin_layout Standard +Korpus, ki je bil v okviru te naloge zajet iz omrežja in za potrebe naloge + tudi analiziran, je moč prenesti s spletnega strežnika: +\begin_inset Branch anonimno +inverted 1 +status open + +\begin_layout Standard +\begin_inset CommandInset href +LatexCommand href +name "http://cdn.šijanec.eu./sci/2023/travnik-korpus.tar.gz" +target "http://cdn.sijanec.eu./sci/2023/travnik-korpus.tar.gz" +literal "false" + +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Branch anonimno +inverted 0 +status open + +\begin_layout Standard +\begin_inset CommandInset href +LatexCommand href +target "http://anonimno.4a.si./sci/2023/travnik-korpus.tar.gz" +literal "true" + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard \begin_inset Note Note status open diff --git a/inf/rn/dok/lyx/eksperimentalni.lyx b/inf/rn/dok/lyx/eksperimentalni.lyx index a547c81..4fd6797 100644 --- a/inf/rn/dok/lyx/eksperimentalni.lyx +++ b/inf/rn/dok/lyx/eksperimentalni.lyx @@ -306,8 +306,11 @@ Eksperimentalni del \end_layout \begin_layout Standard -Namen raziskovalne naloge je prenesti čim več info slovarjev iz metainfo - slovarjev/torrent datotek. +Namen raziskovalne naloge je prenesti čim več +\family typewriter +info +\family default + slovarjev iz metainfo slovarjev/torrent datotek. V ta namen sem po standardih implementiral odjemalec BitTorrent, vendar nepopolno, le do te mere, da zna sodelovati v DHT in prenašati metapodatke. \end_layout @@ -333,7 +336,7 @@ get_peers . Najdene infohashe doda v seznam torrentov, za katere bo poizkušal prejeti soležnike, ko soležnike prejme, pa enega za drugim sprašuje za metapodatke. - Ko metapodatke enkrat prenese, jih ne za torrent ne bo več prenašal. + Ko metapodatke enkrat prenese, jih za ta torrent ne bo več prenašal. \end_layout \begin_layout Standard @@ -342,16 +345,7 @@ Izdelani program ne implementira možnosti oddajanja metapodatkov, omogoča \end_layout \begin_layout Standard -Izvorna koda programa je dostopna na -\begin_inset CommandInset href -LatexCommand href -name "http://ni.šijanec.eu./sijanec/travnik/" -target "http://ni.sijanec.eu./sijanec/travnik/" -literal "false" - -\end_inset - -. +Povezava za prenos izvorne kode programa je navedena v prilogi. \end_layout \begin_layout Subsection @@ -367,7 +361,7 @@ Za dekodiranje in enkodiranje bkodiranih objektov sem spisal v C spisal knjižnico, ki bencoding objekte dekodira v objektno strukturo, na kateri omogoči osnovne operacije, kot so iskanje ključev, zanka preko celotnega seznama ali slovarja, vstavljanje novih elementov, brisanje elementov ter - dupliciranje elementov. + podvojevanje elementov. Deserializirana oblika je drevo elementov strukture bencoding: \end_layout @@ -494,8 +488,8 @@ char * b2json (char * dest, struct bencding * b) \end_inset JSON sicer ne more popolnoma reprezentirati podatkov, ki jih reprezentira - bkodiranje, saj morajo biti vsi nizi v obliki UTF-8, česar bencoding ne - zagotavlja (tam so lahko v nizih poljubni bajti). + bkodiranje, saj bi morali biti vsi nizi v obliki UTF-8, česar bencoding + ne zagotavlja (tam so lahko v nizih poljubni bajti). Kljub temu pa obstajajo JSON bralniki, ki podpirajo poljubne bajte v nizih. \end_layout @@ -562,7 +556,7 @@ ja \family typewriter struct bencoding * bval (struct bencoding * benc, struct bencoding * val) \family default -, ki najde vrednost v slovarju/seznamu glede na njeno vrednost +, ki najde element v slovarju/seznamu glede na njegovo vrednost \end_layout \begin_layout Itemize @@ -587,7 +581,7 @@ Celotno povezovanje z vozlišči je spisano v knjižnici za DHT. Ureja povezovanje na DHT vozlišča in tudi TCP za prenos metapodatkov. Vzpostavi eno UDP vtičnico, preko katere komunicira s svetom. Z bkodiranim seznamom, ki ga uporabnik knjižnice shrani na disk, je omogočena - tudi obstojna shramba podatkov, da lahko od zagona do zagona DHT ohranja + tudi obstojna shramba podatkov, da lahko od izklopa do zagona DHT ohranja usmerjevalno tabelo, številko vrat in ID vozlišča. \end_layout @@ -825,7 +819,7 @@ end{lstlisting} \end_layout \begin_layout Standard -Torrent je reprezentiran v strukturi +Torrent je predstavljen s strukturo \family typewriter torrent \family default @@ -998,7 +992,11 @@ Uporabniku knjižnice so med drugim namenjene slednje funkcije: struct torrent * add_torrent (struct dht * d, struct torrent * t) \family default , ki doda torrent v shrambo torrentov. - Praviloma uporabnik torrentu nastavi type na + Praviloma uporabnik torrentu nastavi +\family typewriter +type +\family default + na \family typewriter peers|info. \end_layout @@ -1046,7 +1044,8 @@ void periodic (struct dht * d) \end_layout \begin_layout Standard -Poleg tega mora uporabnik skrbeti še za povratne klice (angl +Poleg tega mora uporabnik skrbeti še za povratne klice (angl. + \shape italic callback \shape default @@ -1128,8 +1127,8 @@ utils/bencoding.c \family typewriter utils/info.c \family default - pa omogoča prenos metapodatkov torrenta s podanim infohashom iz specifičnega - naslova IP in vrat. + pa omogoča prenos metapodatkov torrenta s podanim infohashom, specifičnim + naslovom IP in vrati. \end_layout \begin_layout Section @@ -1137,8 +1136,8 @@ Algoritem prestrezanja podatkov \end_layout \begin_layout Standard -Vedno, ko program zazna novo infohash, ga doda med torrente, katerih metapodatke - želi prenesti. +Vedno, ko program zazna novo infohash, izdela nov torrent ter ga doda med + torrente, katerih metapodatke želi prenesti. Vsak cikel desetih sekund (klic funkcije \family typewriter periodic @@ -1177,9 +1176,8 @@ infohash.torrent \end_layout \begin_layout Standard -Da program prvič začne sodelovati z omrežjem, torej da ga sosednja vozlišča - vpišejo v svoje usmerjevalne tabele, prenese metapodatke vgrajenega torrenta - +Da program prvič začne sodelovati z omrežjem — da ga sosednja vozlišča vpišejo + v svoje usmerjevalne tabele — prenese metapodatke vgrajenega torrenta \family typewriter Big Buck Bunny \family default @@ -1193,8 +1191,15 @@ Obdelava podatkov \begin_layout Standard Podatke sem sprva mislil obdelati tako, da bi jih shranjeval v relacijski podatkovni zbirki tipa MySQL, zato sem spisal PHP program, ki s knjižnico - (citiraj Rhilip/Bencode) za razčlenjevanje metainfo datotek odpre vsako - datoteko in jo vstavi v podatkovno zbirko s tabelama +\begin_inset CommandInset citation +LatexCommand cite +key "rhilip20" +literal "false" + +\end_inset + + za razčlenjevanje metainfo datotek odpre vsako datoteko in jo vstavi v + podatkovno zbirko s tabelama \family typewriter torrenti \family default @@ -1207,15 +1212,16 @@ datoteke \family typewriter JOIN \family default - operacije med tabelo s torrenti in tabelo z datotekami prepočasno. - Relacijske podatkovne zbirke namreč niso narejene za ta namen. + operacije med tabelo s torrenti in tabelo z datotekami prepočasne. + Relacijske podatkovne zbirke namreč taki uporabi niso namenjene. Alternativa njim so podatkovne zbirke, ki delajo na nivoju t. - i dokumentov. + i. + dokumentov. \end_layout \begin_layout Standard -Sprva sem mislil uporabiti podatkovno orodje MongoDB (citiraj), vendar mi - je zaradi restriktivne licence in komercialno orientirane narave neprivlačen. +Sprva sem mislil uporabiti podatkovno orodje MongoDB, vendar mi je zaradi + restriktivne licence in komercialno orientirane narave neprivlačno. \end_layout \begin_layout Standard @@ -1235,15 +1241,22 @@ O(n) \end_inset - kompleksnost, je v mojem primeru dovolj, če vse torrente hranim kot pythonski - + kompleksnost, je v mojem primeru dovolj, če vse torrente hranim kot \family typewriter dict \family default - (slovar). + (slovar) v programskem jeziku Python. Za ohranitev tega slovarja v delovnem spominu za daljše časovno obdobje in za uporaben uporabniški vmesnik sem izbral programsko orodje Jupyter - Notebook (citiraj), ki uporablja + Notebook +\begin_inset CommandInset citation +LatexCommand cite +key "Kluyver2016jupyter" +literal "false" + +\end_inset + +, ki uporablja \family typewriter ipython \family default @@ -1251,19 +1264,9 @@ ipython \end_layout \begin_layout Standard -Python uporabne knjižnice, ki podpira obe obliki torrent datotek, nima, +Python ustrezne knjižnice, ki podpira obe obliki torrent datotek, nima, zato sem preprost vmesnik za razčlenjevanje datotek v objektne strukture - spisal sam (Priloga: -\begin_inset CommandInset ref -LatexCommand ref -reference "sec:travnik.py-razčlenjevalnik-.torr" -plural "false" -caps "false" -noprefix "false" - -\end_inset - -). + spisal sam. \end_layout \begin_layout Standard diff --git a/inf/rn/dok/lyx/razprava.lyx b/inf/rn/dok/lyx/razprava.lyx index a2be75b..a9c2090 100644 --- a/inf/rn/dok/lyx/razprava.lyx +++ b/inf/rn/dok/lyx/razprava.lyx @@ -316,10 +316,18 @@ Napad Sybil \begin_layout Standard Napad Sybil je pogosto možen v DHT omrežjih, ki za identifikacijske številke vozlišč ne izvajajo asimetrične kriptografije — izrazito je prisoten pri - Kademili oz. + Kademlii oz. BitTorrent Mainline DHT. Napad učinkovito omrtviči vozlišča — onemogoči vzpostavljanje povezav in - zapolni usmerjevalno tabelo tako, da so v njej večinoma napadalčeva vozlišča. + zapolni usmerjevalno tabelo tako, da so v njej večinoma napadalčeva vozlišča +\begin_inset CommandInset citation +LatexCommand cite +key "10.1007/3-540-45748-8_24" +literal "false" + +\end_inset + +. Napadalec iz enega ali več IP naslovov izdela veliko število virtualnih vozlišč, katerih IDji so zelo blizu vozlišča žrtve napada. Tako bo žrtev vedno vstavila napadalčeva vozlišča v usmerjevalno tabelo, @@ -361,24 +369,39 @@ Vozlišče v usmerjevalno tabelo sprejme samo eno vozlišče iz enega IP naslova \end_layout \begin_layout Itemize -Uporaba fiksnih prefiksov IDjev (BEP 0042) (citiraj), kjer morajo vozlišča - uporabljati ID, ki se začne z IP naslovom, transformiranim skozi CRC32c - funkcijo. +Uporaba fiksnih prefiksov IDjev +\begin_inset CommandInset citation +LatexCommand cite +key "norberg14" +literal "false" + +\end_inset + +, kjer morajo vozlišča uporabljati ID, ki se začne z IP naslovom, transformirani +m skozi CRC32c funkcijo. Težava nastane, ko imajo napadalci spet dovolj velik naslovni prostor, da lahko pokrijejo vse predpone IDja. Poleg tega je to zgolj razširitev osnovnega DHT protokola, na katero se odjemalci ne morejo zanašati. Nepravilen ID je sicer lahko napadalec, lahko pa je tudi vozlišče, ki razširitv -e ni implementiral. +e ni implementiralo. \end_layout \begin_layout Itemize Vsakemu vozlišču lahko pred vstavljanjem v usmerjevalno tabelo pošljemo - ping paket, ki vsebuje drugačen ID, kot ga odjemalec sicer uporablja. - Če v odgovoru na ping ID vozlišča ni enak, kot smo ga videli prej, pomeni, - da je vozlišče zagotovo napadalec. + paket +\family typewriter +ping +\family default +, ki vsebuje drugačen ID, kot ga odjemalec sicer uporablja. + Če v odgovoru na +\family typewriter +ping +\family default + ID vozlišča ni enak, kot smo ga videli prej, pomeni, da je vozlišče zagotovo + napadalec. Težava nastane, ko lahko sogovornik nas smatra kot napadalca, saj smo mu - poslali pakete iz dveh različnih node IDjev (čeprav v teoriji ne smemo + poslali pakete iz dveh različnih IDjev vozlišč (čeprav v teoriji ne smemo zaupati izvornemu naslovu prejetih UDP paketov). \end_layout @@ -403,9 +426,9 @@ Slaba zmogljivost mrežne opreme Ker se ob normalnem delovanju travnika prenese do 2000 paketov z različnimi IP naslovi na sekundo, slaba omrežna oprema kljub majhni porabljeni pasovni širini (okoli 4 megabite na sekundo) začne delovati slabo. - Ključen primer je bil domači optični modem, ki med delovanjem travnika - burno izgublja pakete do te mere, da prihaja do izpadov razreševanja internetni -h imen (DNS). + Primer tega je domači optični modem, ki med delovanjem travnika burno izgublja + pakete do te mere, da prihaja do izpadov razreševanja internetnih imen + (DNS). Problem sem omilil (na 2000 paketov/s) tako, da nov najden infohash dodam med željene torrente največ enkrat na dve sekundi in omejim čas življenja torrenta (koliko časa za torrent aktivno iščem soležnike, preden ga izbrišem) @@ -429,6 +452,11 @@ Podatki predstavljajo vzorec populacije torrentov, ki se pretakajo po internetu. tipi datotek so najbolj pogosti itd. \end_layout +\begin_layout Standard +Za omogočanje nadaljnjih raziskav na obstoječem korpusu je povezava za prenos + le-tega objavljena v prilogi. +\end_layout + \begin_layout Section Etičnost in legitimnost rudarjenja podatkov \end_layout @@ -446,7 +474,43 @@ a priori Uporabniki se zato zavedajo, da je njihova identiteta drugim članom roja znana. Pogosto pa se ne zavedajo, da se obstoječe roje da odkriti in se jim pridružiti. - (vstavi sliko) +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset Graphics + filename /home/z/projects/sola-gimb-4/inf/rn/dok/qbittorrent.png + width 100text% + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +Opozorilo odjemalca qBittorrent o naravi omrežja BitTorrent. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + \end_layout \begin_layout Section @@ -458,8 +522,8 @@ Implementacija za to raziskavo je delovala neinvazivno, saj je implementirana tako, kot bi bil implementiran navaden torrent odjemalec, le da zahteve pošilja hitreje. Ne poslužuje se bolj invazivnih taktik, ki posegajo v omrežje, kot je npr. - napad Sybil (citiraj), in dosledno shranjuje in daje drugim na razpolago - informacije o soležnikih. + napad Sybil, in dosledno shranjuje in daje drugim na razpolago informacije + o soležnikih. \end_layout \begin_layout Standard @@ -485,8 +549,16 @@ Vzorčenje ključev \end_layout \begin_layout Standard -Vzorčenje ključev, opisano v protokolu BEP-xxxx (citiraj), ni bilo uporabljeno, - ker ga ne podpirajo vse implementacije BitTorrent DHT protokola. +Vzorčenje ključev, opisano v protokolu BEP-0051 +\begin_inset CommandInset citation +LatexCommand cite +key "sampleih" +literal "false" + +\end_inset + +, ni bilo uporabljeno, ker ga ne podpirajo vse implementacije BitTorrent + DHT protokola. S pošiljanjem teh zahtev bi kljub temu vzorec pridobljenih torrentov obsegal enako reprezentativen delež prenesenih torrentov na internetu, saj so vozlišča, ki podpirajo ta protokol, zaradi naključnih IDjev homogeno razpršena po diff --git a/inf/rn/dok/lyx/rezultati.lyx b/inf/rn/dok/lyx/rezultati.lyx index 71b703e..43ad84a 100644 --- a/inf/rn/dok/lyx/rezultati.lyx +++ b/inf/rn/dok/lyx/rezultati.lyx @@ -310,7 +310,7 @@ Analiza podatkov \end_layout \begin_layout Standard -Na računalniku z operacijskim sistemom Gentoo Linux, 16 GiB delovnega spomina, +Na računalniku z operacijskim sistemom Gentoo Linux s 16 GiB delovnega spomina, procesorjem Intel i5-4590 in vrtečim se diskom program za analizo, spisan v Pythonu, razčleni in v spomin shrani 47843 torrentov v 432 sekundah. Večino časa program za razčlenjevanje sicer porabi za branje z diska, saj @@ -371,22 +371,19 @@ Osnovne informacije o količini podatkov \begin_layout Standard Program je korpus nabral januarja in februarja 2023 v skupno 16 dneh, torej je v povprečju prenesel en torrent na 29 sekund. - Program ni tekel konstantno, saj je preveč motil domačo internetno linijo. + Program ni tekel konstantno, saj med delovanjem preveč moti domačo internetno + linijo. V 47843 torrentih so zapisani metapodatki 3084321 datotek v skupni velikosti 259 TiB. \end_layout \begin_layout Standard -Da je program ves čas med dvema prejetima torrentoma tekel, štejemo le, - če je med torrentoma minilo manj kot deset minut časa. - V nasprotnem primeru smatramo, da je bil program vmes ugasnjen. +Da je program ves čas med dvema prejetima torrentoma tekel, štejem le, če + je med torrentoma minilo manj kot deset minut časa. + V nasprotnem primeru smatram, da je bil program vmes ugasnjen. Čas prejetja torrenta program travnik shrani v ključ \family typewriter -creation -\family default -date -\family typewriter -. +creation date. \family default V pythonu lahko zgoraj navedene podatke izvemo z zanko čez vse torrente: @@ -567,7 +564,14 @@ noprefix "false" . Inačica posameznega programa je odstranjena, imena pa so so normalizirana - (citiraj matplotlib). +\begin_inset CommandInset citation +LatexCommand cite +key "Hunter:2007" +literal "false" + +\end_inset + +. \begin_inset Foot status open @@ -616,7 +620,7 @@ status open \begin_layout Plain Layout Reprezentacija odjemalcev, ki predstavljajo vsaj en odstotek populacije, - z na logaritemski skali + na logaritemski skali \end_layout \end_inset @@ -640,7 +644,7 @@ V slovarju \family typewriter info \family default - implementacije pogosto shranjujejo tudi druge metapodatke poleg standardnih. + implementacije poleg standardnih pogosto shranjujejo tudi druge metapodatke. Z logaritemsko skalo so predstavljeni vsi ključi, ki so se pojavili v korpusu torrentov. \end_layout @@ -1702,9 +1706,8 @@ Iz diagrama je razvidno, da je večina objavljenih vsebin v torrent omrežju \begin_layout Standard Če bi za določilo pojavnosti tipa uporabili število datotek, bi prevladovali - tipi vsebin, ki so ponavadi preneseni kot kopica datotek, denimo slike, - če pa bi za določilo pojavnosti tipa uporabili velikost tipa, pa bi prevladoval -i tisti tipi, ki zasedajo več prostora (diagram v prilogi na sliki + tipi vsebin, ki so ponavadi preneseni kot kopica datotek, denimo slike + (diagram v prilogi na sliki \begin_inset CommandInset ref LatexCommand ref reference "fig:Pojavnost-tipa-kot-število-datotek" @@ -1714,7 +1717,8 @@ noprefix "false" \end_inset -). +), če pa bi za določilo pojavnosti tipa uporabili velikost datotek tega + tipa, pa bi prevladovali tisti tipi, ki zasedajo več prostora. V tem primeru bi npr. videovsebine zaradi svoje velikosti občutno presegale digitalne knjige (diagram v prilogi na sliki diff --git "a/inf/rn/dok/lyx/teoreti\304\215ni.lyx" "b/inf/rn/dok/lyx/teoreti\304\215ni.lyx" index 69ac903..b4d59d8 100644 --- "a/inf/rn/dok/lyx/teoreti\304\215ni.lyx" +++ "b/inf/rn/dok/lyx/teoreti\304\215ni.lyx" @@ -331,7 +331,7 @@ literal "false" je opisan pojem bencoding serializacije, s katero je serializirana večina paketov, ki se pošiljajo med vozlišči DHT in soležniki. - Strukturo, ki opisuje JSONu + Struktura, ki opisuje JSONu \begin_inset CommandInset citation LatexCommand cite key "pezoa2016foundations" @@ -414,7 +414,7 @@ ali \series bold dict \series default - vsebuje povezave (asociacije) med ključi in vrednosti. + vsebuje povezave (asociacije) med ključi in vrednostmi. Ključi so nizi, vrednosti pa so poljubni tipi. Serializiran je podobno kot seznam, le da se začne z znakom \family typewriter @@ -447,7 +447,8 @@ Datoteka torrent/metainfo \begin_layout Standard Ko neke datoteke avtor želi deliti s protokolom BitTorrent, ustvari torrent datoteko, ki je bkodiran slovar. - S to datoteko drugim omogoči prenos, zato jim jo na nedefiniran. + S to datoteko drugim omogoči prenos, zato jim jo mora na v standardu nedefinira +n način posredovati. Glavni ključi v slovarju so \begin_inset CommandInset citation LatexCommand cite @@ -470,7 +471,9 @@ announce \begin_layout Itemize \family typewriter -info: informacije o datotekah v torrentu +info: +\family default + informacije o datotekah v torrentu \end_layout \begin_deeper @@ -495,7 +498,7 @@ literal "false" \family typewriter name \family default -: ime torrenta, v primeru, da torrent vsebuje le eno datoteko, pa ime datoteke +: ime torrenta, v kolikor torrent vsebuje le eno datoteko, pa ime datoteke \end_layout \begin_layout Itemize @@ -625,9 +628,9 @@ info \family default , ne pa tudi celotne datoteke, vendar slovar \family typewriter -info vsebuje vse potrebno za prenos datotek +info \family default - + vsebuje vse potrebno za prenos datotek \begin_inset CommandInset citation LatexCommand cite key "hazel08" @@ -655,7 +658,7 @@ infohash \begin_layout Standard BitTorrent različica 2 ima drugačno strukturo, ki poda podobne podatke, vendar na malce spremenjen način. - Uporablja recimo zgoščeno vrednost SHA256 in namesto ključa + Uporablja recimo zgoščeno vrednost SHA-256 in namesto ključa \family typewriter pieces \family default @@ -788,7 +791,7 @@ literal "false" \end_inset -, vendar sam po sebi ne predstavlja številke tipa. +, vendar sam po sebi ne predstavlja številke tipa paketa. Za uporabo prenosa metapodatkov je najprej treba vzpostaviti razširitveni protokol, ki odjemalcem omogoča dodajanje poljubnih protokolov v komunikacijo, ne da bi med njimi prišlo do nekompatibilnosti. @@ -961,7 +964,10 @@ piece : 5} \family default -, če nima vseh delčkov (za preverjanje zgoščene vrednosti slovarja info +, če nima vseh delčkov (za preverjanje zgoščene vrednosti slovarja +\family typewriter +info +\family default je potrebno poznavanje vseh koščkov), bodisi odgovori s paketom \end_layout @@ -1175,7 +1181,7 @@ Da se program prvič poveže v omrežje, mora najprej najti vsaj enega člana omrežja. Algoritem za povezavo v omrežje ni definiran. Implementacije ob izhodu iz programa usmerjevalno tabelo shranijo na disk, - da ob ponovnem zagonu vsaj nekaj vozlišč iz prejšnega zagona še deluje. + da ob ponovnem zagonu vsaj nekaj vozlišč iz prejšnjega zagona še deluje. Če se nobeno vozlišče ne odzove, vpraša centraliziran strežnik, t. i \shape italic @@ -1239,7 +1245,7 @@ literal "false" . Paketi se delijo na zahteve in na odgovore, da pa vozlišče prejeto zahtevo - lahko poveže s poslanim odgovorom, pa vsi paketi vsebujejo ključ + lahko poveže s poslanim odgovorom, pa vse zahteve vsebujejo ključ \family typewriter t \family default @@ -1372,9 +1378,9 @@ token \family default v paketu \family typewriter -announce +announce_peer \family default -_peer. +. \end_layout \begin_layout Paragraph @@ -1393,7 +1399,11 @@ port \family typewriter info_hash \family default - in token iz prej prejetega odgovora na + in +\family typewriter +token +\family default + iz prej prejetega odgovora na \family typewriter get_peers \family default @@ -1402,7 +1412,7 @@ get_peers \family typewriter token \family default - poskrbi, da s ponarejanjem izvora UDP/IP paketov ne moremo v seznam vnesti + poskrbi, da s ponarejanjem izvora UDP/IP paketov v seznam ne moremo vnesti drugih računalnikov, temveč le tistega, ki je prejel odgovor na \family typewriter get_peers diff --git a/inf/rn/dok/lyx/thesis.lyx b/inf/rn/dok/lyx/thesis.lyx index 740b9cf..a61553e 100644 --- a/inf/rn/dok/lyx/thesis.lyx +++ b/inf/rn/dok/lyx/thesis.lyx @@ -160,6 +160,11 @@ customHeadersFooters \filename_suffix 0 \color #faf0e6 \end_branch +\branch anonimno +\selected 1 +\filename_suffix 0 +\color #faf0e6 +\end_branch \index Index \shortcut idx \color #008000 @@ -282,6 +287,11 @@ Analiza pretočnega prometa skozi vozlišča protokola BitTorrent in prenos \end_layout \begin_layout Author +\begin_inset Branch anonimno +inverted 1 +status open + +\begin_layout Standard Anton Luka Šijanec \family typewriter < @@ -297,11 +307,40 @@ literal "false" > \end_layout +\end_inset + + +\end_layout + +\begin_layout Publishers +\begin_inset Branch anonimno +inverted 0 +status open + +\begin_layout Standard +Anonimna izdaja za ocenjevalce +\end_layout + +\end_inset + + +\end_layout + \begin_layout Date +\begin_inset Branch anonimno +inverted 1 +status open + +\begin_layout Standard 4. letnik \end_layout +\end_inset + + +\end_layout + \begin_layout Subject Računalništvo in informatika \end_layout @@ -354,10 +393,21 @@ baselineskip} \begin_inset Newline newline \end_inset + +\begin_inset Branch anonimno +inverted 1 +status open + +\begin_layout Standard Mentor: Andrej Šuštaršič, univ. dipl. ing. elektr. +\end_layout + +\end_inset + + \begin_inset Newline newline \end_inset @@ -365,7 +415,18 @@ Mentor: Andrej Šuštaršič, univ. \begin_inset Newline newline \end_inset + +\begin_inset Branch anonimno +inverted 1 +status open + +\begin_layout Standard Gimnazija Bežigrad +\end_layout + +\end_inset + + \begin_inset Note Note status open diff --git a/inf/rn/dok/lyx/uvod.lyx b/inf/rn/dok/lyx/uvod.lyx index f600fb4..fd303d6 100644 --- a/inf/rn/dok/lyx/uvod.lyx +++ b/inf/rn/dok/lyx/uvod.lyx @@ -313,19 +313,28 @@ Peer-to-peer omrežja za distribucijo datotek \begin_layout Standard Izmenjava in distribucija velikih datotek na internetnih omrežjih veliki - količini odjemalcev predstavlja težavo, saj je v osnovi TCP/IP sklada protokolo -v isto datoteko poslati tolikokrat, kolikor odjemalcev imamo. + količini odjemalcev predstavlja težavo, saj je potrebno isto datoteko poslati + tolikokrat, kolikor imamo odjemalcev. Distributorji večjih količin podatkov na internetu se morajo zaradi centralizir anega modela infrastrukture strežnikov, kjer centraliziran strežnik posreduje identične informacije večkrat večim odjemalcem, ki med seboj ne komunicirajo, - posluževati dragih metod kolokacije strežnikov. + posluževati dragih mrež za izmenjavo vsebine (angl. + +\shape italic +CDN +\shape default +). \end_layout \begin_layout Standard Koncept P2P (angl. - peer-to-peer) predstavlja alternativen način distribucije identičnih datotek - večim odjemalcem. - Namesto enega strežnika, ki iste podatke pošlje vsakič znova odjemalcem, + +\shape italic +peer-to-peer +\shape default +) predstavlja alternativen način distribucije identičnih datotek večim odjemalce +m. + Namesto enega strežnika, ki iste podatke odjemalcem pošlje vsakič znova, v omrežjih P2P za distribucijo datotek ni razlike med strežnikom in odjemalcem. Vsak odjemalec podatke tako prejema kot tudi pošilja. Takoj ko odjemalec prejme vsebino od drugega odjemalca, jo bo tudi sam @@ -340,7 +349,7 @@ Koncept P2P (angl. \end_layout \begin_layout Standard -Sistem pa ni povsem brezhiben, saj je še vedno treba na nek zunanji način +Sistem pa ni povsem brezhiben, saj je še vedno potrebno na nek zunanji način med seboj povezati odjemalce, ki so zainteresirani za določeno temo (recimo za določeno datoteko). Druga očitna slabost pa je, da je možno ugotoviti, kdo prenaša kakšno vsebino, @@ -350,9 +359,9 @@ Sistem pa ni povsem brezhiben, saj je še vedno treba na nek zunanji način \begin_layout Standard Koncept P2P ni namenjen le distribuciji datotek, temveč se zaradi svoje - prednosti razbremenitve strežnikov dandanes vse pogosteje uporablja, na + prednosti razbremenitve strežnikov dandanes uporablja vse pogosteje, na primer pri spletnih videokonferencah, anonimizacijskih omrežjih, kriptovalutah, - internetu stvari in drugje. + internetu stvari in drugod. \end_layout \begin_layout Section @@ -628,8 +637,11 @@ infohash \begin_inset Text \begin_layout Plain Layout -zgoščena vrednost serializiranih podatkov pod ključem info v torrentu, ki - unikatno opišejo ključne metapodatke o torrentu +zgoščena vrednost serializiranih podatkov pod ključem +\family typewriter +info +\family default + v torrentu, ki unikatno opišejo ključne metapodatke o torrentu \end_layout \end_inset @@ -700,8 +712,8 @@ BitTorrent protokol ne omogoča iskanja po datotekah, ki se prenašajo po obliki torrent, strojno berljivi datoteki, serializirani s preprosto serializac ijsko metodo bencoding. Vsebujejo imena in poti datotek ter njihove zgoščene vrednosti, ime torrenta, - lastnosti prenosa: velikost koščka, ime, zasebnost (angl. - private torrent). + lastnosti prenosa, velikost koščka, zasebnost (angl. + private torrent) in podobne metapodatke. \end_layout \begin_layout Standard @@ -716,10 +728,15 @@ Protokol BitTorrent DHT \end_layout \begin_layout Standard -DHT je kot koncept definiran zelo splošno, za BitTorrent je uporabljen sistem +DHT (angl. + +\shape italic +distributed hash table +\shape default +) je kot koncept definiran zelo splošno, za BitTorrent je uporabljen sistem DHT, imenovan Kademlia. - Uporablja se odpravo odvisnosti od sledilnika, saj lahko v njej hranimo - seznam soležnikov v roju. + Uporablja se odpravo odvisnosti od sledilnika, saj lahko v tej distribuirani + tabeli hranimo seznam soležnikov v roju. \end_layout \begin_layout Standard @@ -946,7 +963,7 @@ na posamezno vozlišče relativna množica drugih vozlišč, ki so si glede na \begin_layout Plain Layout Nepopoln seznam pojmov Kademile, potrebnih za razumevanje naloge. - Za noben pojem nisem našel ustaljenih slovenskih prevodov. + Slovenski prevodi niso ustaljeni. \end_layout \end_inset @@ -960,7 +977,7 @@ Nepopoln seznam pojmov Kademile, potrebnih za razumevanje naloge. \end_layout \begin_layout Standard -Kademilo, kot se uporablja v BitTorrentu, si lahko za začetek predstavljamo +Kademlio, kot se uporablja v BitTorrentu, si lahko za začetek predstavljamo kot abstraktno razpršilno tabelo, ki je shranjena porazdeljeno na velikem omrežju vozlišč/računalnikov in podpira naslednji operaciji \begin_inset CommandInset citation diff --git "a/inf/rn/dok/lyx/zaklju\304\215ek.lyx" "b/inf/rn/dok/lyx/zaklju\304\215ek.lyx" index 6a3b033..28c2ef3 100644 --- "a/inf/rn/dok/lyx/zaklju\304\215ek.lyx" +++ "b/inf/rn/dok/lyx/zaklju\304\215ek.lyx" @@ -309,8 +309,7 @@ Zaključek Raziskovana naloga predstavi kako je praktično mogoče preprosto implementirati učinkovito metodo za pridobivanje izvlečka metapodatkov iz omrežja BitTorrent. Prav tako je prikazana uporabna vrednost korpusa prenesenih podatkov za - nadaljne raziskave in osnovne metode analize takih podatkov ter preprost - iskalnik po metapodatkih. + nadaljnje raziskave in osnovne metode analize takih podatkov. \end_layout \begin_layout Section @@ -324,7 +323,7 @@ Implementirati travnik na večji količini strežnikov, ki nimajo težav z mrež \begin_layout Itemize Optimizirati travnik in ga prepisati v programski jezik z vgrajeno podporo - za bolj učinkovite podatkovne strukture ter načrtovalne sposobnosti dogodkov. + za bolj učinkovite podatkovne strukture ter sposobnosti načrtovanja dogodkov. \end_layout \begin_layout Itemize @@ -335,7 +334,7 @@ h možnosti, med drugim: \begin_deeper \begin_layout Itemize popularnost torrentov skozi čas (glede na velikost roja) z implementacijo - dodatka PEX + dodatka PEx \end_layout \begin_layout Itemize diff --git a/inf/rn/dok/qbittorrent.png b/inf/rn/dok/qbittorrent.png new file mode 100644 index 0000000..fdbc135 Binary files /dev/null and b/inf/rn/dok/qbittorrent.png differ -- cgit v1.2.3