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 (pot. 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. oktet2. oktet3. oktet4. oktet
Adres IP: 192.168.1.14511000000101010000000000110010001
Maska: 255.255.255.12811111111111111111111111110000000
Wynik operacji AND11000000101010000000000110000000

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. oktet2. oktet3. oktet4. oktet
Maska 255.255.255.12811111111111111111111111110000000
Operacja NOT00000000000000000000000001111111

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:

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:

CIDRMaska podsieciLiczba dostępnych adresów hostów
/1128.0.0.02 147 483 646
/2192.0.0.01 073 741 822
/3224.0.0.0536 870 910
/4240.0.0.0268 435 454
/5248.0.0.0134 217 726
/6252.0.0.067 108 862
/7254.0.0.033 554 430
/8255.0.0.016 777 214
/9255.128.0.08 388 606
/10255.192.0.04 194 302
/11255.224.0.02 097 150
/12255.240.0.01 048 574
/13255.248.0.0524 286
/14255.252.0.0262 142
/15255.254.0.0131 070
/16255.255.0.065 534
/17255.255.128.032 766
/18255.255.192.016 382
/19255.255.224.08 190
/20255.255.240.04 094
/21255.255.248.02 046
/22255.255.252.01 022
/23255.255.254.0510
/24255.255.255.0254
/25255.255.255.128126
/26255.255.255.19262
/27255.255.255.22430
/28255.255.255.24014
/29255.255.255.2486
/30255.255.255.2522