Adresacja IP

Adresacja stanowi niezwykle ważny element w działaniu sieci komputerowych ponieważ na jej podstawie odbywa się dostarczanie informacji. Kiedy listonosz dostarcza nam list, dokonuje tego na podstawie naszego adresu zamieszania, w sieciach komputerowych natomiast, aby dostarczyć pakiety do odpowiedniego hosta potrzebny jest inny adres, nazywamy adresem IP. Stanowi on kluczowy element w funkcjonowaniu protokołów warstwy sieciowej. W tym artykule omówimy sobie, w jaki sposób działa adresowanie IP w wersji 4.

Adres IP jest adresem logicznym interfejsu sieciowego (hosta) to znaczy, że nie musi to być tylko adres konkretnego komputera, może to być również adres interfejsu (interfejsów) rutera czy access pointa.

Każdy adres IPv4 składa się z 32-bitowego ciągu zer i jedynek. Wynika to z faktu, że działanie urządzeń w sieciach komputerowych oparte jest na logice cyfrowej, co oznacza, że adresy te interpretowane są jako liczby binarne. Dla prostszego stosowania adresacji i zapamiętywania adresów, na co dzień stosuje się jednak zapis dziesiętny. Zapis ten składa się z 4 części (każda z nich to 1 bajt czyli 8 bitów), zwanych oktetami.

Dla lepszego zrozumienia posłużę się przykładem:

adres IP w zapisie dziesiętnym 192.112.20.101 będzie miał postać binarną równą 11000000.01110000.00010100.01100101




W każdym adresie IP, pewna część bitów (liczona od lewej strony), reprezentuje adres sieci, reszta natomiast stanowi adres konkretnego hosta. Jest to logiczne ponieważ pakiet najpierw musi trafić do właściwej sieci, dopiero potem trafia do konkretnego hosta. Jak w życiu, list najpierw trafia do miasta, dopiero potem pod wskazany numer domu na konkretnej ulicy. Jaka część bitów przeznaczona jest na adres sieci, a jaka na adres hosta określone jest przez tzw. maskę podsieci, która to określaja wielkość sieci oraz liczbę hostów w niej funkcjonujących.

Zanim przejdziemy do omówienia maski, musimy jeszcze określić typy adresów, które związane są z każdą siecią, są nimi:

  • adres sieciowy (ang. network address) -adres, który określa całą sieć,
  • adres rozgłoszeniowy (ang. broadcast address) – specjalny adres używany w celu wysyłania danych do wszystkich hostów w określonej sieci,
  • adres hosta (interfejsu urządzenia końcowego) – adres przyporządkowany urządzeniu końcowemu pracującemu w sieci.

Podział ten będzie nam potrzebny aby we właściwy sposób móc obliczać adresy IP.

Wróćmy teraz do naszej maski podsieci, która to określa, jaka część adresu IP określa sieć, a jaka hosty. Podobnie jak sam adres IP, również maska zapisana jest w postaci 32-bitowej i przez urządzenia sieciowe interpretowana jest jako liczba binarna, natomiast w zapisie oraz konfiguracji urządzeń stosuje się zapis dziesiętny, podzielony na 4 oktety. Przykładowa maska podsieci może mieć postać 255.255.255.0 dziesiętne czyli 11111111111111111111111100000000 binarnie. Czasami też możemy spotkać się z tzw. skróconym zapisem maski  (np. /24), określającym, ile jest jedynek w binarnym zapisie maski. My będziemy stosować oba te zapisy.

W jaki sposób interpretować zapis binarny, a co za tym idzie jak określić, która część adresu jest adresem sieci, a która hosta? Bardzo prosto: jedynki określają sieć, a zera hosty należące do tej sieci.

Teraz omówimy sobie, w jaki sposób należy obliczać adresy IP. Jest to przydatne w momencie kiedy będziemy chcieli na podstawie podanego adresu i maski określić adres sieci, do której należy host, maksymalną liczbę hostów należących do tej sieci oraz adres rozgłoszeniowy. Aby wykonać tego typu zadanie potrzebna będzie umiejętność konwersji liczb dziesiętnych na binarne (i odwrotnie) oraz wiedza z zakresu wykonywania operacji logicznych, a konkretnie operacji AND  NOT. Zaczynamy!

Podany jest adres ip w postaci: 192.168.1.145 oraz maska 255.255.255.128. Na podstawie tych danych należy obliczyć:

  • adres sieci,
  • adres rozgłoszeniowy,
  • maksymalną liczbę hostów,

oraz wskazać adres pierwszego i ostatniego hosta w sieci.

Rozwiązanie:

1. Obliczamy adres sieci

Zamieniamy adres IP oraz maskę na postać binarną

przeliczanieIP1

Na otrzymanych liczbach binarnych wykonujemy operację AND (czyli mnożymy liczby w kolumnach)

przeliczanieIP2

Otrzymaną postać binarną konwertujemy na liczbę dziesiętną

przeliczanieIP6

 

przeliczanieIP15

2. Obliczamy adres rozgłoszeniowy

Na postaci binarnej maski wykonujemy operację logiczną NOT (jedynki zamieniamy na zera, a zera na jedynki)

przeliczanieIP17

Zamieniamy otrzymaną liczbę binarną na postać dziesiętną

przeliczanieIP8

Otrzymaną liczbę dziesiętną dodajemy do adresu sieci

przeliczanieIP9
przeliczanieIP10

3. Obliczamy maksymalną liczbę hostów w sieci

Obliczając maksymalną liczbę hostów w sieci korzystamy ze wzoru

przeliczanieIP11

przypominam, że skrócony zapis maski to liczba jedynek w jej postaci binarnej

Co w naszym przypadku daje




przeliczanieIP12

Na koniec wskazujemy adres pierwszego i ostatniego hosta w sieci

Jeśli adres sieci ma postać 192.168.1.128 to adres pierwszego hosta będzie miał postać

przeliczanieIP13

Jeśli natomiast adres rozgłoszeniowy ma postać 192.168.1.255 to adres ostatniego hosta będzie miał postać

przeliczanieIP14

Podsumowując:

Adres sieci: 192.168.1.128.

Adres rozgłoszeniowy: 192.168.1.255.

Liczba hostów: 126.

Pierwszy host: 192.168.1.129.

Ostatni host: 192.168.1.254.

Powyższy sposób przeliczania sprawdzi przy adresie z każdej klasy adresowej. Zwróćcie uwagę na to, że wszelkie operacje (AND, NOT, dodawanie czy odejmowanie) wykonywaliśmy w kolumnach, oktet pod oktetem. Jeśli obliczalibyśmy adres z innej klasy, np 153.15.102.120 /18 i przykładowo, wykonując operację NOT na postaci binarnej maski i konwertując ją na liczbę dziesiętną otrzymalibyśmy postać 0.0.63.255, to aby uzyskać adres rozgłoszeniowy 63 dodajemy do trzeciego oktetu, natomiast 255 do czwartego oktetu adresu sieci. Stosując te zasady, będziecie w stanie przeliczać każdy adres IP.

Zadanie do samodzielnego wykonania

Dany jest adres IP w postaci: 172.16.34.200 oraz maska 255.255.192.0. Na podstawie tych danych oblicz:

  • adres sieci,
  • adres rozgłoszeniowy,
  • liczbę hostów,
  • adres pierwszego i ostatniego hosta.