Maska podsieci, maska adresu (, ) – 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 . 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 {| class="wikitable" ! !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 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: {| class="wikitable" ! !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:

{| class="wikitable" ! CIDR ! Maska podsieci ! width="120px"| Liczba dostępnych adresów hostów |- |/1 |128.0.0.0 |style="text-align:right"| 2 147 483 646 |- |/2 |192.0.0.0 |style="text-align:right"| 1 073 741 822 |- |/3 |224.0.0.0 |style="text-align:right"| 536 870 910 |- |/4 |240.0.0.0 |style="text-align:right"| 268 435 454 |- |/5 |248.0.0.0 |style="text-align:right"| 134 217 726 |- |/6 |252.0.0.0 |style="text-align:right"| 67 108 862 |- |/7 |254.0.0.0 |style="text-align:right"| 33 554 430 |- |/8 |255.0.0.0 |style="text-align:right"| 16 777 214 |- |/9 |255.128.0.0 |style="text-align:right"| 8 388 606 |- |/10 |255.192.0.0 |style="text-align:right"| 4 194 302 |- |/11 |255.224.0.0 |style="text-align:right"| 2 097 150 |- |/12 |255.240.0.0 |style="text-align:right"| 1 048 574 |- |/13 |255.248.0.0 |style="text-align:right"| 524 286 |- |/14 |255.252.0.0 |style="text-align:right"| 262 142 |- |/15 |255.254.0.0 |style="text-align:right"| 131 070 |- |/16 |255.255.0.0 |style="text-align:right"| 65 534 |- |/17 |255.255.128.0 |style="text-align:right"| 32 766 |- |/18 |255.255.192.0 |style="text-align:right"| 16 382 |- |/19 |255.255.224.0 |style="text-align:right"| 8 190 |- |/20 |255.255.240.0 |style="text-align:right"| 4 094 |- |/21 |255.255.248.0 |style="text-align:right"| 2 046 |- |/22 |255.255.252.0 |style="text-align:right"| 1 022 |- |/23 |255.255.254.0 |style="text-align:right"| 510 |- |/24 |255.255.255.0 |style="text-align:right"| 254 |- |/25 |255.255.255.128 |style="text-align:right"| 126 |- |/26 |255.255.255.192 |style="text-align:right"| 62 |- |/27 |255.255.255.224 |style="text-align:right"| 30 |- |/28 |255.255.255.240 |style="text-align:right"| 14 |- |/29 |255.255.255.248 |style="text-align:right"| 6 |- |/30 |255.255.255.252 |style="text-align:right"| 2

Kategoria:Protokół internetowy