Sítová vrstvá [v1.1] O co jde? Popis IP protokolu, záhlaví IP datagramu, principy hierarchického adresování, adresování podsítí a maska sítě, funkce směrovačů, next hop adresy v činnosti směrovače, struktura IP adresy.
Sítová vrstva zajištuje doručení jednotlivých částí zprávy do cílového zařízení, které může být ve vzdálené síti. Datová jednotka vznikající v sítové vrstvě se nazývá paket. Tato vrstva také zajištuje adresování, zapouzdření dat přijatých z transportní vrstvy do paketu, směrování a následné rozbalení paketu. Adresování spočívá v tom, že každému sítovému zařízení je přiřazena sítová adresa IP, pomocí níž lze části zprávy – pakety – směrovat do cílového zařízení. Zapouzdření do paketu spočívá v tom, že k datovému segmentu získanému z vyšší vrstvy se přidá hlavička obsahující IP adresu lokálního zdrojového zařízení a IP adresa cílového zařízení. Adresa cílového zařízení se použije pro doručení paketu na místo určení. Jakmile je paket připraven, je předán nižší vrstvě, která zajistí další úpravu a následně se data vyšlou. Směrování je úloha, kterou vykonávají sítová zařízení zvaná routery, tedy směrovače. Podle svých směrovacích tabulek rozhodují, kam pošlou přijatý paket. Během své cesty může paket projít mnohými různými sítěmi, které jsou vzájemně propojeny směrovači. Ty zajištují směrování dat po cestě od zdroje k cíli. Směrovače provádějí analýzu přijatého paketu jen z hlediska zjištění cílové adresy, obsahem segmentu se nezabývají. Rozbalení paketu nastává až ve chvíli, kdy dorazí do svého cílového zařízení. Tam je z paketu odstraněna hlavička obsahující informace o sítových IP adresách zdrojového a cílového zařízení a získaný segment je předán transportní vrstvě pro další zpracování.
Internet Protocol (IP) je základním protokolem pracujícím na sítové vrstvě. Byl vyvinut se záměrem doručovat pakety co nejúspěšněji, bez zajišťování kontroly toku dat a kontroly doručení. Tento protokol je považován za nespojovaný – nevytváří žádné spojení předtím, než uskuteční vysílání paketů, také je považován za nespolehlivý – v zájmu co nejrychlejšího doručení neprovádí žádnou kontrolu doručení a toku dat. Data doručuje s nejvyšším úsilím, funguje nezávisle na sítovém médiu. Nespojovaná služba znamená, Tento protokol poskytuje datagramovou službu celé rodince protokolů TCP/IP (Transmission Control Protocol / Internet Protocol). Sám o sobě neposkytuje záruky na přenos dat a podle IP adresy rozlišuje pouze jednotlivá sítová rozhraní. Internet protokol je zodpovědný za směrování datagramů, tedy packetů, ze zdrojového počítače do cílového přes jednu nebo více IP sítí. Data se v IP sítích posílají jako bloky, které nazýváme datagramy. Jednotlivé datagramy putují zcela nezávisle na sobě. Na samotném začátku komunikace není zapotřebí nějak navazovat spojení, protože dané stroje spolu většinou před touto komunikací nekomunikovali. Doručování IP datagramů poskytuje nespolehlivou službu. Prakticky jde o to, že paket putuje sítí tak, že jednotlivé uzly ho posílají dál a dál, co možná nejblíže k cíli, paket se tam tedy limitně blíží, ale nakonec se tam nemusí dostat. Datagram může být také opakovaně doručen. Jelikož datagramy putují nezávisle, tak tato služba neposkytuje ani řazení paketů. Tato chybovost nemá viditelný vliv, dokud nepřekročí únosnou hranici. Navíc se v drtivé většině používá k nápravě těchto chybovostí vyšší vrstva, která automaticky tyto chyby napravuje, či pakety řadí. Každé sítové rozhraní má prostřednictvím protokolu IP přidělen jednoznačný identifikátor, tedy IP adresu. V každém datagramu je pak tato adresa uvedena – paket tedy obsahuje adresu odesilatele i cíle. Na základě právě těchto adres pak routery, které pracují na této vrstvě, provádí rozhodnutí, kterým směrem daný paket odešlou, jde o tzv. routing, česky řečeno: směrování.
Záhlaví IP datagramu nám říká vše, co potřebujeme vědět:
Verze IP, zdrojová a cílová IP. Délka záhlaví. Zajímavé je, že musí být udáváno ve čtyřbytech, jinými slovy: pokud máme datagram s délkou záhlaví 20, v kolonce „délka záhlaví“ bude číslo 5. o Pokud není násobkem čtyř, doplní se výplní tak, aby bylo o Minimální délka hlavičky je 5 bitů Typ služby. Umožní posílání paketů podle priorit, aby byla zachována kvalita. Celková délka. Délka IP datagramu v bytech. Délka je 16bitové číslo. Identifikace IP datagramu. Unikátní 16bitové číslo identifikující fragment v paketu Doba životnosti (Time to Live - TTL). Protokol. Obsahuje identifikaci protokolu vyšší vrstvy, který datagram využívá k cestě o Vždy je použit TCP (ID=6) nebo UDP (ID=17) Kontrolní součet. o Pouze kontrolní součet záhlaví datagramu o Problémem je změna informací v datagramu směrovači – např. TTL Musí se pak změnit kontrolní součet, to mají na starost směrovače Flags (příznaky). Udává informace o fragmentování dat. Je to 3bitové číslo. o První bit je vždy nastaven na hodnotu 0. o Druhý bit nám říká, zda paket můžeme fragmentovat (0) nebo ne (1). Pokud na směrovač přijde paket, který musí být fragmentován kvůli přenosovému médiu, ale druhý příznak je 1, pak je zahozen. o Třetí bit říká, zda jde o fragment poslední (0) nebo průběžný (1). Volitelné položky a samotná data
V sítích se používá hierarchické adresování. Pro lepší představu si lze hierarchické adresování v sítích představit jako zasílání dopisu z jednoho státu do druhého. Jde o to, že na každém stupni doručování se stačí zajímat pouze o další nižší stupínek, jako s poštou: Zajímá mne stát, pak město, pak ulice, pak jméno. Směrovače směrují pakety pouze na základě adresy sítě, nezajímají se o koncové zařízení, ke kterému data proudí. Jakmile se paket dostane do příslušné sítě, lokální zařízení jako například přepínač již doručení k cílovému počítači zajistí. Logická adresace je jedním z nejdůležitějších faktorů při návrhu sítí. Taková sít by měla být logicky/hierarchicky uspořádána, snadno udržovatelná a musí počítat s budoucím růstem připojených zařízení. Stále ještě používáme adresaci pomocí IPv4, což je adresa reprezentovaná pomocí 32 bitů, která se zapisuje jako čtveřice až trojciferných čísel oddělených tečkou. IP adresa je hierarchická a dělí se na dvě části. První část určuje adresu sítě, pak je tu ještě druhá část určující adresu koncového zařízení. Díky neefektivnosti rozdělení se adresy rozdělily do pěti tříd označených velkými písmeny. První tři třídy, tedy třída A, B a C jsou určeny k adresaci konkrétních sítí a hostů, třída D je rezervována pro multicast a třída E je určena pro experimentální účely. To, do jaké třídy IP adresa patří, se rozliší podle prvních čtyř bitů.
První bit adresy je 0, pak patří do třídy A První dvoubit adresy je 10, pak patří do třídy B Pokud je první 0 zleva na třetím místě adresy ve dvojkové soustavě, pak je to třída C Pokud je první 0 zleva na čtvrtém místě adresy ve dvojkové, pak je to třída D Jeli první čtyřbit zleva 1111, pak patří do třídy E
Adresy sítě jsou určeny počtem prvních několika bitů následovně:
Prvních 8 bitů u třídy A Prvních 16 bitů u třídy B Prvních 24 bitů u třídy C
Zbylá část IP adresy určuje koncové zařízení.
Adresace podsítí. Hierarchizací adres se sice zvýšil počet adresovatelných sítí, to tak, že brutálně – z 256 na počet převyšující 2 miliony, ale co si budeme povídat, pořád je to málo vzhledem k potřebě. Ukázalo se totiž, že rozdělení adres do tříd je nedostatečně přizpůsobené velikostem a počtu sítí. Je to krásně vidět na univerzitách, kde potřebuji připojit např. 500 počítačů do sítě. No jo, jenomže když jsem přesáhl 255 počítačů pro třídu C, musím jít do B, kde mam přes 65 tisíc míst, ale využiju jenom zlomek. Přesně toto se snaží řešit podsítě. Abych mohl vytvořit podsíť, potřebuji sítovou masku, která je tvořena stejně jako IP adresa, tedy pomocí 32 bitů, čtveřice až tříciferných čísel oddělených tečkou. Vlevo jsou samé jedničky, vpravo jsou samé nuly. Počet jedniček určuje délku sítové části IP adresy. Směrovače tedy při směrování prochází sítovou masku zleva doprava a na pozici, kde jsou jedničky je sítová část, na pozici, kde jsou nuly je host část IP adresy. IP adresa, jak jsem již napsal, se skládá z network a host části, pokud tedy rozděluji sít na podsítě, použiju určitý počet bitů z levé strany host části k její adresaci. To se jednoduše provede tak, že zvýším počet jedniček u sítové masky.
Způsob jak zapsat masku je dvojí: o IP: 192.168.1.2 Maska: 255.255.255.0 o IP: 192.168.1.2 /24
Délka masky: počet jedniček v masce zleva
Protože je to třída C
Příklad: rozdělení sítě do podsítí. IP adresa: 192.168.10.0 a chci ji rozdělit na 8 stejných podsítí Adresa patří do třídy C Protože: 11000000.10101000.00001010.0 224 Chci subsítí, proto prodloužím network část o 3 bity Sítová maska tedy bude: 255.255.255. ? Protože: 11000000.10101000.00001010.11100000 Maska pro všechny podsítě tedy bude: 255.255.255.224 První podsít má tedy adresu 192.168.10.0 a broadcast 192.168.10.31 Adresy ostatních, tedy zbylých sedmi, podsítí a jejich broadcasty se pak budou v poslední části adresy postupně zvyšovat, protože počet původních adres byl 256, my chtěli 8 podsítí, takže na každou podsít připadá:
adres (i s broadcastem a adresou sítě, takže reálně
mám 30 adres), ale začínám na čísle 0 (adresou sítě), takže 31 je poslední adresa, tedy broadcast, což je všesměrové vysílání do podsítě.
Příklad: jak se určí adresa podsítě, do které počítač patří? Řešení: Počítač má nastavenu nějakou IP adresu a masku. IP: 192.168.1.102 a maska: 255.255.255.0. Adresa podsítě se získá jako výsledek logické operace AND provedené na IP adrese a adrese masky. V tomto případě je: adresa podsítě: 192.168.1.0 část identifikující sít: 192.168.1 část identifikující koncové zařízení: 102 Všechna zařízení ve stejné síti mají stejnou první část IP adresy – část identifikující sít. Sít je možné rozdělit na více podsítí tak, že část identifikující sít je rozšířena o několik dalších bitů na úkor části pro koncová zařízení. Celá IP adresa je 32bitová.
Funkce směrovačů
Je to aktivní prvek počítačové sítě, který směrováním (routingem), přeposílá datagramy směrem k jejich cíli, toto vše probíhá na třetí vrstvě ISO OSI modelu. Router vlastně propojuje dvě sítě a přenáší mezi nimi data. Každý router obsahuje směrovací tabulka, která obsahuje optimální cesty k cíli. Bránou je obvykle směrovač, který v síti funguje jako hraniční sítové zařízení, jako spojovací článek mezi vnitřní a vnější sítí. Nastavení IP adresy, masky podsítě a výchozí brány můžu provést manuálně v sítovém nastavení nebo je získat z DHCP automaticky. Směrování. Když potřebuje počítač komunikovat s jiným počítačem, který není na stejné síti, posílá svá data svému hraničnímu směrovači – výchozí bráně – a ten se postará o další doručení. Směrovač dělá směrovací rozhodnutí s každým paketem, který do něj dorazí. Pokud je cílový počítač připojen na jiném rozhraní stejného směrovače jako zdrojový počítač, jsou data ihned přesměrována k cíli. Pokud cílová sít není připojena přímo ke směrovači, směrovač přepošle data na další směrovač, který vede k cíli. Směrovač si vede směrovací tabulku, v níž má uvedeny cesty do jednotlivých sítí i s metrikou. Směrovací tabulka obsahuje imaginární obraz topologie sítě, který jí pomáhá rozhodnout se, jak naložit s paketem přijatým nebo odesílaným. Obsahuje záznamy odpovídající použitému protokolu. V praxi to funguje tak, že cílová IP adresa z datagramu je prohnána tabulkou a hledá se shoda s již existujícím záznamem. Záznamy zde jsou řazeny podle délky masky sítě. Pokud je
nalezena shoda, pak se příslušný řádek použije pro směrování porovnávaného datagramu. Pokud shoda nenastane, projde se routovací tabulka až na poslední řádek, kde je adresa implicitní ve tvaru: 0.0.0.0, která říká: „Není tu to, co hledáš, mazej ven.“ Je to vlastně taková vstupní brána do „internetového prostoru“. Statické a dynamické směrování. Cesty do vzdálených sítí se bud směrovač naučí automaticky pomocí směrovacích protokolů od ostatních směrovačů, nebo je můžeme staticky manuálně nastavit ve směrovači. Směrovací protokoly, pomocí kterých si směrovače automaticky vyměňují informace o sítích a pomocí kterých jsou data směrována, jsou například protokoly RIP (routing information protokol). Pokud jsou na směrovačích povoleny dynamické směrovací protokoly, pak aktualizace informací o stavu sítě probíhají automaticky. Nevýhodou pak je, že během rozesílání aktualizací sítě ostatním směrovačům v síti dochází k přidávání provozu na sít, chvilkově může docházet k přehlcení linky. Následně pak musí směrovače přepočítat metrické údaje, což jim zabere také nějaký čas a prostředky. Obě metody mohu kombinovat. Příkaz pro zobrazení výpisu ze směrovací tabulky: netstat -r Next-hop je funkcí směrovače. Přímé spojení dvou počítačů je hop o délce jedna, hop je tedy počet skoků od startu do cíle, neboli počet routerů, kterými datagram projde +1 za přičtení cesty do cíle z posledního routeru. Next hop je tedy označením dalšího routeru v cestě. Souvisí s routovací tabulkou, kde v levém sloupci je cílová sít, v dalším sloupci pak next-hop adresa na její router respektive příští skok na cestě do cílové sítě.
Struktura IP adresy. IP adresa je 32bitové číslo. V této podobě s ní pracují sítová zařízení. Pro snadnější zapamatování a čtení je zobrazena ve formě čtyř dekadických čísel oddělených tečkou. Binární číslo by bylo rozděleno do čtyř skupin, tzv. oktetů. IP adresa se skládá z části, která je společná všem počítačům na jedné podsíti (tzv. adresa sítě), dále z části, která identifikuje jednotlivá zařízení. Která část identifikuje sít a která koncová zařízení lze snadno rozkrýt pomocí masky sítě. Maska sítě je takové 32bitové číslo, které zleva začíná jedničkami a pokračuje nulami. Jedničky v masce říkají, které bity jsou v IP adrese součástí adresy sítě, nuly pak určují, které bity v IP adrese jsou součástí adresy koncového zařízení.
IP adresa se dělí na tři základní části:
Adresa sítě Adresa podsítě Adresa počítače
Tato struktura má velký význam, prakticky funguje na podobném principu jako vlastnost směrovačů next-hop. Mimo cílovou sít směruje pakety této sítě, dokud si do ní nenajde cestu. Když je v síti, zajímá se o podsít. Když se v podsíti, hledá už jenom cílovou stanici, pro kterou byl datagram určen. IP adresa koncového zařízení, maska podsítě a adresa sítě. Adresa sítě je 32bitové číslo stejně jako IP adresa koncového zařízení. Všechna zařízení v síti mají stejnou adresu sítě. Ve své IP adrese mají stejnou část, která je sítovou částí IP adresy. Příklad: Počítač má nastavenou IP: 192.168.25.135, maska podsítě: 255.255.255.128. Adresa sítě se získá z IP adresy jako logická operace součinu AND. IP: 11000000.10101000.00011001.10000111 M: 11111111.11111111.11111111.10000000 &: 11000000.10101000.00011001.10000000 – dekadicky: 192.168.25.128 Úloha: Mohou spolu dva počítače v síti komunikovat bez pomoci směrovače? Řešení: Je-li známa jejich IP adresa a maska podsítě, můžeme pomocí operace AND zjistit, zda mají oba počítače stejnou adresu sítě. Pokut tomu tak není, nemohou spolu komunikovat bez použití směrovače. Unicast je vysílání pro určité koncové zařízení. Cílová adresa je jednoznačná. Broadcast je vysílání určené všem počítačům v dané lokální síti. Adresa broadcastu končí 255, tedy broadcast v síti 192.168.1.0 je: 192.168.1.255. Multicast je vysílání pro určitou skupinu počítačů. Využívají jej například směrovače k výměně směrovacích tabulek. IP adresa je daná, ale cílové zařízení tato data přijme, i když jeho IP adresa je jiná. Úloha: vypiš adresy pro koncová zařízení v síti: 192.168.10.240/28 Řešení: Binárně: 11000000.10101000.00001010.11110000 Maska : 11111111.11111111.11111111.11110000 Tedy na poledních 4 bitech lze získat variací 0 a1 adresy koncových zařízení. Je jich celkem 16, ale nepočítáme 0000 (protože je shodná s adresou sítě) a pak (1111), což je pro změnu broadcast – máme tedy 14 koncových zařízení.
Úloha: Je třeba rozdělit přidělený adresní rozsah 192.168.5.0/24 na dvě podsítě. Ke směrovači jsou k jeho dvěma rozhraním připojeny dvě sítě, mezi nimiž je nutné zabezpečit směrování. Masku je potřeba prodloužit o jeden bit -/25. Adresa 192.168.5.0 binárně: 11000000.10101000.00000101.00000000 S maskou -/25 končí za třetím bytem: 11000000.10101000.00000101.00000000 Po prodloužení masky: 11000000.10101000.00000101.00000000 Na tomto jednom půjčeném bitu je možnost zapsat jedničku nebo nulu, získáme tedy dvě podsítě: 11000000.10101000.00000101. 00000000 – 192.168.5.0/25 11000000.10101000.00000101. 10000000 – 192.168.5.128/25
Analogicky se dají tvořit další podsítě. Pokud bych požadoval rozdělení na osm podsítí, musel bych si půjčit tři byty masky navíc, pokud deset podsítí, potřeboval bych půjčit již bity čtyři. Zjištění sítové a broadcastové adresy vychází ze znalosti IP adresy počítače. Pomocí IP adresy a masky lze určit, jak bude vypadat adresa sítě a adresa broadcastu. Mějme adresu 10.15.107.25 a masku podsítě 255.255.248.0. IP: 00001010.00001111.01101011.00011001 M:11111111.11111111.11111000.00000000 S : 00001010.00001111.01101000.00000000 – dekadicky: 10.15.104.0 B : 00001010.00001111.01101111.11111111 – dekadicky: 10.15.111.255 Privátní IP adresy. Pro směrování na veřejné síti se musí používat unikátní, jednoznačné IP adresy. Na veřejné síti se IP adresy nesmí duplikovat. Existuje tak skupina jasně definovaných adres (privátní adresy), které se nepoužívají na veřejné síti, ale používají se v sítích privátních, které jsou od veřejné sítě odděleny. Ve světě tak může existovat bezpočet privátních sítí, které používají stejné adresy, ale protože jsou pro veřejnou sít skryté, nevadí to. Tyto sítě jsou skryté za nějaké hraniční zařízení, obvykle směrovač, kterým těmto sítím zprostředkovává přístup k internetu. Takové to počítače pak přistupují k internetu a komunikují s dalšími počítači na veřejné síti prostřednictvím svého hraničního zařízení. NAT – network adrress translation. Jedná se o překlad mezi interní privátní adresou a veřejnou adresou. Pokud chce počítač z privátní sítě přistupovat třeba ke zdrojům na internetu, musí na hraničním zařízení, kterým je obvykle směrovač, dojít k překladu adres.