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 11000000 10101000 00000001 10010001 Maska: 255.255.255.128 11111111 11111111 11111111 10000000 Wynik operacji AND 11000000 10101000 00000001 10000000
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 11111111 11111111 11111111 10000000 Operacja NOT 00000000 00000000 00000000 01111111
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