Adresacja IP – podział podsieci

W życiu każdego projektanta oraz administratora sieci następuje czas, w którym z dostępnego bloku adresowego musi utworzyć klika logicznych sieci (podsieci). Czas, który poświęcicie na zapoznanie się z tym artykułem oraz jego analizę, pozwoli Wam w przyszłości zaoszczędzić sporo stresu podczas wykonywania tej czynności.

Sięgnijmy pamięcią do poprzedniego artykułu, w którym omówiliśmy sobie czy jest adres IPv4 oraz maska. Informacje te będą nam potrzebne, aby zrozumieć proces podziału sieci na mniejsze podsieci, co w przyszłości pozwoli we właściwy sposób wykonywać taki podział. Maska jest elementem konfiguracji, który określa, która część adresu IP jest adresem sieci, a która adresem hosta. Weźmy dla przykładu adres 192.168.1.0 z maską 255.255.255.0.


W tym przypadku na adres sieci przypadają 3 pierwsze oktety adres IP, wynika to z faktu, iż w postaci binarnej maski (11111111.1111111.1111111.00000000), na 3 pierwszych oktetach mamy 1, a przypomnę, że 1 odpowiada części sieciowej, a 0 części hosta. Jeśli chcielibyśmy taki blok podzielić na 2 logiczne podsieci, to musimy z części hosta „pożyczyć” 1 bit do części sieciowej. Wówczas nasza maska, dla każdej z tych podsieci, będzie binarnie miała postać 11111111.11111111.11111111.10000000, czyli dziesiętnie 255.255.255.128. Analogicznie postąpimy, kiedy będziemy chcieli wykonać podział na 4 logiczne podsieci, wówczas „pożyczymy” 2 bity z części hosta i otrzymamy maskę 11111111.11111111.11111111.11000000 binarnie czyli 255.255.255.192 dziesiętnie.

Z pewnością u wielu z Was pojawi się pytanie dlaczego w drugim przypadku „pożyczenie” kolejnej jedynki spowodowało podział od razu na 4 a nie na 3 podsieci? Wynika to z logiki binarnej, a dokładniej z potęgi liczby 2, gdzie nie można uzyskać liczby nieparzystej. Ponadto przy podziale na podsieci stosuje się wzór:

liczba podsieci = 2n

gdzie n = liczba „pożyczonych” bitów z części hosta

Stąd też jeśli „pożyczylibyśmy” dwie 1 z części hosta nasz wzór miałby postać 22 co daje nam  4 podsieci

Poniższa tabela pozwoli Wam łatwiej zrozumieć, jak dodawanie jedynki binarnej do maski przekłada się na liczbę możliwych do utworzenia podsieci.

maski

Uprzedzając następne pytanie, które brzmi „czy zatem nie można dokonywać podziału adresu sieci na 3 lub 5 podsieci?” odpowiadam można. Należy wówczas jednak zastosować technikę zmiennej długości maski, tzw. VLSM (ang. Variable Length Subnet Mask), o której opowiem w dalszej części artykułu.

Wróćmy do naszego pierwszego przykładu, czyli adresu 192.168.1.0, maski 255.255.255.0 oraz podziału na 2 podsieci. Jeśli wykorzystaliśmy część bitów hosta, aby „zaspokoić” część sieciową, to jest to równoznaczne z tym, że liczba hostów w tych dwóch podsieciach się zmniejszy. Jak zatem obliczyć liczbę hostów w nowo utworzonych podsieciach? Należy skorzystać z tego samego wzoru, który stosowaliśmy w poprzednim artykule czyli: 2(liczba bitów adresu IP – skrócony zapis maski) – 2, co w naszym przypadku da nam:

2(32 – 25) – 2 = 2(7) – 2 = 128 – 2 = 126

Tak więc w każdej z podsieci będziemy mieli 126 hostów.

Na koniec pozostaje nam jeszcze określić adresy nowo utworzonych podsieci, oraz ich adres rozgłoszeniowe. Pamiętajmy, że „wyjściowo” skorzystaliśmy z adresu 192.168.1.0 oraz maski 255.255.255.0 i co za tym idzie 3 pierwszych oktetów tego adresu zmienić nie możemy. Poruszać się będziemy zatem tylko w ramach ostatniego oktetu.

Jeśli nasz początkowy adres miał postać 192.168.1.0 to nie ma żadnego powodu, aby nie wykorzystać go jako adres naszej pierwszej podsieci, zatem będzie ona miała adres 192.168.1.0, maska dla tej podsieci to: 255.255.255.128. Adres rozgłoszeniowy (ang. broadcast) wyliczamy w taki sam sposób, w jaki robiliśmy to w poprzednim artykule, czyli wykonujemy operacją logiczną NOT na postaci binarnej maski, następnie zamieniamy otrzymaną liczbę na postać dziesiętną i dodajemy ją do adresu sieci.

Operacja NOT

maski1

Konwersja otrzymanej liczby na postać dziesiętną

maski2

Dodanie otrzymanej liczby do adresu sieci

maski3

I w taki oto sposób wyliczyliśmy adres rozgłoszeniowy naszej pierwszej podsieci.

Jak w takim razie określić adres drugiej podsieci? Zasada jest bardzo prosta i obowiązywać będzie zawsze przy podziale na podsieci więc warto ją zapamiętać: adres każdej kolejnej podsieci to adres rozgłoszeniowy poprzedniej plus 1, czyli w naszym przypadku 192.168.1.128. Maska jest taka sama, tak więc łatwo można obliczyć adres rozgłoszeniowy tej podsieci, wystarczy, że dodamy do ostatniego oktetu adresu podsieci wyliczoną wcześniej liczbę 127, co da nam 192.168.1.255. Adresy pierwszych i ostatnich hostów również obliczamy, tak jako było to omówione w poprzednim artykule, czyli adres pierwszego hosta każdej podsieci to adres tej podsieci plus 1, adres każdego ostatniego hosta podsieci to adres rozgłoszeniowy minus 1.

Podsumowując, podział adresu 192.168.1.0 z maską 255.255.255.0 przedstawia się następująco:

maski4

W celu przećwiczenia zagadnienia, proponuję abyście samodzielnie spróbowali podzielić sieć z większą ilością możliwych do zaadresowania hostów o adresie 172.16.0.0 z maską 255.255.0.0 na 4 podsieci. Zauważcie, że w tym przykładzie maska jest mniejsza niż we wcześniej omawianym, dlatego też, zmiana adresów będzie następować na dwóch ostatnich oktetach, a nie tylko na ostatnim. Dla ułatwienia udostępniam Wam tabelę z rozwiązaniem, abyście mogli sprawdzić poprawność wykonania zadania. Powodzenia!

Wróćmy teraz do wspomnianej przeze mnie wcześniej techniki VLSM. Polega ona na zastosowaniu różnej długości maski w zależności od wielkości podsieci. Dwa przypadki, które przećwiczyliśmy wcześniej, dzieliły adres IP na równe podsieci, czyli na podsieci z taką samą ilością hostów (podsieci miały taką samą maskę). Stosowanie stałych masek nie zawsze ma jednak sens, ponieważ czasami zdarzają się sytuacje, gdzie w podsieciach pracować będzie różna liczba hostów, np. w jednej podsieci 100, a w drugiej tylko 10. Jeśli podzielimy adres IP na dwie równe podsieci, to w tej drugiej wiele adresów będzie niewykorzystanych, zostaną zmarnowane, co jest sytuacją niepożądaną. Aby uniknąć takiej sytuacji przy podziale na podsieci, uwzględnić należy „zapotrzebowanie” na liczbę hostów i tak ustawić maskę, aby odpowiadała temu „zapotrzebowaniu”. Podsumowując VLSM stosuje się wówczas, kiedy chcemy podzielić adres IP na mniejsze podsieci, ale z różną ilość hostów możliwych do zaadresowania.

Aby przybliżyć Wam stosowanie tej techniki ponownie posłużę się przykładem:

Mamy do dyspozycji adres 192.168.1.0 z maską 255.255.255.0 i musimy dokonać podziału na 3 podsieci o określonej liczbie hostów:

1 podsieć: minimum 100 hostów,

2 i 3 podsieć: minimum po 50 hostów.

Aby wykonać to zadanie, na początek trzeba wskazać jaką zastosować maskę, aby możliwe było zaadresowanie liczby hostów podanej w przykładzie. Tak więc jeśli dodamy jedynkę do maski i będzie ona miała postać 255.255.255.128 (/25) będziemy mogli zaadresować do 126 hostów (wynika to z podanego wcześniej wzoru 2(liczba bitów adresu IP – skrócony zapis maski) – 2).


Jeśli dodamy 2 jedynki to maska będzie miała postać 255.255.255192 (/26), czyli będziemy mogli zaadresować do 62 hostów. Jak widać, zarówno w pierwszym, jak i w drugim przypadku mieścimy się w podanych wcześniej założeniach. Podsumowując zatem, maski dla poszczególnych podsieci przedstawiają się następująco:

1 podsieć: 255.255.255.128

2 i 3 podsieć255.255.192

Jeśli mamy już określone maski, możemy przystąpić do wyliczania pozostałych danych, czyli adresów sieci, adresów rozgłoszeniowych oraz adresów pierwszych i ostatnich hostów w podsieciach. Zasady są dokładnie takie same jak w poprzednich przypadkach.

Przypominam, że jeśli mamy do podzielenia adres IP 192.168.1.0 to adres ten użyty będzie jako adres 1 podsieci. Jeśli maska ma postać 255.255.255.128 to po zamianie na postać binarną (11111111.11111111.11111111.10000000), wykonaniu negacji (operacji NOT) i po konwersji na liczbę dziesiętną uzyskamy postać 0.0.0.127. Dodając tę wartość do adresu podsieci otrzymamy adres rozgłoszeniowy 192.168.1.127. Adres pierwszego hosta to 192.168.1.1 (adres sieci + 1), natomiast ostatniego to 192.168.1.126 (adres rozgłoszeniowy – 1)

Adres drugiej podsieci będzie miał postać 192.168.1.128 (+ 1 do adresu rozgłoszeniowego poprzedniej podsieci). Po zamianie na postać binarną maski podsieci (11111111.11111111.11111111.11000000), wykonaniu operacji NOT i ponownej konwersji na liczbę dziesiętną otrzymamy postać 0.0.0.63. Po dodaniu tej wartości do adresu sieci, otrzymamy adres rozgłoszeniowy w tej podsieci w postaci 192.168.1.191. Adres hosta pierwszego to 192.168.129, a ostatniego 192.168.1.190

Adres trzeciej podsieci będzie miał postać 192.168.1.192, maska jest taka sama, jak w poprzedniej podsieci tak więc ponownie wartość 0.0.0.63 dodajemy do adresu podsieci aby otrzymać adres rozgłoszeniowy, który ostatecznie będzie miał postać 192.168.1.255 Adres pierwszego hosta to 192.168.1.193, natomiast ostatniego 192.168.1.254

Podsumowanie przedstawiam Wam w poniższej tabeli.

podsieci