Počítání IP adres s proměnou délkou masky z hlavy (metoda VLSM)

Počítání IP adres s proměnou délkou masky z hlavy (metoda VLSM)

Hned na začátek chci říct, že to tohoto zápisku nechci dělat nic převratného. K napsání jsem se rozhodl poté co jsem několika spolužákům ono počítání vysvětloval.
Takže kdo to umí, tak může říci, že jde o jednoduchou rutinu, ale pro někoho kdo toto počítání umí „pouhým“ binárním přepočtem to může být vítaná změna, která práci s IP adresami ulehčí a především urychlí.

Samozřejmě musím zdůraznit, že jsou i k těmto jednoduchým úkonům potřeba jisté základy. Tento příspěvek je určen především lidem začínajícím se sítěmi, kteří již ale mají určité znalosti.
Za základní předpoklady považuji toto:
– znalost binární soustavy a přepočty mezi ní a desítkovou
– umět mocniny čísla 2 alespoň do 8192, tj. 2^13
– znalost tříd IP, jejich rozsahů a rozsahy privátních adres
– rozumět pojmům bit/Byte/oktet a síťová adresa (dále jen síť/podsíť)/broadcast/maska podsítě

Tyto předpoklady ještě nyní rozvineme.

Takže začneme s rozvíjením předpokladů pro další počítání kdy jako jednu z prvních věcí si uvedeme možné tvary masek. Tyto tvary, především hodnoty „důležitého“ oktetu k CIDR formátu, je nutné si zapamatovat včetně informace které masky lze použít u kterých tříd IP. Za onen důležitý oktet se považuje ten, který má hodnotu jinou než 0 a 255, jelikož při těchto hodnotách nepracujeme s metodou VLSM, ale s klasickým třídním pojmenováním. Z toho vyplývá, že při počítání s VLSM mluvíme o beztřídním adresování.

Takže se vrhneme na první příklady.

Máme IP adresu 126.222.100.78 a masku /21.
U adresy chceme znát do které podsítě patří, její broadcastovou nebo-li všesměrovou adresu, rozsahy adres dostupných pro hostitele, velikost bloku podsítě a počet hostitelů na podsíť. Dále zjistíme kolik se do naší IP adresy s touto maskou vejde podsítí a kolik pojmeme celkem hostitelů.

Jako první si zjistíme velikost bloku (=počet IP adres) podsítě. To učiníme primitivním „vzorečkem“.


256 – (hodnota důležitého oktetu) = velikost bloku podsítě


Nyní vidíte potřebu rychlého rozlišení hodnoty důležitého oktetu. Ta vychází z počtu „zapnutých“/jedničkových bitů, které jsou navíc k nejbližší nižší třídní masce.
V našem případě tedy 21-16=5 (kdyby byla maska např /27 bude to 27-24=3). Nyní víme, že máme 5 jedničkových bitů (1111 1000) a pamatujeme si, že je to číslo 248. Pro lepší pamatování doporučuji si pamatovat hlavně hodnotu 240, která má jedničkové 4 bity a zbytek dopočítáme nebo odečteme.
Nyní tedy dosadíme a získáme…

256 – 248 = 8


… velikost bloku neboli počet IP adres na podsíť. Tím jsme pro získání IP adresy podsítě udělali téměř vše. Nyní zbývá napočítat velikost bloku do hodnoty důležitého oktetu v zadané IP adrese, tj. kolikrát se do jeho hodnoty vejde a následně vypnout všechny bity v oktetech napravo.

12*8 = 96

126.222.96.0

Tak jsme získali adresu podsítě a nyní potřebujeme ještě broadcast. K němu se dostaneme tak, že k hodnotě podsítě přičteme velikost bloku a odečteme 1.

96+8-1

126.222.103.255

Toto je broadcast. Nyní z těchto dvou hodnot získáme rozsahy IP adres adresovatelných pro hosty.

126.222.96.1 ~ 122.222.103.254


To je sice hezké, že víme rozsah, ale kdybychom chtěli vědět počet hostů, tak co?
Použijeme další vzoreček.

(2^x – 2) = počet hostů/podsíť


„- 2“ kvůli broadcastu a adrese podsítě
x … počet bitů volných pro hostitele 
x = 32 – hodnota masky (21)


V našem případě tedy (2^11 – 2) = 2048 – 2 = 2046. To je celkový počet hostitelů, které můžeme s touto adresou a maskou maximálně obsloužit.

Pokud jste si tabulku s maskami pod odkazem výše prohlédli pečlivě, tak jste si všimli poslední masky /30. Tato maska je použitá jako poslední z toho důvodu, že vytvořená síť musí mít min. 2 hosty aby měla smysl. Pokud máme /30 masku, tak máme (2^2 -2), tedy 2 hostitele pro síť. Tato maska má největší smysl u dvou-bodových spojení (např. WAN).

To je celý postup!

Pokud to vezmeme z druhého konce a budeme chtít zjistit jakou masku budeme potřebovat pro 35,61 nebo 129 hostů, tak budeme postupovat podobně.
Víme, že pro počítání hostitelů máme  (2^x – 2), nyní ale neznáme masku, ale známe počet hostů, které chceme obsloužit.
Jistě ale víte, že si nemůžeme vymyslet libovolně velkou podsíť. Proto potřebujeme nejbližší vyšší mocninu čísla 2. Pro 35 to bude tedy 64 a měli bychom znát kolikátá to je mocnina dvojky a zjistíme, že to je 2^6. Takže potřebujeme 6 bitů pro hostitele.
Takže 32 – 6 = 26.


Výsledkem je tedy zjištění, že kvůli 35 hostům potřebujeme masku /26 se kterou nám zbude dostatek volných adres pro případné přidávání hostitelů.

Tímto stylem by jste pokračovali u dalších čísel. Jen je třeba si dát pozor na možnosti dané třídy adres.
To znamená, že max. počet hostů je:
pro třídu A — 2^22
pro třídu B — 2^14
pro třídu C — 2^6

Pokud si říkáte proč tyto čísla, tak kvůli tomu, že min. počet bitů, které můžeme použít s metodou VLSM pro tvorbu podsítí, je roven dvoum a maximální počet jen
dle „vzorce“ (32 – maska – 2).

Ale pokud bychom měli zadáno, že potřebujeme např. 87 podsítí budeme postupovat trochu jinak. Opět zde platí pravidlo nejbližší vyšší mocniny čísla 2. Nyní tedy 128, respektive 2^7.
Takže potřebujeme 7 bitů, ale tentokrát pro tvorbu podsítí a tak si je „půjčíme“ z hostitelské části adresy.
Zde potřebujeme vědět třídu naší adresy pro kterou podsítě tvoříme.
Zvolíme se tedy např. adresu třídy B u které víme její defaultní masku /16.

Použijeme ji k výpočtu:   16 + 7 bitů = 23


Tím jsme se dostali k tomu, že pro vytvoření 87, respektive 64-128, sítí je třeba maska /23.

Pevně věřím, že tímto návodem někomu pomohu a budu rád za reakce, díky kterým mohu návod vylepšit.

Pokud najdete chybu, tak mi dejte vědět. Dopsal jsem to v 0:30.  🙂 Takže výskyt chyb může být zvýšený.

 

  • Pokud se ti článek líbil, tak sdílení potěší 😉

7 thoughts on “Počítání IP adres s proměnou délkou masky z hlavy (metoda VLSM)

  1. Pekný článok. Len mi uchádza pointa pri 12*8=96, sedieť to však samozrejme sedí, len odkiaľ tá 12ka. V škole nás to učili počítať výhradne cez dvojkovú sústavu, takže keď si vezmeme, že maska je 21 teda siaha po 5 bit vrátane a v rozmedzí 5 bitov v 3 oktete IP su dve jednotky na pozicií 64 a 32 = 96, tak to sedí. Ďalej tých 256-248=8 ste pravdepodobne dostali tak, že 2^3 = 8 tých ^3 budu 3 volne bity, ktoré patria hosťovskej časti v 3 oktete, ak sa nemýlím. Teraz mi len nie je jasné, prečo tých 8 je označených za „veľkosť bloku“. To, čo sme odmaskovaním dostali je sieť 122.22.96.0/21 a teda nie je veľkosť celého bloku do ktorého patrí daná IP rovno 2^11=2048 ? Čo potom zodpovedá rozsahu do 122.222.103.255.

  2. Dobrý den, výpočty mě vyšli stejně s rozdílem však že mé ip adresy zůstaly u té 126 proč je tam najednou u Vás 122 počáteční číslo ip??
    Předem děkuji za info.

      1. Taky jsem ted na to koukal jak lofas a vydedukoval jsem,ze to je asi chyba v zapisu… trefa 🙂 jsem rad, ze jsem pochopil! Diky ! 🙂

    1. Ahoj,
      je to už delší dobu kdy jsem to psal a počítání používal, ale jak máme tu vstupní IP adresu, tak se snažíme zjistit, do kterého bloku adres patří. A tak musíme počítat násobky osmi dokud se nedostaneme do intervalu, kde se nalézá ta .100.78. A jelikož nás zajímá třetí oktet (kvůli /21 masce), tak jsem počítal kolikrát se 8 vejde do 100 a tím se získala adresa sítě….

      Stačí to takto? 🙂

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

3 + 6 =