Slidy z prednášky
YouTube

1.  Úloha sieťovej vrstvy

Sieťová aplikácia posiela cez soket správy aplikačnej vrstvy transportnej vrstve. Transportná vrstva delí správy na menšie časti, pridáva k nim hlavičky transportnej vrstvy, čím vznikajú segmenty. Segmenty sú ďalej odovzdávané sieťovej vrstve, ktorá ku každému segmentu pridá ďalšiu hlavičku, čím vznikne datagram. Zjednodušene sa dá povedať, že správy sú určené pre cieľovú aplikáciu a segment pre cieľový počítač (typicky jeho operačný systém) a datagram pre všetky routre (smerovače) na ceste od odosielateľa k príjemcovi.

Úlohou sieťovej vrstvy je dopraviť datagram od odosielateľa k príjemcovi a to čo možno najefektívnejšie, t.j. najrýchlejšou cestou. Routre sú zariadenia, ktoré sú priamo napojené na viac zariadení (ďalšie routre, switche, koncové zariadenia). Z každého z týchto zariadení router dostáva mnoho datagramov a jeho úlohou je každý z týchto datagramov poslať tým správnym smerom na jeho ceste k cieľovej stanici. Na to, aby router vedel, kam má ktorý datagram odoslať, používa smerovaciu tabuľku, ktorá pre každú cieľovú adresu určuje, ktorému z naňho pripojených zariadení majú byť datagramy zasielané, presnejšie ktorým rozhraním.

Obsah smerovacej tabuľky upravujú smerovacie algoritmy, ktoré sú opakovane spúšťané routrami, aby reagovali na zmeny v ich okolí (zahltenia resp. uvoľnenia spojení, odstávky iných routrov, prerušenia spojení, vytvorenia spojení a tak podobne) a zasielali datagramy stále aktuálne najlepšími smermi.

2.  Riadenie siete

Sieťová vrstva môže byť riadená rôzne. Na internete sa používa riadenie datagramami. V súčasnosti sa však v telekomunikáciách stále používa riadenie okruhmi alebo riadenie virtuálnymi okruhmi.

2.1  Riadenie okruhmi

Pri riadení okruhmi je časť prenosového pásma vyhradená iba pre komunikáciu dvoch koncových zariadení. Po nadviazaní spojenia môže odosielateľ posielať priamo ľubovoľne veľké správy bez potreby delenia na pakety a pridávania hlavičiek. Toto riešenie sa používa pre „hlúpe“ koncové zariadenia, ako sú vytáčacie telefóny, ktoré fungujú vlastne iba na fyzickej vrstve. V jadre siete je to riešenie známe zo začiatkov telefónnych spoločností, kedy sa prepájalo ručne resp. keď prepájali analógové ústredne (niekde možno ešte stále sú).

2.2  Riadenie virtuálnymi okruhmi

Riadenie virtuálnymi okruhmi (ďalej len VO) je „medzikrokom“ medzi riadením okruhmi a riadením datagramami. Pri VO sa už správy musia deliť na pakety. Ku každému paketu sa pridáva v hlavičke číslo okruhu (nie cieľová adresa). Odkiaľ sa to číslo vezme?

Ak chce stanica v sieti riadenej VO komunikovať s inou, musia najprv v prvej fáze nadviazať spojenie. Toto nadväzovanie spojenia je podobné ako pri nadväzovaní spojenia v protokole TCP, akurát, že v tomto prípade sa deje na sieťovej vrstve. Keďže sieťová vrstva sa spracúva aj na všetkých routroch na ceste, nadväzovanie spojenia sa vykonáva aj na nich. Pri nadväzovaní spojenia je potrebné vybrať na základe cieľovej adresy cestu, t.j. postupnosť routrov, ktorou budú putovať všetky pakety daného VO. Všetky routre na ceste vytvoria pre toto nové spojenie záznam vo svojich smerovacích tabuľkách.

V druhej fáze, kedy už môžeme posielať dátové pakety vytvoreným VO, sú pakety VO označované už iba číslom okruhu – jedno číslo pre každý spoj na ceste. Jeden spoj má pre každý VO unikátne číslo.

Na demonštráciu si vezmime nasledujúce zapojenie jednoduchej siete VO.

Keď stanica A chce komunikovať so stanicou B, musí sa najprv vytvoriť VO pre túto komunikáciu. Pri vytváraní VO sa určí, že cesta pre pakety VO pôjde cez routre R1 a R2. Na obrázku majú tieto routre naznačené aj čísla svojich rozhraní. Ak teda odíde paket zo stanice A, príde na rozhranie 1 routra R1. Router R1 na základe smerovacej tabuľky a čísla VO, ktoré si prečítal v hlavičke paketu rozhodne, že tento paket odošle cez svoje rozhranie číslo 2. Riadok smerovacej tabuľky routra R1 by mohol vyzerať nasledovne:

vstupné rozhranievstupné číslo VOvýstupné rozhranievýstupné číslo VO
12142172

To znamená, že stanica A by mala vysielať pakety do tohto spojenia stále s číslom 214, na spoji medzi R1 a R2 už bude mať tento paket v hlavičke číslo 172, ktoré router R2 už správne identifikuje v svojej smerovacej tabuľke a s iným číslom paketu ho vyšle stanici B. Čísla VO sa pri nadväzovaní spojenia generujú náhodne, ale tak, aby na každom spoji neboli pre dve rôzne spojenia rovnaké čísla VO.

Keď sa spojenie ukončí, príslušné riadky o danom virtuálnom okruhu musia byť z routrov na ceste odstránené.

2.3  Riadenie datagramami

Na internete sa používa riadenie datagramami. Na sieťovej vrstve sa v tomto prípade nevytvára spojenie. Každý z datagramov má v hlavičke uvedenú cieľovú adresu a každý je smerovaný po sieti nezávisle. To, akou cestou pôjde ktorý datagram, určujú smerovacie tabuľky na tých routroch, kade tento datagram putuje. Smerovacie tabuľky sa môžu v čase meniť, ak smerovací algoritmus nájde pre niektoré cieľové adresy vhodnejšie cesty. Z toho vyplýva, že datagramy rovnakej komunikácie môžu dôjsť do cieľa rôznymi cestami.

Smerovacie tabuľky v počítačovej sieti riadenej datagramami sa líšia od smerovacích tabuliek používaných pri riadení virtuálnymi okruhmi. Budeme sa im venovať nižšie.

Hlavné dôsledky toho, že na sieťovej vrstve sa nevytvára spojenie (na rozdiel od VO) sú nasledovné:

  • O spoľahlivý prenos dát (ak ho potrebujú) sa musia postarať koncové zariadenia, čo má samozrejme vyššie nároky na možnosti a cenu koncových zariadení. Viac o spoľahlivom potvrdzovanom prenose dát na transportnej vrstve sme hovorili na predchádzajúcej prednáške.
  • Jadro siete, (teda routre, ktoré ho tvoria) je výrazne odľahčené. Nie je potrebné vytvárať virtuálne okruhy a uchovávať si o nich stav pre každú komunikáciu. Predstavte si routre providera prvej úrovne, ktoré by museli vytvárať rádovo v nanosekundách nové okruhy a staré odstraňovať, a naviac tieto tabuľky by mali milióny riadkov.
  • Stráca sa schopnosť vyhradiť niektorým spojeniam časť prenosového pásma a zaručiť tak spoľahlivý prenos dát a minimálnu prenosovú rýchlosť. Dôvod je jednoduchý, spojenia pri riadení datagramami na sieťovej vrstve neexistujú (a routre rozbaľujú pakety iba po sieťovú vrstvu, transportná vrstva je určená len pre koncové zariadenia).

3.  Sieťový protokol IP verzie 4 (IPv4)

IP: internet protocol, RFC 791

Protokol IP verzie 4 (IPv4) je v súčasnosti hlavným nosným protokolom sieťovej vrstvy na internete. Postupne by ho mal začať nahrádzať IP protokol verzie 6 (IPv6), ktorý je spomínaný v nasledujúcej prednáške. Protokol IPv6 zatiaľ podporuje málo poskytovateľov internetu a zatiaľ sa nepresadil ani vo firemných sieťach.

Hlavička datagramu protokolu IPv4 je zobrazená na nasledujúcom obrázku.

Význam jednotlivých častí hlavičky IPv4:

  • versionverzia IP protokolu – Má v sebe číslo 4.
  • lengthdĺžka hlavičky – Určuje, koľko bitov zaberá hlavička delené 32. Najmenšia dĺžka hlavičky je 20 bajtov, teda 20*8=160 bitov, z čoho vyplýva, že najmenšie číslo v tomto políčku je 160/32=5.
  • type of service – v preklade typ služby – Určuje charakter dát prenášaných v tomto IP datagrame. Typ služby tak určuje prioritu datagramu, ktorá sa môže brať do úvahy pri zaraďovaní vo výstupných radoch rozhraní routrov. V type služby sa dá v prípade potreby špecifikovať požiadavka na malé zdržanie, vysokú priepustnosť a/alebo vysokú spoľahlivosť.
  • total lengthcelková dĺžka – Predstavuje počet bajtov celého IP datagramu. Maximálna dĺžka je závislá od typu siete a je označovaná aj ako MTU teda maximum transmission unit. V Ethernete sa bežne používa MTU 1500 bajtov. Podľa špecifikácie by malo byť každé zariadenie schopné prijať datagram minimálne veľkosti 576 bajtov. Je však možné, aby boli po sieti zasielané aj kratšie datagramy (rôzne dolné limity sú dané technológiou nižšej vrstvy). Ak router prijme datagram, ktorý je väčší ako MTU spoja, do ktorého má byť tento datagram odoslaný, je nutné robiť fragmentáciu na viac menších datagramov. Na označovanie jednotlivých fragmentov slúžia ďalšie 3 hodnoty hlavičky IP datagramu.
  • identification – Určuje jedinečné číslo datagramu. Toto číslo sa používa na to, že ak po ceste dôjde k fragmentácii datagramu, každý fragment bude mať toto číslo rovnaké a na základe toho bude prijímajúca strana vedieť, ktoré fragmenty patria k sebe. Tieto identifikačné čísla sa vo vysielacej stanici generujú v závislosti od operačného systému rôzne. Niektoré OS zvyšujú čísla datagramov o 1, niektoré ich generujú zakaždým náhodne. Windowsy napríklad zvyšujú čísla o 256.
  • flagspríznaky – Sú iba dva:
    • DF – 0 znamená, že datagram môže byť fragmentovaný a 1 znamená, že nemôže.
    • MF – 0 znamená, že ide o posledný z fragmentov pôvodného datagramu a 1 znamená, že to nie je posledný fragment pôvodného datagramu.
  • fragment offset – Určuje, od ktorej pozície z tela pôvodného datagramu začínajú dáta v tomto fragmente. Pozícia sa určuje v 8 bajtových jednotkách.
  • time to live, často uvádzaný iba ako skratka TTL – Určuje, cez koľko routrov môže datagram na svojej ceste maximálne prejsť. Pri každom prechode routrom sa toto číslo znižuje o 1. Ak na router príde datagram s TTL 1, je datagram automaticky zahodený.
  • protocol – Toto políčko sa použije, až keď datagram príde do cieľovej stanice. Určuje to, aký protokol je použitý v tele datagramu. Typicky to môže byť identifikácia toho, že v datagrame je prenášaný segment transportného protokolu TCP alebo UDP. Je potrebné si uvedomiť, že v tele IP datagramu sú bez tejto informácie iba akési dáta (nejaké jednotky a nuly) bez zmyslu. Ak však vieme, že v tele datagramu je napríklad UDP segment, vieme, že prvých 8 bajtov tela IP datagramu je hlavička UDP datagramu a zvyšok sú dáta pre aplikačnú vrstvu. TCP a UDP nie sú jediné dva protokoly, ktoré môžu byť prenášané v IPv4 datagrame. Stretneme sa ešte napríklad s protokolmi ICMP, IGMP, PIM, ale aj s protokolom IPv6, ktoré tiež sú alebo môžu byť prenášané vo vnútri IPv4 datagramov. Úplný výpis všetkých možností je na stránke organizácie IANA .
  • header checksumKontrolný súčet hlavičky sa robí rovnako ako v prípade protokolov TCP a UDP sčítavaním 16 bitových úsekov hlavičky.
  • source addresszdrojová adresa – 32 bitová adresa zdrojovej stanice.
  • destination addresscieľová adresa – 32 bitová adresa cieľovej stanice. Viac o adresácii v IPv4 sieťach je popísané nižšie.
  • options, alebo voľby je nepovinná súčasť hlavičky. Ich použitie často zbytočne znižuje výkon routrov a je snaha ich nepoužívať. Môžu obsahovať rôzne doplňujúce údaje k bezpečnosti, smerovaniu, identifikáciu prúdov dát alebo časové pečiatky.

3.1  Fragmentácia a defragmentácia

Všetky fyzické spoje v sieti majú určenú maximálnu veľkosť datagramu sieťovej vrstvy, ktorú sú schopné preniesť. Táto maximálna veľkosť sa označuje MTU = maximum transmission unit. V sieti typu Ethernet sa používa MTU 1500 bajtov, ale napríklad WLAN (Wi-Fi) môže mať MTU až 7981 bajtov. Ak na router príde datagram, ktorý je väčší ako MTU spoja, do ktorého je potrebné tento datagram poslať, vykoná fragmentáciu datagramu na menšie datagramy, ktoré už týmto spojom môžu prechádzať. Tieto fragmenty sa naspäť spájajú až v cieľovej stanici aj v prípade, že táto cieľová stanica je pripojená spojom, ktorý má MTU dostatočne veľké na prenos pôvodného (veľkého) datagramu. Dôvodom je to, že fragmenty môžu cestovať do cieľa rôznymi cestami a tým pádom by sa router na jednej z týchto ciest nemusel dočkať všetkých fragmentov pôvodného datagramu.

Predstavme si situáciu, že na router príde datagram veľkosti 4000 bajtov a je potrebné ho poslať cez spojenie s MTU 1500. Týchto 4000 bajtov sa skladá z 20 bajtov hlavičky IP datagramu a 3980 bajtov tela IP datagramu (napr. TCP segment). Keďže aj fragmenty budú potrebovať IP hlavičku, do každého z nich môžeme dať maximálne 1480 bajtov dát z tela pôvodného datagramu. Rozdelíme teda pôvodných 3980 bajtov na tri časti 1480, 1480 a 1020 bajtov a každej z týchto častí dáme samostatnú hlavičku veľkosti 20 bajtov, čím vzniknú datagramy veľkosti 1500, 1500 a 1040 bajtov.

Pozrime sa na podstatné časti hlavičiek týchto datagramov, ktoré sú potrebné na identifikáciu toho, že ide o fragmenty toho istého datagramu a v akom poradí majú byť pospájané. Najprv predpokladajme, že pôvodný datagram má v hlavičke nasledujúce hodnoty:

total lengthidentificationDFMFoffset
4000123456000

Pretože výstupné MTU je 1500 bajtov, vzniknú 3 datagramy – fragmenty pôvodného datagramu, s nasledujúcimi hodnotami v hlavičke.

total lengthidentificationDFMFoffset
1500123456010
150012345601185
104012345600370

Prvý datagram má nastavené MF=1, teda, že nejde o posledný fragment a offset=0, čo znamená, že sú v ňom dáta od nultého bajtu pôvodného datagramu. Druhý datagram má tiež MF=1, lebo tiež nie je posledný fragment. Offset má rovný 185, čo znamená, že sú v ňom dáta od 185*8=1480-teho bajtu pôvodného datagramu. Tretí datagram je už posledným fragmentom, teda má MF=0 a offset=370, čo znamená, že sú v ňom dáta od 370*8=2960-teho bajtu pôvodného datagramu.

Ak by pôvodný datagram mal hodnotu DF=1, fragmentácia nie je možná a paket sa musí zahodiť.

3.2  Adresácia v protokole IPv4

V protokole IPv4 sa používajú 32 bitové IP adresy. Tieto adresy sa zapisujú ako 4 osembitové čísla v desiatkovej sústave oddelené bodkami. Napríklad IP adresa 158.197.31.4 je vlastne špeciálne zapísané 32 bitové číslo, ktoré v binárnom zápise vyzerá nasledovne 10011110 11000101 00011111 00000100, lebo 158 v desiatkovej sústave sa binárnej sústave zapíše ako 10011110, 197 ako 11000101, 31 ako 11111 a 4 ako 100.

Každé sieťové rozhranie pripojené do počítačovej siete má vlastnú IP adresu. Sieťové rozhranie je logická časť zariadenia, obvykle priradená jednému fyzickému pripojeniu, typicky sieťovej karte. Jedno koncové zariadenie má obvykle aktívne iba jedno rozhranie na komunikáciu s inými koncovými zariadeniami. Router má samostatné rozhranie pre každé pripojenie, a pre každé má inú IP adresu.

Internet je sieť sietí. Zariadenia z rôznych sietí medzi sebou vedia spolu komunikovať iba cez routre, avšak zariadenia, ktoré sú v jednej sieti dokážu komunikovať v rámci svojej siete bez účasti routra. Zariadenia v rámci jednej siete musia mať IP adresy patriace do rovnakej siete. Čo to znamená, že dve IP adresy patria do rovnakej siete? Majú rovnakú adresu siete, alebo inak, majú rovnakú sieťovú časť IP adresy.

Pôvodné určovanie sieťovej časti IP adresy

Každá IP adresa sa delí na dve časti: časť určujúcu sieť a časť určujúcu stanicu v tejto sieti. Dva počítače v jednej sieti musia mať časť určujúcu sieť rovnakú. Pôvodne, keď bol Internet ešte malý a IP adries bol dostatok, vznikla kategorizácia IP adries, ktorá iba na základe hodnôt prvých pár bitov IP adresy určovala, aká časť 32 bitovej adresy bude určovať sieť. Boli určené 4 triedy IP adries A až D. V triede A bola sieť určená prvými 8 bitmi a zvyšných 24 bitov označovalo stanicu v tejto sieti. Trieda B mala prvých 16 bitov pre sieť a ďalších 16 pre stanice, trieda C mala prvých 24 bitov pre sieť a posledných 8 pre stanice.

Trieda D má všetkých 32 bitov určujúcich sieť, čo znamená, že žiadne zariadenie nemôže mať adresu typu D. Na prvý pohľad to možno vyzerá nelogicky, no tieto IP adresy sa používajú v multicaste na identifikáciu multicastovej skupiny. Multicast budeme širšie rozoberať pri smerovacích algoritmoch. V skratke ide o to, že pri multicaste chce viacej staníc komunikovať tak, že datagram s cieľovou multicastovou IP adresou, ktorý vyšle ľubovoľná z týchto staníc, chcú prijať všetky stanice prihlásené do tohto multicastu. Typickým príkladom využitia multicastu môžu byť videokonferencie alebo vysielanie rádií a televízie.

V nasledujúcej tabuľke sú uvedené triedy IP adries. Všimnite si úvodné bity, ktoré určujú triedu adries. Písmenkom s je označený „ľubovoľný“ bit patriaci sieťovej časti IP adresy a písmenkom x je označený bit v časti určenej pre identifikáciu stanice v tejto sieti.

triedaadresy triedy
A0sssssss xxxxxxxx xxxxxxxx xxxxxxxx
B10ssssss ssssssss xxxxxxxx xxxxxxxx
C110sssss ssssssss ssssssss xxxxxxxx
D1110ssss ssssssss ssssssss ssssssss

Treba poznamenať, že bola určená aj trieda E, na špeciálne účely, ale to v súčasnosti nie je podstatné.

CIDR: Classless Inter-Domain Routing

Pôvodné delenie má mnohé nevýhody. Keď si vezmeme triedu A, tak tá môže obsahovať vyše 16 miliónov počítačov. Mnohé protokoly využívajú broadcastové správy, t.j. správy určené pre všetky počítače v sieti. Takéto správy od každého z počítačov môžu výrazne zaťažovať sieť. V sieti typu B vieme prideliť IP adresu vyše 65 tisícom počítačom a v sieti typu C 254 počítačom. Tento skok je dosť výrazný. Čo robiť s organizáciami, ktoré majú zhruba 1000 počítačov, ktoré by chceli mať v jednej sieti? Ak by sa im pridelila sieť typu B, tak vyše 64 tisíc IP adries ostane nevyužitých. Keďže IP adries je málo, takýto luxus si nemôžeme dovoliť.

Bolo teda určené (RFC 4632), že IP adresa môže mať ľubovoľnú časť IP adresy, ktorá určuje sieť. To, koľko bitov IP adresy tvorí identifikácia siete, určuje maska siete. Maska siete má rovnako ako IP adresa 32 bitov. Maska vždy vyzerá tak, že v ľavej časti majú všetky bity hodnotu 1 a zvyšok (v pravej časti) tvoria nuly. Ak by sme napríklad chceli, aby sieťová časť IP adresy mala veľkosť 27 bitov, maska by vyzerala tak, že by mala 27 bitov s hodnotou 1 a zvyšných 5 bitov by boli nuly teda 11111111 11111111 11111111 11100000. Aj maska sa zapisuje podobne ako IP adresa, teda ako 4 osembitové čísla v desiatkovej sústave oddelené bodkami. Teda maska s 27 jednotkami v binárnom zápise sa zapíše ako 255.255.255.224, lebo 11111111 je v desiatkovej sústave 255 a 11100000 je v desiatkovej sústave 224.

Predpokladajme, že máme IP adresu 158.197.31.170 s maskou 255.255.255.224. Táto informácia sa dá zapísať aj skrátene, a to úplnou IP adresou 158.197.31.170/27. Číslo 27 za lomkou hovorí, koľko bitov masky siete tvoria jednotky.

Načo je nám vlastne dobré vedieť, aká časť IP adresy predstavuje sieť? Ako sme už spomínali, pokiaľ chcú komunikovať dva počítače z jednej siete, vedia komunikovať priamo, ale pokiaľ nie sú z jednej siete, musia komunikovať cez router. Ako neskôr uvidíme, aj router na základe svojej smerovacej tabuľky musí zisťovať, do ktorej siete má poslať ktorý datagram.

Môžu byť stanice s IP adresami 158.197.31.170/27 a 158.197.31.155/27 v rovnakej sieti? To zistíme tak, že si vypočítame pre každú z týchto adries adresu siete a ak sú rovnaké ich adresy siete, potom sú tieto dva počítače v rovnakej sieti. Ak nie sú ich adresy sietí rovnaké, tieto dva počítače nemôžu byť v rovnakej sieti. Adresa siete sa počíta tak, že sa vykoná logický AND IP adresy a masky siete medzi dvojicami bitov na príslušných pozíciách.

   IP adresa: 10011110 11000101 00011111 10101010 (158.197.31.170)
       maska: 11111111 11111111 11111111 11100000 (255.255.255.224)
-------------------------------------------------
adresa siete: 10011110 11000101 00011111 10100000 (158.197.31.160)

   IP adresa: 10011110 11000101 00011111 10011011 (158.197.31.155)
       maska: 11111111 11111111 11111111 11100000 (255.255.255.224)
-------------------------------------------------
adresa siete: 10011110 11000101 00011111 10000000 (158.197.31.128)

Ako vidíme, stanice s IP adresami 158.197.31.170/27 a 158.197.31.155/27 majú iné adresy siete, a teda nemôžu byť v jednej sieti a musia komunikovať prostredníctvom routra. Ak by sme ich predsa len zapojili do jednej siete, nevedeli by sa na sieťovej vrstve „porozprávať“. Adresa siete je špeciálna adresa, ktorá nemôže byť pridelená žiadnemu rozhraniu.

Okrem adresy siete nemôže byť žiadnemu rozhraniu pridelená ani broadcastová (obežníková) adresa siete. Tá sa vypočíta ako logický OR medzi IP adresou a invertovanou maskou siete. Invertovaná maska má vymenené všetky bity masky za opačné.

          IP adresa: 10011110 11000101 00011111 10101010 (158.197.31.170)
 invertovaná  maska: 00000000 00000000 00000000 00011111
--------------------------------------------------------
broadcastová adresa: 10011110 11000101 00011111 10111111 (158.197.31.191)

          IP adresa: 10011110 11000101 00011111 10011011 (158.197.31.155)
 invertovaná  maska: 00000000 00000000 00000000 00011111
--------------------------------------------------------
broadcastová adresa: 10011110 11000101 00011111 10011111 (158.197.31.159)

Broadcastová adresa sa používa, ak chceme, aby odoslaný datagram bol prijatý a spracovaný všetkými rozhraniami v danej sieti. Môžete si všimnúť, že adresa siete tvorí dolnú hranicu rozsahu adries siete a broadcastová adresa tvorí hornú hranicu adries siete. Všetky adresy medzi adresou siete a broadcastovou adresou môžu byť pridelené rozhraniam zariadení v sieti. Napríklad v sieti s adresou siete 158.197.31.160/27 môžu byť rozhraniam pridelené IP adresy 158.197.31.161 až 158.197.31.190, teda celkovo 30 IP adries.

Delenie siete na podsiete

Predstavte si, že ste sieťoví administrátori v novej firme, ktorá dostala od providera k dispozícii sieť 158.197.28.0/22. Môžete teda prideľovať počítačom v sieti IP adresy z rozsahu 158.197.28.1 až 158.197.31.254, čo je dokopy 1022 adries. Je však požiadavka, aby kvôli bezpečnosti boli finančné a manažérske oddelenie v samostatnej podsieti a rovnako aj verejne prístupné servery v svojej samostatnej podsieti. Zvyšok organizácie môže byť v tretej podsieti.

Povedzme si najprv, ako by sme urobili dve podsiete. Máme k dispozícii sieť 158.197.28.0/22. Ak zvýšime počet jednotiek v maske o 1 dostaneme dve podsiete 158.197.28.0/23 s rozsahom možných IP adries počítačov 158.197.28.1 až 158.197.29.254 a sieť 158.197.30.0/23 s rozsahom možných IP adries počítačov 158.197.30.1 až 158.197.31.254.

Ak by sme zvýšili počet jednotiek v maske až o 2, dostali by sme 4 podsiete 158.197.28.0/24, 158.197.29.0/24, 158.197.30.0/24 a 158.197.31.0/24.

Nám však treba vytvoriť tri siete. Keďže môžeme predpokladať, že najväčší počet počítačov nebude na finančnej ani verejnej sieti, ale práve v zvyšku podniku, môžeme vytvoriť nasledovné 3 siete:

  • 158.197.28.0/24 pre finančné oddelenie a management s maximálnym počtom počítačov 254 s IP adresami 158.197.28.1 až 158.197.28.254.
  • 158.197.29.0/24 pre verejné servery s maximálnym počtom počítačov 254 s IP adresami 158.197.29.1 až 158.197.29.254.
  • 158.197.30.0/23 pre zvyšok podniku s maximálnym počtom počítačov 510 s IP adresami 158.197.30.1 až 158.197.31.254.

Poznámka: Ak máte zmätok v tom, že ako bolo delenie siete prevádzané, vypíšte si binárne reprezentácie IP adries a spočítajte si sieťové adresy. Pri výpočte maximálneho počtu počítačov nezabudnite na to, že v každej sieti sú dve špeciálne IP adresy, ktoré sa nemôžu prideliť počítačom a to adresa siete a broadcastová adresa.

Špeciálne IP adresy

Najvyššou autoritou na prideľovanie IP adries je organizácia IANA. Ako si môžete prečítať v jej zozname pridelených IP adries, už neexistuje žiaden nepridelený rozsah IPv4 adries, ktorý by nebol určený na špeciálne využitie. Všetky rozsahy určené pre verejné IP adresy koncových zariadení boli pridelené regionálnym organizáciám, ktoré rozdeľujú IP adresy v rámci „kontinentov“. V našej oblasti je to organizácia RIPE NCC.

Medzi adresami je zopár špeciálnych adries sietí, ktoré nesmú byť použité na internete na adresáciu konkrétnych zariadení alebo sietí. Uvedieme si tie najznámejšie a v praxi najpoužívanejšie.

  • 0.0.0.0/32 je možné použiť ako zdrojovú adresu stanice lokálnej siete (nie cieľovú adresu). Toto sa používa pri úvodnom pripojení, keď stanica ešte nevie svoju IP adresu a žiada DHCP server, aby jej nejakú pridelil. Tiež sa používa v smerovacích tabuľkách (viď nižšie).
  • 255.255.255.255 je broadcastová (obežníková) adresa pre lokálnu sieť. Tá sa používa ako cieľová adresa pre všetky rozhrania v lokálnej sieti.
  • 127.0.0.0/8 je loopback, alebo slučka, ktorá určuje „sieť“ vlastného zariadenia – samého seba. V praxi sa používa z tohto rozsahu iba IP adresa 127.0.0.1, označovaná ako localhost alebo aj „moja IP adresa“. Datagramy s cieľovou adresou z rozsahu siete 127.0.0.0/8 nikdy neopustia počítač.
  • 10.0.0.0/8, 172.16.0.0/12 a 192.168.0.0/16 sú adresy sietí, ktoré sa nevyskytujú vo verejnom internete. Sú určené pre privátne siete. Sú používané hlavne v sieťach s NAT routrom, alebo vo VPN sieťach.

4.  Smerovacia tabuľka

Každá stanica aj každý router sú schopné odoslať datagram na ľubovoľnú cieľovú adresu na internete. Keby si všetky stanice aj routre mali uchovávať smer odoslania pre každú možnú stanicu zvlášť, potrebovali by sme zhruba 4 miliardy záznamov. Samozrejme, že uchovávanie takých veľkých tabuliek nie je vyhovujúce. Namiesto toho sa využívajú kombinácie IP adries a masiek tak, aby sa počet záznamov smerovacej tabuľky čo najviac zredukoval.

Vezmime si príklad smerovacej tabuľky na routri s 5 rozhraniami.

cieľmaskabránarozhraniemetrika
200.23.24.0255.255.255.00.0.0.010
200.23.16.0255.255.248.00.0.0.030
200.23.24.0255.255.248.00.0.0.020
200.23.24.0255.255.248.00.0.0.0510
0.0.0.00.0.0.0200.23.1.140

Všimnite si, že riadky tabuľky sú usporiadané podľa počtu jednotiek v maske zostupne. Predstavme si teraz, že na tento router príde datagram s cieľovou adresou 200.23.25.8. Do ktorého rozhrania sa má tento datagram odoslať? Algoritmus výberu postupuje tak, že vypočítava logický AND cieľovej adresy datagramu a masky v príslušnom riadku smerovacej tabuľky (takto sa počíta adresa siete). Ak výsledok je zhodný s hodnotou v stĺpci cieľ, pravidlo je úspešné a datagram sa pošle do toho rozhrania, ktoré uvádza príslušný riadok smerovacej tabuľky. Pravidlá sa vyhodnocujú zhora nadol.

Vyskúšajme si teda výpočet tohto algoritmu pre cieľovú adresu 200.23.25.8. Najprv vypočítame AND s maskou v prvom riadku. Výsledok 200.23.25.0 je rôzny od 200.23.24.0 takže pravidlo je neúspešné. Potom sa vytvorí AND adresy 200.23.25.8 s maskou 255.255.248.0. Výsledok 200.23.24.0 je zhodný s cieľom v treťom riadku, pravidlo je úspešné a datagram je zaslaný cez rozhranie 2.

Tretí a štvrtý riadok tabuľky sa líšia iba v metrike. V takomto prípade je možné posielať tento datagram aj cez rozhranie 5, aj cez rozhranie 2 (obe cesty sú správne), ale preferované je rozhranie s nižším číslom metriky.

Všimnime si, že posledný riadok smerovacej tabuľky má masku 0.0.0.0, s ktorou keď urobíme logický AND, výsledok bude vždy 0.0.0.0. Z toho vyplýva, že ak sa testuje aj posledné pravidlo, je úspešné vždy.

Ešte sme nespomínali, načo je stĺpec brána. Informácie o bráne sú potrebné pre spojovú vrstvu (spomenieme neskôr, keď ju budeme preberať). Ak je v stĺpci brána uvedené 0.0.0.0, znamená to, že dané rozhranie je v rovnakej sieti ako stanica s cieľovou adresou z datagramu. Napríklad vieme, že stanica s IP adresou 200.23.25.8 sa nachádza v rovnakej sieti ako rozhranie routra s číslom 2 a aj rozhranie routra s číslom 5. Samozrejme aj IP adresy týchto rozhraní routra sú potom z rovnakej siete. Napríklad by to mohli byť IP adresa 200.23.25.1 a 200.23.25.254.

Ak je v stĺpci brána uvedená nejaká konkrétna IP adresa, v našom príklade 200.23.1.1, ide o adresu najbližšieho routra, cez ktorý pôjde datagram na svojej ceste k cieľovej stanici. Ak ide o posledný riadok s cieľom aj maskou 0.0.0.0, hovoríme o default routri, teda routri, cez ktorý sa spájame s našim providerom a ktorý nás pripája do internetu.

5.  DHCP: Dynamic Host Configuration Protocol

RFC 2131

IP adresa, maska, default router aj lokálne rekurzívne DNS servery sa dajú nastaviť manuálne cez príslušné konfiguračné nastavenia v operačnom systéme. DHCP však ponúka možnosť nastaviť si všetky tieto hodnoty dynamicky, bez nutnosti manuálneho nastavovania.

DHCP je aplikačný protokol využívajúci UDP protokol. Typický scenár, kedy sa použije DHCP protokol je pri pripojení zariadenia do siete. Toto zariadenie netuší nič o tom, aká je sieťová adresa tejto siete, ktorú IP adresu si má nastaviť, aká je dĺžka masky a podobne. Tým pádom netuší ani to, na ktorom počítači je spustený DHCP server, na ktorý sa má napojiť a popýtať si od neho potrebné údaje. Jediné, čo vie, je, že ak je DHCP server v danej sieti, tak počúva na porte 67. Vyšle cez UDP protokol teda DHCP správu, nazývanú DHCP discover, pre všetky počítače v danej sieti, t. j. nastaví ako cieľovú adresu broadcastovú adresu lokálnej siete 255.255.255.255 a ako adresu zdroja nastaví 0.0.0.0, teda stanicu lokálnej siete. Keďže cieľová adresa je broadcastová, túto správu musia prijať všetky zariadenia. Táto správa okrem iného obsahuje aj náhodne vygenerovaný identifikátor.

Ak je v sieti DHCP server, reaguje na túto správu správou, nazývanou DHCP offer, ponúkajúcou novú IP adresu. Keďže počítač, ktorému je táto správa určená nemá ešte IP adresu, aj DHCP server zvolí ako cieľovú IP adresu 255.255.255.255. Táto správa okrem ponúknutej IP adresy obsahuje ten istý identifikátor, ako bol v správe DHCP discover, ďalej IP adresu DHCP servera, ponúkanú životnosť IP adresy, default router a default DNS servery. Náš žiadajúci počítač môže takých správ dostať aj viac, ak je v sieti viac DHCP serverov. Jednu z nich si vyberie.

Teraz už náš žiadajúci počítač vie, akú adresu môže dostať. Vygeneruje správu DHCP request, ktorá požaduje pridelenie tejto IP adresy. Aj táto správa má za cieľovú adresu 255.255.255.255, a v tele má všetky parametre, ktoré sa vyskytovali v DHCP offer správe.

DHCP server teraz odpovie potvrdzovacou správou DHCP ACK, opäť so všetkými parametrami. Aj táto správa ide pre cieľovú adresu 255.255.255.255. V tejto chvíli si náš žiadajúci počítač môže nastaviť ponúkanú IP adresu a začať komunikovať s inými počítačmi v sieti alebo cez default router aj s ostatnými sieťami.

Keďže každá IP adresa pridelená DHCP serverom má svoju životnosť, môže sa stať, že počítaču už pomaly končí pôžička IP adresy (DHCP lease) a môže si požiadať o predĺženie platnosti. Na takúto požiadavku už stačia iba posledné dve správy z pôvodnej štvorsprávovej komunikácie, pretože počítač už vie, v akej je sieti a vie aj to, že o akú IP adresu žiada. Takto sa dá dosiahnuť, že počítač s dynamicky nastavenou IP adresou môže byť pripojený veľmi dlho a stále (bez prestávky) mať pridelenú svoju IP adresu. Táto komunikácia už môže prebiehať unicastom, teda ako cieľové adresy môžu byť použité priamo adresy DHCP servera resp. žiadajúcej stanice.

Protokol DHCP je rozšírením pôvodného protokolu BOOTP (RFC 951,RFC 1542), ktorý bol pôvodne určený na pomoc pri bootovaní počítačov po sieti. Vtedy musí povedať bootovanému počítaču, kde sa nachádza bootovací súbor. Typicky tento bootovací súbor je uložený na FTP serveri.

DHCP špecifikácia umožňuje aj to, aby nemusel byť v každej sieti samostatný DHCP server, ale aby stačil jeden DHCP server na pokrytie viacerých sietí. Na to slúži takzvaný relay agent, ktorý je obvykle súčasťou routrov ako doplnková služba. Relay agent preposiela DHCP požiadavky do siete, kde sa nachádza DHCP server a tiež DHCP odpovede do siete žiadajúceho počítača.

DHCP je veľmi obľúbený protokol najmä v súvislosti s masovým rozšírením notebookov, ktoré sa bežne pripájajú do rôznych sietí (doma, v škole, v práci, v kaviarni, na stanici, …) a všade si nastavia IP adresu dynamicky, bez potreby ručného nastavovania. Ďalšou výhodou je to, že sa dá vyriešiť aj stav, že je rozsah pridelených IP adries menší ako počet počítačov, ktoré sa v danej sieti zvyknú vyskytovať (nie všetky naraz). Potom sa niektoré IP adresy dajú použiť raz pre jeden, raz pre iný počítač.

6.  Úlohy a diskusia

  • Používajú aj siete riadené virtuálnymi okruhmi aj siete riadené datagramami smerovacie tabuľky? Ak áno, popíšte ich fungovanie a ako sa od seba líšia, ak vôbec.
  • Povedzte niekoľko sieťových aplikácií, ktoré by mohli fungovať lepšie v sieti riadenej virtuálnymi okruhmi ako v datagramami riadenej sieti.
  • Majú routre IP adresy? Ak áno načo im sú a koľko ich potrebujú?
  • Predpokladajme, že stanica A pošle stanici B TCP segment zabalený v IP datagrame. Ako vie sieťová vrstva stanice B, že má poslať tento segment transportnej vrstve na spracovanie TCP segmentu a nie spracovanie UDP segmentu alebo nejakého iného typu segmentu?
  • Predpokladajme, že aplikácia zasiela pravidelne každých 5 ms 20 bajtové kúsky dát, tieto dáta sa balia do TCP segmentov a následne do IP datagramov. Aké percento datagramov tvoria dáta aplikácie a aké percento tvoria hlavičky? Ako by sa situácia zmenila, keby aplikácia generovala 200 bajtové kúsky dát?
  • Predpokladajme, že MTU je 1500 bajtov po celej ceste k cieľu, že hlavičky všetkých datagramov majú veľkosť 20 bajtov. Koľko datagramov sa musí odoslať ak posielame súbor, ktorý má 3 milióny bajtov ak nedochádza k stratám segmentov?
  • Predpokladajte že posielate datagram veľkosti 3000 bajtov cez spojenie s MTU 600 bajtov. Predpokladajme, že pôvodný datagram mal identifikátor 333. Na koľko fragmentov sa tento datagram rozdelí? Ako sa budú líšiť hlavičky IP datagramov jednotlivých fragmentov?
  • Predpokladajme, že chceme nastaviť router tak, že:
    • datagramy s cieľovými adresami 11100000 00000000 00000000 00000000 až 11100000 00000000 11111111 11111111 chceme posielať do rozhrania číslo 0
    • datagramy s cieľovými adresami 11100000 00000001 00000000 00000000 až 11100000 00000001 11111111 11111111 chceme posielať do rozhrania číslo 1
    • datagramy s cieľovými adresami 11100000 00000010 00000000 00000000 až 11100000 11111111 11111111 11111111 chceme posielať do rozhrania číslo 2
    • datagramy s cieľovými adresami 11100001 00000000 00000000 00000000 až 11100001 11111111 11111111 11111111 chceme posielať do rozhrania číslo 3
    • ostatné datagramy chcem posielať na rozhranie číslo 3 napojené priamo na router providera s IP adresou 111.222.111.001/24
    1. Napíšte ako bude vyzerať smerovacia tabuľka. Adresy a masky uvádzajte v klasickom po častiach dekadickom tvare a.b.c.d.
    2. Do ktorého rozhrania pôjdu datagramy s nasledujúcimi cieľovými adresami 200.145.81.85, 224.173.195.60, 225.127.17.119
  • Uvažujme nasledujúcu smerovaciu tabuľku
cieľmaskabránarozhranie
224.0.0.0224.0.0.00.0.0.01
192.0.0.0192.0.0.00.0.0.02
128.0.0.0128.0.0.00.0.0.03
0.0.0.00.0.0.010.0.0.14
  • napíšte binárne rozsahy IP adries pre jednotlivé rozhrania
  • Máte k dispozícii sieť 101.101.101.64/26. Napíšte rozsah IP adries, ktoré môžu byť v tejto sieti pridelené staniciam.
  • Máte k dispozícii sieť 101.101.101.64/26 a potrebujete ju rozdeliť na 4 podsiete s rovnakým rozsahom IP adries. Napíšte sieťové adresy a broadcastové adresy týchto podsietí.

zdroje:

  • James F. Kurose, Keith W. Ross: Computer Networking: A Top-Down Approach, 4th edition. Pearson Education, Inc., ISBN: 0-321-51325-8, 878 pages, 2008