\chapter{Počítačové sítě}

V~širším pojetí jsou počítačové sítě multidisciplinárním oborem zaměřujícím se na návrh, implementaci, správu a propojení technických prostředků umožňující navázání spojení a předávání dat mezi počítači a dalšími zařízeními.
V~užším pojetí je počítačová síť tvořena vzájemně propojenými počítači za účelem sdílení dat a zdrojů.

\textit{Nejdůležitější vlastností počítačových sítí je jejích obecné použití. Počítačové sítě jsou primárně budovány z~univerzálního programovatelného hardwaru a nejsou optimalizovány pro konkrétní aplikaci, jako je telefonování nebo přenos televizního signálu} \citep{Peterson_Davie_2022}
na rozdíl od telekomunikačních sítí (pevná telefonní síť nebo telegrafní síť), které jsou pevně spjaty se službou, kterou poskytují.
Počítačové sítě dokáží přenášet širokou škálu dat včetně textu, obrazu, hlasu, videa, různých souborů a dalších dat. Toto umožuje počítačových síťím podporovat mnoho aplikací a služeb.

Jedním z~požadavků na počítačové sítě je možnost dynamického navázání spojení a předávání dat s~jinými zařízeními. K~tomu se uplatňuje princip přepínané sítě. Existují dva základní principy přepínané sítě. Přepínané sítě založeny na principu \textbf{přepojování okruhů} a sítě založeny na principu \textbf{přepojování paketů}. První z~jmenovaných principů je starší a běžný pro tradiční telefonní síť, kdy je na začátku spojení vytvořen přenosový okruh mezi zdrojovým a cílovým uzlem. Tento okruh má garantované přenosové pásmo a je rozpojen na konci spojení.
Princip \textbf{přepojování paketů} vymysleli nezávisle na sobě vědci Paul Baran a Donald Davies. Přenášená data se rozdělí na bloky o~určité délce. Každý blok se doplní o~informace o~zdroji, cíli, případně o~další informace potřebné pro přenos. Takový blok se nazývá paket a je odesílán po síti. Síťové prvky každý jeden paket na základě cílové adresy směrují k~dalšímu síťovému prvku nebo koncovému zařízení. Takto může každý každý paket cestovat po síti jinou cestou k~cíli v~závislosti na aktuálním stavu sítě. Na cílovém zařízení dojde k~příjmu a seřazení paketů do původního pořadí, následně jsou z~jednotlivých paketů sestavena původní data.

Koncové zařízení je zařízení vybavené komunikačním rozhraním (síťovým adaptérem), které využívá síťové služby a může poskytovat síťové služby jiným zařízením. Mezi typické koncové zařízaní patří počítač, síťové tiskárny, mobilní zařízení, herní konzole, IoT zařízení.

% ==================================================================================================================
\section{Síťová architektura}

V~době vývoje počítačových sítí (v~70. letech 20. století) byly vyvinuty různé síťové technologie, které však nebyly vzájemně kompatibliní. Toto stěžovalo komunikaci mezi koncovými zařízeními různých výrobců. Snaha o~propojení různých sítí a požadavek na kompatibilitu koncových zařízení různých výrobců vyvolávala potřebu standardizace.

\begin{figure}
    \centering
    \includegraphics[width=0.7\textwidth]{images/osi-tcpip.jpg}
    \caption{Porovnání modelu ISO OSI a TCP/IP. \citep{peterka_tcpip}}
    \label{fig:rozdilmodelu}
\end{figure}

V~reakci na tuto situaci organizace ISO\footnote{International Organization for Standardization - Mezinárodní organizace pro normalizaci} vyvinula teoretický model koncepce počítačových síťí, známý jako model OSI (Open System Interconnection). Tento obecný model fungování počítačových sítí rozděluje jednotlivé funkce sítě do sedmi vrstev (pravá část obrázku \ref{fig:rozdilmodelu}). Každá vrstva má svůj specifický úkol. Existence modelu usnadnila vývoj síťových prvků a zvýšila interoperabilitu mezi různými technologiemi a výrobci.

V~praxi se pro komunikaci počítačů ujala sada protokolů TCP/IP, která vznikla v~70. letech 20. století pro projekt ARPANET, který byl předchůdcem dnešního internetu a definovala jak mezi sebou mají komunikovat jednotlivé zařízení. Jedná se tedy o~praktickou implementaci síťové komunikace, zatímco OSI zůstává referenčním modelem. V~souvislosti s~modelováním síťové komunikace se lze setkat s~modelem TCP/IP, který fungování těchto protokolů organizuje do vrstev podle modelu ISO/OSI. Oproti modelu ISO/OSI má model TCP/IP vrstevy pouze čtyři, protože jsou některé vrstvy zkombinovány. Porovnání obou modelů je znázorněno na obrázku \ref{fig:rozdilmodelu}.

Vrstvy modelu TCP/IP:
\begin{itemize}
  \item \textbf{Vrstva síťového rozhraní}: Jedná se o~nejnižší vrstu modelu TCP/IP. Zajišťuje rámcování dat (rozdělení dat na menší bloky), které jsou přenášeny přes přenosové médium a řídí přístup k~tomuto médiu. Má na starosti příjímat a odesílat jednotlivé bity prostřednictvím přenosového média a zároveň detekovat a opravovat případné chyby, ke kterým mohlo dojít při přenosu dat. Vrstva síťového rozhraní může používat libovolnou přenosovou technologií (Ethernet, Wi-Fi, DSL, optická vlákna), pro kterou musí přizpůsobit přenášená data.  
  \item \textbf{Síťová vrstva}: Hlavním úkolem síťové vrstvy je zajistit přenost dat mezi odesílatelem a příjemcem v~různých síťích, kteří nejsou přímo spojeni. K~tomu využívá adresaci, směrování a fragmentaci (rozdělení dat na menší bloky pro přenos přes různé typy síťí). Síťová vrstva pracuje s~protokoly IP (Internet Protokol) pro adresaci a směrování a ICMP (Internet Control Message Protocol) pro diagnostiku. 
  \item \textbf{Transportní vrstva}: Tato vrstva také rozděluje data z~aplikační vrstvy na menší bloky (segmenty) a na straně příjemce je znovu skládá do původní podoby. Slouží k~zajištění přenosu dat mezi aplikacemi běžícími na různých zařízeních v~síťi. \textit{Podle jejich nároků a požadavků může transportní vrstva regulovat tok dat oběma směry, zajišťovat spolehlivost přenosu, měnit nespojovaný charakter přenosu (v~síťové vrstvě) na spojovaný}\citep{peterka_tcpip}, kontrolovat chyby v~přijatých datech a řídit pořadí doručených dat. Nejznámější protokoly pracující na transportní vrstvě jsou TCP pro spojovaný (vytváří iluzi nepřerušovaného spojení), spolehlivý přenost dat a UDP pro nespolehlivý přenos dat bez spojení.
  \item \textbf{Aplikační vrstva}: Nejvyžší vrstva TCP/IP modelu slouží jako rozhraní mezi aplikacemi a síťovou infrastrukturou.
\end{itemize}

\begin{figure}
    \centering
    \includegraphics[width=1\textwidth]{images/tcpip_zapouzdreni.png}
    \caption{Schéma zapouzdření aplikačních dat na vrstvách TCP/IP. \citep{wiki_tcpip}}
    \label{fig:zapouzdreni}
\end{figure}

Oprázek \ref{fig:zapouzdreni} ilustruje spolupráci jednotlivých vrstev síťového modelu TCP/IP. Vrsvy sítě plní své specifické úkoly a využívají služeb bezprostředně nižší vrstvy.

Data jsou předány od aplikací transportní vrsvě, která data rozdělí na menší bloky~-~segmenty\footnote{u UDP též datagramy} a opatří každý segment hlavičkou podle druhu spojení. Obsah Transportní vrstvy je předán vrsvě síťové, která ho zabalí do IP paketů. Každý IP paket obsahuje hlavičku s~IP adresami odesílatele a příjemce, což umožňuje směrování dat přes různé sítě. Síťová vrstva předá IP pakety vrstvě síťového rozhraní, která pakety zabalí do rámců. Rámce jsou opatřeny potřebnými infromacemi pro přenos dat na fyzické vrstvě.

Při příjmu dat probíhá tento proces opačně, hlavičky jsou odebírány. Rámce jsou rozbaleny na IP pakety a IP pakety na segmenty, které jsou složeny do původních dat, která jsou předána aplikaci. Každá vrstva zpracovává svou vlastní hlavičku.

\begin{figure}
    \centering
    \includegraphics[width=0.8\textwidth]{images/tcpip_komunikace.png}
    \caption{Schéma komunikace napříč sítěmi v~TCP/IP. \citep{wiki_tcpip}}
    \label{fig:prenos}
\end{figure}

Obrázek \ref{fig:prenos} znázorňuje, jak probíhá přenos dat prostřednictvím tří propojených sítí, kde jsou data směrována routery. Odesílací a přijímací zařízení se nachází v~různých síťích, a proto nejsou přímo propojena. Přenos dat je zajištěn prostřednictvím síťové vrstvy, která směruje pakety přes jednotlivé sítě. Přenos je na vrstvě síťového rozhraní realizován různými technologiemi.

% ==================================================================================================================
\section{Ethernet}

Ethernet je řada drátových síťových technologií, která je standardizována v~IEEE\footnote{Institute of Electrical and Electronics Engineers}~802.3. Ethernet umožňuje komunikaci zařízení v~lokální síťi pomocí MAC adres. Díky své jednoduchosti a nízké ceně se jedná o~nejrozšířenější technologii používanou v~lokálních síťích (LAN). \citep{ijs2_ethernet} 
V~kontextu síťového modelu ISO/OSI pracuje na linkové vrstvě a fyzické vrstvě.

Na linkové vrstvě specifikuje formát rámců, detekci chyb a způsob adresování. Dříve ethernet využíval sdílené přenosové média, ke kterým linková vrstva řídila přístup (předcházela koliz9m a detekovala je). Dnešní ethernet je přepínaný (používají se přepínače) a  v~přístupových síťích se používá topologie sítě strom. \citep{samuraj_ethernet} Vymizelo sdílení přenosového média, to má za výhodu odstranění kolizí a zvýšení rychlosti. \citep{samuraj_csma}

Na fyzické vrstvě IEEE 802.3 specifikuje typy přenosových médií (koaxiální kabel, kroudená dvojlinka, optické vlákno), použité konektory, přenosové rychlosti a signálové kódování.

\begin{figure}
    \centering
    \includegraphics[width=1\textwidth]{images/8021q.png}
    \caption{Standartní ethernetový rámec a rozšířený rámec o~802.1Q. \citep{freeccna_vlan}}
    \label{fig:ethernetframe}
\end{figure}

\pagebreak

V~horní části na obrázku \ref{fig:ethernetframe} je zobrazen znázorněn standardní ethernetový rámec. Je složen z:
\begin{itemize}
  \item \textbf{Preambule}: Prvních 48 bitů slouží k~rozpoznání příchozího rámce na straně přijímacího zařízení. Obsahuje tuto sekvenci:\\\verb|10101010 10101010 10101010 10101010|\\\verb|10101010 10101010 10101010 10101011|. \citep{ieee_8023}
  \item \textbf{SFD}: 8 bitů označuje konec preambule nebo také začátek samotného rámce.\\Obsahuje: \verb|10101011|. \citep{ieee_8023}
  \item \textbf{Cílová adresa}: MAC adresa cílového zařízení.
  \item \textbf{Zdrojová adresa}: MAC adresa odesílajícího zařízení.
  \item \textbf{Délka/Typ}: Pokud je hodnota v~decimální soustavě měnší než 1500 označuje délku přenášených dat, pokud je větší neš 1500 označuje jaký protokol je přenášen na vyšší vrstvě. Seznam hodnot a protokolů  spravuje IEEE.
  \item \textbf{Data}: Obsahuje data z~vyšší síťové vrstvy.  
  \item \textbf{FCS}: Kontrolní CRC součet k~ověření správnosti přenosu rámce. Poškozené rámce jsou zahozeny.  
\end{itemize}

\subsection{IEEE 802.1Q VLAN}

VLAN, neboli Virtual LAN slouží k~logickému rozdělení fyzické sítě. To zjednodušuje správu sítě. Díky možnosti vytvářet směrovací politiky pro různé skupiny zařízení a možnosti oddělení speciálního provozu (management sítě) se zvyšuje bezpečnost sítě. \citep{samuraj_vlan} VLAN je u~Ethernetu umožněno prostřednictvím standardu IEEE 802.1Q, který rozšiřuje standardní Ethernetový rámec o~další hodnoty.

V~dolní části obrázku \ref{fig:ethernetframe} je znázorněn ethernetový rámec dle IEEE 802.1Q rozšířený v~hlavičce o~32 bitů. Za zdrojovou adresu jsou vloženy následující hodnoty:
\begin{itemize}
  \item \textbf{TPID}: Identifikátor použítého VLAN protokolu - v~případě IEEE~802.1Q obsahuje \verb|0x8100|. Je na stejné pozici jako Délka/Typ u~standartního rámce.
  \item \textbf{PCP}: Označuje prioritu rámce podle IEEE 802.1P.
  \item \textbf{CFI}: Říká jakým způsobem je přenášen rámec. Bud od bitu s~nejnižší hodnotou k~bitu s~nejvyšší nebo naopak. Pro ethernet \verb|0|. \citep{fair_vlan}
  \item \textbf{VID}: Identifikátor (tag) konkrétní VLAN.
\end{itemize}

Aby bylo možné jednotlivé zařízení přiřazovat do různých logických sítí je nutné, aby IEEE~802.1Q podporovala zařízení ke terým jsou připojeny. Na zařízeních s~podporou IEEE~802.1Q lze nakonfigurovat do které logické sítě konkrétní port spadá a zda na daném portu má být použít tag či nikoli. Přepínače bez podbory IEEE~802.1Q přistupují k~tagovanému provozu stejně jako k~běžným rámcům. V~tomto kontextu může port zahňovat fyzický port i logické rozhraní, například síť Wi-Fi nebo konkrétní Wi-Fi klienty.

\textbf{Trunk port} je port, prostřednictvím kterého je přenášeno více logických síťí. Takto bývají propojeny směrovače s~přepínači, přepínače mezi sebou nebo přístupové body nabízejí-li více Wi-Fi síťí.

\textbf{Access port}\footnote{přístupová port} je port sloužící k~připojení jednotlivých zařízení. Provoz je bez IEEE~802.1Q tagu, tag bývá odchozímu provozu přiřazen na přepínači.

Vlán portu muže být přidělena staticky, podle MAC adresy zařízení, podle IP adresy zařízení nebo z~autorizačního serveru.\citep{samuraj_vlan}

\iffalse
    \section{Taxonomie počítačových sítí}

    Protože, je pojem počítačové sítě zcela obecný (síť lze realizovat libovolnou technologií), lze počítačové sítě děli na základě celé řady aspektů.

    \subsection{Podle způsobu přepojování}
    \begin{itemize}
        \item Přepojování okruhů
        \item Přepojování packetů
    \end{itemize}

    \subsection{Podle rozsahu sítě}
    \begin{itemize}
        \item PAN - Personal area network
    jedná se o~osobní síť malého rozsahu (až v~řádech nízkých desítek metrů), slouží pro potřeby uživatele. Jaké PAN se označují sítě především tvořené nositelnou elektronikou. Bluetooth - přenost zvuku, dat

        \item LAN - Local area network
    Jedná se o~lokální sítě 

        \item MAN - metropolitan area network


        \item WAN - wide area network
    \end{itemize}
\fi

% ==================================================================================================================
\section{Základní síťové prvky}

Počítačové sítě jsou tvořeny technickými prostředky (síťovými prvky). \textbf{Pasivní síťové prvky} nemanipulují s~přenášenými daty a nezasahují do přenášených dat. Nevyžadují externí napájení. Aktivní síťové prvky vyžadují externí napájení a manipulují s~přenášenými daty a mohou do nich i zasahovat. \textbf{Aktivní síťové prvky} nabízejí různou funkcionalitu, podle které se dále rozlišují.

\textbf{Aktivní síťové prvky:}
\begin{itemize}
    \item síťový adaptér,
    \item přepínač (switch),
    \item přístupový bod (access point),
    \item směrovač (router).
\end{itemize}

Mezi dnes již málo používané aktivní síťové prvky lze zařadit:
\begin{itemize}
    \item opakovač (repeater),
    \item most (bridge).
\end{itemize}

\textbf{Pasivní síťové prvky:}
\begin{itemize}
    \item kabeláž,
    \item spojky,
    \item pasivní rozdělovače,
    \item konektory,
    \item filtry.
\end{itemize}

% ==================================================================================================================
\section{802.1X}
802.1X je standard vydaný organizací IEEE\footnote{Institute of Electrical and Electronics Engineers} pro zabezpečení přístupu do sítě. Tento standard zvyšuje bezpečnost tím, že zajišťuje autorizaci uživatelů sítě. Přístup je kontrolován na linkové vrstvě ISO/OSI modelu.

\begin{figure}
    \centering
    \includegraphics[width=0.8\textwidth]{images/radius.png}
    \caption{Průběh 802.1X / RADIUS autentizace.\citep{stankus_8021x}}
    \label{fig:radius}
\end{figure}

V~architektůře autentizace pomocí IEEE 802.1X jsou tři hlavní prvky. Prvním je samotný klient (tzv. suplikant), druhý je switch/přístupový bod (autentizátor) a třetím je autentizační server.

Suplikant komunikuje s~autentizačním serverem pomocí EAP (Extensible Authentication Protocol) zpráv, které jsou specifikovány RFC 2284. Pro přenos EAP v~prostředí Ethernetu slouží EAPoE (EAP over Ethernet), kde EAP rámce používají EtherType \verb|0x888E|. Komunikace mezi Suplikantem a autentizátorem probíhá pouze na L2 vrstvě ISO/OSI modelu. autentizátor EAP zprávy od klienta (suplikanta) neinterpretuje, zabalí je do dalšího protokolu a přepošle je autentizačnímu serveru přes IP síť.

Autentizátor komunikuje s~autentizačním serverem pomocí jednoho z~AAA\footnote{Authentication, Authorization, Accounting - autentizace, autorizace, účtování} protokolů. Tyto protokoly se \textit{používájí pro zajištění zabezpečení síťové infrastruktury}. Mezi nejvíce používané patří RADIUS, TACACS, TACACS+, KERBEROS a DIAMETER.\citep{stankus_8021x}. Autentizační server ověřuje EAP zprávy a odpovídá autentizátoru, který na základě těchto odpovědí upravuje přístupk suplikanta k~síti a přeposílá příslušné EAP odpovědi suplikantovi. Komunikace mezi Autentizátorem a autentizačním serverem probíhá na úrovní aplikační vrstvy.

Proces autorizace klienta pomocí RADIUS serveru je znázorněn na obrázku \ref{fig:radius}.Po připojení klienta (suplikanta) do sítě je veškerý síťový provoz na portu blokován, dokud není dokončena autentizace Autentizátor akceptuje pouze EAPoL zprávy. Klient (suplikant) zahájí komunikaci s~autentizátorem \textbf{EAPoL-Start}, kterou zahájí autentizační proces. Autentizátor vyzve klienta (suplikant) zprávou \textbf{EAP-Request/Identity} ke sdělení identity. Klient odpoví zprávou \textbf{EAP-Response/Identity}, která obsahuje jeho identifikaci (například uživatelské jméno). Tuto zprávu autentizátor předá autentizačnímu serveru jako \textbf{RADIUS Access-Request}. V~tomto protokolu je zapouzdřena EAP zpráva.\citep{cuhel_8021x}

Autentizační server může odpovědět výzvou k~zadání dalšího ověření (hesla) pomocí \textbf{RADIUS Access-Challenge}, tento proces pokračuje dokud server neověří klientovu identitu. Po úspěšném ověření identity server odpoví zprávou \textbf{RADIUS Access-Challenge}, kterou autentizátor předá jako \textbf{EAP-Success} a povolí klientovi přístup k~síti.\citep{lesek_8021x}

Identita uživatele je uložena v~databázi autentizačního serveru, v~externí databázi, v~systému pro správu identit, nebo na jiném autentizačním serveru.

EAP nezajišťuje šifrování ani ochranu přenášených dat. Toto mají na starosti konkrétní autentizační metody. Mezi nejrozšířenější metody patří:
\begin{itemize}
    \item \textbf{EAP-TLS}: používá pro vzájemnou autentizaci certifikáty klienta a serveru.
    \item \textbf{PEAP}: Vytváří šifrovaný tunel TLS, uvnitř tunelu probíhá sekundární autentizace npř. pomocí MS-CHAPv2. Vyžaduje certifikát pouze na straně serveru.
    \item \textbf{EAP-TTLS}: Funguje podobně jako PEAP, nabízí více možností sekundární autentizace (PAP, CHAP, nebo MS-CHAPv2).\citep{networkencyclopedia_eap}
\end{itemize}

% ------------------------------------------------------------------------------------------------------------------
\subsection{eduroam}

eduroam je mezinárodní projekt s~cílem umožnit studentům a pracovníkům vzdělávacích a výzkumných institucí jednoduchý, bezpečný a spolehlivý přístup k~veřejné síti Internet v~parcipiující institucích kdekoli na světě. Parcipiující instituce využívají jednotný identifikátor Wi-Fi sítě \verb|eduroam|. Přístup k~internetu je zařízením umožněň pomocí Wi-Fi nebo ethernetového rozhraní. eduroam využívá specifikace 802.1X pro udělení či zamítnutí přístupu. 

\begin{figure}
    \centering
    \includegraphics[width=0.5\textwidth]{images/hierachicka_infrastruktura.png}
    \caption{Hierachické uspořádání autentizačních serverů.\citep{eduroam_realm}}
    \label{fig:eduroam}
\end{figure}

K~tomu využívá hierachické uspořádání auntetizačních serverů RADIUS (obrázek \ref{fig:eduroam}), kde každá instituce spravující své identity provozuje svůj autentizační server.

Tímto se snaží napodobit roaming (přepnutí ze síťě jednoho operátora do sítě jiného operátora) v~celulárních síťích.