#LyX 2.3 created this file. For more info see http://www.lyx.org/
\lyxformat 544
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass scrbook
\begin_preamble
% in case somebody want to have the label "Equation"
%\renewcommand{\eqref}[1]{Equation~(\negthinspace\autoref{#1})}
% that links to image floats jumps to the beginning
% of the float and not to its caption
\usepackage[figure]{hypcap}
% the pages of the TOC is numbered roman
% and a pdf-bookmark for the TOC is added
\let\myTOC\tableofcontents
\renewcommand\tableofcontents{%
\frontmatter
\pdfbookmark[1]{\contentsname}{}
\myTOC
\mainmatter }
% makes caption labels bold
% for more info about these settings, see
% https://ctan.org/tex-archive/macros/latex/contrib/koma-script/doc/scrguien.pdf
\setkomafont{captionlabel}{\bfseries}
\setcapindent{1em}
% enables calculations
\usepackage{calc}
% fancy page header/footer settings
% for more information see section 9 of
% ftp://www.ctan.org/pub/tex-archive/macros/latex2e/contrib/fancyhdr/fancyhdr.pdf
\renewcommand{\chaptermark}[1]{\markboth{#1}{#1}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
% increases the bottom float placement fraction
\renewcommand{\bottomfraction}{0.5}
% avoids that floats are placed above its sections
\let\mySection\section\renewcommand{\section}{\suppressfloats[t]\mySection}
% increases link area for cross-references and autoname them
% if you change the document language to e.g. French
% you must change "extrasenglish" to "extrasfrench"
% if you uncomment the following lines, you cannot use the reference version Ref+Text in LyX
%\AtBeginDocument{%
% \renewcommand{\ref}[1]{\autoref{#1}}
%}
%\def\refnamechanges{%
% \renewcommand*{\equationautorefname}[1]{}
% \renewcommand{\sectionautorefname}{sec.\negthinspace}
% \renewcommand{\subsectionautorefname}{sec.\negthinspace}
% \renewcommand{\subsubsectionautorefname}{sec.\negthinspace}
% \renewcommand{\figureautorefname}{Fig.\negthinspace}
% \renewcommand{\tableautorefname}{Tab.\negthinspace}
%}
%\@ifpackageloaded{babel}{\addto\extrasenglish{\refnamechanges}}{\refnamechanges}
\end_preamble
\options intoc,bibliography=totoc,index=totoc,BCOR10mm,captions=tableheading,titlepage
\use_default_options true
\master /usr/share/lyx/examples/thesis/thesis.lyx
\begin_modules
customHeadersFooters
\end_modules
\maintain_unincluded_children false
\language slovene
\language_package default
\inputencoding utf8
\fontencoding global
\font_roman "lmodern" "default"
\font_sans "lmss" "default"
\font_typewriter "lmtt" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures false
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command bibtex
\index_command default
\float_placement h
\paperfontsize 12
\spacing single
\use_hyperref true
\pdf_title "Your title"
\pdf_author "Your name"
\pdf_bookmarks true
\pdf_bookmarksnumbered true
\pdf_bookmarksopen true
\pdf_bookmarksopenlevel 1
\pdf_breaklinks false
\pdf_pdfborder true
\pdf_colorlinks false
\pdf_backref false
\pdf_pdfusetitle false
\pdf_quoted_options "pdfpagelayout=OneColumn, pdfnewwindow=true, pdfstartview=XYZ, plainpages=false"
\papersize a4paper
\use_geometry false
\use_package amsmath 2
\use_package amssymb 2
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine biblatex
\cite_engine_type authoryear
\biblio_style plain
\biblatex_bibstyle authoryear
\biblatex_citestyle authoryear
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 0
\use_minted 0
\branch Standalone
\selected 1
\filename_suffix 0
\color #ff0000
\end_branch
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 2
\paragraph_separation skip
\defskip medskip
\is_math_indent 1
\math_indentation default
\math_numbering_side default
\quotes_style german
\dynamic_quotes 0
\papercolumns 1
\papersides 2
\paperpagestyle fancy
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Left Header
\begin_inset Argument 1
status open
\begin_layout Plain Layout
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
chaptername
\end_layout
\end_inset
\begin_inset space ~
\end_inset
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
thechapter
\end_layout
\end_inset
\end_layout
\end_inset
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
rightmark
\end_layout
\end_inset
\begin_inset Note Note
status collapsed
\begin_layout Plain Layout
Enable page headers and add the chapter to the header line.
\end_layout
\end_inset
\end_layout
\begin_layout Right Header
\begin_inset Argument 1
status open
\begin_layout Plain Layout
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
leftmark
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Left Footer
\begin_inset Argument 1
status open
\begin_layout Plain Layout
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
thepage
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Center Footer
\end_layout
\begin_layout Right Footer
\begin_inset Argument 1
status open
\begin_layout Plain Layout
\end_layout
\end_inset
\begin_inset ERT
status collapsed
\begin_layout Plain Layout
\backslash
thepage
\end_layout
\end_inset
\end_layout
\begin_layout Chapter
Uvod
\end_layout
\begin_layout Section
Peer-to-peer omrežja za distribucijo datotek
\end_layout
\begin_layout Standard
Izmenjava in distribucija velikih datotek na internetnih omrežjih veliki
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 mrež za izmenjavo vsebine (angl.
\shape italic
CDN
\shape default
).
\end_layout
\begin_layout Standard
Koncept P2P (angl.
\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
začel deliti naprej drugim odjemalcem, ki to vsebino tudi sami iščejo.
S svojim sodelovanjem v distribuciji vsebine razbremeni ostale odjemalce,
ki datoteke distribuirajo prosilcem, saj so P2P omrežja izdelana tako,
da lahko odjemalci vsebino prejemajo od večih odjemalcev hkrati.
Čim več odjemalcev razpolaga z neko vsebino, tem manj podatkov mora poslati
posamezen odjemalec novemu odjemalcu, ki si to vsebino želi prenesti.
Tako se zmanjša obremenitev omrežja, saj je količina prenesenih podatkov
po omrežni topologiji čedalje bolj razporejena.
\end_layout
\begin_layout Standard
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,
ker odjemalci (neke datoteke) vedo za internetne naslove drugih odjemalcev,
saj lahko le tako neposredno čim bolj učinkovito komunicirajo z njimi.
\end_layout
\begin_layout Standard
Koncept P2P ni namenjen le distribuciji datotek, temveč se zaradi svoje
prednosti razbremenitve strežnikov dandanes uporablja vse pogosteje, na
primer pri spletnih videokonferencah, anonimizacijskih omrežjih, kriptovalutah,
internetu stvari in drugod.
\end_layout
\begin_layout Section
Protokol BitTorrent
\end_layout
\begin_layout Standard
Za distribucijo datotek morajo odjemalci za medsebojno komunikacijo uporabljati
standardiziran protokol za signalizacijo prenosov.
Eden izmed najbolj razvitih in uporabljenih protokolov je BitTorrent.
Prvo implementacijo je idejni avtor protokola izdelal leta 2001
\begin_inset CommandInset citation
LatexCommand cite
key "cohen01"
literal "false"
\end_inset
, s popularizacijo pa od leta 2008 z objavo dodatkov v repozitorij standardov
pri razvoju sodeluje širša javnost
\begin_inset CommandInset citation
LatexCommand cite
key "harrison07"
literal "false"
\end_inset
.
Zaradi razširljive zasnove je protokol namreč moč dopolnjevati in mu s
tem dodajati nove funkcije.
Pred uvedbo protokola DHT je BitTorrent še vedno temeljil na centralnih
strežnikih, ki koordinirajo skupek odjemalcev, leta 2005 pa so implementacije
začele implementirati od centraliziranih strežnikov povsem neodvisno delovanje.
\begin_inset CommandInset citation
LatexCommand cite
key "jones15"
literal "false"
\end_inset
\end_layout
\begin_layout Standard
Za nadaljnji opis je potrebno poznavanje pojmov, ki jih uvede BitTorrent:
\end_layout
\begin_layout Standard
\begin_inset Float table
wide false
sideways false
status open
\begin_layout Plain Layout
\noindent
\align center
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
Pojem
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Izvirno angleško ime
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Razlaga
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
soležnik
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
peer
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
odjemni program na računalniku ali računalnik, za povezavo nanj potrebujemo
njegov IP naslov in vrata
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
roj
\begin_inset CommandInset citation
LatexCommand cite
key "dis"
literal "false"
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
swarm
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
več soležnikov, ki prenašajo datoteke torrenta
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
torrent/metainfo (ni ustaljenega prevoda, neposredni prevod bi bil
\shape italic
hudournik
\shape default
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
torrent ali metainfo
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
strukturirana datoteka v obliki bencoding, ki vsebuje metapodatke o datotekah,
torej imena datotek, njihove velikosti, razporeditev po imenikih, zgoščene
vrednosti za preverjanje istovetnosti ob prenosu in drugo
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
sledilnik
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
tracker
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
centraliziran strežnik, ki hrani podatke o tem, kateri soležniki so v roju
določenega torrenta
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
košček
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
piece
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
del vsebine torrenta konstantne dolžine
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
infohash (ni ustaljenega prevoda)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
infohash
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
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
|
\begin_inset Text
\begin_layout Plain Layout
announce (ni ustaljenega prevoda, neposredni prevod bi bil
\shape italic
obvestilo
\shape default
)
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
announce ali ~ment
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
obvestilo ali obveščanje o obstoju soležnika za torrent, ki ga pošlje soležnik
bodisi sledilniku bodisi v DHT in s tem zagotovi, da bodo ostali soležniki
izvedeli za njegov obstoj in se potencialno povezali nanj
\end_layout
\end_inset
|
\end_inset
\begin_inset Caption Standard
\begin_layout Plain Layout
Nepopoln seznam pojmov BitTorrenta, potrebnih za razumevanje naloge
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
BitTorrent protokol ne omogoča iskanja po datotekah, ki se prenašajo po
omrežju.
Za prenos datoteke je najprej treba poznati metapodatke o obstoječih datotekah.
Ti metapodatki so shranjeni v t.
i.
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, zasebnost (angl.
private torrent) in podobne metapodatke.
\end_layout
\begin_layout Standard
V nalogi se ne osredotočam na klasičen način iskanja soležnikov s sledilniki,
prav tako ne govorim o prenosu datotek od soležnikov ter o signalizaciji
za omejevanje pasovne širine prenosa (choking), temveč samo o prenosu metapodat
kov.
\end_layout
\begin_layout Section
Protokol BitTorrent DHT
\end_layout
\begin_layout Standard
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 tej distribuirani
tabeli hranimo seznam soležnikov v roju.
\end_layout
\begin_layout Standard
\begin_inset Float table
wide false
sideways false
status open
\begin_layout Plain Layout
\noindent
\align center
\begin_inset Tabular
\begin_inset Text
\begin_layout Plain Layout
Pojem
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Izvirno angleško ime
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
Razlaga
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
vozlišče
\begin_inset CommandInset citation
LatexCommand cite
key "dis"
literal "false"
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
node
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
odjemni program na računalniku ali računalnik
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
usmerjevalna tabela
\begin_inset CommandInset citation
LatexCommand cite
key "dis"
literal "false"
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
routing table
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
seznam vozlišč, ki ga hrani posamezno vozlišče
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
ID vozlišča
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
node ID
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
160 bitov dolga naključno generirana številka, ki pripada vsakemu vozlišču
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
merilo za razdaljo
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
distance metric
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
funkcija (XOR), ki izrazi konceptualno razdaljo kot 160 bitov dolgo številko
med dvema vozliščema
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
koš
\begin_inset CommandInset citation
LatexCommand cite
key "dis"
literal "false"
\end_inset
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
bucket
\end_layout
\end_inset
|
\begin_inset Text
\begin_layout Plain Layout
na posamezno vozlišče relativna množica drugih vozlišč, ki so si glede na
merilo za razdaljo blizu, shranjena v usmerjevalni tabeli
\end_layout
\end_inset
|
\end_inset
\begin_inset Caption Standard
\begin_layout Plain Layout
Nepopoln seznam pojmov Kademile, potrebnih za razumevanje naloge.
Slovenski prevodi niso ustaljeni.
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Standard
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
LatexCommand cite
key "norberg08"
literal "false"
\end_inset
:
\end_layout
\begin_layout Paragraph
Pridobi soležnike
\end_layout
\begin_layout Standard
Vrne seznam soležnikov (IP naslov in vrata) za torrent, opisan z njegovim
infohashom.
\end_layout
\begin_layout Paragraph
Announce
\end_layout
\begin_layout Standard
V seznam soležnikov za torrent, opisan z njegovim infohashom, vstavi IP
naslov in vrata pošiljatelja zahteve.
\end_layout
\begin_layout Standard
Cilj
\begin_inset Branch seminarska
inverted 1
status open
\begin_layout Standard
raziskovalne
\end_layout
\end_inset
\begin_inset Branch seminarska
inverted 0
status open
\begin_layout Standard
seminarske
\end_layout
\end_inset
naloge je s sodelovanjem v DHT omrežju pridobiti čim več obstoječih ključev
v razpršilni tabeli, da lahko z operacijo
\series bold
pridobi soležnike
\series default
pridobimo sezname soležnikov, na katere se lahko povežemo in od njih prenesemo
metapodatke o torrentih, da lahko te podatke kot izvleček celotnega omrežja
kasneje uporabimo za analiziranje.
\end_layout
\begin_layout Section
Obstoječe implementacije
\end_layout
\begin_layout Standard
Da je to pridobivanje mogoče, se ve že od vpeljave protokola DHT, saj obstaja
mnogo implementacij koncepta pridobivanja podatkov iz omrežja DHT za prenos
metapodatkov torrentov:
\end_layout
\begin_layout Itemize
Spletna stran
\series bold
Btdigg
\begin_inset CommandInset citation
LatexCommand cite
key "evseenko11"
literal "false"
\end_inset
\series default
in program
\series bold
dhtcrawler2 —
\series default
prvi iskalnik po DHT omrežju
\begin_inset CommandInset citation
LatexCommand cite
key "muo11"
literal "false"
\end_inset
.
\end_layout
\begin_layout Itemize
Spletna stran v kitajščini pod več imeni:
\series bold
clzhizhu
\series default
.com, cilizhizhu, clzz1020.buzz, clzz1025.buzz, clzz1026.buzz idr.
Za obstoj te strani sem ugotovil med implementacijo programa, saj je njeno
iskanje invazivno in moti obstoječe delovanje DHT.
\end_layout
\begin_layout Itemize
Spletna stran
\series bold
I know what you download
\series default
\begin_inset CommandInset citation
LatexCommand cite
key "ikwyd"
literal "false"
\end_inset
, ki hrani najdene podatke o rojih in s tem razkrije identiteto prenašalcev.
\begin_inset CommandInset citation
LatexCommand cite
key "griffin17"
literal "false"
\end_inset
\end_layout
\begin_layout Standard
\begin_inset Branch Standalone
inverted 0
status open
\begin_layout Standard
\begin_inset Note Note
status open
\begin_layout Plain Layout
The contents of this branch is only output if this chapter is processed
on its own, i.
\begin_inset space \thinspace{}
\end_inset
e., not from the master.
This allows you to have a bibliography and a nomenclature if you only want
to output this chapter.
\end_layout
\end_inset
\end_layout
\begin_layout Standard
\begin_inset CommandInset include
LatexCommand include
filename "Bibliography.lyx"
\end_inset
\end_layout
\end_inset
\end_layout
\end_body
\end_document