Maska podsieci
Maska podsieci, maska adresu (ang. subnetwork mask, address mask) – liczba służąca do wyodrębnienia w adresie IP części będącej adresem podsieci i części, która jest adresem hosta w tej podsieci.
Pola adresu IP, dla których w masce znajduje się bit równy 1, należą do adresu podsieci, a pozostałe bity do adresu urządzenia w tej podsieci. Po wykonaniu iloczynu bitowego (funkcja AND) maski i adresu IP otrzymuje się adres IP całej podsieci, do której należy urządzenie z tym adresem IP.
Model adresowania w oparciu o maski adresów wprowadzono w odpowiedzi na początkowo sztywny, lecz w rezultacie niewystarczający podział adresów na klasy A, B i C. Pozwala on w elastyczny sposób dowolnie dzielić duże sieci (zwłaszcza te o ograniczonej puli adresów IP) na mniejsze podsieci.
Maska adresu jest takiej samej długości jak adres IP i składa się z ciągu bitów o wartości 1, po których następuje ciąg zer – dla IPv4 maska ma 32 bity, dla IPv6 ma 128 bitów. W przypadku IPv4 podawana jest najczęściej w postaci czterech liczb 8-bitowych zapisanych zazwyczaj dziesiętnie i oddzielonych kropkami (na przykład 255.255.255.224). Wartość maski musi być znana wszystkim routerom i komputerom znajdującym się w danej podsieci. W wyniku porównywania maski adresu — np. 255.255.255.0 — z konkretnym adresem IP — np. 192.180.5.22 – router otrzymuje informację o tym, która część adresu identyfikuje podsieć — w tym przypadku 192.180.5, a która urządzenie mające przypisany ten adres IP — .22.
Często można spotkać się ze skróconym zapisem maski w postaci określającej liczbę początkowych bitów mających wartość 1 (zob. CIDR). Najczęściej spotykany jest zapis, w którym podawany jest adres podsieci, a następnie po rozdzielającym ukośniku skrócony zapis maski. Dla powyższego przykładu byłoby to:
192.180.5.0/24
W przypadku IPv6 najczęściej nie mówi się o masce podsieci, lecz o prefiksie podsieci, ponieważ skrócony zapis maski jest niejako koniecznością:
2001:0db8::/32
Pełny zapis maski, ze względu na jej długość, jest całkowicie niepraktyczny i mało przejrzysty. Dla powyższego przykładu maska ta mogłaby przyjąć jedną z postaci, które są oczywiście tożsame, a różnią się tylko sposobem zapisu:
ffff:ffff:0000:0000:0000:0000:0000:0000 ffff:ffff:0:0:0:0:0:0 ffff:ffff::
Przykład
Podstawową funkcją maski podsieci jest określenie, ile kolejnych bitów w adresie IP stanowi adres podsieci, czyli adres jednoznacznie identyfikujący daną podsieć. Pozostałe bity określają już adresy konkretnego hosta w tej podsieci (adres urządzenia końcowego). Tam, gdzie w masce bit ustawiony jest na 1, odpowiadający mu bit adresu IP należy do adresu podsieci, natomiast tam, gdzie bit jest równy 0 – odpowiadający mu bit adresu IP należy do adresu hosta. Bity maski podsieci zawsze są ustawiane na 1, poczynając od bitu najbardziej znaczącego (żar. najstarszego), przykładowo:
adres IPv4 = 128.10.2.3 = 10000000 00001010 00000010 00000011
maska podsieci = 255.255.255.0 = 11111111 11111111 11111111 00000000
W tym przypadku adresem podsieci są trzy pierwsze oktety (8 ⋅ 3 = 24 bity) adresu IP, ponieważ 24 najstarsze bity maski podsieci są jedynkami. Zgodnie z tą zasadą, dodając jeszcze jedną jedynkę do maski, przydziela się dodatkowy bit do adresu podsieci:
maska podsieci = 255.255.255.128 = 11111111 11111111 11111111 10000000
Na podstawie takiej maski można stwierdzić, że 25 najstarszych bitów adresu IP odpowiada za identyfikację podsieci, a pozostałe 7 pozwala określić adres urządzenia w niej działającego, jak np:
adres IPv4 = 128.10.2.3 = 10000000 00001010 00000010 00000011
Uzyskiwanie adresu sieci z adresu IPv4 i maski
Mając do dyspozycji adres IP urządzenia oraz maskę, można obliczyć adres całej podsieci przy użyciu operacji AND
1. oktet 2. oktet 3. oktet 4. oktet Adres IP: 192.168.1.145 11000000101010000000000110010001Maska: 255.255.255.128 11111111111111111111111110000000Wynik operacji AND 11000000101010000000000110000000
Otrzymany wynik jest adresem podsieci, po przekształceniu go na zapis dziesiętny ma on postać 192.168.1.128.
Mając adres podsieci można także prosto obliczyć adres rozgłoszeniowy. W tym celu stosuje się negację bitów maski, a powstałą liczbę dodaje do adresu podsieci:
1. oktet 2. oktet 3. oktet 4. oktet Maska 255.255.255.128 11111111111111111111111110000000Operacja NOT 00000000000000000000000001111111
Uzyskany adres to 0.0.0.127. Teraz każdy z oktetów należy dodać do odpowiadającego mu oktetu adresu podsieci. Jako że 3 pierwsze oktety są równe zero, wystarczy dodać ostatni: 128+127=255. Szukanym adresem rozgłoszeniowym w tej podsieci jest więc 192.168.1.255.
Przeliczanie masek w IPv4
Liczba dostępnych adresów hostów w danej podsieci jest o 2 mniejsza (zarezerwowany jest adres podsieci i adres broadcastu) od liczby możliwych unikalnych adresów w tej podsieci:
- N = 232 - CIDR - 2
Numer CIDR oznacza, ile bitów odpowiada za określenie adresu podsieci. Innymi słowy, informuje, ile bitów ustawionych na 1 znajduje się w masce podsieci:
CIDR Maska podsieci Liczba dostępnych adresów hostów /1 128.0.0.0 2 147 483 646 /2 192.0.0.0 1 073 741 822 /3 224.0.0.0 536 870 910 /4 240.0.0.0 268 435 454 /5 248.0.0.0 134 217 726 /6 252.0.0.0 67 108 862 /7 254.0.0.0 33 554 430 /8 255.0.0.0 16 777 214 /9 255.128.0.0 8 388 606 /10 255.192.0.0 4 194 302 /11 255.224.0.0 2 097 150 /12 255.240.0.0 1 048 574 /13 255.248.0.0 524 286 /14 255.252.0.0 262 142 /15 255.254.0.0 131 070 /16 255.255.0.0 65 534 /17 255.255.128.0 32 766 /18 255.255.192.0 16 382 /19 255.255.224.0 8 190 /20 255.255.240.0 4 094 /21 255.255.248.0 2 046 /22 255.255.252.0 1 022 /23 255.255.254.0 510 /24 255.255.255.0 254 /25 255.255.255.128 126 /26 255.255.255.192 62 /27 255.255.255.224 30 /28 255.255.255.240 14 /29 255.255.255.248 6 /30 255.255.255.252 2