Adresacja IP cz. 1 – Z czym to się je?

Niniejszy poradnik został stworzony dla osób, którym obce jest dzielenie sieci na podsieci. W tym poradniku pokażę obliczanie adresów sieci oraz jak ugryźć maskę, by sobie zębów nie połamać. Poradnik składa się z dwóch części. Druga jest dostępna tutaj: Adresacja IP cz. 2 – podział na podsieci.

Adres IP i jego maska

A więc, aby zrozumieć zaawansowane „techniki”, musimy przypomnieć sobie podstawy. Co to jest adres IP i do czego służy nie wytłumaczę, gdyż Wiki nie kot, nie ugryzie. Na „warsztat” rzucimy sobie przykładowy adres IP:

190.168.15.10

Adres IP składa się z czterech oktetów bitów. W zapisie dziesiętnym są to cztery liczby oddzielone kropkami (w zapisie binarnym to cztery liczby po osiem bitów, czyli cztery oktety). Dlaczego cztery, a nie pięć? Bo łatwo skojarzyć to np. z „czteropakiem” Złocistej Ambrozji Radochy (która daje +5 do radochy, -10 do inteligencji, +50 do gadatliwości).

Każdy adres IP ma swoją maskę. Maska ta zakrywa tylko część adresu. Maska zazwyczaj jest podawana wraz z adresem w treści zadania. Jednakże czasem musimy „domyślić” się sami, jaką maskę ubrał dany adres. Sprawa jest bardzo prosta. Można się co prawda uczyć zakresów IP na pamięć, ale jest to słabe. Drugim sposobem (o wiele łatwiejszym) jest sprawdzenie, od jakich bitów rozpoczyna się pierwszy oktet. A więc, na początek musimy zamienić tenże pierwszy oktet na postać binarną.

190 = 10111110
Warto nadmienić, że każda z czterech części adresu IP (a także maski) składa się z ośmiu bitów. Jeśli po zamianie liczby na system binarny wychodzi nam mniej bitów niż 8, dopisujemy zera przed liczbę, czyli np. 17 = 10001. Liczba binarna ma 5 cyfr, więc z początku dopisujemy trzy zera. Końcowa liczba powinna wyglądać tak: 00010001

Po zamianie pierwszego oktetu na liczbę binarną musimy sprawdzić pierwsze cyfry (te od lewej). W naszym przypadku jest to 10, więc adres należy do klasy B. Poniżej tabelka ukazująca te zasady:

Klasa Początek pierwszego oktetu Maska
A 0 /8
B 10 /16
C 110 /24

 

Gdy znamy klasę naszego adresu, pozostaje nam napisać maskę. Maski zapisuje się w dwóch formatach. Pierwszy z nich to ten, podobny do adresu ip, np. 255.255.0.0. Drugi sposób to liczba po ukośniku, np. /16.

O co w tym chodzi? Aby to zrozumieć, musimy rozpisać cały adres maski na system binarny:

255.255.0.0 = 11111111.11111111.00000000.00000000

Jak widzimy, z lewej strony mamy same jedynki, które ciągną się długo. W połowie nastąpiło „załamanie” i zamiast jedynek dalej widzimy same zera. Po prawej stronie, po zerach, nie ma już żadnej jedynki. To właśnie jest cecha maski – jak jedynki, to jedna za drugą. Gdy rozpoczną się zera, są aż do końca.

Drugi sposób zapisania maski to liczba po ukośniku, np. /16. O co tutaj biega? Otóż to liczba jedynek w masce. Policzmy, ile jedynek jest w masce 255.255.0.0. Jest ich szesnaście. Z racji tego, że wygodniej jest zapisać mniej, wystarczy że zapiszemy samą liczbę jedynek. A więc /16.

Po cóż więc ta maska jest? Jak to prawią mądre księgi: „Maska oddziela część adresu sieci od części hosta”. Mądre te słowa. A teraz prościej. Mamy jakiś IP i znamy jego maskę (czy to z obliczeń, czy to z treści zadania). Ten adres IP może być adresem jakiegoś konkretnego komputera. A my chcemy znać np. adres sieci tego komputera, albo chcemy wiedzieć ile komputerów jest w tej sieci. Musimy wtedy dokonać pewnego obliczenia. Adres i maska muszą rozpisane być blisko siebie, jeden nad drugim. Pamiętajmy, że najlepiej wszystko widać na adresach i maskach zapisanych w formie binarnej, więc do takiego stanu musimy doprowadzić nasze „obiekty testowe”.

190.168.15.10 = 11000000. 10101000.00001111.00001010
255.255.0.0 = 11111111.11111111.00000000.00000000

Teraz musimy zrobić coś niebywale precyzyjnego. Chirurg na oddziale ma już lżejsze zadanie. Otóż cała sztuka polega na tym, by każda cyfra adresu IP była pod daną cyfra maski.

10111110.10101000.00001111.00001010 – adres IP
11111111.11111111.00000000.00000000 – oraz jego maska

No, udało się. Ale co dalej? Co dalej panie kierowniku? – ktoś może zapytać. Dalej to już z górki – im szybciej tym niebezpieczniej. Zobaczmy, jak odczytać adres sieci.

Patrzymy na maskę i na adres i porównujemy po kolei oktety. Na początek pierwszy oktet:

10111110. - adres IP
11111111. - maska

Jak widzimy, maska cały czas ma jedynki. To tak jakby jedynki przysłaniały adres sieci. Więc tam gdzie maska ma jedynki, przepisujemy adres bez żadnych zmian. A więc pierwszy oktet pozostawiamy bez szwanku.

W drugim oktecie sytuacja wygląda identycznie. Same jedynki w masce, więc drugi oktet adresu przepisujemy bez zmian.

W trzecim oktecie jedynki się skończyły. Są same zera

.00001111. - adres IP
.00000000. - maska

Tam gdzie w masce zera, adres IP sieci się kończy – mówi staropolskie przysłowie, powtarzane tak często przez nasze prababcie. W czwartym oktecie też muszą być zera w masce, gdyż jak wiemy, gdy zera się zaczynają, są aż do końca maski.

Dlatego też, tam gdzie mamy jedynki w masce, to tam znajduje się adres IP sieci. Tam gdzie mamy zera w masce, tam nie ma nic. Tamto jest nieważne. Dlatego tam gdzie są zera w masce wpisujemy także zera w adresie. Czyli poprawny adres sieci powinien wyglądać tak:

10111110.10101000.00000000.00000000 – adres IP sieci
11111111.11111111.00000000.00000000 – oraz jego maska

Teraz wystarczy każdy oktet adresu sieci zamienić na liczbę dziesiętna. Wyjdzie nam 190.168.0.0. Jest to nasz adres sieci.


 

Maski trochę mniej standardowe

Maski klas adresów A, B oraz C są, co by tu dużo nie gadać, standardowe. Gdybyśmy się uparli, to nie musielibyśmy zamieniać całego adresu IP na system binarny. Wystarczyłby pierwszy oktet do określenia maski i tyle. Potem moglibyśmy działać na liczbach dziesiętnych. Powyższe zadanie moglibyśmy rozwiązać tak:

190.168.15.10
255.255.0 .0

Jak widzimy, nawet na liczbach dziesiętnych widać, gdzie następuje te „przełamanie” maski, i dzięki temu wiemy, gdzie oddzielić adres IP sieci.

Jest to proste, aż za proste. Dlatego też, by uczynić sieci trudniejszymi, mamy do dyspozycji maski trochę mniej standardowe, niż te z klas A, B oraz C.

Mamy taki adres IP: 10.20.30.40.
Maska tego adresu to: /20

Na pierwszy rzut oka nie wyczuwamy tutaj żadnego niebezpieczeństwa. Jednakże rozpiszmy maskę na bity:

11111111.11111111.11110000.00000000

Jak widać, „przełamanie” występuje w połowie trzeciego oktetu. Aby obliczyć adres sieci, następna czynność jaką musimy wykonać to zamiana adresu IP na postać binarną. Jednakże nie musimy zamieniać całego adresu. Jak już zauważyliśmy, „przełamanie” maski następuje w trzecim oktecie (.11110000.). Wystarczy więc zamienić tylko 3 oktet adresu IP na system binarny. Pierwsze dwa oktety przepisujemy bez zmian, bo maska tam ma jedynki. Trzeci oktet zamieniamy na system binarny:

30 – 00011110

Następnie podstawiamy 3 oktet maski pod 3 oktet IP:

.00011110. – adres IP
.11110000. – maska

Tak jak pamiętamy, tam gdzie maska ma zera, to i w adresie IP sieci też są zera. Tam gdzie jedynki w masce, adres IP pozostawiamy bez zmian. A więc trzeci oktet powinien wyglądać tak:

.00010000.

Daje nam to liczbę 16, więc cały adres sieci wygląda tak: 10.20.16.0


 

Jako drugi przykład weźmy adres IP 192.168.75.220 wraz z maską /29.

Na początek zamieniamy maskę na system binarny:

11111111.11111111.11111111.11111000

Jak widać, „przełamanie” występuje w ostatnim, czwartym oktecie (.11111000). Wystarczy więc zamienić ostatni oktet adresu IP na postać binarną:

220 – 11011100

Teraz musimy podstawić 4 oktet adresu IP pod czwarty oktet maski:

.11011100 – adres IP
.11111000 – maska

Tam gdzie zera w masce, tam i zera w adresie. A więc ostatni oktet powinien wyglądać tak: .11011000, co daje nam liczbę 216. Pozostałe 3 oktety przepisujemy bez zmian, a więc adres sieci wygląda tak:

192.168.75.216


Część druga:

W drugiej części poradnika pokażę, jak podzielić sieć na podsieci oraz pod-podsieci ze względu na ilość sieci lub ilość hostów. Ukażę również, jak obliczyć ilość hostów w danej podsieci i adres broadcast.

1 Komentarz

    Napisz komentarz