Príbeh o sieťach, časť šiesta: Počítame s IPv4 adresami

 
V dnešnom poslednom diely v rámci nášho seriálu o sieťach sa zameriame hlavne na praktickú vec, ktorou bude počítanie s IPv4 adresami. Dozviete sa ako podsieťovať sieť, ktoré IP adresy môžu mať stanice či ako sumarizovať IP adresy. Na konci si povieme čosi o IPv6 adresách.

Prevod na binárne číslo, počítanie adresy siete

 
Prvú zmienku o IPv4 adresách ste mohli zachytiť v časti o sieťovej vrstve. Každá IPv4 adresa je tvorená 32 bitovými číslicami oddelenými bodkou na štyri 8-bitové čísla. Každú štvoricu v adrese nazývame oktet. Každý oktet môže byť decimálne číslo od 0 po 255. IPv4 adries je teda od 0.0.0.0 po 255.255.255.255.
 
Pre počty s adresami je nutné ovládať prevody z dvojkovej do desiatkovej sústavy a naopak. Hoci to dnes zvládne aj bežná kalkulačka, ktorá je súčasťou Windowsu, nie je na škodu ak to dokážeme spraviť aj ručne. Ukážme si preklad napríklad na adrese 192.168.1.5.
 
Ideme prekladať prvý oktet ktorým je číslo 192. Keďže prekladáme do binárnej sústavy, ktorej základom je dvojka, delíme číslo dvomi. Tento krok opakujeme až do konca.
192:2=96 zvyšok 0
96:2  =48 zvyšok 0
48:2  =24 zvyšok 0
24:2  =12 zvyšok 0
12:2  =6   zvyšok 0
6:2    =3   zvyšok 0
3:2    =1   zvyšok 1
1:2    =0   zvyšok 1
 
Na konci delenia nás zaujímavú zvyšky. Tie si zapíšeme odspodu a získame tak binárne číslo 11000000. Rovnaký postup aplikujeme aj na zvyšné oktety. Celá výsledná IP adresa by tak mala mať tvar 11000000.10101000.00000001.00000101.
 
Spätný prevod z dvojkovej do desiatkovej sústavy si ukážeme na druhom oktete, ktorým je 10101000. Informatika má taký zvyk, že sa čísla začínajú indexovať od 0 a nie 1 ako by mnohých zvádzalo. Prvý bit sprava má teda index 0, ten najvyšší má index 7. V tomto prípade nás zaujímajú čísla na pozíciách, ktoré nie sú nulové. Je to teda tretia, piata a siedma pozícia zľava. Sčítame čísla spôsobom 27+25+23 čo je 128+32+8 a výsledok je teda 168.
 
Rovnaké pravidlá platia aj pre počítanie s maskou. Maska nám vlastne určuje, kde je hranica medzi sieťou a uzlami. Táto hranica bola kedysi pevná no dnes je z dôvodu šetrenia adries pohyblivá a to práve vďaka maske. Kompletné adresy mávajú aj tvar adresa/maska kde maska reprezentuje počet bitov nastavených na 1. Napríklad 192.168.1.5/24 znamená, že maska má tvar 11111111.11111111.11111111.00000000.
Adresu siete je možné vypočítať na základe akejkoľvek adresy uzla a masky pomocou techniky známej ako logický súčin alebo aj AND. Ten zapíše jednotky iba v prípade, že sa jednotka vyskytuje v oboch zadaniach. Pre lepšie pochopenie príklad.
Majme adresu 192.168.1.5 s maskou 255.255.255.0 a chceme vedieť, aká je adresa siete. V predchádzajúcej časti sme sa naučili prevádzať čísla do dvojkovej sústavy takže s tým už problém nebude. Zapíšeme si čísla pod seba a do výsledku napíšeme jednotku iba vtedy, aj sa súčasne nachádza v adrese uzla aj v maske. Výsledná adresa je tak 192.168.1.0
 
Výpočet adresy siete je však možné urobiť aj oveľa rýchlejšie a jednoduchšie bez prevodu na binárne čísla. Majme napríklad adresu 172.16.30.69 a masku 255.255.255.240 (/28). Ak sa v nejakom oktete masky nachádza 255 okamžite môžeme číslo z adresy uzla na danom mieste opísať. Naopak, ak je v maske 0 napíšeme do výslednej adresy na dané miesto nulu. V našom prípade máme 3 krát 255 takže prvé tri čísla budú určite v adrese siete. Posledné číslo 240 odčítame od 256 a získame číslo 16. V adrese máme na poslednom mieste 69. Koľko celých šestnástiek sa nachádza v čísle 69? Štyri. 4x16=64. Na poslednom mieste tak bude 64 a výsledná adresa siete je 192.168.30.64/28.
 

Výpočet rozsahu siete

 
Keď už máme adresu siete a masku, poznáme aj kompletne celé rozsahy siete. V predchádzajúcom výsledku sme získali sieť 172.16.30.64/28. To je adresa siete, ktorá reprezentuje celú sieť. Maska má tvar /28 čo znamená, že posledné 4 bity sú nulové. Pomocou nich určíme veľkosť siete. 2^4=16. Sieť je teda veľká od 172.16.30.64 po 172.16.30.79. Adresa 172.16.30.79 je tzv. broadcastová adresa tejto siete, ktorá reprezentuje všetky uzly v sieti. Všetky ostatné adresy od 65-78 môžu byť pridelené klientom v sieti.
 
Pre lepšiu ilustráciu uvediem ešte jeden, trošku zložitejší príklad. Máme adresu 10.0.138.52/19 a chceme vedieť, aký rozsah môžeme použiť pre klientov v sieti. Ako prvý krok musíme získať adresu siete, tak ako sme sa to naučili o pár riadkov vyššie. Z adresy 10.0.138.52 a masky 255.255.224.0 zistíme, že adresa siete je 10.0.128.0/19. Maska má 19 bitov nastavených na 1 a tým pádom 13 bitov, ktoré majú hodnotu nula (keďže maska má dĺžku 32 bitov). Sieť je teda veľká 2^13=8192. Ako vidíme, číslo je príliš veľké na to, aby sa zmestilo do posledného oktetu takže nič v tvare 10.0.128.8191 nemožno použiť. Namiesto toho spravíme podiel čísiel 8192 a 256 čo nám dá výsledok 32. Toto číslo sa pripočíta k tretiemu oktetu ale len ako 31 pretože posledných 255 adries sa "presunie" do posledného oktetu v ktorom tak bude 255. Rozsah adries tak je od 10.0.128.0 (adresa siete) až 10.0.159.255 (broadcast). Všetko medzi tým môžu byť adresy pridelené klientom.
 

Podsieťujeme sieť

 
Keď už vieme všetky tieto veci povedzme si niečo o podsieťovaní. Podsieťovanie je totiž v praxi veľmi často používanou technikou najmä vo firemnom prostredí nakoľko provider vám pridelí určitý rozsah a vy si ho pre vaše potreby môžete ľubovoľne podsieťovať. Každá časť bude mať inú adresu a vytvoria sa tak logické segmenty, napríklad s rôznymi obmedzeniami.
Poďme si podsieťovať sieť 172.64.0.0/10. Je to už adresa siete teda nie je potrebné ju upravovať. Požiadavky na podsieťovanie sú nasledovné: prvá sieť má mať 3000 voľných adries pre stanice, druhá až 2 milióny, tretia 28, štvrtá 400 a nakoniec posledná má mať iba 2 adresy pre WAN prepoj medzi smerovačmi. Základné pravidlo znie: podsieťujeme postupne od najväčšej siete po najmenšiu. 
Začíname teda od tej, ktorá vyžaduje 2 000 000 adries. Zistíme ktorá najbližšia mocnina dvojky nám pokryje 2 milióny. Je ňou 221. 21 bitov je teda vyhradených na adresy a maska siete je 11 (32-21). Potom už známym spôsobom zistíme aká veľká táto sieť je. 2 097 152/256=8192 čo je stále veľa. Musíme teda urobiť 8192/256 čo sa rovná 32 a začíname pričítať od druhého oktetu. Prvá podsieť je teda veľká od 172.64.0.0 po 172.95.255.255. Analogicky pokračujeme ďalej. Upozornil by som ešte na poslednú podsieť, ktorá vyžaduje 2 adresy pre WAN. Vyhradiť však musíme 4. Dôvod je ten, že keby sme vyhradili 21 adries, nemali by sme aké adresy prideliť rozhraniam smerovača pretože by sme mali iba adresu siete a broadcastovú adresu.
 
Keby sme požadovali 2 adresy v poslednej sieti pre klientov, museli by sme teoreticky vyhradiť dokonca 23 adries. Pri 22 adresách totiž máme adresu siete, broadcastovú adresu, a 2 adresy pre klientov. Na prvý pohľad vyzerá všetko v poriadku. Avšak aká bude adresa brány (gateway)? Nevmestila by sa do rozsahu a klienti by mohli komunikovať jedine v rámci svojej siete. 
 
 
Pre rýchle podsieťovanie poslúži aj táto skvelá webová stránka
 

Sumarizovanie adries

 
Poslednou technikou, ktorú si s IPv4 adresami ukážeme je sumarizácia adries. Sumarizácia slúži na zníženie počtu položiek v smerovacej tabuľke smerovača. To skracuje čas prehliadania tabuľky a skracuje oneskorenie v sieti. Sumarizáciu robia niektoré smerovacie protokoly automaticky (RIP), iné umožňujú aj manuálnu sumarizáciu na rozhraniach (EIGRP).
 
Chceme napríklad sumarizovať adresy 10.0.0.0, 10.0.1.0, 10.0.2.0 a 10.0.3.0 do jednej. Ako na to? Najjednoduchším a najistejším spôsobom je všetky adresy prepísať do binárnej podoby. Vidíme, že prvé 2 oktety sú v každej IP adrese rovnaké, takže náš príliš nezaujímajú. Čo nás ale zaujíma je tretí oktet. V ňom vidíme, že sa nezhodujú všade čísla. A práve prvý stĺpec, v ktorom naprieč všetkými adresami nájdeme nezhodu je náš hľadaný stĺpec. V tomto prípade je to 23. stĺpec a vďaka nezhode ho už do sumarizácie nezapočítavame. Posledný stĺpec, v ktorom je všade zhoda nám určí veľkosť masky. Za týmto stĺpcom dopíšeme v sumárnej adrese všade nuly a máme výsledok 10.0.0.0/22.
 

IPv6 na obzore

 
Toľko k IPv4 adresám, ktorým patrí súčasnosť. Zuby si však už brúsia IPv6 adresy, ktoré sú plánované ako nasledovník po minutí dostupných IPv4 adries. Hlavným dôvodom je práve nedostatok IPv4 pretože počet zariadení, ktoré vyžadujú pripojenie do Internetu neustále stúpa (notebooky, tablety, smartfóny,  nositeľné zariadenia či dokonca inteligentné chladničky...). Každé toto zariadenie sa musí navonok v Internete javiť ako jedinečné (respektíve sieť, za ktorou je toto zariadenie musí vystupovať ako jedinečná) a mať teda unikátnu IP adresu.
 
Už vo februári 2011 medzinárodná organizácia IANA (pozri časť o sieťovej vrstve) pridelila posledných 5 blokov IPv4 adries regionálnym internetovým registrom (RIR), ktorý sa starajú o ďalšie prideľovanie IP adries. Vypukli vtedy obavy z možnej krízy a predpokladalo sa, že tieto adresy sa minú v priebehu mesiacov. Tieto obavy sa zatiaľ nepotvrdili a napríklad ARIN (American Registry for Internet Numbers - RIR pre Severnú Ameriku a Kanadu) má v súčasnosti k dispozícii stále asi 24 miliónov IPv4 adries. Súčasné predpovede ukazujú, že tento zostatok bude stačiť ešte na tento rok. Nebude to však znamenať okamžitý nedostatok adries. Ročne sú napríklad vrátané milióny adries pretože už viac nie sú potrebné alebo jednoducho organizácia, ktorá ich používala prestane existovať. 
 
Rastúci trend poštu zariadení pripojených do Internetu sa však zrejme nezastaví a tak jedného dňa naozaj príde moment, keď bude posledná IPv4 adresa pridelená. Čo však potom? Túto otázku sa snaží vyriešiť práve IPv6 protokol (pôvodne IPng ako next generation), ktorý poskytuje až 2^128 adries alebo ak chcete 340282366920938463463374607431768211456 adries. To už je poriadne veľké číslo, ktoré sa len tak nevyčerpá. Prečo teda jednoducho neprejdeme na IPv6 adresy?
 
Dôvodov je hneď niekoľko. Ten prvý a zároveň najdôležitejší je, že IPv4 a IPv6 adresy nie sú medzi sebou vzájomne kompatibilné. Podpora IPv6 adries tak musí byť implementovaná krok po kroku na všetky hardvérové zariadenia v sieti. Sieťové karty vo vašom počítači IPv6 už možno podporujú, avšak smerovače, respektíve provideri zrejme nie. Pre otestovanie toho, či môžete Internet dosiahnuť skrz IPv6 adresy poslúži táto stránka
 
Pre otestovanie, či vaša sieťová karta (NIC) podporuje IPv6 stačí do príkazového riadka napísať ipconfig -all.
 
Späť však k dôvodom pomalého rozširovania IPv6. Druhý problém vidia niektorí vysoko postavení ľudia v prehadzovaní si viny zo strany na stranu. Poskytovatelia služieb (ISP) nechcú implementovať IPv6 do svojich sietí pretože tak nerobia poskytovatelia obsahu a poskytovatelia obsahu zas nechcú implementovať IPv6 pretože to nerobia poskytovatelia služieb. Približne 95% obsahu Internetu nie je pripravených na IPv6. Ani napríklad taký Twitter nepoužíva IPv6. YouTube implementoval IPv6 na konci roka 2013. Tlak by sa možno mal vyvíjať práve na poskytovateľov obsahu a nie na ISP. Ak vzrastie IPv6 obsah, zareagujú aj poskytovatelia služieb.
 
Ďalšou brzdou v masívnejšom rozširovaní IPv6 je NAT (Network Address Translation) respektíve PAT (Port Address Translation). Tieto mechanizmy slúžia pre šetrenie IP adries kde viacero IP adries v rámci určitej siete (typicky LAN) vystupuje po procese preloženia ako jedna verejná IP adresa. Smerovač, ktorý NAT/PAT vykonáva si uchováva prekladaciu tabuľku aby vedel komu vo vnútri siete adresovať dáta prichádzajúce zvonku. NAT a PAT čiastočne vyriešili a pribrzdili rozširovanie IPv6 adries avšak priniesli so sebou aj komplikácie a to najmä pri peer-to-peer komunikácií akou je napríklad VoIP (Voice over Internet Protocol - rodina služieb a mechanizmov zabezpečujúca prenos hlasu cez IP).
 
Peniaze. Ako by to bolo keby problémom v niečom neboli peniaze? Už som spomínal, že IPv4 a IPv6 nie je medzi sebou kompatibilný a existujúce smerovače či switche (existujú aj switche pracujúce na tretej vrstve) IPv6 nepodporujú. To znamená, že jednotlivý ISP potrebujú uvoľniť nemalé financie na upgrade týchto zariadení čo samozrejme nerobia ochotne pokiaľ ich nič k tomu netlačí, čo nás vracia späť k druhému dôvodu.
 
Posledným dôvodom môže byť kozmetický nedostatok. Mnohí sa sťažujú na to, že IPv6 adresy jednoducho nie sú pekné a ťažko sa čítajú. To je pravda, avšak problém je pravdepodobne len vo zvyku. IPv6 adresa je tvorená 128 bitmi a príkladom je 2001:0db8:85a3:08d3:1319:8a2e:0370:7334.
 
 
Napriek uvedeným dôvodov sa IPv6 pomaly uchopuje a bude tomu tak aj naďalej. Prístupy z IPv6 adries kontroluje aj Google a podľa jeho štatistík je takýchto prístupov v súčasnosti asi 3,5%.
 
 
Komentáre (8)
Hrochy
Neskoro, uz je po pisomke a studenti to znovu odflakli :\. Drzim palce dalsim pokracovaniam.
Genyus
Bolo by také ťažké použiť ^ pri mocninách už keď sa nepoužíva horný index? Dosť sa zneprehľadňuje čo sa ktorým číslom myslelo.
leoleu
Super článek, díky. Jen mi trochu uteklo ve složitějším příkladu, kdy velikost sít2 je 2^13=8192, adresa sítě je 10.0.128.0, 8192/256=32 a toto číslo se ma příčíst k třetímu oktetu, tedy 128+32, což je 160, ale výsledek má být 159. Kde tedy vypadla ta 1? To víte, staršímu člověku to hůře myslí :-)
Vladys
Dobrý deň, ďakujem za Váš komentár. Máte pravdu, že 128+32 je 160 ibaže tá 1 z tej 160 je akoby vyjadrená číslom 255 v poslednom oktete. Adresa teda nie je 10.0.160.0, ale 10.0.159.255 čo je broadcast a 10.0.160.0 je už adresa inej, novej siete.
leoleu
Děkuji za odpověď. Stálo by za to, tuto informaci doplnit do článku, pak by to bylo dle mého jasné každému, kdo se o tuto oblast zajímá. Díky Vašemu článku jsem od včerejška dal desítky dotazů z http://www.subnettingquestions.com/ téměř z hlavy a bez převodu do bin soustavy jen s jedinou chybou, vzniklou mou nepozorností, právě tím, že jsem zapomněl přesunout tu 1 na 255 z třetího do čtvrtého octetu.
Michal

lahucke

retriever

Píše sa "v dnešnom poslednom diele" (vzor dub, v dube). Pripadne ak podľa nesprávneho vzoru stroj by to bolo "v dieli". Určite však nie "diely". Ak niekto neovláda slovenčinu, spochybňuje to jeho precíznosť pri programovaní.

kik

toto nie je programovanie ale sietovanie ty genius

Pridať nový komentár
TOPlist