Adresowanie IP



Adres IP (ang. IP address) - liczba nadawana interfejsowi sieciowemu, grupie interfejsów (broadcast, multicast), bądź całej sieci komputerowej w protokole IP, służąca identyfikacji elementów sieci w warstwie trzeciej modelu OSI - w obrębie sieci lokalnej oraz poza nią (tzw. adres publiczny). Adres IP nie jest "numerem rejestracyjnym" komputera - nie identyfikuje jednoznacznie fizycznego urządzenia - może się dowolnie często zmieniać (np. przy każdym wejściu do sieci Internet) jak również kilka urządzeń może dzielić jeden publiczny adres IP. Ustalenie prawdziwego adresu IP użytkownika, do którego następowała transmisja w danym czasie jest możliwe dla systemu/sieci odpornej na przypadki tzw. IP spoofingu (por. man in the middle, zapora sieciowa, ettercap) - na podstawie historycznych zapisów systemowych. W najpopularniejszej wersji czwartej (IPv4) jest zapisywany zwykle w podziale na oktety zapisywane w systemie dziesiętnym i oddzielane kropkami, rzadziej szesnastkowym bądź dwójkowym (oddzielane dwukropkami bądź spacjami). Początkowo schemat adresacji IP zakładał sztywny podział na klasy. Klasa A umożliwia zaadresowanie 16 milionów unikalnych hostów, klasa B obejmuj 65 tysięcy adresów, natomiast najmniejsza klasa C umożliwia stworzenie sieci składającej się z 254 hostów. Adresy sieci klasy A są już niedostępne, organizacja InterNIC zaprzestała też przydzielania adresów sieci klasy B. Najwięcej jest adresów sieci klasy C, jednak ich wadą jest stosunkowo mała liczba adresów dostępnych w ramach pojedynczej sieci klasy C.

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.

IPv4 (ang. Internet Protocol version 4) - czwarta wersja protokołu komunikacyjnego IP przeznaczonego dla Internetu. Identyfikacja hostów w IPv4 opiera się na adresach IP. Dane przesyłane są w postaci standardowych datagramów. Wykorzystanie IPv4 jest możliwe niezależnie od technologii łączącej urządzenia sieciowe - sieć telefoniczna, kablowa, radiowa, itp. IPv4 znajduje się obecnie w powszechnym użyciu. Dostępna jest również nowsza wersja - IPv6. Opis czwartej wersji protokołu IP znajduje się w RFC 791. W modelu TCP/IP protokół IPv4 znajduje się w warstwie Internetu, której odpowiada warstwa sieci w modelu OSI.

IPv6 (ang. Internet Protocol version 6) - protokół komunikacyjny, będący następcą protokołu IPv4, do którego opracowania przyczynił się w głównej mierze problem małej, kończącej się liczby adresów IPv4. Podstawowymi zadaniami nowej wersji protokołu jest zwiększenie przestrzeni dostępnych adresów poprzez zwiększenie długości adresu z 32-bitów do 128-bitów, uproszczenie nagłówka protokołu oraz zapewnienie jego elastyczności poprzez wprowadzenie rozszerzeń, a także wprowadzenie wsparcia dla klas usług, uwierzytelniania oraz spójności danych. Protokół jest znany także jako IP Next Generation oraz IPng. Głównymi dokumentami opisującymi protokół są RFC 2460 oraz RFC 4291.


Adresacja

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 i 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ą

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

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

192.168.1.128 - to jest adres naszej sieci

2. Obliczamy adres rozgłoszeniowy

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

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

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



192.168.1.255 - to jest adres rozgłoszeniowy

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

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

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

Co w naszym przypadku daje

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ć 192.168.1.129

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

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.


Klasy adresów IP

Adresy klasy A
Adres klasy A składa się 8 bitów adresy sieci i z 24 bitów wskazujących na urządzenie znajdujące się w danej sieci.32-bitowe adresy IP zapisuje się najczęściej jako cztery liczby oddzielone kropkami - każda odpowiada jednemu bajtowi adresu. Dlatego adresy klasy A będą należeć do przedziału od 1.0.0.0 do 126.0.0.0 (adresy 0.x.x.x i 127.x.x.x są zarezerwowane). Liczba urządzeń, które można zaadresować w pojedynczej sieci klasy A wynosi dokładnie 16 777 214 (adresy x.0.0.0 i x.255.255.255 są zarezerwowane). Klasa A została stworzona do obsługi bardzo dużych sieci. Wstępnie zakładano, że zapotrzebowanie na tego typu sieci będzie stosunkowo niskie, dlatego też architektura klasy A zakłada małą liczbę sieci klasy A przy bardzo dużej liczbie hostów.

Adresy klasy B
Dwa pierwsze bity adresu klasy B to 1 i 0, a następne 14 bitów identyfikuje sieć. Ostatnie 16 bitów służy do adresowanie urządzeń końcowych.Dlatego adresy sieci klasy B należą do przedziału od 128.1.0.0 do 191.254.0.0, a każda z tych sieci oferuje 65 534 adresy IP dla urządzeń końcowych. Podobnie jak w przypadku adresów klasy A, również część adresu klasy B służącą do adresowania urządzeń końcowych można podzielić na dwie część: adres podsieci i adres urządzenia końcowego. Przykładowo, adres klasy B można podzielić na 8 bitów adresu podsieci i 8 bitów adresu urządzenia końcowegoTaki sposób podziału adresu klasy B pozwala na stworzenie 254 podsieci, z których każda może składać się z 254 urządzeń.Klasa B została stworzona do obsługi średnich i dużych sieci. W adresie IP sieci klasy B, adres sieci zajmuje pierwsze dwa oktety, natomiast pozostałe dwa określają adresy hostów.

Adresy klasy C
Klasa C została stworzona do obsługi dużej liczby małych sieci. Pierwsze trzy oktety określają adres sieci natomiast oktet ostatni definiuje hosty. Dopuszczalny zakres adresacji sieci klasy C rozpoczyna się od adresu IP 192.0.0.0 a kończy 223.255.255.255. Pojedyncza sieć klasy C pozwala obsłużyć 254 hosty, natomiast maksymalna ilość sieci klasy C wynosi 2 097 150. Trzy pierwsze bity adresu klasy C to 1, 1 i 0, natomiast kolejne 21 bitów identyfikuje sieć. Ostatnie 8 bitów adresów służy do identyfikacji urządzeń końcowych. Adresy sieci klasy C należą do przedziału od 192.0.1.0 do 223.255.254.0, a w każdej sieci może być do 254 urządzeń.

Adresy klasy D
Klasa D została stworzona do multiemisji (multicast). Adres multicast jest unikalnym adresem sieci, który kieruje pakiety do grup adresów IP. Takie rozwiązanie jest dużo wydajniejsze od tworzenie oddzielnego strumienia do poszczególnych odbiorców. Dopuszczalny zakres adresów IP hostów sięga od 224.0.0.0 do 239.255.255.254

Adresy klasy E
Zdefiniowano klasę E, lecz jej adresy zostały zarezerwowane przez Internet Engineering Task Force (IETF) na potrzeby badawcze i klasa ta nie może być używana w Internecie. Adresy IP sieci klasy E zawarte są w zakresie od 240.0.0.0 do 255.255.255.255

Klasa adresówPoczątkowe bity adresu
Klasa A0
Klasa B10
Klasa C110
Klasa D1110
Klasa E11110




Powrót