Následující text slouží jako osvěžení základních síťových principů. Pokud jste absolvovali předmět NSWI141 (Úvod do sítí), měli byste znát vše, co je v tomto textu uvedeno. Pokud jste NSWI141 nebo podobný předmět neabsolvovali, následující text vám poskytne naprosté minimum znalostí potřebných pro tento předmět.

Všimněte si, že následující text obsahuje mnoho zjednodušení (která by však neměla být v žádném rozporu se skutečnou technickou realizací).

Nejprve si povíme, jak je síť rozdělena do vrstev, krátce si povíme o adresování a na závěr se podíváme na vlastní komunikaci (z pohledu koncových bodů).

Většina textu se zabývá protokolem TCP nad IP, ale mnoho principů je použitelných i pro další protokoly. Z praktických důvodů předpokládáme protokol IPv4.

Slovem paket (packet) budeme označovat jakákoli data, která se po síti pohybují jako jedna jednotka. Pro zjednodušení jím budeme označovat jak fyzické rámce v síti Ethernet, tak pakety IP a segmenty TCP.

Vrstvy

Pro zjednodušení implementace a konfigurace sítí se používá koncept rozdělení do několika vrstev.

Spodní vrstva je fyzická vrstva (model TCP/IP ji nazývá linková vrstva, link layer). Tato vrstva je zodpovědná za komunikaci mezi stroji na stejném segmentu: buď dvěma přímo propojenými počítači, nebo více stroji připojenými ke stejnému (fyzickému) vedení. Na této vrstvě si můžete představit Ethernet (využívající např. konektory RJ-45). Ethernet používá k rozlišení jednotlivých členů komunikace adresy MAC (např. 54:e1:ad:9f:db:36).

Nad linkovou vrstvou se nachází internetová vrstva (internet layer). Tato vrstva je zodpovědná za komunikaci jakýchkoli dvou počítačů. Pro doručování využívá linkovou vrstvu níže, ale přidává logiku pro směrování provozu na větší vzdálenosti. Většinu náročné práce na této vrstvě vykonávají routery, které propojují různé sítě. Patří sem vaše soukromá domácí síť s WiFi routerem i konektivita mezi páteřními sítěmi.

Na této vrstvě se používá protokol IP (neboli internetový protokol). Používá adresy složené ze čtyř jednobajtových hodnot oddělených tečkou (např. 192.168.0.105).

Transportní vrstva je nad internetovou vrstvou. Je implementována většinou v koncových bodech (váš počítač, chytrý televizor nebo mobilní telefon) a používá internetovou vrstvu k odesílání dat mezi komunikujícími koncovými body (dvěma počítači). Tato vrstva se stará o rozdělování příliš velkých paketů, aby je internetová vrstva přijala a často se stará o aspekty kvality služby (např. opětovné odeslání ztracených paketů).

Tato vrstva také často určuje, které programy spolu komunikují. V tomto smyslu internetová vrstva doručí paket na správný stroj a transportní vrstva ho nasměruje na správný program (např. webový prohlížeč na jedné straně a webový server na straně druhé).

Na této vrstvě se používají protokoly TCP, UDP nebo ICMP. Některé z protokolů používají čísla portů k rozlišení odesílatelů a příjemců. Mnohá čísla portů jsou dobře známá (tzv. well-known ports) a hostí typické aplikace (např. SSH obvykle běží na portu 22 (TCP), webový server naslouchá na portu 80 nebo 443 pro HTTPS, oba používají TCP).

Nejvyšší vrstva je aplikační vrstva. Tato vrstva určuje, jaký formát dat se použije. Například pro HTTP definuje, že hlavička začíná buď GET, nebo POST (zapsáno v ASCII), následuje požadovaná cesta atd. Při doručování dat druhé komunikující straně se spoléhá na transportní vrstvu.

Mezi protokoly na této vrstvě patří HTTP, SMTP, FTP nebo SSH.

Následující obrázky z Wikipedie zachycují vrstvy v grafické podobě. První obrázky ukazují, jak se na jednotlivých vrstvách přidávají údaje o službách (IP adresy, čísla portů atd.), převzato z Wikimedia page autor David Mudrák (mudrdmz), CC BY-SA 3.0, via Wikimedia Commons. (Anglický překlad od nás). Druhý obrázek ilustrující přenos dat pochází ze stránky Wikimedia, autor en:User:Kbrose, CC BY-SA 3.0, via Wikimedia Commons.

Adresování

Základní jednotkou adresování je IP adresa. Často hovoříme o tom, že počítač má IP adresu, ale prakticky je IP adresa vázána na síťové rozhraní (síťový adaptér (kartu)).

V domácí síti se IP adresa obvykle přiděluje automaticky prostřednictvím protokolu DHCP. V podstatě nově připojený počítač odešle obecný požadavek o adresu IP a jeden počítač je určen jako server DHCP, který odpoví správnou konfigurací (typicky tuto roli bude mít váš domácí WiFi router).

IP adresa je jedinečná pro každý počítač (rozhraní) a umožňuje globální adresování (vizte též část o NATu, kde jsou uvedena některá praktická omezení). Jakýkoli stroj tak může poslat paket jakémukoli jinému stroji v celé síti (Internetu).

Vlastní směrování paketu může být poměrně jednoduché. Můžeme si představit, že koncové stroje jsou vždy připojeny k jednomu routeru a routery jsou připojeny k routerům na vyšší úrovni. Až po centrální router pro celý svět. Vznikla by tak stromová struktura. Pak by každý router musel pro odeslání paketu do cíle vědět, kterým směrem má každý paket odeslat (tj. zda na vyšší, nebo na nižší úroveň).

V praxi by to znamenalo, že každý router by musel znát informace o každém počítači a jeho IP adrese, aby mohl správně rozhodnout, kam paket odeslat.

To je docela nepraktické. Proto jsou počítače organizovány do menších sítí (podsítí), které sdílejí část IP adresy. Routerům pak stačí znát pouze směr pro celou podsíť, čímž se výrazně sníží množství informací, které je třeba si zapamatovat.

Podsíť je definována prefixem adresy IP: prvních N bitů adresy IP označuje adresu celé sítě. Takový systém je velmi praktický, protože umožňuje vnořování podsítí a zjednodušuje směrování (routování).

Síť je pak popsána jako 192.168.0.0/24, kde /24 znamená, že 24 bitů popisuje síť a zbývá 8 bitů pro rozlišení jednotlivých počítačů v této podsíti. Stroje pak budou mít adresy 192.168.0.1, 192.168.0.2192.168.0.254 (speciální adresy složené ze samých nul a jedniček – ve dvojkové soustavě – se používají pro speciální účely). Všimněte si, že každý počítač musí znát také délku prefixu, aby správně fungoval.

V praxi je topologie sítě méně pravidelná a mezi routery existuje více cest. Routery dynamicky přizpůsobují svá routovací (směrovací) pravidla tak, aby odesílaly pakety nejrychlejší cestou. Princip hierarchického rozdělení IP adres do podsítí však stále platí.

Můžete si představit, že každý kontinent je obrovská podsíť, každá země menší a na druhé straně spektra váš domácí router ovládá nejmenší podsíť.

Komunikace

Vlastní komunikaci mezi dvěma stroji lze popsat v následujících krocích. Ukážeme si to na příkladu webového prohlížeče (spuštěného na počítači s IP adresou 1.2.3.4), který se připojuje k webovému serveru (na 195.113.20.60).

Připojení iniciuje webový prohlížeč. Připraví paket, který má jako cíl nastaveno 195.113.20.60 s portem 80 (známý port pro HTTP server). Jako odesílatel vyplní svou vlastní adresu 1.2.3.4 a volný port poskytnutý operačním systémem (OS) (zde budeme předpokládat port 5678).

Operační systém, na kterém běží webový prohlížeč, předá tento paket síťové kartě, která jej fyzicky odešle na nejbližší router. Tento router se podívá na pole cíle a pošle paket dalšímu routeru.

Nakonec paket dorazí na cílový server na adrese 195.113.20.60. Tam operační systém přečte číslo portu a doručí paket aplikaci, která na tomto portu poslouchá (listen) (webový server v podstatě musel oznámit operačnímu systému, že bude přijímat pakety přicházející na port 80).

Webový server zpracuje požadavek a odešle odpověď. Cílem bude původní odesílatel: 1.2.3.4 a port 5678.

Stejným postupem se paket vrátí zpět na první počítač (kde je spuštěn prohlížeč). Operační systém již ví, že port 5678 byl přidělen webovému prohlížeči, a proto paket přepošle prohlížeči. Prohlížeč zobrazí výsledek uživateli.

Technicky je komunikace zahájena takzvaným handshakem, kdy se komunikující strany dohodnou na konfiguraci přenosu (např. maximální velikosti paketu). Každý paket je pak obvykle potvrzen (acknowledged) krátkým paketem odeslaným druhým směrem, který informuje, že doručení proběhlo úspěšně. Absence potvrzení (často nazývaného jen ACK) vyvolá opětovné odeslání paketu. Pouze v případě, že nedojde k opakovanému odeslání ACK, program oznámí chybu některé vyšší vrstvě (např. vyhozením výjimky).

NAT

Prostor IP adres je velký asi 2564. Prakticky jsme IP adresy vyčerpali již před mnoha lety. Chcete-li tuto skutečnost obejít, často se setkáte s takzvaným NATem, neboli překladem síťových adres.

V této konfiguraci jeden stroj (obvykle router) skrývá celou síť pod jedinou adresou. Pro okolní svět se zdá, že požadavky pocházejí z počítače, který provádí NATování. Tento stroj se pak postará o doručení paketu správnému stroji za NATem.

Nevýhodou je, že nelze adresovat počítač za NATem, protože je pro vnější síť transparentní. Z druhé strany to funguje dobře - stroj za NATem může adresovat jakýkoli stroj ve vnější síti, protože NATující router je také transparentní.

V domácí síti jste obvykle skryti za několika vrstvami přeložených (NATovaných) adres. Není výjimkou, že váš poskytovatel internetu používá dvě nebo tři z nich k ušetření tzv. veřejných IP adres. Vaše domácí síť přidává ještě další vrstvu.

Použití NAT rozdělilo IP adresy do dvou skupin: veřejné IP adresy jsou globálně adresovatelné a jsou potřebné pro stroje poskytující služby. Soukromé adresy (například 192.168.0.0/16) jsou skryté za NATem a je na správci každé sítě, aby je použil podle svého uvážení.

Všimněte si, že NAT nesmí být zaměňováno s bezpečnostním opatřením (a být za něj považován) a naopak.

Obrázek procesu překladu síťových adres je převzat z této stránka Wikimedia, autor Michel Bakni, CC BY-SA 4.0, via Wikimedia Commons.

IPv6 …

… jako (možný) nástupce IPv4, který řeší nejen problémy s nedostatečným počtem IP adres, není v tomto textu popsán.