diff --git a/bibliografie copy.bib b/bibliografie copy.bib new file mode 100644 index 0000000..28bbcba --- /dev/null +++ b/bibliografie copy.bib @@ -0,0 +1,214 @@ +% % This file was created with JabRef 2.6. +% % Encoding: UTF8 +% @ONLINE{t00, +% editor = {Bratková, Eva}, +% editortype={compiler}, +% title = {Metody citování literatury a strukturování bibliografických záznamů podle mezinárodních norem ISO 690 a ISO 690-2}, +% subtitle = {metodický materiál pro autory vysokoškolských kvalifikačních prací}, edition = {Verze 2.0, aktualiz. a rozšíř.}, +% location = {Praha}, +% publisher = {Odborná komise pro otázky elektronického zpřístupňování vysokoškolských kvalifikačních prací, Asociace knihoven vysokých škol ČR}, +% date = {2008-12-22}, +% pagetotal = {60}, +% url = {http://www.evskp.cz/SD/4c.pdf}, +% urldate = {2011-02-02}, +% hyphenation={czech} +% } + +% @BOOK{t01, +% author = {Borgman, Christine L.}, +% year={2003}, +% title = {From Gutenberg to the global information infrastructure}, +% subtitle = {access to information in the networked world}, +% edition= {first}, +% location = {Cambridge (Mass)}, +% publisher = {The MIT Press}, +% pagetotal = {xviii, 324}, +% isbn = {0-262-52345-0}, +% hyphenation={english} +% } + +% @INCOLLECTION{t02, +% author = {Greenberg, David}, +% year = {1998}, +% title = {Camel drivers and gatecrashers}, +% subtitle = {quality control in the digital research library}, +% editor = {Hawkins, B.L and Battin, P}, +% booktitle = {The mirage of continuity}, +% booksubtitle = {reconfiguring academic information resources for the 21st century}, +% location = {Washington (D.C.)}, +% publisher = {Council on Library and Information Resources; Association of American Universities}, +% pages = {105-116}, +% hyphenation = {english} +% } + +% @ARTICLE{t03, +% author = {LYNCH, C.}, +% year = {2005}, +% title = {Where do we go from here?}, +% subtitle = {the next decade for digital libraries}, +% journaltitle = {DLib Magazine}, +% volume = {11}, +% number = {7/8}, +% urldate ={2005-08-15}, +% url = {http://www.dlib.org/dlib/july05/lynch/07lynch.html}, +% issn = {1082-9873}, +% hyphenation = {english} +% } + +% @ARTICLE{cr, +% author = {{Národní knihovna}}, +% title = {A big paper}, +% journaltitle = {The journal of big papers}, +% year = {1991}, +% volume = {12}, +% number = {3}, +% issn={2232-332X}, +% hyphenation={english} +% } + +% @BOOK{kniha, +% title = {A big paper}, +% subtitle={Podtitul}, +% publisher = {Academia}, +% year = {1991}, +% author = {Děťa, Hugh and Rychlík, Tomáš}, +% edition = {2}, +% pagetotal = {550}, +% location = {Praha}, +% series={Pokusná edice}, +% isbn={978-44-55-X}, +% url={http://pokus.cz}, +% comment={Dostupné také z WWW}, +% urldate = {2011-01-12}, +% hyphenation={czech} +% } + +% @BOOK{kniha2, +% title = {Úplně úžasná knížka}, +% year = {1991}, +% author = {Děťa, Hugh and Rychlík, Tomáš and Další, Pepa and Spousta, Pepa and Skoro, Moc and Ale, Nestačí and Hodně}, +% edition = {3}, +% address = {Praha}, +% hyphenation={czech} +% } + +% @BOOK{kniha3, +% title = {Úplně úžasná knížka}, +% year = {1991}, +% author = {Děťa, Hugh and Rychlík, Tomáš and Další, Pepa and Spousta, Pepa and Skoro, Moc and Ale, Nestačí and Hodně}, +% edition = {3}, +% publisher={MIT Press}, +% address = {Praha}, +% pagetotal={332}, +% hyphenation={english} +% } + +% @ARTICLE{small, +% author = {Freely, I.P.}, +% title = {A small paper}, +% subtitle = {Podtitulek}, +% journaltitle = {The journal of small papers}, +% year = {1997}, +% volume = {1}, +% note = {to appear}, +% pages={2-5}, +% number={3}, +% hyphenation={czech} +% } + +% @ARTICLE{big, +% author = {Jass, Hugh}, +% title = {A big paper}, +% journal = {The journal of big papers}, +% year = {1991}, +% volume = {23} +% } + +% @ARTICLE{cs, +% author = {Černý, Hugh}, +% title = {Titulek}, +% journal = {The journal of big papers}, +% year = {1991}, +% volume = {12}, +% pages = {22-44}, +% doi = {10.112.22/jkn}, +% number = {2}, +% } + +% @BOOK{koll, +% author = {Kollmannová, Ludmila and Bubeniková, Libuše and Kopecká, Alena}, +% title = {Angličtina pro samouky}, +% edition = {5}, +% location = {Praha}, +% publisher = {Státní pedagogické nakladatelství}, +% year = {1977}, +% pagetotal = {525}, +% series = {Učebnice pro samouky}, +% isbn = {80-04-25663-5} +% } + +% @INBOOK{kap, +% author = {Novotná, Pepina}, +% title = {Podkapitola}, +% pages = {22-29}, +% chapter = {2.}, +% crossref = {koll} +% } + +% @PERIODICAL{tug, +% journaltitle = {TUGBoat}, +% publisher = {TUG}, +% issn = {1222-3333}, +% hyphenation = {english}, +% year={1980-}, +% skipbib={true}, +% url={http://tugboat.tug.org/} +% } + +% @ARTICLE{knuth, +% author = {Knuth, Donald}, +% title = {Journeys of \TeX}, +% volume = {17}, +% number = {3}, +% year = {2003}, +% pages = {12-22}, +% url = {http://tugboat.tug.org/kkk.pdf}, +% crossref={tug} +% } + +% @COLLECTION{sbornik, +% title = {Mimořádně užitečný sborník}, +% editor = {Geniální, Jiří}, +% year = {2007}, +% hyphenation = {czech}, +% location = {Praha}, +% publisher = {Academia}, +% isbn = {978-222-626-222-2} +% } +% @INCOLLECTION{prispevek1, +% crossref = {sbornik}, +% title = {Velmi zajímavý článek}, +% author = {Vlaštovka, Josef}, +% pages = {22-45} +% } + + + +@BOOK{distributed_systems, +author = {M. van Steen and A.S. Tanenbaum}, +title = {Distributed Systems}, +edition = {4}, +location = {Praha}, +publisher = {distributed-systems.net}, +year = {2023}, +urldate = {2026-08-03}, +isbn = {978-1543057386} +} + +@ONLINE{quic, + author = {{QUIC Working Group}}, + title = {RFC 9000: QUIC: A UDP-Based Multiplexed and Secure Transport}, + year = {2021}, + url = {https://www.rfc-editor.org/rfc/rfc9000.html}, + urldate = {2026-08-03}, +} diff --git a/bibliografie.bbl b/bibliografie.bbl new file mode 100644 index 0000000..e69de29 diff --git a/bibliografie.bib b/bibliografie.bib index 2c6ef7a..08a4bfb 100644 --- a/bibliografie.bib +++ b/bibliografie.bib @@ -1,193 +1,50 @@ -% This file was created with JabRef 2.6. -% Encoding: UTF8 -@ONLINE{t00, - editor = {Bratková, Eva}, - editortype={compiler}, - title = {Metody citování literatury a strukturování bibliografických záznamů podle mezinárodních norem ISO 690 a ISO 690-2}, - subtitle = {metodický materiál pro autory vysokoškolských kvalifikačních prací}, edition = {Verze 2.0, aktualiz. a rozšíř.}, - location = {Praha}, - publisher = {Odborná komise pro otázky elektronického zpřístupňování vysokoškolských kvalifikačních prací, Asociace knihoven vysokých škol ČR}, - date = {2008-12-22}, - pagetotal = {60}, - url = {http://www.evskp.cz/SD/4c.pdf}, - urldate = {2011-02-02}, - hyphenation={czech} + +@BOOK{distributed_systems, +author = {M. van Steen and A.S. Tanenbaum}, +title = {Distributed Systems}, +edition = {4}, +location = {Praha}, +publisher = {distributed-systems.net}, +year = {2023}, +urldate = {2026-08-03}, +isbn = {978-1543057386} } -@BOOK{t01, - author = {Borgman, Christine L.}, - year={2003}, - title = {From Gutenberg to the global information infrastructure}, - subtitle = {access to information in the networked world}, - edition= {first}, - location = {Cambridge (Mass)}, - publisher = {The MIT Press}, - pagetotal = {xviii, 324}, - isbn = {0-262-52345-0}, - hyphenation={english} +@BOOK{velky_pruvodce, +author = {KABELOVÁ, Alena a DOSTÁLEK, Libor}, +title = {Velký průvodce protokoly TCP/IP a systémem DNS}, +edition = {5}, +location = {Brno}, +publisher = {Computer Press, a.s.}, +year = {2008}, +urldate = {2026-08-03}, +isbn = {978-80-251-2236-5} } -@INCOLLECTION{t02, - author = {Greenberg, David}, - year = {1998}, - title = {Camel drivers and gatecrashers}, - subtitle = {quality control in the digital research library}, - editor = {Hawkins, B.L and Battin, P}, - booktitle = {The mirage of continuity}, - booksubtitle = {reconfiguring academic information resources for the 21st century}, - location = {Washington (D.C.)}, - publisher = {Council on Library and Information Resources; Association of American Universities}, - pages = {105-116}, +@ONLINE{quic, + author = {{QUIC Working Group}}, + title = {RFC 9000: QUIC: A UDP-Based Multiplexed and Secure Transport}, + year = {2021}, + url = {https://www.rfc-editor.org/rfc/rfc9000.html}, + urldate = {2026-08-03}, +} + +@BOOK{computer_networks, +author = {Peterson Larry L., Davie Bruce S.}, +title = {Computer networks: a system approach}, +edition = {6}, +location = {Cambridge}, +publisher = {Elsevier}, +year = {2022}, +urldate = {2026-08-03}, +isbn = {978-0128182000} +} + +@ONLINE{interpolation, + author = {Fiedler, Glenn}, + title = {Snapshot Interpolation}, + year = {2015}, + url = {https://www.gafferongames.com/post/snapshot_interpolation/}, + urldate = {2026-08-03}, hyphenation = {english} } - -@ARTICLE{t03, - author = {LYNCH, C.}, - year = {2005}, - title = {Where do we go from here?}, - subtitle = {the next decade for digital libraries}, - journaltitle = {DLib Magazine}, - volume = {11}, - number = {7/8}, - urldate ={2005-08-15}, - url = {http://www.dlib.org/dlib/july05/lynch/07lynch.html}, - issn = {1082-9873}, - hyphenation = {english} -} - -@ARTICLE{cr, - author = {{Národní knihovna}}, - title = {A big paper}, - journaltitle = {The journal of big papers}, - year = {1991}, - volume = {12}, - number = {3}, - issn={2232-332X}, - hyphenation={english} -} - -@BOOK{kniha, - title = {A big paper}, - subtitle={Podtitul}, - publisher = {Academia}, - year = {1991}, - author = {Děťa, Hugh and Rychlík, Tomáš}, - edition = {2}, - pagetotal = {550}, - location = {Praha}, - series={Pokusná edice}, - isbn={978-44-55-X}, - url={http://pokus.cz}, - comment={Dostupné také z WWW}, - urldate = {2011-01-12}, - hyphenation={czech} -} - -@BOOK{kniha2, - title = {Úplně úžasná knížka}, - year = {1991}, - author = {Děťa, Hugh and Rychlík, Tomáš and Další, Pepa and Spousta, Pepa and Skoro, Moc and Ale, Nestačí and Hodně}, - edition = {3}, - address = {Praha}, - hyphenation={czech} -} - -@BOOK{kniha3, - title = {Úplně úžasná knížka}, - year = {1991}, - author = {Děťa, Hugh and Rychlík, Tomáš and Další, Pepa and Spousta, Pepa and Skoro, Moc and Ale, Nestačí and Hodně}, - edition = {3}, - publisher={MIT Press}, - address = {Praha}, - pagetotal={332}, - hyphenation={english} -} - -@ARTICLE{small, - author = {Freely, I.P.}, - title = {A small paper}, - subtitle = {Podtitulek}, - journaltitle = {The journal of small papers}, - year = {1997}, - volume = {1}, - note = {to appear}, - pages={2-5}, - number={3}, - hyphenation={czech} -} - -@ARTICLE{big, - author = {Jass, Hugh}, - title = {A big paper}, - journal = {The journal of big papers}, - year = {1991}, - volume = {23} -} - -@ARTICLE{cs, - author = {Černý, Hugh}, - title = {Titulek}, - journal = {The journal of big papers}, - year = {1991}, - volume = {12}, - pages = {22-44}, - doi = {10.112.22/jkn}, - number = {2}, -} - -@BOOK{koll, - author = {Kollmannová, Ludmila and Bubeniková, Libuše and Kopecká, Alena}, - title = {Angličtina pro samouky}, - edition = {5}, - location = {Praha}, - publisher = {Státní pedagogické nakladatelství}, - year = {1977}, - pagetotal = {525}, - series = {Učebnice pro samouky}, - isbn = {80-04-25663-5} -} - -@INBOOK{kap, - author = {Novotná, Pepina}, - title = {Podkapitola}, - pages = {22-29}, - chapter = {2.}, - crossref = {koll} -} - -@PERIODICAL{tug, - journaltitle = {TUGBoat}, - publisher = {TUG}, - issn = {1222-3333}, - hyphenation = {english}, - year={1980-}, - skipbib={true}, - url={http://tugboat.tug.org/} -} - -@ARTICLE{knuth, - author = {Knuth, Donald}, - title = {Journeys of \TeX}, - volume = {17}, - number = {3}, - year = {2003}, - pages = {12-22}, - url = {http://tugboat.tug.org/kkk.pdf}, - crossref={tug} -} - -@COLLECTION{sbornik, -title = {Mimořádně užitečný sborník}, -editor = {Geniální, Jiří}, -year = {2007}, -hyphenation = {czech}, -location = {Praha}, -publisher = {Academia}, -isbn = {978-222-626-222-2} -} -@INCOLLECTION{prispevek1, -crossref = {sbornik}, -title = {Velmi zajímavý článek}, -author = {Vlaštovka, Josef}, -pages = {22-45} -} diff --git a/bibliografie.bib.bbl b/bibliografie.bib.bbl new file mode 100644 index 0000000..e69de29 diff --git a/bibliografie.bib.blg b/bibliografie.bib.blg new file mode 100644 index 0000000..f680129 --- /dev/null +++ b/bibliografie.bib.blg @@ -0,0 +1,5 @@ +[0] Config.pm:328> INFO - This is Biber 2.21 +[0] Config.pm:331> INFO - Logfile is './bibliografie.bib.blg' +[42] biber:342> INFO - === Mon Aug 3, 2026, 19:28:54 +[82] Utils.pm:479> ERROR - Cannot find './bibliografie.bib.bcf'! +[82] Biber.pm:137> INFO - ERRORS: 1 diff --git a/bibliografie.blg b/bibliografie.blg new file mode 100644 index 0000000..97b844d --- /dev/null +++ b/bibliografie.blg @@ -0,0 +1,5 @@ +[0] Config.pm:328> INFO - This is Biber 2.21 +[0] Config.pm:331> INFO - Logfile is 'bibliografie.blg' +[43] biber:342> INFO - === Mon Aug 3, 2026, 19:29:15 +[86] Utils.pm:479> ERROR - Cannot find 'bibliografie.bcf'! +[86] Biber.pm:137> INFO - ERRORS: 1 diff --git a/kidiplom.aux b/kidiplom.aux index 00ca2af..0231e6e 100644 --- a/kidiplom.aux +++ b/kidiplom.aux @@ -24,186 +24,201 @@ \BKM@entry{id=4,open,dest={6B693A746F63},srcline={148}}{5C3337365C3337375C3030304F5C303030625C303030735C303030615C30303068} \BKM@entry{id=5,open,dest={73656374696F6E2E31},srcline={159}}{5C3337365C3337375C303030315C3030305C3034305C3030305C3333325C303030765C3030306F5C30303064} \@writefile{toc}{\contentsline {section}{\numberline {1}Úvod}{8}{section.1}\protected@file@percent } -\BKM@entry{id=6,open,dest={73656374696F6E2E32},srcline={204}}{5C3337365C3337375C303030325C3030305C3034305C303030505C3030306F5C3030315C3031355C3030305C3335355C303030745C303030615C3030315C3031355C3030306F5C303030765C3030305C3334315C3030305C3034305C303030735C3030305C3335355C3030315C313435} -\BKM@entry{id=7,open,dest={73756273656374696F6E2E322E31},srcline={213}}{5C3337365C3337375C303030325C3030302E5C303030315C3030305C3034305C3030304B5C3030306F5C3030306D5C303030755C3030306E5C303030695C3030306B5C303030615C303030635C30303065} -\@writefile{toc}{\contentsline {section}{\numberline {2}Počítačová síť}{9}{section.2}\protected@file@percent } -\newlabel{sec:NetworkCommunication}{{2}{9}{Počítačová síť}{section.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Komunikace}{9}{subsection.2.1}\protected@file@percent } -\BKM@entry{id=8,open,dest={73756273756273656374696F6E2E322E312E31},srcline={223}}{5C3337365C3337375C303030325C3030302E5C303030315C3030302E5C303030315C3030305C3034305C3030304D5C3030306F5C303030645C303030655C3030306C5C303030795C3030305C3034305C303030705C303030725C3030306F5C3030305C3034305C3030306B5C3030306F5C3030306D5C303030755C3030306E5C303030695C3030306B5C303030615C303030635C30303069} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Modely pro komunikaci}{10}{subsubsection.2.1.1}\protected@file@percent } -\BKM@entry{id=9,open,dest={73656374696F6E2E33},srcline={252}}{5C3337365C3337375C303030335C3030305C3034305C303030445C303030695C303030735C303030745C303030725C303030695C303030625C303030755C3030306F5C303030765C303030615C3030306E5C3030305C3335315C3030305C3034305C303030735C303030795C303030735C303030745C3030305C3335315C3030306D5C30303079} -\BKM@entry{id=10,open,dest={73756273656374696F6E2E332E31},srcline={267}}{5C3337365C3337375C303030335C3030302E5C303030315C3030305C3034305C303030415C303030725C303030635C303030685C303030695C303030745C303030655C3030306B5C303030745C303030755C303030725C30303079} -\BKM@entry{id=11,open,dest={73756273756273656374696F6E2E332E312E31},srcline={273}}{5C3337365C3337375C303030335C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030535C3030306F5C303030665C303030745C303030775C303030615C303030725C3030306F5C303030765C3030305C3334315C3030305C3034305C303030615C303030725C303030635C303030685C303030695C303030745C303030655C3030306B5C303030745C303030755C303030725C30303061} -\@writefile{toc}{\contentsline {section}{\numberline {3}Distribuované systémy}{11}{section.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Architektury}{11}{subsection.3.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}Softwarová architektura}{11}{subsubsection.3.1.1}\protected@file@percent } -\BKM@entry{id=12,open,dest={73756273756273656374696F6E2E332E312E32},srcline={289}}{5C3337365C3337375C303030335C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030535C303030795C303030735C303030745C3030305C3335315C3030306D5C3030306F5C303030765C3030305C3335315C3030305C3034305C303030615C303030725C303030635C303030685C303030695C303030745C303030655C3030306B5C303030745C303030755C303030725C30303079} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.2}Systémové architektury}{12}{subsubsection.3.1.2}\protected@file@percent } -\newlabel{sec:system_architecture}{{3.1.2}{12}{Systémové architektury}{subsubsection.3.1.2}{}} -\BKM@entry{id=13,open,dest={73756273656374696F6E2E332E32},srcline={304}}{5C3337365C3337375C303030335C3030302E5C303030325C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C30303079} -\BKM@entry{id=14,open,dest={73756273756273656374696F6E2E332E322E31},srcline={320}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030315C3030305C3034305C303030525C3030306F5C303030645C303030695C3030306E5C303030615C3030305C3034305C303030705C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C3030315C3135375C3030305C3034305C303030545C303030435C303030505C3030302F5C303030495C30303050} +\BKM@entry{id=6,open,dest={73656374696F6E2E32},srcline={213}}{5C3337365C3337375C303030325C3030305C3034305C303030445C303030695C303030735C303030745C303030725C303030695C303030625C303030755C3030306F5C303030765C303030615C3030306E5C3030305C3335315C3030305C3034305C303030735C303030795C303030735C303030745C3030305C3335315C3030306D5C30303079} +\BKM@entry{id=7,open,dest={73756273656374696F6E2E322E31},srcline={221}}{5C3337365C3337375C303030325C3030302E5C303030315C3030305C3034305C303030505C3030306F5C3030315C3031355C3030305C3335355C303030745C303030615C3030315C3031355C3030306F5C303030765C3030305C3334315C3030305C3034305C303030735C3030305C3335355C3030315C313435} +\@writefile{toc}{\contentsline {section}{\numberline {2}Distribuované systémy}{9}{section.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Počítačová síť}{9}{subsection.2.1}\protected@file@percent } +\newlabel{sec:NetworkCommunication}{{2.1}{9}{Počítačová síť}{subsection.2.1}{}} +\BKM@entry{id=8,open,dest={73756273756273656374696F6E2E322E312E31},srcline={230}}{5C3337365C3337375C303030325C3030302E5C303030315C3030302E5C303030315C3030305C3034305C3030304B5C3030306F5C3030306D5C303030755C3030306E5C303030695C3030306B5C303030615C303030635C30303065} +\BKM@entry{id=9,open,dest={73756273756273656374696F6E2E322E312E32},srcline={243}}{5C3337365C3337375C303030325C3030302E5C303030315C3030302E5C303030325C3030305C3034305C3030304D5C3030306F5C303030645C303030655C3030306C5C303030795C3030305C3034305C303030705C303030725C3030306F5C3030305C3034305C3030306B5C3030306F5C3030306D5C303030755C3030306E5C303030695C3030306B5C303030615C303030635C30303069} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Komunikace}{10}{subsubsection.2.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2}Modely pro komunikaci}{10}{subsubsection.2.1.2}\protected@file@percent } +\BKM@entry{id=10,open,dest={73756273656374696F6E2E322E32},srcline={264}}{5C3337365C3337375C303030325C3030302E5C303030325C3030305C3034305C303030415C303030725C303030635C303030685C303030695C303030745C303030655C3030306B5C303030745C303030755C303030725C303030795C3030305C3034305C303030735C303030795C303030735C303030745C3030305C3335315C3030306D5C3030315C313537} +\BKM@entry{id=11,open,dest={73756273756273656374696F6E2E322E322E31},srcline={271}}{5C3337365C3337375C303030325C3030302E5C303030325C3030302E5C303030315C3030305C3034305C303030535C3030306F5C303030665C303030745C303030775C303030615C303030725C3030306F5C303030765C3030305C3334315C3030305C3034305C303030615C303030725C303030635C303030685C303030695C303030745C303030655C3030306B5C303030745C303030755C303030725C30303061} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Architektury systémů}{11}{subsection.2.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.1}Softwarová architektura}{11}{subsubsection.2.2.1}\protected@file@percent } +\BKM@entry{id=12,open,dest={73756273756273656374696F6E2E322E322E32},srcline={287}}{5C3337365C3337375C303030325C3030302E5C303030325C3030302E5C303030325C3030305C3034305C303030535C303030795C303030735C303030745C3030305C3335315C3030306D5C3030306F5C303030765C3030305C3335315C3030305C3034305C303030615C303030725C303030635C303030685C303030695C303030745C303030655C3030306B5C303030745C303030755C303030725C30303079} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.2}Systémové architektury}{12}{subsubsection.2.2.2}\protected@file@percent } +\newlabel{sec:system_architecture}{{2.2.2}{12}{Systémové architektury}{subsubsection.2.2.2}{}} +\BKM@entry{id=13,open,dest={73656374696F6E2E33},srcline={302}}{5C3337365C3337375C303030335C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C30303079} +\BKM@entry{id=14,open,dest={73756273656374696F6E2E332E31},srcline={318}}{5C3337365C3337375C303030335C3030302E5C303030315C3030305C3034305C303030525C3030306F5C303030645C303030695C3030306E5C303030615C3030305C3034305C303030705C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C3030315C3135375C3030305C3034305C303030545C303030435C303030505C3030302F5C303030495C30303050} \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Vrstvená architektura}}{13}{figure.1}\protected@file@percent } \newlabel{fig:layer_architecture}{{1}{13}{Vrstvená architektura}{figure.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Protokoly}{13}{subsection.3.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}Rodina protokolů TCP/IP}{14}{subsubsection.3.2.1}\protected@file@percent } -\BKM@entry{id=15,open,dest={73756273656374696F6E2E332E33},srcline={363}}{5C3337365C3337375C303030335C3030302E5C303030335C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C303030795C3030305C3034305C303030765C3030305C3034305C303030615C303030705C3030306C5C303030695C3030306B5C303030615C3030315C3031355C3030306E5C3030305C3335355C3030305C3034305C303030765C303030725C303030735C303030745C303030765C3030315C303333} -\BKM@entry{id=16,open,dest={73756273756273656374696F6E2E332E332E31},srcline={367}}{5C3337365C3337375C303030335C3030302E5C303030335C3030302E5C303030315C3030305C3034305C303030485C303030545C303030545C30303050} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Protokoly v aplikační vrstvě}{15}{subsection.3.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.1}HTTP}{15}{subsubsection.3.3.1}\protected@file@percent } -\BKM@entry{id=17,open,dest={73756273756273656374696F6E2E332E332E32},srcline={388}}{5C3337365C3337375C303030335C3030302E5C303030335C3030302E5C303030325C3030305C3034305C303030485C303030545C303030545C303030505C3030302F5C30303033} -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Komunikace vrstev TCP/IP}}{16}{figure.2}\protected@file@percent } -\newlabel{fig:tcpip}{{2}{16}{Komunikace vrstev TCP/IP}{figure.2}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.2}HTTP/3}{16}{subsubsection.3.3.2}\protected@file@percent } -\BKM@entry{id=18,open,dest={73756273656374696F6E2E332E34},srcline={414}}{5C3337365C3337375C303030335C3030302E5C303030345C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C303030795C3030305C3034305C303030765C3030305C3034305C303030745C303030725C303030615C3030306E5C303030735C303030705C3030306F5C303030725C303030745C3030306E5C3030305C3335355C3030305C3034305C303030765C303030725C303030735C303030745C303030765C3030315C303333} -\BKM@entry{id=19,open,dest={73756273756273656374696F6E2E332E342E31},srcline={420}}{5C3337365C3337375C303030335C3030302E5C303030345C3030302E5C303030315C3030305C3034305C303030545C303030435C30303050} +\@writefile{toc}{\contentsline {section}{\numberline {3}Protokoly}{13}{section.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Rodina protokolů TCP/IP}{13}{subsection.3.1}\protected@file@percent } +\abx@aux@cite{0}{computer_networks} +\abx@aux@segm{0}{0}{computer_networks} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Komunikace vrstev TCP/IP}}{14}{figure.2}\protected@file@percent } +\newlabel{fig:tcpip}{{2}{14}{Komunikace vrstev TCP/IP}{figure.2}{}} +\BKM@entry{id=15,open,dest={73756273656374696F6E2E332E32},srcline={357}}{5C3337365C3337375C303030335C3030302E5C303030325C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C303030795C3030305C3034305C303030765C3030305C3034305C303030615C303030705C3030306C5C303030695C3030306B5C303030615C3030315C3031355C3030306E5C3030305C3335355C3030305C3034305C303030765C303030725C303030735C303030745C303030765C3030315C303333} +\BKM@entry{id=16,open,dest={73756273756273656374696F6E2E332E322E31},srcline={361}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030315C3030305C3034305C303030485C303030545C303030545C30303050} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Protokoly v aplikační vrstvě}{15}{subsection.3.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.1}HTTP}{15}{subsubsection.3.2.1}\protected@file@percent } +\BKM@entry{id=17,open,dest={73756273756273656374696F6E2E332E322E32},srcline={382}}{5C3337365C3337375C303030335C3030302E5C303030325C3030302E5C303030325C3030305C3034305C303030485C303030545C303030545C303030505C3030302F5C30303033} +\BKM@entry{id=18,open,dest={73756273656374696F6E2E332E33},srcline={408}}{5C3337365C3337375C303030335C3030302E5C303030335C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C303030795C3030305C3034305C303030765C3030305C3034305C303030745C303030725C303030615C3030306E5C303030735C303030705C3030306F5C303030725C303030745C3030306E5C3030305C3335355C3030305C3034305C303030765C303030725C303030735C303030745C303030765C3030315C303333} +\BKM@entry{id=19,open,dest={73756273756273656374696F6E2E332E332E31},srcline={414}}{5C3337365C3337375C303030335C3030302E5C303030335C3030302E5C303030315C3030305C3034305C303030545C303030435C30303050} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.2.2}HTTP/3}{16}{subsubsection.3.2.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Protokoly v transportní vrstvě}{16}{subsection.3.3}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Vizualizace HTTP/2 blokování}}{17}{figure.3}\protected@file@percent } \newlabel{fig:http_blocking}{{3}{17}{Vizualizace HTTP/2 blokování}{figure.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Protokoly v transportní vrstvě}{17}{subsection.3.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.1}TCP}{17}{subsubsection.3.4.1}\protected@file@percent } -\BKM@entry{id=20,open,dest={73756273756273656374696F6E2E332E342E32},srcline={434}}{5C3337365C3337375C303030335C3030302E5C303030345C3030302E5C303030325C3030305C3034305C303030555C303030445C30303050} -\BKM@entry{id=21,open,dest={73756273756273656374696F6E2E332E342E33},srcline={442}}{5C3337365C3337375C303030335C3030302E5C303030345C3030302E5C303030335C3030305C3034305C303030515C303030555C303030495C30303043} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.2}UDP}{18}{subsubsection.3.4.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.4.3}QUIC}{18}{subsubsection.3.4.3}\protected@file@percent } -\BKM@entry{id=22,open,dest={73656374696F6E2E34},srcline={606}}{5C3337365C3337375C303030345C3030305C3034305C303030485C303030725C30303061} -\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces QUIC handshake}}{21}{figure.4}\protected@file@percent } -\newlabel{fig:quic_handshake}{{4}{21}{QUIC handshake}{figure.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.1}TCP}{17}{subsubsection.3.3.1}\protected@file@percent } +\BKM@entry{id=20,open,dest={73756273756273656374696F6E2E332E332E32},srcline={428}}{5C3337365C3337375C303030335C3030302E5C303030335C3030302E5C303030325C3030305C3034305C303030555C303030445C30303050} +\BKM@entry{id=21,open,dest={73756273756273656374696F6E2E332E332E33},srcline={436}}{5C3337365C3337375C303030335C3030302E5C303030335C3030302E5C303030335C3030305C3034305C303030515C303030555C303030495C30303043} +\abx@aux@cite{0}{quic} +\abx@aux@segm{0}{0}{quic} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.2}UDP}{18}{subsubsection.3.3.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.3}QUIC}{18}{subsubsection.3.3.3}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces QUIC handshake}}{20}{figure.4}\protected@file@percent } +\newlabel{fig:quic_handshake}{{4}{20}{QUIC handshake}{figure.4}{}} +\BKM@entry{id=22,open,dest={73656374696F6E2E34},srcline={576}}{5C3337365C3337375C303030345C3030305C3034305C303030485C303030725C30303061} +\BKM@entry{id=23,open,dest={73756273656374696F6E2E342E31},srcline={591}}{5C3337365C3337375C303030345C3030302E5C303030315C3030305C3034305C303030455C3030306E5C303030675C303030695C3030306E5C30303065} \@writefile{toc}{\contentsline {section}{\numberline {4}Hra}{21}{section.4}\protected@file@percent } -\BKM@entry{id=23,open,dest={73756273656374696F6E2E342E31},srcline={621}}{5C3337365C3337375C303030345C3030302E5C303030315C3030305C3034305C303030455C3030306E5C303030675C303030695C3030306E5C30303065} -\BKM@entry{id=24,open,dest={73756273756273656374696F6E2E342E312E31},srcline={653}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030465C303030795C3030307A5C303030695C303030635C3030306B5C3030305C3337355C3030305C3034305C303030655C3030306E5C303030675C303030695C3030306E5C30303065} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Engine}{22}{subsection.4.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Engine}{21}{subsection.4.1}\protected@file@percent } +\BKM@entry{id=24,open,dest={73756273756273656374696F6E2E342E312E31},srcline={623}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030465C303030795C3030307A5C303030695C303030635C3030306B5C3030305C3337355C3030305C3034305C303030655C3030306E5C303030675C303030695C3030306E5C30303065} +\BKM@entry{id=25,open,dest={73756273756273656374696F6E2E342E312E32},srcline={631}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030565C303030795C3030306B5C303030725C303030655C303030735C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535} +\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Architektura hry pro jednoho hráče}}{22}{figure.5}\protected@file@percent } +\newlabel{fig:single_player_game}{{5}{22}{Architektura hry pro jednoho hráče}{figure.5}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}Fyzický engine}{22}{subsubsection.4.1.1}\protected@file@percent } -\BKM@entry{id=25,open,dest={73756273756273656374696F6E2E342E312E32},srcline={661}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030565C303030795C3030306B5C303030725C303030655C303030735C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535} -\BKM@entry{id=26,open,dest={73756273756273656374696F6E2E342E312E33},srcline={669}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030455C3030306E5C303030745C303030695C303030745C303030795C3030302D5C303030435C3030306F5C3030306D5C303030705C3030306F5C3030306E5C303030655C3030306E5C303030745C3030302D5C303030535C303030795C303030735C303030745C303030655C3030306D} -\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Architektura hry pro jednoho hráče}}{23}{figure.5}\protected@file@percent } -\newlabel{fig:single_player_game}{{5}{23}{Architektura hry pro jednoho hráče}{figure.5}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Vykreslování}{23}{subsubsection.4.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Vykreslování}{22}{subsubsection.4.1.2}\protected@file@percent } +\BKM@entry{id=26,open,dest={73756273756273656374696F6E2E342E312E33},srcline={639}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030455C3030306E5C303030745C303030695C303030745C303030795C3030302D5C303030435C3030306F5C3030306D5C303030705C3030306F5C3030306E5C303030655C3030306E5C303030745C3030302D5C303030535C303030795C303030735C303030745C303030655C3030306D} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.3}Entity-Component-System}{23}{subsubsection.4.1.3}\protected@file@percent } -\newlabel{code:entt}{{1}{24}{Příklad použití knihovny Entt}{lstlisting.1}{}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Příklad použití knihovny Entt}{24}{lstlisting.1}\protected@file@percent } -\BKM@entry{id=27,open,dest={73756273756273656374696F6E2E342E312E34},srcline={711}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030345C3030305C3034305C303030495C3030306D5C303030475C303030755C30303069} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.4}ImGui}{25}{subsubsection.4.1.4}\protected@file@percent } -\BKM@entry{id=28,open,dest={73656374696F6E2E35},srcline={730}}{5C3337365C3337375C303030355C3030305C3034305C303030485C303030725C303030615C3030305C3034305C303030765C3030305C3335355C303030635C303030655C3030305C3034305C303030685C303030725C3030305C3334315C3030315C3031355C3030315C313537} -\BKM@entry{id=29,open,dest={73756273656374696F6E2E352E31},srcline={751}}{5C3337365C3337375C303030355C3030302E5C303030315C3030305C3034305C303030535C303030655C303030725C303030765C303030655C30303072} -\@writefile{toc}{\contentsline {section}{\numberline {5}Hra více hráčů}{26}{section.5}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Server}{26}{subsection.5.1}\protected@file@percent } -\BKM@entry{id=30,open,dest={73756273756273656374696F6E2E352E312E31},srcline={761}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030525C303030655C303030675C303030695C303030735C303030745C303030725C3030305C3034305C3030306B5C3030306C5C303030695C303030655C3030306E5C303030745C3030315C313537} -\BKM@entry{id=31,open,dest={73756273756273656374696F6E2E352E312E32},srcline={767}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030535C303030655C303030725C303030765C303030655C303030725C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075} -\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Architektura hry pro více hráčů}}{27}{figure.6}\protected@file@percent } -\newlabel{fig:multi_player_game}{{6}{27}{Architektura hry pro více hráčů}{figure.6}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1}Registr klientů}{27}{subsubsection.5.1.1}\protected@file@percent } -\BKM@entry{id=32,open,dest={73756273756273656374696F6E2E352E312E33},srcline={771}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030535C303030705C303030725C3030305C3334315C303030765C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537} -\BKM@entry{id=33,open,dest={73756273656374696F6E2E352E32},srcline={781}}{5C3337365C3337375C303030355C3030302E5C303030325C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C30303074} -\BKM@entry{id=34,open,dest={73756273756273656374696F6E2E352E322E31},srcline={785}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030315C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075} -\BKM@entry{id=35,open,dest={73756273756273656374696F6E2E352E322E32},srcline={789}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030325C3030305C3034305C303030495C3030306E5C303030745C303030655C303030725C303030705C3030306F5C3030306C5C303030615C303030635C30303065} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.2}Server Replikátoru}{28}{subsubsection.5.1.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.3}Správa zájmů}{28}{subsubsection.5.1.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Klient}{28}{subsection.5.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.1}Klient Replikátoru}{28}{subsubsection.5.2.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.2}Interpolace}{28}{subsubsection.5.2.2}\protected@file@percent } -\BKM@entry{id=36,open,dest={73756273756273656374696F6E2E352E322E33},srcline={793}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030335C3030305C3034305C303030525C3030306F5C3030306C5C3030306C5C303030625C303030615C303030635C3030306B} -\BKM@entry{id=37,open,dest={73756273656374696F6E2E352E33},srcline={803}}{5C3337365C3337375C303030355C3030302E5C303030335C3030305C3034305C303030505C3030306F5C303030735C3030305C3335355C3030306C5C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076} -\BKM@entry{id=38,open,dest={73756273756273656374696F6E2E352E332E31},srcline={814}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030315C3030305C3034305C3030304B5C3030305C3336335C303030645C3030306F5C303030765C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.3}Rollback}{29}{subsubsection.5.2.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Posílání zpráv}{29}{subsection.5.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1}Kódování zpráv}{29}{subsubsection.5.3.1}\protected@file@percent } -\BKM@entry{id=39,open,dest={73756273756273656374696F6E2E352E332E32},srcline={822}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030325C3030305C3034305C303030495C3030306D5C303030705C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C303030615C303030635C30303065} -\BKM@entry{id=40,open,dest={73756273756273656374696F6E2E352E332E33},srcline={826}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030335C3030305C3034305C303030445C303030655C303030745C303030655C3030306B5C303030635C303030655C3030305C3034305C303030615C3030305C3034305C3030306E5C3030305C3334315C303030705C303030725C303030615C303030765C303030615C3030305C3034305C303030635C303030685C303030795C30303062} -\BKM@entry{id=41,open,dest={73756273656374696F6E2E352E34},srcline={833}}{5C3337365C3337375C303030355C3030302E5C303030345C3030305C3034305C303030535C303030655C303030725C303030695C303030615C3030306C5C303030695C3030307A5C303030615C303030635C30303065} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2}Implementace}{30}{subsubsection.5.3.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.3}Detekce a náprava chyb}{30}{subsubsection.5.3.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Serializace}{30}{subsection.5.4}\protected@file@percent } -\BKM@entry{id=42,open,dest={73756273656374696F6E2E352E35},srcline={867}}{5C3337365C3337375C303030355C3030302E5C303030355C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C3030305C3034305C303030515C303030555C303030495C303030435C30303072} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}cpp}{31}{lstlisting.2}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Protokol QUICr}{31}{subsection.5.5}\protected@file@percent } -\BKM@entry{id=43,open,dest={73756273756273656374696F6E2E352E352E31},srcline={880}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030315C3030305C3034305C303030525C3030305C3334315C3030306D5C303030635C30303065} -\BKM@entry{id=44,open,dest={73756273756273656374696F6E2E352E352E32},srcline={893}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030325C3030305C3034305C303030485C303030615C3030306E5C303030645C303030735C303030685C303030615C3030306B5C30303065} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1}Rámce}{32}{subsubsection.5.5.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2}Handshake}{32}{subsubsection.5.5.2}\protected@file@percent } -\newlabel{sec:quicr_handshake}{{5.5.2}{32}{Handshake}{subsubsection.5.5.2}{}} -\BKM@entry{id=45,open,dest={73756273756273656374696F6E2E352E352E33},srcline={927}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030335C3030305C3034305C303030535C303030705C3030306F5C3030306C5C303030655C303030685C3030306C5C303030695C303030765C3030306F5C303030735C30303074} -\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Stavový stroj QUICr handshake}}{33}{figure.7}\protected@file@percent } -\newlabel{fig:quicr_handshake}{{7}{33}{Stavový stroj QUICr handshake}{figure.7}{}} -\BKM@entry{id=46,open,dest={73756273756273656374696F6E2E352E352E34},srcline={949}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030345C3030305C3034305C303030455C3030306E5C3030306B5C3030306F5C303030645C3030305C3335315C30303072} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.3}Spolehlivost}{34}{subsubsection.5.5.3}\protected@file@percent } -\newlabel{sec:quicr_reliability}{{5.5.3}{34}{Spolehlivost}{subsubsection.5.5.3}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.4}Enkodér}{34}{subsubsection.5.5.4}\protected@file@percent } -\BKM@entry{id=47,open,dest={73756273756273656374696F6E2E352E352E35},srcline={957}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030355C3030305C3034305C303030545C303030655C303030735C303030745C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535} -\BKM@entry{id=48,open,dest={73756273656374696F6E2E352E36},srcline={998}}{5C3337365C3337375C303030355C3030302E5C303030365C3030305C3034305C303030485C3030306F5C303030725C303030695C3030307A5C3030306F5C3030306E5C303030745C3030305C3334315C3030306C5C3030306E5C3030305C3335355C3030305C3034305C3030315C3134315C3030306B5C3030305C3334315C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.5}Testování}{35}{subsubsection.5.5.5}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.6}Horizontální škálování}{35}{subsection.5.6}\protected@file@percent } -\BKM@entry{id=49,open,dest={73756273656374696F6E2E352E37},srcline={1018}}{5C3337365C3337375C303030355C3030302E5C303030375C3030305C3034305C303030565C3030305C3337355C303030735C3030306C5C303030655C303030645C3030306E5C3030305C3334315C3030305C3034305C303030685C303030725C30303061} -\newlabel{fig:zone_cluster_architecture}{{5.6}{36}{Horizontální škálování}{subsection.5.6}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Architektura systému s zone clusterem}}{36}{figure.8}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {5.7}Výsledná hra}{36}{subsection.5.7}\protected@file@percent } -\newlabel{fig:lobby_ui}{{5.7}{37}{Výsledná hra}{subsection.5.7}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Uživatelské rozhraní v lobby}}{37}{figure.9}\protected@file@percent } -\newlabel{fig:ui_showcase}{{5.7}{37}{Výsledná hra}{figure.9}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Uživatelské rozhraní v klientovi}}{37}{figure.10}\protected@file@percent } -\BKM@entry{id=50,open,dest={73656374696F6E2E36},srcline={1042}}{5C3337365C3337375C303030365C3030305C3034305C3030304D5C3030315C3033335C3030315C3133315C3030315C3033335C3030306E5C3030305C333535} -\BKM@entry{id=51,open,dest={73756273656374696F6E2E362E31},srcline={1046}}{5C3337365C3337375C303030365C3030302E5C303030315C3030305C3034305C3030304D5C303030655C303030745C303030725C303030695C3030306B5C30303079} -\BKM@entry{id=52,open,dest={73756273756273656374696F6E2E362E312E31},srcline={1054}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030505C3030306F5C303030735C303030745C303030675C303030725C303030655C303030535C303030515C3030304C} -\BKM@entry{id=53,open,dest={73756273756273656374696F6E2E362E312E32},srcline={1058}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030545C303030695C3030306D5C303030655C303030735C303030635C303030615C3030306C5C303030655C303030445C30303042} -\BKM@entry{id=54,open,dest={73756273756273656374696F6E2E362E312E33},srcline={1062}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030475C303030725C303030615C303030665C303030615C3030306E5C30303061} -\@writefile{toc}{\contentsline {section}{\numberline {6}Měřění}{38}{section.6}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Metriky}{38}{subsection.6.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.1}PostgreSQL}{38}{subsubsection.6.1.1}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2}TimescaleDB}{38}{subsubsection.6.1.2}\protected@file@percent } -\BKM@entry{id=55,open,dest={73756273756273656374696F6E2E362E312E34},srcline={1074}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030345C3030305C3034305C303030545C303030725C303030615C303030635C30303079} -\BKM@entry{id=56,open,dest={73756273756273656374696F6E2E362E312E35},srcline={1104}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030355C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C303030735C3030306B5C3030305C3334315C3030305C3034305C303030615C303030705C3030306C5C303030695C3030306B5C303030615C303030635C30303065} -\BKM@entry{id=57,open,dest={73756273656374696F6E2E362E32},srcline={1108}}{5C3337365C3337375C303030365C3030302E5C303030325C3030305C3034305C303030515C303030555C303030495C303030435C30303072} -\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Příklad Grafana dashboardu}}{39}{figure.11}\protected@file@percent } -\newlabel{fig:grafana}{{11}{39}{Příklad Grafana dashboardu}{figure.11}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.3}Grafana}{39}{subsubsection.6.1.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.4}Tracy}{39}{subsubsection.6.1.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.5}Klientská aplikace}{39}{subsubsection.6.1.5}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Jeden snímek v Tracy}}{40}{figure.12}\protected@file@percent } -\newlabel{fig:frame_in_tracy}{{12}{40}{Jeden snímek v Tracy}{figure.12}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}QUICr}{40}{subsection.6.2}\protected@file@percent } -\newlabel{kod:tc}{{3}{40}{Příklad volání TC}{lstlisting.3}{}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Příklad volání TC}{40}{lstlisting.3}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces Porovnání odezvy TCP a QUICr}}{41}{figure.13}\protected@file@percent } -\newlabel{fig:latencycomparison}{{13}{41}{Porovnání odezvy TCP a QUICr}{figure.13}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces Porovnání integrace TCP a QUICr}}{41}{figure.14}\protected@file@percent } -\newlabel{fig:integrationcomparison}{{14}{41}{Porovnání integrace TCP a QUICr}{figure.14}{}} -\BKM@entry{id=58,open,dest={73756273656374696F6E2E362E33},srcline={1155}}{5C3337365C3337375C303030365C3030302E5C303030335C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C303030725C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075} -\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces 301 připojených hráčů}}{42}{figure.15}\protected@file@percent } -\newlabel{fig:playerbenchmark}{{15}{42}{301 připojených hráčů}{figure.15}{}} -\newlabel{fig:tracyreplicator}{{6.3}{42}{Optimalizace replikátoru}{subsection.6.3}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {16}{\ignorespaces Analýza replikátoru}}{42}{figure.16}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Optimalizace replikátoru}{42}{subsection.6.3}\protected@file@percent } -\newlabel{fig:ecs_optimization_tracy_01}{{6.3}{43}{Optimalizace replikátoru}{figure.16}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{43}{figure.17}\protected@file@percent } -\newlabel{fig:ecs_optimization_tracy_02}{{6.3}{43}{Optimalizace replikátoru}{figure.17}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {18}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{43}{figure.18}\protected@file@percent } -\BKM@entry{id=59,open,dest={73756273656374696F6E2E362E34},srcline={1210}}{5C3337365C3337375C303030365C3030302E5C303030345C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C3030306D5C303030615C3030306E5C303030615C3030315C3137365C303030655C303030725C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537} -\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Porovnání serializátorů}}{44}{table.1}\protected@file@percent } -\newlabel{t:serialization_comparison}{{1}{44}{Porovnání serializátorů}{table.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.4}Optimalizace manažera zájmů}{44}{subsection.6.4}\protected@file@percent } -\BKM@entry{id=60,open,dest={73756273656374696F6E2E362E35},srcline={1238}}{5C3337365C3337375C303030365C3030302E5C303030355C3030305C3034305C303030505C303030655C303030655C303030725C3030302D5C303030745C3030306F5C3030302D5C303030705C303030655C303030655C30303072} -\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Porovnání algoritmů}}{45}{table.2}\protected@file@percent } -\newlabel{table:range_query_comparison}{{2}{45}{Porovnání algoritmů}{table.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.5}Peer-to-peer}{45}{subsection.6.5}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces Porovnání TCP a QUICr v peer-to-peer}}{46}{figure.19}\protected@file@percent } -\newlabel{fig:peer_to_peer}{{19}{46}{Porovnání TCP a QUICr v peer-to-peer}{figure.19}{}} -\BKM@entry{id=61,open,dest={73656374696F6E2A2E33},srcline={1277}}{5C3337365C3337375C3030305A5C3030305C3334315C303030765C3030315C3033335C30303072} -\@writefile{toc}{\contentsline {section}{Z\'av\v er}{47}{section*.3}\protected@file@percent } +\newlabel{code:entt}{{1}{23}{Příklad použití knihovny Entt}{lstlisting.1}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Příklad použití knihovny Entt}{23}{lstlisting.1}\protected@file@percent } +\BKM@entry{id=27,open,dest={73756273756273656374696F6E2E342E312E34},srcline={681}}{5C3337365C3337375C303030345C3030302E5C303030315C3030302E5C303030345C3030305C3034305C303030495C3030306D5C303030475C303030755C30303069} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.4}ImGui}{24}{subsubsection.4.1.4}\protected@file@percent } +\BKM@entry{id=28,open,dest={73656374696F6E2E35},srcline={700}}{5C3337365C3337375C303030355C3030305C3034305C303030485C303030725C303030615C3030305C3034305C303030765C3030305C3335355C303030635C303030655C3030305C3034305C303030685C303030725C3030305C3334315C3030315C3031355C3030315C313537} +\BKM@entry{id=29,open,dest={73756273656374696F6E2E352E31},srcline={721}}{5C3337365C3337375C303030355C3030302E5C303030315C3030305C3034305C303030535C303030655C303030725C303030765C303030655C30303072} +\@writefile{toc}{\contentsline {section}{\numberline {5}Hra více hráčů}{25}{section.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Server}{25}{subsection.5.1}\protected@file@percent } +\BKM@entry{id=30,open,dest={73756273756273656374696F6E2E352E312E31},srcline={731}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030525C303030655C303030675C303030695C303030735C303030745C303030725C3030305C3034305C3030306B5C3030306C5C303030695C303030655C3030306E5C303030745C3030315C313537} +\BKM@entry{id=31,open,dest={73756273756273656374696F6E2E352E312E32},srcline={737}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030535C303030655C303030725C303030765C303030655C303030725C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075} +\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Architektura hry pro více hráčů}}{26}{figure.6}\protected@file@percent } +\newlabel{fig:multi_player_game}{{6}{26}{Architektura hry pro více hráčů}{figure.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1}Registr klientů}{26}{subsubsection.5.1.1}\protected@file@percent } +\BKM@entry{id=32,open,dest={73756273756273656374696F6E2E352E312E33},srcline={741}}{5C3337365C3337375C303030355C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030535C303030705C303030725C3030305C3334315C303030765C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537} +\BKM@entry{id=33,open,dest={73756273656374696F6E2E352E32},srcline={751}}{5C3337365C3337375C303030355C3030302E5C303030325C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C30303074} +\BKM@entry{id=34,open,dest={73756273756273656374696F6E2E352E322E31},srcline={755}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030315C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C3030305C3034305C303030525C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075} +\BKM@entry{id=35,open,dest={73756273756273656374696F6E2E352E322E32},srcline={759}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030325C3030305C3034305C303030495C3030306E5C303030745C303030655C303030725C303030705C3030306F5C3030306C5C303030615C303030635C30303065} +\abx@aux@cite{0}{interpolation} +\abx@aux@segm{0}{0}{interpolation} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.2}Server Replikátoru}{27}{subsubsection.5.1.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.3}Správa zájmů}{27}{subsubsection.5.1.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Klient}{27}{subsection.5.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.1}Klient Replikátoru}{27}{subsubsection.5.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.2}Interpolace}{27}{subsubsection.5.2.2}\protected@file@percent } +\BKM@entry{id=36,open,dest={73756273756273656374696F6E2E352E322E33},srcline={763}}{5C3337365C3337375C303030355C3030302E5C303030325C3030302E5C303030335C3030305C3034305C303030525C3030306F5C3030306C5C3030306C5C303030625C303030615C303030635C3030306B} +\BKM@entry{id=37,open,dest={73756273656374696F6E2E352E33},srcline={773}}{5C3337365C3337375C303030355C3030302E5C303030335C3030305C3034305C303030505C3030306F5C303030735C3030305C3335355C3030306C5C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076} +\BKM@entry{id=38,open,dest={73756273756273656374696F6E2E352E332E31},srcline={784}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030315C3030305C3034305C3030304B5C3030305C3336335C303030645C3030306F5C303030765C3030305C3334315C3030306E5C3030305C3335355C3030305C3034305C3030307A5C303030705C303030725C3030305C3334315C30303076} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.3}Rollback}{28}{subsubsection.5.2.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Posílání zpráv}{28}{subsection.5.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1}Kódování zpráv}{28}{subsubsection.5.3.1}\protected@file@percent } +\BKM@entry{id=39,open,dest={73756273756273656374696F6E2E352E332E32},srcline={792}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030325C3030305C3034305C303030495C3030306D5C303030705C3030306C5C303030655C3030306D5C303030655C3030306E5C303030745C303030615C303030635C30303065} +\BKM@entry{id=40,open,dest={73756273756273656374696F6E2E352E332E33},srcline={796}}{5C3337365C3337375C303030355C3030302E5C303030335C3030302E5C303030335C3030305C3034305C303030445C303030655C303030745C303030655C3030306B5C303030635C303030655C3030305C3034305C303030615C3030305C3034305C3030306E5C3030305C3334315C303030705C303030725C303030615C303030765C303030615C3030305C3034305C303030635C303030685C303030795C30303062} +\BKM@entry{id=41,open,dest={73756273656374696F6E2E352E34},srcline={803}}{5C3337365C3337375C303030355C3030302E5C303030345C3030305C3034305C303030535C303030655C303030725C303030695C303030615C3030306C5C303030695C3030307A5C303030615C303030635C30303065} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2}Implementace}{29}{subsubsection.5.3.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.3}Detekce a náprava chyb}{29}{subsubsection.5.3.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Serializace}{29}{subsection.5.4}\protected@file@percent } +\BKM@entry{id=42,open,dest={73756273656374696F6E2E352E35},srcline={837}}{5C3337365C3337375C303030355C3030302E5C303030355C3030305C3034305C303030505C303030725C3030306F5C303030745C3030306F5C3030306B5C3030306F5C3030306C5C3030305C3034305C303030515C303030555C303030495C303030435C30303072} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}cpp}{30}{lstlisting.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Protokol QUICr}{30}{subsection.5.5}\protected@file@percent } +\BKM@entry{id=43,open,dest={73756273756273656374696F6E2E352E352E31},srcline={850}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030315C3030305C3034305C303030525C3030305C3334315C3030306D5C303030635C30303065} +\BKM@entry{id=44,open,dest={73756273756273656374696F6E2E352E352E32},srcline={863}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030325C3030305C3034305C303030485C303030615C3030306E5C303030645C303030735C303030685C303030615C3030306B5C30303065} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.1}Rámce}{31}{subsubsection.5.5.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.2}Handshake}{31}{subsubsection.5.5.2}\protected@file@percent } +\newlabel{sec:quicr_handshake}{{5.5.2}{31}{Handshake}{subsubsection.5.5.2}{}} +\BKM@entry{id=45,open,dest={73756273756273656374696F6E2E352E352E33},srcline={897}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030335C3030305C3034305C303030535C303030705C3030306F5C3030306C5C303030655C303030685C3030306C5C303030695C303030765C3030306F5C303030735C30303074} +\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Stavový stroj QUICr handshake}}{32}{figure.7}\protected@file@percent } +\newlabel{fig:quicr_handshake}{{7}{32}{Stavový stroj QUICr handshake}{figure.7}{}} +\BKM@entry{id=46,open,dest={73756273756273656374696F6E2E352E352E34},srcline={919}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030345C3030305C3034305C303030455C3030306E5C3030306B5C3030306F5C303030645C3030305C3335315C30303072} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.3}Spolehlivost}{33}{subsubsection.5.5.3}\protected@file@percent } +\newlabel{sec:quicr_reliability}{{5.5.3}{33}{Spolehlivost}{subsubsection.5.5.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.4}Enkodér}{33}{subsubsection.5.5.4}\protected@file@percent } +\BKM@entry{id=47,open,dest={73756273756273656374696F6E2E352E352E35},srcline={927}}{5C3337365C3337375C303030355C3030302E5C303030355C3030302E5C303030355C3030305C3034305C303030545C303030655C303030735C303030745C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535} +\BKM@entry{id=48,open,dest={73756273656374696F6E2E352E36},srcline={968}}{5C3337365C3337375C303030355C3030302E5C303030365C3030305C3034305C303030485C3030306F5C303030725C303030695C3030307A5C3030306F5C3030306E5C303030745C3030305C3334315C3030306C5C3030306E5C3030305C3335355C3030305C3034305C3030315C3134315C3030306B5C3030305C3334315C3030306C5C3030306F5C303030765C3030305C3334315C3030306E5C3030305C333535} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.5.5}Testování}{34}{subsubsection.5.5.5}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.6}Horizontální škálování}{34}{subsection.5.6}\protected@file@percent } +\BKM@entry{id=49,open,dest={73756273656374696F6E2E352E37},srcline={988}}{5C3337365C3337375C303030355C3030302E5C303030375C3030305C3034305C303030565C3030305C3337355C303030735C3030306C5C303030655C303030645C3030306E5C3030305C3334315C3030305C3034305C303030685C303030725C30303061} +\newlabel{fig:zone_cluster_architecture}{{5.6}{35}{Horizontální škálování}{subsection.5.6}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Architektura systému s zone clusterem}}{35}{figure.8}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {5.7}Výsledná hra}{35}{subsection.5.7}\protected@file@percent } +\newlabel{fig:lobby_ui}{{5.7}{36}{Výsledná hra}{subsection.5.7}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Uživatelské rozhraní v lobby}}{36}{figure.9}\protected@file@percent } +\newlabel{fig:ui_showcase}{{5.7}{36}{Výsledná hra}{figure.9}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Uživatelské rozhraní v klientovi}}{36}{figure.10}\protected@file@percent } +\BKM@entry{id=50,open,dest={73656374696F6E2E36},srcline={1012}}{5C3337365C3337375C303030365C3030305C3034305C3030304D5C3030315C3033335C3030315C3133315C3030315C3033335C3030306E5C3030305C333535} +\BKM@entry{id=51,open,dest={73756273656374696F6E2E362E31},srcline={1016}}{5C3337365C3337375C303030365C3030302E5C303030315C3030305C3034305C3030304D5C303030655C303030745C303030725C303030695C3030306B5C30303079} +\BKM@entry{id=52,open,dest={73756273756273656374696F6E2E362E312E31},srcline={1024}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030315C3030305C3034305C303030505C3030306F5C303030735C303030745C303030675C303030725C303030655C303030535C303030515C3030304C} +\BKM@entry{id=53,open,dest={73756273756273656374696F6E2E362E312E32},srcline={1028}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030325C3030305C3034305C303030545C303030695C3030306D5C303030655C303030735C303030635C303030615C3030306C5C303030655C303030445C30303042} +\BKM@entry{id=54,open,dest={73756273756273656374696F6E2E362E312E33},srcline={1032}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030335C3030305C3034305C303030475C303030725C303030615C303030665C303030615C3030306E5C30303061} +\@writefile{toc}{\contentsline {section}{\numberline {6}Měřění}{37}{section.6}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Metriky}{37}{subsection.6.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.1}PostgreSQL}{37}{subsubsection.6.1.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.2}TimescaleDB}{37}{subsubsection.6.1.2}\protected@file@percent } +\BKM@entry{id=55,open,dest={73756273756273656374696F6E2E362E312E34},srcline={1044}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030345C3030305C3034305C303030545C303030725C303030615C303030635C30303079} +\BKM@entry{id=56,open,dest={73756273756273656374696F6E2E362E312E35},srcline={1074}}{5C3337365C3337375C303030365C3030302E5C303030315C3030302E5C303030355C3030305C3034305C3030304B5C3030306C5C303030695C303030655C3030306E5C303030745C303030735C3030306B5C3030305C3334315C3030305C3034305C303030615C303030705C3030306C5C303030695C3030306B5C303030615C303030635C30303065} +\BKM@entry{id=57,open,dest={73756273656374696F6E2E362E32},srcline={1078}}{5C3337365C3337375C303030365C3030302E5C303030325C3030305C3034305C303030515C303030555C303030495C303030435C30303072} +\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Příklad Grafana dashboardu}}{38}{figure.11}\protected@file@percent } +\newlabel{fig:grafana}{{11}{38}{Příklad Grafana dashboardu}{figure.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.3}Grafana}{38}{subsubsection.6.1.3}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.4}Tracy}{38}{subsubsection.6.1.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.1.5}Klientská aplikace}{38}{subsubsection.6.1.5}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Jeden snímek v Tracy}}{39}{figure.12}\protected@file@percent } +\newlabel{fig:frame_in_tracy}{{12}{39}{Jeden snímek v Tracy}{figure.12}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}QUICr}{39}{subsection.6.2}\protected@file@percent } +\newlabel{kod:tc}{{3}{39}{Příklad volání TC}{lstlisting.3}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Příklad volání TC}{39}{lstlisting.3}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces Porovnání odezvy TCP a QUICr}}{40}{figure.13}\protected@file@percent } +\newlabel{fig:latencycomparison}{{13}{40}{Porovnání odezvy TCP a QUICr}{figure.13}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces Porovnání integrace TCP a QUICr}}{40}{figure.14}\protected@file@percent } +\newlabel{fig:integrationcomparison}{{14}{40}{Porovnání integrace TCP a QUICr}{figure.14}{}} +\BKM@entry{id=58,open,dest={73756273656374696F6E2E362E33},srcline={1125}}{5C3337365C3337375C303030365C3030302E5C303030335C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C303030725C303030655C303030705C3030306C5C303030695C3030306B5C3030305C3334315C303030745C3030306F5C303030725C30303075} +\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces 301 připojených hráčů}}{41}{figure.15}\protected@file@percent } +\newlabel{fig:playerbenchmark}{{15}{41}{301 připojených hráčů}{figure.15}{}} +\newlabel{fig:tracyreplicator}{{6.3}{41}{Optimalizace replikátoru}{subsection.6.3}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {16}{\ignorespaces Analýza replikátoru}}{41}{figure.16}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Optimalizace replikátoru}{41}{subsection.6.3}\protected@file@percent } +\newlabel{fig:ecs_optimization_tracy_01}{{6.3}{42}{Optimalizace replikátoru}{figure.16}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{42}{figure.17}\protected@file@percent } +\newlabel{fig:ecs_optimization_tracy_02}{{6.3}{42}{Optimalizace replikátoru}{figure.17}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {18}{\ignorespaces Analýza optimalizace replikátoru pro ECS}}{42}{figure.18}\protected@file@percent } +\BKM@entry{id=59,open,dest={73756273656374696F6E2E362E34},srcline={1180}}{5C3337365C3337375C303030365C3030302E5C303030345C3030305C3034305C3030304F5C303030705C303030745C303030695C3030306D5C303030615C3030306C5C303030695C3030307A5C303030615C303030635C303030655C3030305C3034305C3030306D5C303030615C3030306E5C303030615C3030315C3137365C303030655C303030725C303030615C3030305C3034305C3030307A5C3030305C3334315C3030306A5C3030306D5C3030315C313537} +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Porovnání serializátorů}}{43}{table.1}\protected@file@percent } +\newlabel{t:serialization_comparison}{{1}{43}{Porovnání serializátorů}{table.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.4}Optimalizace manažera zájmů}{43}{subsection.6.4}\protected@file@percent } +\BKM@entry{id=60,open,dest={73756273656374696F6E2E362E35},srcline={1208}}{5C3337365C3337375C303030365C3030302E5C303030355C3030305C3034305C303030505C303030655C303030655C303030725C3030302D5C303030745C3030306F5C3030302D5C303030705C303030655C303030655C30303072} +\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Porovnání algoritmů}}{44}{table.2}\protected@file@percent } +\newlabel{table:range_query_comparison}{{2}{44}{Porovnání algoritmů}{table.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.5}Peer-to-peer}{44}{subsection.6.5}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces Porovnání TCP a QUICr v peer-to-peer}}{45}{figure.19}\protected@file@percent } +\newlabel{fig:peer_to_peer}{{19}{45}{Porovnání TCP a QUICr v peer-to-peer}{figure.19}{}} +\BKM@entry{id=61,open,dest={73656374696F6E2A2E33},srcline={1247}}{5C3337365C3337375C3030305A5C3030305C3334315C303030765C3030315C3033335C30303072} +\abx@aux@cite{0}{quic} +\abx@aux@segm{0}{0}{quic} +\@writefile{toc}{\contentsline {section}{Z\'av\v er}{46}{section*.3}\protected@file@percent } \babel@aux{czech}{} \babel@aux{czech}{} -\BKM@entry{id=62,open,dest={73656374696F6E2A2E35},srcline={1286}}{5C3337365C3337375C303030435C3030306F5C3030306E5C303030635C3030306C5C303030755C303030735C303030695C3030306F5C3030306E5C30303073} -\@writefile{toc}{\contentsline {section}{Conclusions}{48}{section*.5}\protected@file@percent } +\BKM@entry{id=62,open,dest={73656374696F6E2A2E35},srcline={1256}}{5C3337365C3337375C303030435C3030306F5C3030306E5C303030635C3030306C5C303030755C303030735C303030695C3030306F5C3030306E5C30303073} +\@writefile{toc}{\contentsline {section}{Conclusions}{47}{section*.5}\protected@file@percent } \babel@aux{english}{} \babel@aux{czech}{} -\BKM@entry{id=63,open,dest={617070656E6469782E41},srcline={1293}}{5C3337365C3337375C303030415C3030305C3034305C303030505C303030725C303030765C3030306E5C3030305C3335355C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061} -\BKM@entry{id=64,open,dest={617070656E6469782E42},srcline={1296}}{5C3337365C3337375C303030425C3030305C3034305C303030445C303030725C303030755C303030685C3030305C3334315C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061} -\BKM@entry{id=65,open,dest={617070656E6469782E43},srcline={1301}}{5C3337365C3337375C303030435C3030305C3034305C3030304F5C303030625C303030735C303030615C303030685C3030305C3034305C303030655C3030306C5C303030655C3030306B5C303030745C303030725C3030306F5C3030306E5C303030695C303030635C3030306B5C3030305C3337355C303030635C303030685C3030305C3034305C303030645C303030615C30303074} -\@writefile{toc}{\contentsline {section}{\numberline {A}První příloha}{49}{appendix.A}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {B}Druhá příloha}{49}{appendix.B}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {C}Obsah elektronických dat}{49}{appendix.C}\protected@file@percent } -\newlabel{sec:ObsahData}{{C}{49}{Obsah elektronických dat}{appendix.C}{}} +\BKM@entry{id=63,open,dest={617070656E6469782E41},srcline={1263}}{5C3337365C3337375C303030415C3030305C3034305C303030505C303030725C303030765C3030306E5C3030305C3335355C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061} +\BKM@entry{id=64,open,dest={617070656E6469782E42},srcline={1266}}{5C3337365C3337375C303030425C3030305C3034305C303030445C303030725C303030755C303030685C3030305C3334315C3030305C3034305C303030705C3030315C3133315C3030305C3335355C3030306C5C3030306F5C303030685C30303061} +\BKM@entry{id=65,open,dest={617070656E6469782E43},srcline={1271}}{5C3337365C3337375C303030435C3030305C3034305C3030304F5C303030625C303030735C303030615C303030685C3030305C3034305C303030655C3030306C5C303030655C3030306B5C303030745C303030725C3030306F5C3030306E5C303030695C303030635C3030306B5C3030305C3337355C303030635C303030685C3030305C3034305C303030645C303030615C30303074} +\@writefile{toc}{\contentsline {section}{\numberline {A}První příloha}{48}{appendix.A}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {B}Druhá příloha}{48}{appendix.B}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {C}Obsah elektronických dat}{48}{appendix.C}\protected@file@percent } +\newlabel{sec:ObsahData}{{C}{48}{Obsah elektronických dat}{appendix.C}{}} \abx@aux@nociteall -\BKM@entry{id=66,open,dest={73656374696F6E2A2E37},srcline={1378}}{5C3337365C3337375C3030304C5C303030695C303030745C303030655C303030725C303030615C303030745C303030755C303030725C30303061} -\abx@aux@read@bbl@mdfivesum{nobblfile} -\abx@aux@read@bblrerun +\BKM@entry{id=66,open,dest={73656374696F6E2A2E37},srcline={1348}}{5C3337365C3337375C3030304C5C303030695C303030745C303030655C303030725C303030615C303030745C303030755C303030725C30303061} +\@writefile{toc}{\contentsline {section}{Literatura}{50}{section*.7}\protected@file@percent } +\babel@aux{english}{} +\babel@aux{czech}{} +\abx@aux@read@bbl@mdfivesum{C3CBA72138B16E01160647867A8D8F99} +\abx@aux@defaultrefcontext{0}{computer_networks}{none/global//global/global/global} +\abx@aux@defaultrefcontext{0}{quic}{none/global//global/global/global} +\abx@aux@defaultrefcontext{0}{interpolation}{none/global//global/global/global} +\abx@aux@defaultrefcontext{0}{distributed_systems}{none/global//global/global/global} +\abx@aux@defaultrefcontext{0}{velky_pruvodce}{none/global//global/global/global} \newlabel{LastPage}{{C}{50}{Obsah elektronických dat}{page.50}{}} \gdef\lastpage@lastpage{50} \gdef\lastpage@lastpageHy{50} diff --git a/kidiplom.bbl b/kidiplom.bbl new file mode 100644 index 0000000..7c39a3c --- /dev/null +++ b/kidiplom.bbl @@ -0,0 +1,206 @@ +% $ biblatex auxiliary file $ +% $ biblatex bbl format version 3.3 $ +% Do not modify the above lines! +% +% This is an auxiliary file used by the 'biblatex' package. +% This file may safely be deleted. It will be recreated by +% biber as required. +% +\begingroup +\makeatletter +\@ifundefined{ver@biblatex.sty} + {\@latex@error + {Missing 'biblatex' package} + {The bibliography requires the 'biblatex' package.} + \aftergroup\endinput} + {} +\endgroup + + +\refsection{0} + \datalist[entry]{none/global//global/global/global} + \entry{computer_networks}{book}{}{} + \name{author}{1}{}{% + {{hash=37a62308e9421abec940ea8aa6b08f60}{% + family={Peterson\bibnamedelimb Larry\bibnamedelima L.}, + familyi={P\bibinitperiod\bibinitdelim L\bibinitperiod\bibinitdelim L\bibinitperiod}, + given={Davie\bibnamedelimb Bruce\bibnamedelima S.}, + giveni={D\bibinitperiod\bibinitdelim B\bibinitperiod\bibinitdelim S\bibinitperiod}}}% + } + \list{location}{1}{% + {Cambridge}% + } + \list{publisher}{1}{% + {Elsevier}% + } + \strng{namehash}{37a62308e9421abec940ea8aa6b08f60} + \strng{fullhash}{37a62308e9421abec940ea8aa6b08f60} + \strng{fullhashraw}{37a62308e9421abec940ea8aa6b08f60} + \strng{bibnamehash}{37a62308e9421abec940ea8aa6b08f60} + \strng{authorbibnamehash}{37a62308e9421abec940ea8aa6b08f60} + \strng{authornamehash}{37a62308e9421abec940ea8aa6b08f60} + \strng{authorfullhash}{37a62308e9421abec940ea8aa6b08f60} + \strng{authorfullhashraw}{37a62308e9421abec940ea8aa6b08f60} + \field{sortinit}{1} + \field{sortinithash}{4f6aaa89bab872aa0999fec09ff8e98a} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{edition}{6} + \field{isbn}{978-0128182000} + \field{title}{Computer networks: a system approach} + \field{urlday}{3} + \field{urlmonth}{8} + \field{urlyear}{2026} + \field{year}{2022} + \field{urldateera}{ce} + \endentry + \entry{quic}{online}{}{} + \name{author}{1}{}{% + {{hash=868aea39c494d643af672b69a8024d46}{% + family={{QUIC Working Group}}, + familyi={Q\bibinitperiod}}}% + } + \strng{namehash}{868aea39c494d643af672b69a8024d46} + \strng{fullhash}{868aea39c494d643af672b69a8024d46} + \strng{fullhashraw}{868aea39c494d643af672b69a8024d46} + \strng{bibnamehash}{868aea39c494d643af672b69a8024d46} + \strng{authorbibnamehash}{868aea39c494d643af672b69a8024d46} + \strng{authornamehash}{868aea39c494d643af672b69a8024d46} + \strng{authorfullhash}{868aea39c494d643af672b69a8024d46} + \strng{authorfullhashraw}{868aea39c494d643af672b69a8024d46} + \field{sortinit}{2} + \field{sortinithash}{8b555b3791beccb63322c22f3320aa9a} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{title}{RFC 9000: QUIC: A UDP-Based Multiplexed and Secure Transport} + \field{urlday}{3} + \field{urlmonth}{8} + \field{urlyear}{2026} + \field{year}{2021} + \field{urldateera}{ce} + \verb{urlraw} + \verb https://www.rfc-editor.org/rfc/rfc9000.html + \endverb + \verb{url} + \verb https://www.rfc-editor.org/rfc/rfc9000.html + \endverb + \endentry + \entry{interpolation}{online}{}{} + \name{author}{1}{}{% + {{hash=115b8af350e59a3a75d1e1601b157185}{% + family={Fiedler}, + familyi={F\bibinitperiod}, + given={Glenn}, + giveni={G\bibinitperiod}}}% + } + \strng{namehash}{115b8af350e59a3a75d1e1601b157185} + \strng{fullhash}{115b8af350e59a3a75d1e1601b157185} + \strng{fullhashraw}{115b8af350e59a3a75d1e1601b157185} + \strng{bibnamehash}{115b8af350e59a3a75d1e1601b157185} + \strng{authorbibnamehash}{115b8af350e59a3a75d1e1601b157185} + \strng{authornamehash}{115b8af350e59a3a75d1e1601b157185} + \strng{authorfullhash}{115b8af350e59a3a75d1e1601b157185} + \strng{authorfullhashraw}{115b8af350e59a3a75d1e1601b157185} + \field{sortinit}{3} + \field{sortinithash}{ad6fe7482ffbd7b9f99c9e8b5dccd3d7} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{langid}{english} + \field{title}{Snapshot Interpolation} + \field{urlday}{3} + \field{urlmonth}{8} + \field{urlyear}{2026} + \field{year}{2015} + \field{urldateera}{ce} + \verb{urlraw} + \verb https://www.gafferongames.com/post/snapshot_interpolation/ + \endverb + \verb{url} + \verb https://www.gafferongames.com/post/snapshot_interpolation/ + \endverb + \endentry + \entry{distributed_systems}{book}{}{} + \name{author}{2}{}{% + {{hash=0b5c695d6cb5456cde890afe3b8b2111}{% + family={Steen}, + familyi={S\bibinitperiod}, + given={M.}, + giveni={M\bibinitperiod}, + prefix={van}, + prefixi={v\bibinitperiod}}}% + {{hash=92bc8f2b5a926e6cc80dfae03d2751e5}{% + family={Tanenbaum}, + familyi={T\bibinitperiod}, + given={A.S.}, + giveni={A\bibinitperiod}}}% + } + \list{location}{1}{% + {Praha}% + } + \list{publisher}{1}{% + {distributed-systems.net}% + } + \strng{namehash}{3bb62aa7088dd4fca7609074d4fac863} + \strng{fullhash}{3bb62aa7088dd4fca7609074d4fac863} + \strng{fullhashraw}{3bb62aa7088dd4fca7609074d4fac863} + \strng{bibnamehash}{3bb62aa7088dd4fca7609074d4fac863} + \strng{authorbibnamehash}{3bb62aa7088dd4fca7609074d4fac863} + \strng{authornamehash}{3bb62aa7088dd4fca7609074d4fac863} + \strng{authorfullhash}{3bb62aa7088dd4fca7609074d4fac863} + \strng{authorfullhashraw}{3bb62aa7088dd4fca7609074d4fac863} + \field{sortinit}{6} + \field{sortinithash}{b33bc299efb3c36abec520a4c896a66d} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{edition}{4} + \field{isbn}{978-1543057386} + \field{title}{Distributed Systems} + \field{urlday}{3} + \field{urlmonth}{8} + \field{urlyear}{2026} + \field{year}{2023} + \field{urldateera}{ce} + \true{nocite} + \endentry + \entry{velky_pruvodce}{book}{}{} + \name{author}{1}{}{% + {{hash=ec7dfb56df78a368389190afb803eeb9}{% + family={KABELOVÁ}, + familyi={K\bibinitperiod}, + given={Libor}, + giveni={L\bibinitperiod}, + suffix={Alena\bibnamedelimb a\bibnamedelima DOSTÁLEK}, + suffixi={A\bibinitperiod\bibinitdelim a\bibinitperiod\bibinitdelim D\bibinitperiod}}}% + } + \list{location}{1}{% + {Brno}% + } + \list{publisher}{1}{% + {Computer Press, a.s.}% + } + \strng{namehash}{ec7dfb56df78a368389190afb803eeb9} + \strng{fullhash}{ec7dfb56df78a368389190afb803eeb9} + \strng{fullhashraw}{ec7dfb56df78a368389190afb803eeb9} + \strng{bibnamehash}{ec7dfb56df78a368389190afb803eeb9} + \strng{authorbibnamehash}{ec7dfb56df78a368389190afb803eeb9} + \strng{authornamehash}{ec7dfb56df78a368389190afb803eeb9} + \strng{authorfullhash}{ec7dfb56df78a368389190afb803eeb9} + \strng{authorfullhashraw}{ec7dfb56df78a368389190afb803eeb9} + \field{sortinit}{7} + \field{sortinithash}{108d0be1b1bee9773a1173443802c0a3} + \field{labelnamesource}{author} + \field{labeltitlesource}{title} + \field{edition}{5} + \field{isbn}{978-80-251-2236-5} + \field{title}{Velký průvodce protokoly TCP/IP a systémem DNS} + \field{urlday}{3} + \field{urlmonth}{8} + \field{urlyear}{2026} + \field{year}{2008} + \field{urldateera}{ce} + \true{nocite} + \endentry + \enddatalist +\endrefsection +\endinput + diff --git a/kidiplom.bcf b/kidiplom.bcf index c990120..dbc9aa4 100644 --- a/kidiplom.bcf +++ b/kidiplom.bcf @@ -2157,7 +2157,11 @@ bibliografie.bib - * + computer_networks + quic + interpolation + quic + * diff --git a/kidiplom.bib.bbl b/kidiplom.bib.bbl new file mode 100644 index 0000000..e69de29 diff --git a/kidiplom.bib.blg b/kidiplom.bib.blg new file mode 100644 index 0000000..a7dc33c --- /dev/null +++ b/kidiplom.bib.blg @@ -0,0 +1,5 @@ +[0] Config.pm:328> INFO - This is Biber 2.21 +[0] Config.pm:331> INFO - Logfile is './kidiplom.bib.blg' +[64] biber:342> INFO - === Mon Aug 3, 2026, 19:26:31 +[130] Utils.pm:479> ERROR - Cannot find './kidiplom.bib.bcf'! +[130] Biber.pm:137> INFO - ERRORS: 1 diff --git a/kidiplom.blg b/kidiplom.blg index 43aa005..75406f5 100644 --- a/kidiplom.blg +++ b/kidiplom.blg @@ -1,48 +1,14 @@ -This is BibTeX, Version 0.99d (TeX Live 2026/dev/Arch Linux) -Capacity: max_strings=200000, hash_size=200000, hash_prime=170003 -The top-level auxiliary file: kidiplom.aux -I found no \citation commands---while reading file kidiplom.aux -I found no \bibdata command---while reading file kidiplom.aux -I found no \bibstyle command---while reading file kidiplom.aux -You've used 0 entries, - 0 wiz_defined-function locations, - 83 strings with 490 characters, -and the built_in function-call counts, 0 in all, are: -= -- 0 -> -- 0 -< -- 0 -+ -- 0 -- -- 0 -* -- 0 -:= -- 0 -add.period$ -- 0 -call.type$ -- 0 -change.case$ -- 0 -chr.to.int$ -- 0 -cite$ -- 0 -duplicate$ -- 0 -empty$ -- 0 -format.name$ -- 0 -if$ -- 0 -int.to.chr$ -- 0 -int.to.str$ -- 0 -missing$ -- 0 -newline$ -- 0 -num.names$ -- 0 -pop$ -- 0 -preamble$ -- 0 -purify$ -- 0 -quote$ -- 0 -skip$ -- 0 -stack$ -- 0 -substring$ -- 0 -swap$ -- 0 -text.length$ -- 0 -text.prefix$ -- 0 -top$ -- 0 -type$ -- 0 -warning$ -- 0 -while$ -- 0 -width$ -- 0 -write$ -- 0 -(There were 3 error messages) +[0] Config.pm:328> INFO - This is Biber 2.21 +[0] Config.pm:331> INFO - Logfile is 'kidiplom.blg' +[43] biber:342> INFO - === Mon Aug 3, 2026, 20:00:10 +[55] Biber.pm:421> INFO - Reading 'kidiplom.bcf' +[91] Biber.pm:999> INFO - Using all citekeys in bib section 0 +[101] Biber.pm:4487> INFO - Processing section 0 +[108] Biber.pm:4678> INFO - Looking for bibtex file 'bibliografie.bib' for section 0 +[109] bibtex.pm:1713> INFO - LaTeX decoding ... +[113] bibtex.pm:1519> INFO - Found BibTeX data source 'bibliografie.bib' +[161] UCollate.pm:68> INFO - Overriding locale 'cs_CZ' defaults 'variable = shifted' with 'variable = non-ignorable' +[161] UCollate.pm:68> INFO - Overriding locale 'cs_CZ' defaults 'normalization = NFD' with 'normalization = prenormalized' +[162] Biber.pm:4307> INFO - Sorting list 'none/global//global/global/global' of type 'entry' with template 'none' and locale 'cs_CZ' +[167] bbl.pm:676> INFO - Writing 'kidiplom.bbl' with encoding 'UTF-8' +[169] bbl.pm:779> INFO - Output to kidiplom.bbl diff --git a/kidiplom.fdb_latexmk b/kidiplom.fdb_latexmk index 1a9c4fb..b6a486f 100644 --- a/kidiplom.fdb_latexmk +++ b/kidiplom.fdb_latexmk @@ -1,18 +1,18 @@ # Fdb version 4 -["biber kidiplom"] 1777641420.71466 "kidiplom.bcf" "kidiplom.bbl" "kidiplom" 1785768556.90749 2 - "kidiplom.bcf" 1785768556.78641 100507 e04409a00ea07820a76aae942e927593 "pdflatex" +["biber kidiplom"] 1777641420.71466 "kidiplom.bcf" "kidiplom.bbl" "kidiplom" 1785780087.05246 2 + "kidiplom.bcf" 1785780086.93023 100765 87a5c7151983289e70e8972430e980a9 "pdflatex" (generated) "kidiplom.bbl" "kidiplom.blg" (rewritten before read) -["makeindex kidiplom.idx"] 1777641420.69393 "kidiplom.idx" "kidiplom.ind" "kidiplom" 1785768556.90414 0 - "kidiplom.idx" 1785768554.95438 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex" +["makeindex kidiplom.idx"] 1777641420.69393 "kidiplom.idx" "kidiplom.ind" "kidiplom" 1785780087.04939 0 + "kidiplom.idx" 1785780084.91917 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex" (generated) "kidiplom.ilg" "kidiplom.ind" (rewritten before read) -["pdflatex"] 1785768554.51574 "/home/martin/projects/kidiplom/kidiplom.tex" "kidiplom.pdf" "kidiplom" 1785768556.90431 2 - "/home/martin/projects/kidiplom/kidiplom.tex" 1785768554.43737 133689 f87cd1543c2113704699ae0759e6f3ed "" +["pdflatex"] 1785780084.44175 "/home/martin/projects/kidiplom/kidiplom.tex" "kidiplom.pdf" "kidiplom" 1785780087.04956 2 + "/home/martin/projects/kidiplom/kidiplom.tex" 1785780084.35115 128305 94d0778ae489c0bdd0146e4ca2171d07 "" "/usr/share/texmf-dist/fonts/enc/dvips/base/8r.enc" 1775415801 4850 80dc9bab7f31fb78a000ccfed0e27cab "" "/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ec.enc" 1775415801 2375 baa924870cfb487815765f9094cf3728 "" "/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathit.enc" 1775415801 2405 5dcf2c1b967ee25cc46c58cd52244aed "" @@ -271,15 +271,15 @@ "iso-numeric.cbx" 1681557593 73 45828f8df9dead5135d2c8a727f5b601 "" "iso.bbx" 1681557593 13233 9f9e9c852fe772bfe1efaacc6b415eb7 "" "kibase.sty" 1681557593 23853 021ae8236751950ac5e18f6a5bcf1da7 "" - "kidiplom.aux" 1785768556.77241 32997 6fcd3b61760a06b7f74e2a5f0be7026c "pdflatex" - "kidiplom.bbl" 0 -1 0 "biber kidiplom" + "kidiplom.aux" 1785780086.91123 33889 c8246fce2385e26830b6300cee7f8583 "pdflatex" + "kidiplom.bbl" 1785780010.56994 7686 c3cba72138b16e01160647867a8d8f99 "biber kidiplom" "kidiplom.cls" 1681557593 18598 7684b2d13ac67d7b017c4eea1e12fa0c "" "kidiplom.glsdefs" 1777655247.6059 525 791a05cd0a9f8650067804d8f5ff3f41 "" "kidiplom.ind" 1785767496.11494 0 d41d8cd98f00b204e9800998ecf8427e "makeindex kidiplom.idx" - "kidiplom.lot" 1785768556.78802 329 56a9512fa6a6e1efee513ea3d715497e "pdflatex" - "kidiplom.run.xml" 1785768556.78802 2535 4e001a965ee2f4de88dc6271855a61ea "pdflatex" - "kidiplom.tex" 1785768554.43737 133689 f87cd1543c2113704699ae0759e6f3ed "" - "kidiplom.toc" 1785768556.78802 5253 64abddb6b0acaee5064c1f803435fbd1 "pdflatex" + "kidiplom.lot" 1785780086.93134 387 0572de490d2cc25e51f3c932771931b1 "pdflatex" + "kidiplom.run.xml" 1785780086.93134 2535 2737d3f684fc863fcc16a4e0d9d0a735 "pdflatex" + "kidiplom.tex" 1785780084.35115 128305 94d0778ae489c0bdd0146e4ca2171d07 "" + "kidiplom.toc" 1785780086.93134 5374 cac9f0c2ddb1cc43e5b745549caf1f89 "pdflatex" (generated) "kidiplom.acn" "kidiplom.aux" diff --git a/kidiplom.fls b/kidiplom.fls index cb3d8d4..8e1b972 100644 --- a/kidiplom.fls +++ b/kidiplom.fls @@ -417,6 +417,11 @@ INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/english.lbx INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/english.lbx INPUT /usr/share/texmf-dist/tex/latex/biblatex/lbx/english.lbx OUTPUT kidiplom.bcf +INPUT kidiplom.bbl +INPUT ./kidiplom.bbl +INPUT ./kidiplom.bbl +INPUT ./kidiplom.bbl +INPUT kidiplom.bbl INPUT ./graphics/kititle-cz-nofont.pdf INPUT ./graphics/kititle-cz-nofont.pdf INPUT ./graphics/kititle-cz-nofont.pdf diff --git a/kidiplom.log b/kidiplom.log index 20609b4..0f06d9f 100644 --- a/kidiplom.log +++ b/kidiplom.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.6.8) 3 AUG 2026 16:49 +This is pdfTeX, Version 3.141592653-2.6-1.40.29 (TeX Live 2026/Arch Linux) (preloaded format=pdflatex 2026.6.8) 3 AUG 2026 20:01 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -1370,11 +1370,11 @@ Package biblatex Info: Data encoding 'utf8' specified. \openout8 = `kidiplom.bcf'. Package biblatex Info: Trying to load bibliographic data... -Package biblatex Info: ... file 'kidiplom.bbl' not found. - -No file kidiplom.bbl. +Package biblatex Info: ... file 'kidiplom.bbl' found. + (./kidiplom.bbl) Package biblatex Info: Reference section=0 on input line 143. Package biblatex Info: Reference segment=0 on input line 143. + *geometry* detected driver: pdftex *geometry* verbose mode - [ preamble ] result: * driver: pdftex @@ -1487,96 +1487,95 @@ LaTeX Font Info: External font `lmex10' loaded for size ] [8 -] -LaTeX Font Info: Trying to load font information for T1+pcr on input line 21 -7. +] [9] +LaTeX Font Info: Trying to load font information for T1+pcr on input line 23 +5. (/usr/share/texmf-dist/tex/latex/psnfss/t1pcr.fd File: t1pcr.fd 2001/06/04 font definitions for T1/pcr. -) [9{/usr/share/texmf-dist/fonts/enc/dvips/base/8r.enc}] -Overfull \hbox (0.28238pt too wide) in paragraph at lines 231--235 +) [10{/usr/share/texmf-dist/fonts/enc/dvips/base/8r.enc}] +Overfull \hbox (0.28238pt too wide) in paragraph at lines 252--256 []\T1/lmr/m/n/12 Druhm p-stu-pem je po-s-ln zprv. V tomto p-stupu po-s -laj pro-cesy zprvy [] -[10] [11] [12{/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathit.enc}{/usr/shar -e/texmf-dist/fonts/enc/dvips/lm/lm-mathsy.enc}{/usr/share/texmf-dist/fonts/enc/ -dvips/lm/lm-rm.enc}] - +[11{/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-mathit.enc}{/usr/share/texmf-di +st/fonts/enc/dvips/lm/lm-mathsy.enc}{/usr/share/texmf-dist/fonts/enc/dvips/lm/l +m-rm.enc}] [12] + File: graphics/layer_architecture.pdf Graphic file (type pdf) Package pdftex.def Info: graphics/layer_architecture.pdf used on input line 31 -2. +1. (pdftex.def) Requested size: 409.50119pt x 209.52332pt. - [13 <./graphics/layer_architecture.pdf>] [14] - + [13 <./graphics/layer_architecture.pdf>] + File: graphics/TcpIp.png Graphic file (type png) -Package pdftex.def Info: graphics/TcpIp.png used on input line 356. +Package pdftex.def Info: graphics/TcpIp.png used on input line 332. (pdftex.def) Requested size: 409.50119pt x 260.91075pt. - [15] -[16 <./graphics/TcpIp.png>] - + [14 <./graphics/TcpIp.png>] [15] + File: graphics/http2.pdf Graphic file (type pdf) -Package pdftex.def Info: graphics/http2.pdf used on input line 395. +Package pdftex.def Info: graphics/http2.pdf used on input line 389. (pdftex.def) Requested size: 196.5588pt x 161.2807pt. - + File: graphics/http3.pdf Graphic file (type pdf) -Package pdftex.def Info: graphics/http3.pdf used on input line 401. +Package pdftex.def Info: graphics/http3.pdf used on input line 395. (pdftex.def) Requested size: 196.5588pt x 147.48642pt. - [17 <./graphics/http2.pdf> <./graphics/http3.pdf>] -[18] [19] - + [16] [17 <./graphics/http2.pdf> <./graphics/http3.pdf>] [18] +[19] + File: graphics/quic_handshake.pdf Graphic file (type pdf) -Package pdftex.def Info: graphics/quic_handshake.pdf used on input line 495. +Package pdftex.def Info: graphics/quic_handshake.pdf used on input line 466. (pdftex.def) Requested size: 204.7506pt x 274.7626pt. - [20] [21 <./graphics/quic_handshake.pdf>] + [20 <./graphics/quic_handshake.pdf>] [21] LaTeX Font Info: External font `lmex10' loaded for size -(Font) <10> on input line 643. +(Font) <10> on input line 613. LaTeX Font Info: External font `lmex10' loaded for size -(Font) <7> on input line 643. +(Font) <7> on input line 613. LaTeX Font Info: External font `lmex10' loaded for size -(Font) <5> on input line 643. +(Font) <5> on input line 613. -Underfull \hbox (badness 10000) in paragraph at lines 643--643 +Underfull \hbox (badness 10000) in paragraph at lines 613--613 [][][]\T1/lmr/m/n/10 lnek od Riot Ga-mes uka-zuje, jak d-le-it je ode-zva u kom-pe-te-tiv- [] -Underfull \hbox (badness 10000) in paragraph at lines 643--643 +Underfull \hbox (badness 10000) in paragraph at lines 613--613 \T1/lmr/m/n/10 nch her. U pro-fe-si-o-nl-nch hr᣷ je po-znat i roz-dl mezi 120Hz a 240Hz. [] - + File: graphics/single_player_game.pdf Graphic file (type pdf) -Package pdftex.def Info: graphics/single_player_game.pdf used on input line 64 +Package pdftex.def Info: graphics/single_player_game.pdf used on input line 61 7. (pdftex.def) Requested size: 204.7506pt x 105.1807pt. -Overfull \hbox (9.23495pt too wide) in paragraph at lines 657--658 +Overfull \hbox (9.23495pt too wide) in paragraph at lines 627--628 \T1/lmr/m/n/12 en-gine po-sune stav en-tit (zrych-len a po-zice). Ve jsme oba -lili do [] [] -[22] [23 <./graphics/single_player_game.pdf>] +[22 <./graphics/single_player_game.pdf>] Package hyperref Info: bookmark level for unknown lstlisting defaults to 0 on i -nput line 679. - [24] [25] - +nput line 649. + [23] [24] + File: graphics/multi_player_game.pdf Graphic file (type pdf) -Package pdftex.def Info: graphics/multi_player_game.pdf used on input line 744 +Package pdftex.def Info: graphics/multi_player_game.pdf used on input line 714 . (pdftex.def) Requested size: 204.7506pt x 243.13689pt. - [26] [27 <./graphics/multi_player_game.pdf>] + [25] [26 <./graphics/multi_player_game.pdf>] ! Undefined control sequence. -l.783 ...World}, která reprezentuje stav a \inlcp +l.753 ...World}, která reprezentuje stav a \inlcp {ClientWorldController}, k... The control sequence at the end of the top line of your error message was never \def'ed. If you have @@ -1584,153 +1583,177 @@ misspelled it (e.g., `\hobx'), type `I' and the correct spelling (e.g., `I\hbox'). Otherwise just continue, and I'll forget about whatever was undefined. -[28] [29] -Overfull \hbox (8.12425pt too wide) in paragraph at lines 824--825 +[27] [28] +Overfull \hbox (8.12425pt too wide) in paragraph at lines 794--795 \T1/lmr/m/n/12 Vytvoili jsme tdu [][][][], kter m na roz-hran me-tody [] [] -Overfull \hbox (20.39532pt too wide) in paragraph at lines 824--825 +Overfull \hbox (20.39532pt too wide) in paragraph at lines 794--795 [][][][][][][][][]\T1/lmr/m/n/12 , [][][][] a [][][][]. Prvn me-toda na-stav pro kon-cov bod [] [] -[30] +[29] -LaTeX Warning: Reference `code:entity_spawn_message' on page 31 undefined on in -put line 841. +LaTeX Warning: Reference `code:entity_spawn_message' on page 30 undefined on in +put line 811. -[31] [32] - +[30] [31] + File: graphics/quicr_handshake.pdf Graphic file (type pdf) -Package pdftex.def Info: graphics/quicr_handshake.pdf used on input line 921. +Package pdftex.def Info: graphics/quicr_handshake.pdf used on input line 891. (pdftex.def) Requested size: 409.50119pt x 299.82079pt. - [33 <./graphics/quicr_handshake.pdf>] -Overfull \hbox (3.49525pt too wide) in paragraph at lines 931--932 + [32 <./graphics/quicr_handshake.pdf>] +Overfull \hbox (3.49525pt too wide) in paragraph at lines 901--902 []\T1/lmr/m/n/12 Spolehlivost e kom-po-nenta [][][][], kter si udr-uje fro ntu rmc, [] -[34] -Overfull \hbox (6.44025pt too wide) in paragraph at lines 1002--1003 +[33] +Overfull \hbox (6.44025pt too wide) in paragraph at lines 972--973 [][][][][][][][][][][][][] \T1/lmr/m/n/12 a [][][][][][][][][][][][][][][][]. K ad [] -[35] - +[34] + File: graphics/zone_server_architecture.pdf Graphic file (type pdf) Package pdftex.def Info: graphics/zone_server_architecture.pdf used on input l -ine 1010. +ine 980. (pdftex.def) Requested size: 409.50119pt x 269.24106pt. - + File: graphics/lobby_ui.png Graphic file (type png) -Package pdftex.def Info: graphics/lobby_ui.png used on input line 1028. +Package pdftex.def Info: graphics/lobby_ui.png used on input line 998. (pdftex.def) Requested size: 409.50119pt x 256.73788pt. - + File: graphics/ui_showcase.png Graphic file (type png) -Package pdftex.def Info: graphics/ui_showcase.png used on input line 1035. +Package pdftex.def Info: graphics/ui_showcase.png used on input line 1005. (pdftex.def) Requested size: 409.50119pt x 225.32233pt. - [36 <./graphics/zone_server_architecture.pdf>] [37 <./graphics/lobby_ui.png> < -./graphics/ui_showcase.png>] [38] - + [35 <./graphics/zone_server_architecture.pdf>] [36 <./graphics/lobby_ui.png> < +./graphics/ui_showcase.png>] [37] + File: graphics/grafana.png Graphic file (type png) -Package pdftex.def Info: graphics/grafana.png used on input line 1068. +Package pdftex.def Info: graphics/grafana.png used on input line 1038. (pdftex.def) Requested size: 409.50119pt x 132.9362pt. - + File: graphics/300playerstrace.png Graphic file (type png) -Package pdftex.def Info: graphics/300playerstrace.png used on input line 1082. +Package pdftex.def Info: graphics/300playerstrace.png used on input line 1052. (pdftex.def) Requested size: 409.50119pt x 120.74449pt. - [39 <./graphics/grafana.png>] - + [38 <./graphics/grafana.png>] + File: graphics/latencycomparison.pdf Graphic file (type pdf) -Package pdftex.def Info: graphics/latencycomparison.pdf used on input line 112 +Package pdftex.def Info: graphics/latencycomparison.pdf used on input line 109 6. (pdftex.def) Requested size: 327.60219pt x 245.71564pt. - + File: graphics/integrationcomparison.pdf Graphic file (type pdf) Package pdftex.def Info: graphics/integrationcomparison.pdf used on input line - 1136. + 1106. (pdftex.def) Requested size: 327.60219pt x 245.71564pt. - [40 <./graphics/300playerstrace.png>] [41 <./graphics/latencycomparison.pdf> < + [39 <./graphics/300playerstrace.png>] [40 <./graphics/latencycomparison.pdf> < ./graphics/integrationcomparison.pdf>] - + File: graphics/playerbenchmark.png Graphic file (type png) -Package pdftex.def Info: graphics/playerbenchmark.png used on input line 1148. +Package pdftex.def Info: graphics/playerbenchmark.png used on input line 1118. (pdftex.def) Requested size: 204.7506pt x 129.84302pt. File: graphics/300playerstrace.png Graphic file (type png) -Package pdftex.def Info: graphics/300playerstrace.png used on input line 1159. +Package pdftex.def Info: graphics/300playerstrace.png used on input line 1129. (pdftex.def) Requested size: 409.50119pt x 120.74449pt. - [42 <./graphics/playerbenchmark.png>] - + [41 <./graphics/playerbenchmark.png>] + File: graphics/ecs_optimization_tracy_01.png Graphic file (type png) Package pdftex.def Info: graphics/ecs_optimization_tracy_01.png used on input -line 1174. +line 1144. (pdftex.def) Requested size: 409.50119pt x 113.38686pt. - + File: graphics/ecs_optimization_tracy_02.png Graphic file (type png) Package pdftex.def Info: graphics/ecs_optimization_tracy_02.png used on input -line 1181. +line 1151. (pdftex.def) Requested size: 409.50119pt x 199.59514pt. - [43 <./graphics/ecs_optimization_tracy_01.png> <./graphics/ecs_optimization_tr + [42 <./graphics/ecs_optimization_tracy_01.png> <./graphics/ecs_optimization_tr acy_02.png>] -Underfull \hbox (badness 10000) in paragraph at lines 1220--1220 +Underfull \hbox (badness 10000) in paragraph at lines 1190--1190 []|\T1/lmr/m/n/12 Nzev [] -Underfull \hbox (badness 10000) in paragraph at lines 1224--1224 +Underfull \hbox (badness 10000) in paragraph at lines 1194--1194 []|\T1/lmr/m/n/12 Fixn [] -Underfull \hbox (badness 10000) in paragraph at lines 1226--1226 +Underfull \hbox (badness 10000) in paragraph at lines 1196--1196 []|\T1/lmr/m/n/12 Hashovac [] -[44] [45] - +[43] [44] + File: graphics/peer_to_peer.pdf Graphic file (type pdf) -Package pdftex.def Info: graphics/peer_to_peer.pdf used on input line 1254. +Package pdftex.def Info: graphics/peer_to_peer.pdf used on input line 1224. (pdftex.def) Requested size: 204.7506pt x 170.6285pt. - [46 <./graphics/peer_to_peer.pdf>] [47 + [45 <./graphics/peer_to_peer.pdf>] [46 -] [48 +] [47 ] LaTeX Font Info: Trying to load font information for TS1+lmr on input line 1 -342. +312. (/usr/share/texmf-dist/tex/latex/lm/ts1lmr.fd File: ts1lmr.fd 2015/05/01 v1.6.1 Font defs for Latin Modern -) [49 +) [48 -{/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ts1.enc}] [50] +{/usr/share/texmf-dist/fonts/enc/dvips/lm/lm-ts1.enc}] [49] -LaTeX Warning: Empty bibliography on input line 1378. +Package biblatex Warning: Name format 'last-first' deprecated. +(biblatex) Please use 'family-given' instead. +(biblatex) Using 'family-given' now. + + +Package biblatex Warning: '\mkdaterangeiso8601' is deprecated. +(biblatex) Please use '\mkdaterangeiso'. + + +Package biblatex Warning: '\mkdaterangeiso8601' is deprecated. +(biblatex) Please use '\mkdaterangeiso'. + + +Package biblatex Warning: '\mkdaterangeiso8601' is deprecated. +(biblatex) Please use '\mkdaterangeiso'. + + +Package biblatex Warning: '\mkdaterangeiso8601' is deprecated. +(biblatex) Please use '\mkdaterangeiso'. + + +Package biblatex Warning: '\mkdaterangeiso8601' is deprecated. +(biblatex) Please use '\mkdaterangeiso'. Package glossaries Warning: No \printglossary or \printglossaries found. (Remove \makeglossaries if you don't want any glossaries.) This document will not have a glossary. +[50 +] enddocument/afterlastpage (AED): lastpage setting LastPage. (./kidiplom.aux) *********** @@ -1741,41 +1764,32 @@ L3 programming layer <2026-01-19> LaTeX Warning: There were undefined references. - -Package biblatex Warning: Please (re)run Biber on the file: -(biblatex) kidiplom -(biblatex) and rerun LaTeX afterwards. - Package logreq Info: Writing requests to 'kidiplom.run.xml'. \openout1 = `kidiplom.run.xml'. ) Here is how much of TeX's memory you used: - 33721 strings out of 469481 - 635135 string characters out of 5469631 - 1771888 words of memory out of 5000000 - 61633 multiletter control sequences out of 15000+600000 + 33962 strings out of 469481 + 640459 string characters out of 5469631 + 1773171 words of memory out of 5000000 + 61866 multiletter control sequences out of 15000+600000 707308 words of font info for 103 fonts, out of 8000000 for 9000 24 hyphenation exceptions out of 8191 - 110i,11n,112p,2637b,2312s stack positions out of 10000i,1000n,20000p,200000b,200000s - -pdfTeX warning (dest): name{section*.7} has been referenced but does not exist, - replaced by a fixed one - -< -/usr/share/texmf-dist/fonts/type1/public/lm/lmsy10.pfb> -Output written on kidiplom.pdf (50 pages, 1162962 bytes). + 110i,11n,112p,2637b,4669s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on kidiplom.pdf (50 pages, 1166638 bytes). PDF statistics: - 1011 PDF objects out of 1200 (max. 8388607) - 760 compressed objects within 8 object streams - 170 named destinations out of 1000 (max. 500000) + 1025 PDF objects out of 1200 (max. 8388607) + 774 compressed objects within 8 object streams + 176 named destinations out of 1000 (max. 500000) 646 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/kidiplom.lot b/kidiplom.lot index eecc5e2..c476f87 100644 --- a/kidiplom.lot +++ b/kidiplom.lot @@ -1,7 +1,9 @@ \babel@toc {czech}{}\relax -\contentsline {table}{\numberline {1}{\ignorespaces Porovnání serializátorů}}{44}{table.1}% -\contentsline {table}{\numberline {2}{\ignorespaces Porovnání algoritmů}}{45}{table.2}% +\contentsline {table}{\numberline {1}{\ignorespaces Porovnání serializátorů}}{43}{table.1}% +\contentsline {table}{\numberline {2}{\ignorespaces Porovnání algoritmů}}{44}{table.2}% \babel@toc {czech}{}\relax \babel@toc {czech}{}\relax \babel@toc {english}{}\relax \babel@toc {czech}{}\relax +\babel@toc {english}{}\relax +\babel@toc {czech}{}\relax diff --git a/kidiplom.pdf b/kidiplom.pdf index 83270e8..acc5ff6 100644 Binary files a/kidiplom.pdf and b/kidiplom.pdf differ diff --git a/kidiplom.run.xml b/kidiplom.run.xml index b372d0b..2164675 100644 --- a/kidiplom.run.xml +++ b/kidiplom.run.xml @@ -41,7 +41,7 @@ > ]> - + latex kidiplom.bcf @@ -66,7 +66,7 @@ czech-iso.lbx - + biber biber diff --git a/kidiplom.synctex.gz b/kidiplom.synctex.gz index 4417ea3..cb99bf2 100644 Binary files a/kidiplom.synctex.gz and b/kidiplom.synctex.gz differ diff --git a/kidiplom.tex b/kidiplom.tex index be7fe40..d407e86 100644 --- a/kidiplom.tex +++ b/kidiplom.tex @@ -201,33 +201,54 @@ V poslední kapitole představíme měření, které jsme provedli a jejich výs % - 3. Představit asynchroní posílání zpráv -\section{Počítačová síť} \label{sec:NetworkCommunication} + + + + + + + +\newpage + +\section{Distribuované systémy} + +V této kapitole představíme distribuované systémy. Nejprve si zadefinujeme, co distribuovaný systém je. Podíváme se, čím jsou specifické a jaké vlastnosti mohou mít. Následně se podíváme hlouběji jak takové systémy fungují. Distribuované systémy jsou často složité, proto představíme různé architektonické vzory, které i později při implementaci vlastního distribuovaného systému využijeme. + +Začneme pojmem, co je vlastně počítačový systém. Ten se skládá ze služeb, každá implementovaná jako kolekce procesů, které dohromady plní společný úkol. Moderní systémy jsou ale čím dál větší a úkoly, které musí plnit, jsou složitější. To vedlo ke vzniku síťových systémů, ve kterých jsou procesy rozmístěné přes více počítačů a komunikují spolu posíláním zpráv. Výhod je hned několik. Část systému může být umístěna na počítači blíž uživateli pro snížení odezvy. Když jeden proces selže, může být jiný, který plní stejnou službu a může systém udržet v provozu. Konkrétní skupinou jsou distribuované systémy, které mají mnoho procesů rozmístěných přes více počítačů, které aktivně spolupracují a jeví se jako jeden celek. + +Příkladem distribuovaného systému je World Wide Web, zkráceně WWW. Jedná se o informační systém, který umožňuje prohlížet, ukládat a odkazovat dokumenty umístěné na internetu. Dokumenty mohou být například webové stránky, obrázky nebo videa a jsou uloženy na webových serverech. Odkazy na ně jsou ve formátu URL. Distribuovanost systému umožňuje snadné rozšíření, protože každý může snadno přidat svůj server se svými dokumenty, které se tak stanou dostupné v systému. To zároveň rozloží zátěž přes více počítačů a systém tak zvládá miliardy požadavků denně. Zároveň se celý systém jeví jako jeden celek, který z URL adresy vyhledá server a vrátí dokument. + +\subsection{Počítačová síť} \label{sec:NetworkCommunication} Distribované systémy stojí na počítačových sítích. Ty umožňují komunikaci mezi dvěma procesy na dvou různých počítačích. Počítačová síť je skupina propojených počítačů, které si mezi sebou přenášejí data. Definujeme několik typů sítí, které se liší velikostí a provedením. Například lokální sítě (LAN) propojují až tisíce počítačů, které jsou geograficky blízko, například v rámci jedné budovy. Rozsáhlé sítě (WAN) propojují miliony různých zařízení po celém světě. Příkladem je rozsáhlá síť Internet. Počítačovou síť si lze představit jako graf, ve kterém počítače představují -vrcholy a fyzická média mezi nimi jsou hrany. Vrcholy dále dělíme na \uv{koncové body} a \uv{propojovací prvky}. Díky propojovacím prvkům je možné poslat zprávu přes více vrcholů na cílový počítač. Příkladem takových prvků jsou přepínače, rozbočovače a opakovače. Sítím, které je využívají, se říká \uv{přepínané sítě}. Koncové body jsou například stolní počítače, mobilní telefony a jiná zařízení, na kterých běží komunikující procesy. +vrcholy a fyzická média mezi nimi jsou hrany. Vrcholy dále dělíme na \uv{koncové body} a \uv{propojovací prvky}. Díky propojovacím prvkům je možné poslat zprávu přes více vrcholů na cílový počítač. Příkladem takových prvků jsou přepínače, rozbočovače a opakovače. Tyto prvky mají za úkol třídit poslané zprávy a doručit je správnému koncovému bodu. Fungují tak podobně jako třídící centra pošty. Sítím, které využívají tyto prvky, se říká \uv{přepínané sítě}. Stejně jako u pošty, musejí mít koncové body přiřazenou unikátní \uv{síťovou adresu}. Koncové body jsou například stolní počítače, mobilní telefony a jiná zařízení, na kterých běží komunikující procesy. -Dva počítače, přímo propojené fyzickým médiem, komunikují posíláním n-tic bytů zvané \uv{rámce}. V přepínaných sítích mají rámce konkrétní formát, který pomáhá při hledání cesty v grafu, tzv. \uv{směrování}. Takový formátovaný rámec se nazývá \uv{paket}. Skládá se z hlavičky, kde jsou informace ke směrování, a těla, kde je samotná zpráva. Každý vrchol v takové síti má přiřazenou unikátní \uv{síťovou adresu}. Cílovou adresu najdeme právě v hlavičce paketu. +Dva počítače, přímo propojené fyzickým médiem, komunikují posíláním n-tic bytů zvané \uv{rámce}. V přepínaných sítích mají rámce konkrétní formát, který pomáhá při hledání cesty v grafu, neboli \uv{směrování}. Takový formátovaný rámec se nazývá \uv{paket}. Skládá se z hlavičky, kde jsou informace ke směrování, jako síťovou adresu, a těla, kde je samotná zpráva. -\subsection{Komunikace} +\subsubsection{Komunikace} -V síťovém systému není sdílená paměť. Místo toho se mezi procesy komunikuje posíláním zpráv pomocí systémových volání. To se snažíme v distribuovaných systémech skrýt za vhodnějším rozhraním. V této podkapitole si představíme různé abstrakce a v podkapitole \ref{sec:NetworkCommunication} ukážeme podrobněji, jak se taková komunikace realizuje. +% az tady říkáme, že síťový systém nemá sdílenou pamět??? +V této části popíšeme, jak samotná komunikace posíláním zpráv funguje. Představíme, jaké nástroje a vzory používáme. Konkrétně nás bude zajímat, jak můžeme komunikaci co nejvíce skrýt. Dále zmíníme vlastnosti, které může komunikace mít. -Pro schování komunikace a platformy, na které proces běží, se využívá \uv{middleware}. Jedná se o komponentu, která leží mezi aplikací a operačním systémem a poskytuje komunikační služby. Není závislá na žádné konkrétní aplikaci. Příkladem je distribuovaná služba DNS, která podle doménového jména vyhledá síťovou adresu, jako například adrese \texttt{www.seznam.cz} přiřadí síťovou IP adresu \texttt{77.75.77.222}. +Ke skrytí komunikace v distribuovaných systémech používáme komponenty, kterým se říká \uv{middleware}. Ty leží mezi aplikací a operačním systémem a poskytuje komunikační služby. Není závislá na žádné konkrétní aplikaci. Příkladem je distribuovaná služba DNS, která podle doménového jména vyhledá síťovou adresu, jako například adrese \texttt{www.seznam.cz} přiřadí síťovou IP adresu \texttt{77.75.77.222}. -Pro různé účely a situace máme jiné modely komunikace. Například email je typický příklad \uv{persistentní} komunikace. Po odeslání si persistentní middleware zprávu uloží do té doby, dokud ji příjemce nepřijme. To znamená, že proces příjemce nemusí běžět v době, kdy odesílatel odesílá. Na druhou stranu máme \uv{transientní} komunikaci, kdy zpráva je uložena jen po dobu, kdy běží proces odesílatele a příjemce. To znamená, že pokud příjemce není dostupný, zprávu nikdy nepřijme. +Komunikace může mít různé vlasnosti. Například email je typický příklad \uv{persistentní} komunikace. Po odeslání si persistentní middleware zprávu uloží do té doby, dokud ji příjemce nepřijme. To znamená, že proces příjemce nemusí běžět v době, kdy odesílatel odesílá. Na druhou stranu máme \uv{transientní} komunikaci, kdy zpráva je uložena jen po dobu, kdy běží proces odesílatele a příjemce. To znamená, že pokud příjemce není dostupný, zprávu nikdy nepřijme. -Dále může být komunikace \uv{synchronní} nebo \uv{asynchronní}. Asynchronní znamená, že odesílatel pokračuje v běhu okamžitě po odeslání zprávy. Ta se dočasně uloží v middleware do doby, než se odešle. Na druhou stranu při synchronní komunikaci volající proces zastaví, dokud neobdrží odpověď z cílového procesu. Obecně tedy definujeme tři body, kde může nastat synchronizace (proces odesílatele pokračuje v práci). Zaprvé hned poté, co middleware převzal zprávu a zodpovědnost za její doručení. Zadruhé v moment, kdy byla zpráva doručena druhému procesu. Zatřetí až v moment, kdy druhá strana zpracovala požadavek a dostali jsme odpověď. +Dále může být komunikace \uv{synchronní} nebo \uv{asynchronní}. Asynchronní znamená, že odesílatel pokračuje v běhu okamžitě po odeslání zprávy. Ta se dočasně uloží v middleware do doby, než se odešle. Na druhou stranu při synchronní komunikaci volající proces zastaví, dokud neobdrží odpověď z cílového procesu. Obecně tedy definujeme tři momenty, kdy může nastat synchronizace (proces odesílatele pokračuje v práci). Zaprvé hned poté, co middleware převzal zprávu a zodpovědnost za její doručení. Zadruhé v moment, kdy byla zpráva doručena druhému procesu. Zatřetí až v moment, kdy druhá strana zpracovala požadavek a dostali jsme odpověď. + +% TODO: Přidat referenčně vázanost? \subsubsection{Modely pro komunikaci} -Pro každý účel musíme vhodně zvolit konfiguraci perzistence a synchronizace. Představíme dva modely komunikace, které posílání zpráv skrývají a jsou implementovány jako middleware: Message Oriented Middleware (MOM) a Remote Procedure Call (RPC). +Představíme dva konkrétní způsoby, jakými se na komunikaci dívat. Nejedná se o konkrétní implementace, ale pouze modely, které můžeme při vývoji middleware použít. Zároveň si řekneme, jaké vlastnosti výsledná komunikace může mít. -Prvním přístupem je Remote Procedure Call, který procesu umožňuje zavolat lokální proceduru s implementací na jiném počítači. Když proces A zavolá proceduru na počítači B, A se pozastaví a začne se vykonávat na B. Jakmile se dokončí, pošle se výsledek zpět na A, které poté pokračuje. Tento model je synchronní a transientní. Cílem je, aby volání vypadalo jako by implementace byla lokální a skrýt tak komunikaci mezi počítači. +Prvním přístupem je Remote Procedure Call, který procesu umožňuje zavolat lokální proceduru s implementací na jiném počítači. Tím kompletně skrývá, že objekt, který jsme zavolali, je na jiném počítači. Když proces A zavolá proceduru na počítači B, proces A se pozastaví a začne se vykonávat nový proces na počítači B. Ten spouští zavolanou metodu. Jakmile metoda vrátí, pošle se výsledek zpět na počítač s procesem A, který poté i s výsledkem pokračuje. Tento model je synchronní a transientní. Cílem je, aby volání vypadalo jako by implementace byla lokální a skrýt tak komunikaci mezi počítači. Jedná se o intuitivní řešení, ale přináší pár problémů. Dva počítače mají různý adresní prostor, proto je třeba vyřešit, jak bude procedura využívat ukazatele do svého adresního prostoru, nebo jestli tuto vlastnost zakáže. +% TODO: Možná pomaleji zmínit logické cíle Druhým přístupem je posílání zpráv. V tomto přístupu posílají procesy zprávy na logické cíle pomocí jména v systému, nikoliv fyzické adresy. Tento přístup méně schovává fakt, že procesy jsou rozmístěny na více počítačích. Abstrakce z @@ -240,35 +261,12 @@ Opět je potřeba, aby se dva koncové body shodli na významu bitů jednotlivý % - Systémovým voláním zprávu odešle % - Procesy se musejí dohodnout na významu bitů -% Druhým přístupem je posílání zpráv. V tomto přístupu aplikace posílají zprávy na čistě logický cíl. Např. identifikovaný typem zprávy. Aplikace pak může projevit zájem o různé typy zpráv a middleware se postará o to, že tyto zprávy aplikace dostane. Přístupu se říká \uv{publish-subscribe}. +\subsection{Architektury systémů} +% TODO: Divně zmiňuji příklady +V praktické části představujeme náš ukázkový síťový systém, který umožňuje hru pro více hráčů. V návrhu jsme využívali známé vzory, které představíme. Návrh systému rozdělíme na dvě části: softwarovou a systémovou architekturu. V softwarové architektuře řešíme komponenty a konektory mezi nimi. Druhá část architektury, která řeší role jednotlivých služeb, se nazývá \uv{systémová architektura}. Mezi příklady patří peer-to-peer nebo klient-server. - - - - -\newpage - -\section{Distribuované systémy} - -V této kapitole představíme distribuované systémy. Popíšeme, na čem stojí a jaké jsou cíle, pokud se takový systém rozhodneme implementovat. Ukážeme softwarové a systémové architektury v distribovaných systémech. Poté podrobněji rozebereme komunikaci v síti. - - -Počítačový systém se skládá ze služeb, každá implementovaná jako kolekce procesů, které dohromady plní společný úkol. Moderní systémy jsou ale čím dál větší a úkoly, které musí plnit, jsou složitější. To vedlo ke vzniku síťových systémů, ve kterých jsou procesy rozmístěné přes více počítačů a komunikují spolu posíláním zpráv. Výhod je hned několik. Část systému může být umístěna počítači blíž zákazníkovi a snížit tak odezvu. Když jeden proces selže, může být jiný, který plní stejnou službu a může systém udržet v provozu. Konkrétní skupinou jsou distribuované systémy, které mají mnoho procesů rozmístěných přes více počítačů, které aktivně spolupracují a jeví se jako jeden celek. - - - -% Počítačový systém se skládá ze služeb, každá je implementována jako kolekce procesů a dohromady plní společný úkol. Systém, ve kterém jsou procesy služeb na různých počítačích propojených v síti, se nazývá \uv{síťový systém}. Zmíníme dva důvody, proč procesy takto rozmístit. Prvním může být záměr \uv{integrace} více existujících systémů. Například se v průběhu života software zjistí, že neposkytuje všechny potřebné služby. Mohou se změnit požadavky nebo se rozšíří uživatelská základna o skupinu, se kterou se původně nepočítalo. Pokud tuto službu poskytuje jiný systém na jiném počítači, můžeme oba systémy spojit. Druhým důvodem může být \uv{expanze}, kdy jeden počítač nesplňuje požadavky na výkon. - -% Síťové systémy můžeme dále rozdělit na \uv{decentralizované} a \uv{distribuované}. Decentralizované jsou většinou ty, které se rozrostly přes více počítačů kvůli integraci. Distribuovaný systém se snaží být dostatečně rozprostřen přes více počítačů tak, aby dokázal plnit svůj úkol. Například aby umožňil snadno přidávat do systému služby, měl dostatečně nízkou odezvu nebo aby bylo možné ho škálovat pro velké množství požadavků. - -Příkladem distribuovaného systému je World Wide Web, zkráceně WWW. Jedná se o informační systém, který umožňuje prohlížet, ukládat a odkazovat dokumenty umístěné na internetu. Dokumenty mohou být například webové stránky, obrázky nebo videa a jsou uloženy na webových serverech. Odkazy na ně jsou ve formátu URL. Distribuovanost systému umožňuje snadné rozšíření, protože každý může snadno přidat svůj server se svými dokumenty, které se tak stanou dostupné v systému. To zároveň rozloží zátěž přes více počítačů a systém tak zvládá miliardy požadavků denně. Zároveň se celý systém jeví jako jeden celek, který z URL adresy vyhledá server a vrátí dokument. - -\subsection{Architektury} - -V praktické části jsme navrhli síťový systém. V návrhu jsme využívali známé vzory, které představíme. Návrh systému rozdělíme na dvě části: softwarovou a systémovou architekturu. V softwarové architektuře řešíme komponenty a konektory mezi nimi. Druhá část architektury, která řeší role jednotlivých služeb, se nazývá \uv{systémová architektura}. Mezi příklady patří peer-to-peer nebo klient-server. - -Pro ilustraci rozdílu představíme známý příklad třívrstvé softwarové architektury: databázová, výpočetní a frontendová vrstva. Systémová architektura definuje, že databáze jako služba pro výpočetní vrstvu má roli serveru. Naopak služba pro replikaci ve skupině databázových serverů využívající model peer-to-peer má roli jak serveru, tak klienta. Typy si rozebereme podrobněji v této kapitole. +Pro ilustraci rozdílu představíme známý příklad třívrstvé softwarové architektury: databázová, výpočetní a frontendová vrstva. Systémová architektura poté definuje, že databáze jako služba pro výpočetní vrstvu má roli serveru. Naopak služba pro replikaci ve skupině databázových serverů využívající model peer-to-peer má roli jak serveru, tak klienta. Typy si rozebereme podrobněji v této kapitole. \subsubsection{Softwarová architektura} @@ -290,9 +288,9 @@ Tento princip lze využít u systémů pro hry více hráčů pro komunikační Pro systémové architektury představíme a později využijeme dva modely: asymetrickou klient-server a symetrickou peer-to-peer. -Asymetrickou architekturou, kde je komponenta buď server, nebo klient, se nazývá \uv{klient-server}. Pouze klienti mohou serverům posílat dotazy a dostávat od nich odpovědi. Vztah je tedy asymetrický. Příkladem jsou webové servery a webové prohlížeče, které fungují jako klienti. Tento model se hodí například pro autoritativní server, který určuje stav hry a pouze jej replikuje klientům. Usnadňuje synchronizaci jednotlivých klientů a zvyšuje efektivitu, protože se účastníci nemusí shodovat, ale pouze přijmout fakt ze serveru. +Asymetrickou architekturou, kde je komponenta buď server, nebo klient, se nazývá \uv{klient-server}. Pouze klienti mohou serverům posílat dotazy a dostávat od nich odpovědi. Vztah je tedy asymetrický. Příkladem jsou webové servery a webové prohlížeče, které fungují jako klienti. Tento model se hodí například pro autoritativní server, který určuje stav hry a pouze jej replikuje klientům. Usnadňuje synchronizaci jednotlivých klientů a zvyšuje efektivitu, protože se účastníci nemusí shodovat, ale pouze přijmou pravdu ze serveru. -Symetrická architektura, kdy obě strany jsou si rovny, se nazývá \uv{peer-to-peer}. Znamená to, že obě strany mohou posílat požadavky a zprávy na druhou stranu. Využívá se například při replikaci, kdy máme několik replik, které jsou si rovny. Pouze řešíme, která vlastní jaký zdroj tak, aby nedošlo ke konfliktu dvou replik při psaní konkrétního záznamu. Libovolná replika má ale možnost odeslat svůj stav jiné, protože jsou si rovny. Tento model je vhodný například pro horizontální škálování stavových serverů, které si rozdělují část stejné služby. Například vícero serverů může zpracovávat různé části herního světa a předávají si mezi sebou entity, které mají na starost. +Symetrická architektura, kdy obě strany jsou si rovny, se nazývá \uv{peer-to-peer}. Znamená to, že obě strany mohou posílat požadavky a zprávy na druhou stranu. Tento přístup je užitečný, pokud dva procesy mají stejnou roli a jedná se tedy pouze o repliku té stejné služby. To je potřeba, pokud je zátěž na systém až moc velká a jeden počítač ji nezvládne. Například můžeme mít více počítačů na kterých běží herní server stejné instance hry. Herní svět můžeme rozdělit na zóny a každý proces dostane svou zónu. Žádná zona není nadřazená jiné, proto spolu mohou procesy komunikovat modelem peer-to-peer a předávat si tak události, které v zónách nastali. Například sousední zóny může zajímat, že se hráč blíží k okraji a za chvíli přejde do jiné zóny. Následně může původní zóna hráče \uv{předat} druhému procesu. @@ -300,10 +298,11 @@ Symetrická architektura, kdy obě strany jsou si rovny, se nazývá \uv{peer-to +\newpage{} +\section{Protokoly} -\subsection{Protokoly} - -V této části představíme jak je implementována komunikace v síti. Aby si dva počítače, které si posílají rámce, navzájem rozuměly, musejí se shodnout na významu jednotlivých bitů rámců. K takové definici slouží \uv{komunikační protokol}: soubor pravidel pro výměnu informací mezi počítači. Definuje syntaxi, sémantiku a synchronizaci zpráv. +% Weird +V této části podrobně popíšeme, jak se komunikace realizuje. Aby si dva počítače rozumněli, musejí se shodnout na významu jednotlivých bytů rámců, které si posílají. To definuje \uv{komunikační protokol}: soubor pravidel pro výměnu informací mezi počítači. Představíme několik už existujících protokolů a jejich vlasnosti. V praktické části jsme vypracovali vlastní protokol optimalizovaný pro distribuované systémy her více hráčů. Každý protokol poskytuje komunikační služby. Tyto služby rozdělujeme na dvě skupiny: ty co před komunikací navážou spojení a ty co ne. V prvním případě musejí obě strany přijmout a navázat spojení a potencionálně se domluvit na jeho dalších parametrech. Jakmile jejich komunikace skončí, spojení se ukončí. Příkladem takové služby je telefoní linka. V druhém případě může odeslat zprávu kdykoliv a bez předchozího upozornění druhé strany. Příkladem takové komunikace je posílání emailu. @@ -315,41 +314,18 @@ Každý protokol poskytuje komunikační služby. Tyto služby rozdělujeme na d \label{fig:layer_architecture} \end{figure} -Protokoly jsou často organizovány do vrstev, které se liší svou zodpovědností. Každá vrstva poskytuje komunikační službu přes své rozhraní. Příklad vidíme na obrázku \ref{fig:layer_architecture}. Vidíme dvě vrstvy. Každá vrstva definuje nějakou komunikační službu a má své specifické rozhraní. Toto rozhraní využívá implementace služby nad ní. -\subsubsection{Rodina protokolů TCP/IP} +\subsection{Rodina protokolů TCP/IP} -Rodina protokolů pro komunikaci v síti Internet se nazývá TCP/IP. Jedná se o více protokolů organizovaných do vrstev. Každá vrstva poskytuje komunikační služby. Počítač A i B tak vidí stejnou službu. Představme si, že rozhraní má dvě funkce: pro čtení a pro zápis. Aplikace do vrstvy $N$ zapíše zprávu, kterou chce, aby si proces využívající stejnou službu, ale na druhém počítači, mohl přečíst. Je potřeba, aby vrstva zapsala zprávu ve formátu, kterému bude rozumnět strana A i strana B. Tento formát je právě protokol, jak vidíme na obrázku \ref{fig:layer_architecture}. +Rodina protokolů pro komunikaci v síti Internet se nazývá TCP/IP. Jedná se o více komunikačních protokolů, organizovaných do vrstev. Tuto architekturu vidíme na obrázku \ref{fig:layer_architecture}. Každá vrstva má svůj konkrétní význam a jinou zodpovědnost. Tuto zodpovědnost pak plní služba, která v dané vrstvě je. V jedné službě vidíme dva koncové body na dvou počítačích. Oba poskytují rozhraní pro svou instanci. To, že jsou instance fyzicky oddělené je skryté právě za komunikační službu. Vrstva $N$ zapisuje a čte z vrsvy $N-1$ a neřeší, jak si dva koncové body v $N-1$ zapsané informace předají, aby je druhá strana mohla číst. Způsob, jakým si koncové body ve vrstvě předávají informace, je právě protokol. +Rodina protokolů se řídí principem \uv{end-to-end}, který říká, že body mezi odesílatelem a příjemcem, jako směrovače a přepínače, by měli být co nejjednodušší. Spolehlivost a navázání spojení musejí implementovat až dva koncové body. Případné ztráty paketu musí odesílatel zjistit a ztracené pakety odeslat znovu. +Ztráta paketu nastává, když je některý z přepínačů na cestě mezi odesílatelem a příjemcem, zahlcený. Přepínač si přijaté pakety ukládá do fixně velké fronty, ze které také postupně odebírá a snaží se najít další vhodný uzel, kam každý paket poslat. Pro případ přehlcení fronty má přepínač definovanou politiku\cite{computer_networks}. Běžná je politika \uv{tail-drop}, která nově příchozí paket, který se nevejde do fronty, zahodí. V tento moment se paket ztrácí. +Název rodiny protokolů se skládá ze dvou důležitých protokolů: IP (Internet Protocol) a TCP (Transmission Control Protocol). IP umožňuje komunikaci libovolných dvou uzlů počítačů v propojených sítích. Definuje formát adresy koncových bodů a směrování. Protokol nenavazuje spojení ani nezaručuje doručení. TCP zajišťuje spolehlivý obousměrný přenos dat mezi procesy na dvou počítačích (ne nutně různých). -Název se skládá ze dvou důležitých protokolů: IP (Internet Protocol) a TCP (Transmission Control Protocol). IP slouží pro směrování paketů a TCP pro řízení přenosu. IP umožňuje komunikaci libovolných dvou uzlů počítačů v propojených sítích. TCP zajišťuje spolehlivý obousměrný přenos dat mezi procesy na dvou počítačích (ne nutně různých). - -Protokol IP má za úkol doručit paket od odesílatele na příjemce pouze podle IP adresy, která je v hlavičce paketu. IP nenavazuje spojení a nezaručuje doručení. Důvodem je princip \uv{end-to-end}, který říká, že body mezi odesílatelem a příjemcem, jako směrovače a přepínače, by měli být co nejjednodušší. Spolehlivost musejí zaručit až dva koncové body, například číslováním paketů a sledováním stavu doručení. Případné ztráty paketu musí odesílatel zjistit a ztracené pakety odeslat znovu. - -Ztráta paketu nastává, když je některý z přepínačů na cestě mezi odesílatelem a příjemcem, zahlcený. Přepínač si přijaté pakety ukládá do fixně velké fronty, ze které také postupně odebírá a snaží se najít další vhodný uzel, kam každý paket poslat. Pro případ přehlcení fronty má přepínač definovanou politiku. Běžná je politika \uv{tail-drop}, která nově příchozí paket, který se nevejde do fronty, zahodí. V tento moment se paket ztrácí. - -Koncové body si musejí hlídat a měřit zahlcení sítě. V případě, že jsou uzly na cestě zahlcené, měl by odesílatel snížit frekvenci odesílání. V TCP/IP se o to stará protokol TCP. Příjemce pro každý paket, který dostane, musí odeslat acknoledge, kterým oznamuje odesílateli, že paket přijal. Odesílatel si proto drží frontu paketů, které musí odeslat. Zároveň si udržuje okno těchto paketů, které jsou odeslané ale ještě nepotvrzené neboli \uv{in-flight}. Pokud není potvrzeno až příliš paketů, okno zmenší a tím sníží počet paketů, které mohou být najednou v síti. - -Konkrétně architektura TCP/IP je rozdělena do čtyř vrstev: aplikační, transportní, síťová a síťové rozhraní. Každá vrstva obsahuje množinu protokolů a pro každou situaci lze sestavit ideální čtveřice. Vrstvy podrobněji představíme. - -\begin{description} - \item[{Aplikační}] \hfill \\ - Nejvyšší je \uv{aplikační} vrstva, ve které jsou aplikace. Příkladem protokolů jsou FTP, SMTP, HTTP nebo gRPC. Tato vrstva je rozbalena až na koncovém bodu, protože neobsahuje žádné podstatné informace pro směrování. - - \item[{Transportní}] \hfill \\ - Druhá vrstva je \uv{transportní}. Tato vrstva, stejně jako aplikační, je rozbalena až na koncových bodech, jak vidíme na obrázku \ref{fig:tcpip}. Proto se jim někdy říká end-to-end protokoly. Není totiž důležitá pro směrování paketů. Stará se o to, jaké pakety přišli, v jakém pořadí a jestli nejsou poškozené. Příkladem protokolů jsou TCP, UDP nebo QUIC. - - \item[{Síťová}] \hfill \\ - Pro adresaci slouží síťová vrstva. Ta směruje a předává jednotlivé datagramy. Příkladem protokolů jsou IP, ARP, RARP nebo IPSEC. Je nutné, aby stejně jako vrstva síťového rozhraní, byla implementována ve všech vrcholech na cestě mezi dvěma počítači, které chtějí komunikovat přes internet. - - \item[{Síťové rozhraní}] \hfill \\ - Nejnižší vrstva, která se stará o přenos přes fyzické médium. Pro různé média bude vyžadovat různé protokoly. Příkladem jsou Ethernet, Token ring a další. -\end{description} - -Na obrázku \ref{fig:tcpip} vidíme, jak mezi sebou jednotlivé vrstvy komunikují. Aplikace na počítači $A$ zapíše do transportní vrstvy, kterou počítač $D$ ze stejné vrsvy přečte. Vrstva zná pouze vrstvu pod sebou. Plnou čarou vidíme datový tok zprávy, jak putuje přes jednotlivé vrstvy. Šrafovaná čára reprezentuje abstrahovaný datový tok tak, jak ho vidí vrstva. Počítače B a C jsou propojovací body. Všimněme si, že se nepoužívají transportní nebo aplikační vrstvy, pouze si rozbalí IP paket a zjistí, kam mají pakety posílat dál. Vrstva síťového rozhraní pracuje s různými médii, jak také vidíme na obrázku. - +% Spolehlivost zaručuje tak, že příjemce pro každý přijatý paket odešle potvrzující zprávu, že paket přijal. To protokol implementuje na koncových bodech frontou paketů, které bod potřebuje odeslat. Zároveň si udržuje okno těch, které jsou odeslané, ale ještě nepotvrzené. Pokud není potvrzeno až příliš mnoho paketů, tak rozsah okna zmenší. \begin{figure} \begin{center} @@ -359,10 +335,28 @@ Na obrázku \ref{fig:tcpip} vidíme, jak mezi sebou jednotlivé vrstvy komunikuj \label{fig:tcpip} \end{figure} +Popíšeme vrstvy, ze kterých se rodina TCP/IP skládá. Konkrétně jsou čtyři: aplikační, transportní, síťová a síťové rozhraní. Každá vrstva obsahuje množinu protokolů a pro různé situace můžeme protokoly ve vrstvách kombinovat. Na obrázku \ref{fig:tcpip} vidíme, jak mezi sebou jednotlivé vrstvy komunikují. Aplikace na počítači $A$ zapíše do transportní vrstvy, kterou počítač $D$ ze stejné vrsvy přečte. Vrstva zná pouze vrstvu pod sebou. Plnou čarou vidíme datový tok zprávy, jak putuje přes jednotlivé vrstvy. Šrafovaná čára reprezentuje protokol. Počítače B a C jsou propojovací body. Všimněme si, že se nepoužívají transportní nebo aplikační vrstvy, pouze si rozbalí IP paket a zjistí, kam mají pakety posílat dál. Vrstva síťového rozhraní pracuje s různými médii, jak také vidíme na obrázku. + +\begin{description} + \item[{Aplikační}] \hfill \\ + Nejvyšší je \uv{aplikační} vrstva, ve které jsou protokoly přímo pro aplikace. Příkladem protokolů jsou FTP pro přenos souborů, SMTP pro emailovou komunikaci, HTTP pro přenos hypertextových dokumentů nebo gRPC pro implementaci RPC. Tato vrstva je rozbalena až na koncovém bodu, protože neobsahuje žádné podstatné informace pro směrování. To je vidět i na obrázku \ref{fig:tcpip}. + + \item[{Transportní}] \hfill \\ + Druhá vrstva je \uv{transportní}. Tato vrstva, stejně jako aplikační, je rozbalena až na koncových bodech. Stará se o to, jaké pakety přišli, v jakém pořadí a jestli nejsou poškozené. Příkladem protokolů jsou TCP, UDP nebo QUIC. + + \item[{Síťová}] \hfill \\ + Pro adresaci slouží síťová vrstva. Ta směruje a předává jednotlivé datagramy. Příkladem protokolů jsou IP, ARP, RARP nebo IPSEC. Je nutné, aby stejně jako vrstva síťového rozhraní, byla implementována ve všech vrcholech na cestě mezi dvěma počítači, které chtějí komunikovat přes internet. + + \item[{Síťové rozhraní}] \hfill \\ + Nejnižší vrstva, která se stará o přenos přes fyzické médium. Pro různé fyzické média existují různé protokoly. Příkladem jsou Ethernet, Token ring a další. +\end{description} + + + \subsection{Protokoly v aplikační vrstvě} -Nejvyšší v rodině protokolů TCP/IP je aplikační vrstva s protokoly jako HTTP, gRPC nebo SMTP. Aplikačním protokolům, které nejsou specifické pro konkrétní aplikaci, se říká middleware. Mezi takové řadíme právě HTTP a gRPC, které jsou pro obecné posílání zpráv a usnadňují aplikacím komunikaci. +Nejvyšší v rodině protokolů TCP/IP je aplikační vrstva s protokoly jako HTTP, gRPC nebo SMTP. Aplikačním protokolům, které nejsou specifické pro konkrétní aplikaci, se říká middleware. Mezi takové řadíme právě HTTP a gRPC, které jsou pro obecné posílání zpráv a poskytují jednoduché rozhraní pro aplikace. \subsubsection{HTTP} @@ -441,25 +435,7 @@ Je vhodný jako základ pro vlastní transportní protokol. Například protokol \subsubsection{QUIC} -QUIC je spolehlivý protokol transportní vrstvy od společnosti Google, který poskytuje multiplexní šifrovanou komunikaci založenou na TLS 1.3. Multiplexní komunikace znamená, že v jednom navázaném spojení můžeme vytvořit více proudů bytů, ať už jednosměrných nebo obousměrných. To značně redukuje problém ahead-of-line blokování. TCP má vždy právě jeden obousměrný proud. Tento protokol je pro nás důležitý, protože popisuje implementaci spolehlivosti, handshake a dalších vlastností nad protokolem UDP. V pozdější kapitole představíme náš protokol, který je protokolem QUIC inspirovaný a dále ho upravuje. Mezi naše úpravy patří možnost odeslání zpráv nespolehlivě a s různým seřazením. V této části podrobněji popíšeme části protokolu QUIC, které jsou pro náš protokol důležité. - - -% \begin{description} -% \item[{Pakety}] \hfill \\ -% Dvě strany komunikující přes QUIC protokol mezi sebou posílají sekvenční Pakety různých typů. Příkladem jsou: \texttt{Initial}, \texttt{0-RTT}, \texttt{Handshake} a \texttt{1-RTT}. Liší se v síle šifrování, které používají, každý typ má svůj číselný prostor a liší se i hlavička. Každý paket má své unikátní pořadové číslo, které se v rozumném čase nesmí použít znova, a to ani při opakovaném poslání stejného paketu z důvodu ztráty. Různé typy paketů mají ale čítač nezávislý. Pakety typu \texttt{Initial} a \texttt{Handshake} mají dlouhou hlavičku a \texttt{0-RTT} a \texttt{1-RTT} mají krátkou hlavičku. - -% \item[{Spolehlivost}] \hfill \\ -% Protokol QUIC zajišťuje spolehlivost jednotlivých rámců. Příjemce musí odeslat zpět odesílateli rámec typu \texttt{ACK} se zakódovaným číslem paketu, ve kterém rámce získal. Tento rámec může obsahovat i více paketů zároveň a protokol toho využívá tak, že neposílá \texttt{ACK} tak často. - -% \item[{Šifrování}] \hfill \\ -% QUIC už podporuje šifrování přes TLS 1.3 přímo v transportní vrstvě. To znamená dvě výhody: protokol autentizuje klienta, který nám posílá zprávy a tajný klíč lze domluvit už při navazování spojení. TCP naváže spojení pomocí handshake a následně pokračuje další handshake pro TLS. QUIC je v tomto ohledu schopný navázat spojení rychleji. - -% \item[{Unikátní identifikátory koncových bodů}] \hfill \\ -% Protokol UDP směřuje datagramy do portů a identifikovat klienty umožňuje pomocí zdrojové IP adresy. Protokol QUIC přidává další vrstvu směrování pomocí \uv{unikátních identifikátorů koncových bodů}. Před začátkem komunikace se oba koncové body domluví na svých identifikátorech a odesílatel do hlavičky paketu zapíše identifikátor cílového spojení. Toto číslo je náhodně vygenerované a s délkou až 62 bitů. Díky šifrování nemůže potenciální útočník toto číslo podvrhnout a vydávat se za někoho jiného, protože kvůli neznalosti klíče by nebyl schopný správně zašifrovat zprávu. -% Výhoda je, že klient může změnit IP adresu, např. z důvodu přepnutí z Wi-Fi na mobilní data, není třeba spojení znova navazovat. V případě TCP se často stává, že spojení musí vypršet, a pak znova navázat. - - -% \end{description} +QUIC\cite{quic} je spolehlivý protokol transportní vrstvy od společnosti Google, který poskytuje multiplexní šifrovanou komunikaci založenou na TLS 1.3. Multiplexní komunikace znamená, že v jednom navázaném spojení můžeme vytvořit více proudů bytů, ať už jednosměrných nebo obousměrných. To značně redukuje problém ahead-of-line blokování. TCP má vždy právě jeden obousměrný proud. Tento protokol je pro nás důležitý, protože popisuje implementaci spolehlivosti, handshake a dalších vlastností nad protokolem UDP. V pozdější kapitole představíme náš protokol, který je protokolem QUIC inspirovaný a dále ho upravuje. Mezi naše úpravy patří možnost odeslání zpráv nespolehlivě a s různým seřazením. V této části podrobněji popíšeme části protokolu QUIC, které jsou pro náš protokol důležité. Koncové body komunikují posíláním paketů. Pakety obsahují rámce, které dělíme na ovládací a proudové. Ovládací slouží pro ovládání koncových bodů a vlastností navázaného spojení: otevírání a zavírání proudů, změna stavu nebo udržování spojení naživu. Proudové obsahují aplikační data. Stejně jako TCP, i QUIC přenáší data jako proud bytů a oddělení jednotlivých zpráv je nutné implementovat zvlášť. @@ -485,11 +461,6 @@ Nejprve popíšeme domluvu na unikátních ID. Iniciátor si vygeneruje svoje ID Všimněme si teď různých typů paketů, jako: Initial, Handshake, 0-RTT a 1-RTT. Liší se především v síle šifrovaní. Pakety typu Initial a 0-RTT se používají, když ještě není domluvený tajný klíč a jsou snadněji dešifrovatelné. Handshake a 1-RTT používají plné šifrování. Význam Initial je zřejmý a 0-RTT se používá pro rychlé sdělení informací druhé straně ještě před navázáním spojení. Není vhodné ale do takového paketu ukládat tajné informace, které nechceme, aby četla třetí strana. Zároveň QUIC umožňuje poslat více paketů v jednom datagramu. Proto v diagramu vidíme, že iniciátor posílá paket Initial i 0-RTT najednou. -% První paket je typu \bold{Initial} a obsahuje rámec \bold{CRYPTO} s parametrem \uv{Client Hello} neboli CH. - -% Nejprve začíná strana, která se chce připojit, posláním paketu typu \texttt{Initial} s rámcem CRYPTO s ClientHello. Server odpoví několika rámci: \texttt{Initial} s \texttt{CRYPTO} rámcem se ServerHello společně s ACK rámcem a paketem typu \texttt{Handshake} ve kterém je \texttt{CRYPTO} rámec s potřebnými informacemi pro TLS. Aplikační data jsou v paketu typu \texttt{1-RTT} a \texttt{0-RTT}. Jakmile klient dostane tyto informace, mohou si strany posílat šifrovaná data. Toho QUIC využívá a první odpověď ze serveru už může obsahovat paket \texttt{1-RTT} se \texttt{STREAM} rámci s šifrovanými daty, jak vidíme na obrázku \ref{fig:quic_handshake}. Dále si všimněme, že každý typ paketu má vlastní prostor čísel. QUIC používá UDP a proto posílá datagramy. Do jednoho datagramu spojuje více paketů. Tři pakety ze serveru, které přijdou jako odpověď, se tak mohou odeslat jako jeden datagram. - - \begin{figure} \begin{center} \includegraphics[width=0.5\textwidth]{graphics/quic_handshake.pdf} @@ -498,7 +469,6 @@ Všimněme si teď různých typů paketů, jako: Initial, Handshake, 0-RTT a 1- \label{fig:quic_handshake} \end{figure} -% Všimněme si speciálního typu paketu \texttt{0-RTT}, který slouží pro poslání aplikačních dat ještě před samotným navázáním spojení, ale pouze se základním šifrováním. Pro tento paket se využívá první Destination Connection ID, které ale vygeneroval iniciátor komunikace. Jedno spojení může mít přiřazeno více ID. Spojení, které si založí druhá strana, si přiřadí jak ID vygenerované touto stranou, tak ID, které zvolil iniciátor. Když přijde později paket \texttt{0-RTT}, bude správně nasměrován na instanci spojení. @@ -788,7 +758,7 @@ Abychom oddělili to, jak replikátor funguje, vytvořili jsme pro něj na stran \subsubsection{Interpolace} -Když jsme začali systém měřit, zjistili jsme, že vysoká frekvence replikace až příliš zatěžuje síť. Graf s průměry pro počet hráčů vidíme na grafu. Snížili jsme proto frekvenci na 20Hz. To snížilo zátěž na třetinu. Problém ale najednou byl neplynulost hry. Klient sice vykresloval s frekvencí 60Hz, ale méně časté aktualizace způsobili neplynulý pohyb. Řešení je na klientovi interpolovat spojité proměnné, jako pozice nebo rotace. Do klienta replikátoru jsme přidali komponentu \uv{interpolátor}. Ta si ukládá historii konkrétních hodnot a jejich časovou známkou do bufferu. Hodnota, kterou nastaví, je pak interpolovaná z bufferu fixní čas zpět. +Když jsme začali systém měřit, zjistili jsme, že vysoká frekvence replikace až příliš zatěžuje síť. Graf s průměry pro počet hráčů vidíme na grafu. Snížili jsme proto frekvenci na 20Hz. To snížilo zátěž na třetinu. Problém ale najednou byl neplynulost hry. Klient sice vykresloval s frekvencí 60Hz, ale méně časté aktualizace způsobili neplynulý pohyb. Řešení je na klientovi interpolovat spojité proměnné, jako pozice nebo rotace. Do klienta replikátoru jsme přidali komponentu \uv{interpolátor}. Ta si ukládá historii konkrétních hodnot a jejich časovou známkou do bufferu. Hodnota, kterou nastaví, je pak interpolovaná z bufferu fixní čas zpět\cite{interpolation}. \subsubsection{Rollback} @@ -1280,7 +1250,7 @@ Vytvořili jsme si vlastní herní engine, který umožňuje vytvářet hry pro Na konci jsme definovali, jaké metriky chceme měřit a jaké chceme optimalizovat. Představili jsme nástroje a možnosti měření, které jsme využili. Naše metriky se netýkali jen komunikace v síti, ale i výkonu jednolivých programů. Například jsme naměřili, že v případě stovek hráčů začala být problém serializace a obecně sestavení smysluplných zpráv, nikoliv samotné odesílání. Implementovali a popsali jsme naše řešení. Zároveň jsme dokázali, že implementované optimalizace jsou vhodné nejen pro model klient-server ale i peer-to-peer. -Do budoucna by bylo dobré dokončit další vlastnosti QUICr protokolu, jako například sekvenční číslo zprávy. Bylo by nutné se zamyslet, do jaké hloubky by pořadí zpráv měl řešit QUICr. Aplikace sama nejlépe ví, jestli musí čekat na předchozí zprávu nebo ne, jako v našem případě snapshoty ze serveru. Možnost je definovat předchůdce pro kompletní odstranění ahead-of-line blokování. Protokol také neimplementuje dynamické změny datového toku. Ten je nutné snížit, když je síť zatížená. +Do budoucna by bylo dobré dokončit další vlastnosti QUICr protokolu, jako například sekvenční číslo zprávy. Bylo by nutné se zamyslet, do jaké hloubky by pořadí zpráv měl řešit QUICr. Aplikace sama nejlépe ví, jestli musí čekat na předchozí zprávu nebo ne, jako v našem případě snapshoty ze serveru. Možnost je definovat předchůdce pro kompletní odstranění ahead-of-line blokování. Protokol také neimplementuje dynamické změny datového toku. Ten je nutné snížit, když je síť zatížená.\cite{quic} \end{kiconclusions} \begin{kiconclusions}[english] diff --git a/kidiplom.toc b/kidiplom.toc index a79b0b3..695aac4 100644 --- a/kidiplom.toc +++ b/kidiplom.toc @@ -1,66 +1,69 @@ \babel@toc {czech}{}\relax \contentsline {section}{\numberline {1}Úvod}{8}{section.1}% -\contentsline {section}{\numberline {2}Počítačová síť}{9}{section.2}% -\contentsline {subsection}{\numberline {2.1}Komunikace}{9}{subsection.2.1}% -\contentsline {subsubsection}{\numberline {2.1.1}Modely pro komunikaci}{10}{subsubsection.2.1.1}% -\contentsline {section}{\numberline {3}Distribuované systémy}{11}{section.3}% -\contentsline {subsection}{\numberline {3.1}Architektury}{11}{subsection.3.1}% -\contentsline {subsubsection}{\numberline {3.1.1}Softwarová architektura}{11}{subsubsection.3.1.1}% -\contentsline {subsubsection}{\numberline {3.1.2}Systémové architektury}{12}{subsubsection.3.1.2}% -\contentsline {subsection}{\numberline {3.2}Protokoly}{13}{subsection.3.2}% -\contentsline {subsubsection}{\numberline {3.2.1}Rodina protokolů TCP/IP}{14}{subsubsection.3.2.1}% -\contentsline {subsection}{\numberline {3.3}Protokoly v aplikační vrstvě}{15}{subsection.3.3}% -\contentsline {subsubsection}{\numberline {3.3.1}HTTP}{15}{subsubsection.3.3.1}% -\contentsline {subsubsection}{\numberline {3.3.2}HTTP/3}{16}{subsubsection.3.3.2}% -\contentsline {subsection}{\numberline {3.4}Protokoly v transportní vrstvě}{17}{subsection.3.4}% -\contentsline {subsubsection}{\numberline {3.4.1}TCP}{17}{subsubsection.3.4.1}% -\contentsline {subsubsection}{\numberline {3.4.2}UDP}{18}{subsubsection.3.4.2}% -\contentsline {subsubsection}{\numberline {3.4.3}QUIC}{18}{subsubsection.3.4.3}% +\contentsline {section}{\numberline {2}Distribuované systémy}{9}{section.2}% +\contentsline {subsection}{\numberline {2.1}Počítačová síť}{9}{subsection.2.1}% +\contentsline {subsubsection}{\numberline {2.1.1}Komunikace}{10}{subsubsection.2.1.1}% +\contentsline {subsubsection}{\numberline {2.1.2}Modely pro komunikaci}{10}{subsubsection.2.1.2}% +\contentsline {subsection}{\numberline {2.2}Architektury systémů}{11}{subsection.2.2}% +\contentsline {subsubsection}{\numberline {2.2.1}Softwarová architektura}{11}{subsubsection.2.2.1}% +\contentsline {subsubsection}{\numberline {2.2.2}Systémové architektury}{12}{subsubsection.2.2.2}% +\contentsline {section}{\numberline {3}Protokoly}{13}{section.3}% +\contentsline {subsection}{\numberline {3.1}Rodina protokolů TCP/IP}{13}{subsection.3.1}% +\contentsline {subsection}{\numberline {3.2}Protokoly v aplikační vrstvě}{15}{subsection.3.2}% +\contentsline {subsubsection}{\numberline {3.2.1}HTTP}{15}{subsubsection.3.2.1}% +\contentsline {subsubsection}{\numberline {3.2.2}HTTP/3}{16}{subsubsection.3.2.2}% +\contentsline {subsection}{\numberline {3.3}Protokoly v transportní vrstvě}{16}{subsection.3.3}% +\contentsline {subsubsection}{\numberline {3.3.1}TCP}{17}{subsubsection.3.3.1}% +\contentsline {subsubsection}{\numberline {3.3.2}UDP}{18}{subsubsection.3.3.2}% +\contentsline {subsubsection}{\numberline {3.3.3}QUIC}{18}{subsubsection.3.3.3}% \contentsline {section}{\numberline {4}Hra}{21}{section.4}% -\contentsline {subsection}{\numberline {4.1}Engine}{22}{subsection.4.1}% +\contentsline {subsection}{\numberline {4.1}Engine}{21}{subsection.4.1}% \contentsline {subsubsection}{\numberline {4.1.1}Fyzický engine}{22}{subsubsection.4.1.1}% -\contentsline {subsubsection}{\numberline {4.1.2}Vykreslování}{23}{subsubsection.4.1.2}% +\contentsline {subsubsection}{\numberline {4.1.2}Vykreslování}{22}{subsubsection.4.1.2}% \contentsline {subsubsection}{\numberline {4.1.3}Entity-Component-System}{23}{subsubsection.4.1.3}% -\contentsline {subsubsection}{\numberline {4.1.4}ImGui}{25}{subsubsection.4.1.4}% -\contentsline {section}{\numberline {5}Hra více hráčů}{26}{section.5}% -\contentsline {subsection}{\numberline {5.1}Server}{26}{subsection.5.1}% -\contentsline {subsubsection}{\numberline {5.1.1}Registr klientů}{27}{subsubsection.5.1.1}% -\contentsline {subsubsection}{\numberline {5.1.2}Server Replikátoru}{28}{subsubsection.5.1.2}% -\contentsline {subsubsection}{\numberline {5.1.3}Správa zájmů}{28}{subsubsection.5.1.3}% -\contentsline {subsection}{\numberline {5.2}Klient}{28}{subsection.5.2}% -\contentsline {subsubsection}{\numberline {5.2.1}Klient Replikátoru}{28}{subsubsection.5.2.1}% -\contentsline {subsubsection}{\numberline {5.2.2}Interpolace}{28}{subsubsection.5.2.2}% -\contentsline {subsubsection}{\numberline {5.2.3}Rollback}{29}{subsubsection.5.2.3}% -\contentsline {subsection}{\numberline {5.3}Posílání zpráv}{29}{subsection.5.3}% -\contentsline {subsubsection}{\numberline {5.3.1}Kódování zpráv}{29}{subsubsection.5.3.1}% -\contentsline {subsubsection}{\numberline {5.3.2}Implementace}{30}{subsubsection.5.3.2}% -\contentsline {subsubsection}{\numberline {5.3.3}Detekce a náprava chyb}{30}{subsubsection.5.3.3}% -\contentsline {subsection}{\numberline {5.4}Serializace}{30}{subsection.5.4}% -\contentsline {subsection}{\numberline {5.5}Protokol QUICr}{31}{subsection.5.5}% -\contentsline {subsubsection}{\numberline {5.5.1}Rámce}{32}{subsubsection.5.5.1}% -\contentsline {subsubsection}{\numberline {5.5.2}Handshake}{32}{subsubsection.5.5.2}% -\contentsline {subsubsection}{\numberline {5.5.3}Spolehlivost}{34}{subsubsection.5.5.3}% -\contentsline {subsubsection}{\numberline {5.5.4}Enkodér}{34}{subsubsection.5.5.4}% -\contentsline {subsubsection}{\numberline {5.5.5}Testování}{35}{subsubsection.5.5.5}% -\contentsline {subsection}{\numberline {5.6}Horizontální škálování}{35}{subsection.5.6}% -\contentsline {subsection}{\numberline {5.7}Výsledná hra}{36}{subsection.5.7}% -\contentsline {section}{\numberline {6}Měřění}{38}{section.6}% -\contentsline {subsection}{\numberline {6.1}Metriky}{38}{subsection.6.1}% -\contentsline {subsubsection}{\numberline {6.1.1}PostgreSQL}{38}{subsubsection.6.1.1}% -\contentsline {subsubsection}{\numberline {6.1.2}TimescaleDB}{38}{subsubsection.6.1.2}% -\contentsline {subsubsection}{\numberline {6.1.3}Grafana}{39}{subsubsection.6.1.3}% -\contentsline {subsubsection}{\numberline {6.1.4}Tracy}{39}{subsubsection.6.1.4}% -\contentsline {subsubsection}{\numberline {6.1.5}Klientská aplikace}{39}{subsubsection.6.1.5}% -\contentsline {subsection}{\numberline {6.2}QUICr}{40}{subsection.6.2}% -\contentsline {subsection}{\numberline {6.3}Optimalizace replikátoru}{42}{subsection.6.3}% -\contentsline {subsection}{\numberline {6.4}Optimalizace manažera zájmů}{44}{subsection.6.4}% -\contentsline {subsection}{\numberline {6.5}Peer-to-peer}{45}{subsection.6.5}% -\contentsline {section}{Z\'av\v er}{47}{section*.3}% +\contentsline {subsubsection}{\numberline {4.1.4}ImGui}{24}{subsubsection.4.1.4}% +\contentsline {section}{\numberline {5}Hra více hráčů}{25}{section.5}% +\contentsline {subsection}{\numberline {5.1}Server}{25}{subsection.5.1}% +\contentsline {subsubsection}{\numberline {5.1.1}Registr klientů}{26}{subsubsection.5.1.1}% +\contentsline {subsubsection}{\numberline {5.1.2}Server Replikátoru}{27}{subsubsection.5.1.2}% +\contentsline {subsubsection}{\numberline {5.1.3}Správa zájmů}{27}{subsubsection.5.1.3}% +\contentsline {subsection}{\numberline {5.2}Klient}{27}{subsection.5.2}% +\contentsline {subsubsection}{\numberline {5.2.1}Klient Replikátoru}{27}{subsubsection.5.2.1}% +\contentsline {subsubsection}{\numberline {5.2.2}Interpolace}{27}{subsubsection.5.2.2}% +\contentsline {subsubsection}{\numberline {5.2.3}Rollback}{28}{subsubsection.5.2.3}% +\contentsline {subsection}{\numberline {5.3}Posílání zpráv}{28}{subsection.5.3}% +\contentsline {subsubsection}{\numberline {5.3.1}Kódování zpráv}{28}{subsubsection.5.3.1}% +\contentsline {subsubsection}{\numberline {5.3.2}Implementace}{29}{subsubsection.5.3.2}% +\contentsline {subsubsection}{\numberline {5.3.3}Detekce a náprava chyb}{29}{subsubsection.5.3.3}% +\contentsline {subsection}{\numberline {5.4}Serializace}{29}{subsection.5.4}% +\contentsline {subsection}{\numberline {5.5}Protokol QUICr}{30}{subsection.5.5}% +\contentsline {subsubsection}{\numberline {5.5.1}Rámce}{31}{subsubsection.5.5.1}% +\contentsline {subsubsection}{\numberline {5.5.2}Handshake}{31}{subsubsection.5.5.2}% +\contentsline {subsubsection}{\numberline {5.5.3}Spolehlivost}{33}{subsubsection.5.5.3}% +\contentsline {subsubsection}{\numberline {5.5.4}Enkodér}{33}{subsubsection.5.5.4}% +\contentsline {subsubsection}{\numberline {5.5.5}Testování}{34}{subsubsection.5.5.5}% +\contentsline {subsection}{\numberline {5.6}Horizontální škálování}{34}{subsection.5.6}% +\contentsline {subsection}{\numberline {5.7}Výsledná hra}{35}{subsection.5.7}% +\contentsline {section}{\numberline {6}Měřění}{37}{section.6}% +\contentsline {subsection}{\numberline {6.1}Metriky}{37}{subsection.6.1}% +\contentsline {subsubsection}{\numberline {6.1.1}PostgreSQL}{37}{subsubsection.6.1.1}% +\contentsline {subsubsection}{\numberline {6.1.2}TimescaleDB}{37}{subsubsection.6.1.2}% +\contentsline {subsubsection}{\numberline {6.1.3}Grafana}{38}{subsubsection.6.1.3}% +\contentsline {subsubsection}{\numberline {6.1.4}Tracy}{38}{subsubsection.6.1.4}% +\contentsline {subsubsection}{\numberline {6.1.5}Klientská aplikace}{38}{subsubsection.6.1.5}% +\contentsline {subsection}{\numberline {6.2}QUICr}{39}{subsection.6.2}% +\contentsline {subsection}{\numberline {6.3}Optimalizace replikátoru}{41}{subsection.6.3}% +\contentsline {subsection}{\numberline {6.4}Optimalizace manažera zájmů}{43}{subsection.6.4}% +\contentsline {subsection}{\numberline {6.5}Peer-to-peer}{44}{subsection.6.5}% +\contentsline {section}{Z\'av\v er}{46}{section*.3}% \babel@toc {czech}{}\relax \babel@toc {czech}{}\relax -\contentsline {section}{Conclusions}{48}{section*.5}% +\contentsline {section}{Conclusions}{47}{section*.5}% +\babel@toc {english}{}\relax +\babel@toc {czech}{}\relax +\contentsline {section}{\numberline {A}První příloha}{48}{appendix.A}% +\contentsline {section}{\numberline {B}Druhá příloha}{48}{appendix.B}% +\contentsline {section}{\numberline {C}Obsah elektronických dat}{48}{appendix.C}% +\contentsline {section}{Literatura}{50}{section*.7}% \babel@toc {english}{}\relax \babel@toc {czech}{}\relax -\contentsline {section}{\numberline {A}První příloha}{49}{appendix.A}% -\contentsline {section}{\numberline {B}Druhá příloha}{49}{appendix.B}% -\contentsline {section}{\numberline {C}Obsah elektronických dat}{49}{appendix.C}%