IPv4: TYPY ADRESÓW I PODZIAŁ KLASOWY
 

Zanim zajmiemy się obecnie stosowanym sposobem podziału adresacji, przejdziemy przez wszystkie etapy pośrednie z jakimi do dziś mamy styczność. Wynika to ze zgodności wstecznej niektórych urządzeń i oprogramowania oraz domyślnych wartości różnych poleceń i zmiennych interfejsów.


Budowa adresu IP

Zadaniem protokołu IP jest zapewnienie komunikacji pomiędzy wszystkimi dołączonymi do sieci węzłami. Wymaga to jednoznacznej identyfikacji każdego dołączonego do sieci węzła. W tym celu stosowane są adresy IP.

W każdym pakiecie IP zawarte są pełne dane adresowe. Mówią one skąd (źródłowy adres IP) i dokąd (docelowy adres IP) taki pakiet jest przełączany. Umożliwia to niezależną obsługę każdego pakietu, na każdym z kolejnych węzłów.

Adres IPv4 składa się z 32 bitów. Jest zatem liczbą dziesiętną w przedziale od 0 do 4,294,967,295. Tak też należy go traktować - jak jedną liczbę. Ze względu na trudności w zapamiętaniu i zarządzaniu tak wielką liczbą, powszechnie stosuje się zapis kropkowo dziesiętny. W tym celu, 32 bitowa wartość została podzielona na 4 równe, odseparowane kropkami części, a następnie zapisana w postaci dziesiętnej. Każda powstała w ten sposób pozycja adresu IP, zawiera 8 bitów i nazywana jest oktetem (przyjmuje wartości od 0 do 255). Oktety w adresie IP numerujemy od strony lewej do strony prawej - 1.2.3.4.

Z powyższego można wywnioskować, że wartość każdej z pozycji adresu IPv4 jest podstawą systemu 256 liczbowego - wynika to z zapisu każdej pozycji na 8 bitach. 


Przykład zapisu i konwersji adresu

Zatem zamiana adresu IPv4 A.B.C.D z powrotem do jednej, 32 bitowej liczby dziesiętnej, powinna być realizowana zgodnie ze wzorem: A * 2563 + B * 2562 + C * 2561 + D * 2560.  Zgodnie z tym, adres IPv4 148.152.32.115 jest liczbą 2,492,997,747. Poniżej znajduje się sposób dojścia do wyżej przedstawionej liczby:

148 * 16777216 + 152 * 65,536 + 32 * 256 + 115 * 1 = 2,483,027,968 + 9,961,472 + 8,192 + 115  = 2,492,997,747

Do weryfikacji można posłużyć się poleceniem ping, któremu podać można adres IPv4 w postaci jednej dużej liczby: 

# ping -c 1 2492997747
PING 2492997747 (148.152.32.115) 56(84) bytes of data.

--- 2492997747 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

 

Chcąc dokonać konwersji w drugą stronę, najprościej jest liczbę 2,492,997,747 sprowadzić do postaci binarnej: 

2,492,997,747 = 10010100100110000010000001110011

Następnie podzielić ją na 4 równe części i dokonać konwersji do postaci dziesiętnej: 

10010100 . 10011000 . 00100000 . 01110011 = 148.152.32.115


Podział i routing klasowy

Adres IP składa się z dwóch części - sieci i hosta. Do części sieci należą najbardziej znaczące bity adresu (bity od strony lewej do prawej). Do części hosta należą najmniej znaczące bity adresu (pozostałe bity, od strony prawej do lewej). 

Początkowo, granica pomiędzy tymi częściami była twardo zdefiniowana i można było wyróżnić 3 klasy adresów IP:

  • Klasa A - najbardziej znaczący bit zawsze równy 0. Kolejne 7 bitów to część sieci. Pozostałe 24 bity to część hosta.
  • Klasa B - najbardziej znaczące 2 bity zawsze równe binarnie 10 (jeden-zero). Kolejne 14 bitów to część sieci. Pozostałe 16 bitów to część hosta.
  • Klasa C - najbardziej znaczące 3 bity zawsze równe binarnie 110 (jeden-jeden-zero). Kolejne 21 bitów to część sieci. Pozostałe 8 bitów to część hosta.

Routing pakietów był początkowo realizowany tylko w oparciu o pierwsze bity adresu IP (te definiujące jego klasę oraz fragment, który był częścią sieci) - był to tzw. routing klasowy. Jako, że część hosta nie była wykorzystywana, bity tej części były zawsze zapisywane samymi zerami. I tak powstał pierwszy typ adresu, adres reprezentujący sieć. Jest nim adres, który w części hosta posiada same zera. Wykorzystywany jest on podczas realizacji funkcji routingu. 

Bity hosta były wykorzystywane dopiero w ostatnim etapie, podczas przekazywania pakietu do bezpośrednio dołączonego w sieci węzła.

W przypadku, kiedy chcemy coś nadać do wszystkich urządzeń, posłużyć się możemy drugim typem adresu. Jest nim adres rozgłoszeniowy (broadcast), a właściwie jego dwa podtypy. Adres rozgłoszeniowy skierowany (directed broadcast) i adres rozgłoszeniowy ograniczony (limited broadcast). Adres rozgłoszeniowy skierowany, to adres, który ma określoną część sieci, a w części hosta posiada same jedynki. Adres rozgłoszeniowy ograniczony, to adres którego wszystkie 32 bity ustawione są na jeden - 255.255.255.255.

Kiedy chcemy nadać coś do wszystkich hostów w znanym nam segmencie sieci, posłużyć się możemy adresem rozgłoszeniowym skierowanym. Jest to adres, który może być routowany w sieci IP. Przy czym, często ze względów bezpieczeństwa, ruch do tego adresu nie jest wpuszczany do lokalnych segmentów sieci. 

Z adresu rozgłoszeniowego ograniczonego korzystamy, kiedy chcemy wysłać coś do wszystkich hostów w lokalnym segmencie sieci. Nie ma dla nas znaczenia, jaki jest adres sieci lokalnego segmentu - często go jeszcze nie znamy. Ruch zaadresowany na ten adres IP, nigdy nie jest przekazywany do innych segmentów sieci. Do protokołów, które korzystają z tego adresu IP należy np. ARP i DHCP.

Wszystkie pozostałe adresy IP w danej sieci (wykluczamy adres sieci i rozgłoszeniowy), są adresami skierowanymi (unicast). Posiadają one w części hosta wartości różne od samych zer i samych jedynek. Adresy te przypisywane są kolejnym hostom w sieci i wykorzystywane są do ich jednoznacznej identyfikacji. 

Wracając do naszego adresu 148.152.32.115, widać, że jego pierwsze 2 bity mają wartość 10 (jeden-zero). Oznacza to, że należy on do klasy B. Ostatnie 16 bitów w klasie B jest częścią hosta. Tak więc, adres 148.152.0.0 jest adresem sieci, a adres 148.152.255.255 jest adresem rozgłoszeniowym. Wszystkie pozostałe adresy w przedziale od 148.152.0.0 do 148.152.255.255, są adresami skierowanymi, które można przypisywać hostom.


Typy adresów i transmisji IP

W sieci IPv4 mamy do czynienia z 4 typami transmisji danych:

  • transmisją skierowaną (unicast),
  • transmisją rozgłoszeniową (broadcast),
  • transmisją grupową (multicast),
  • transmisją do jeden z wielu (anycast).

Najpowszechniejszym typem transmisji, jest transmisja skierowana (często można spotkać się ze zwrotem “unicastowa”). Wykorzystywana jest ona do przesyłu danych pomiędzy dwoma hostami. Dotyczy to trybu klient-serwer oraz peer-to-peer. Podczas transmisji skierowanej, jako adres źródłowy i docelowy wykorzystywane są adresy hostów.

Z transmisji rozgłoszeniowej korzystamy, kiedy chcemy nadać coś do wszystkich hostów w danej sieci lub nie wiemy na którym z nich znajduje się określona usługa. Adresem źródłowym jest adres hosta. W przypadku, kiedy jeszcze nie zna on swojego adresu, jest nim adres składający się z samych zer - 0.0.0.0. Adresem docelowym jest adres rozgłoszeniowy.

Pamiętać należy, że pakiet rozgłoszeniowy zawsze trafia do wszystkich hostów w segmencie sieci. Stąd nie zawsze użycie tej transmisji jest efektywne. Przykładem może być chęć wysłania pakietu, tylko do określonej grupy odbiorców. Niestety, w przypadku rozgłaszania, wszystkie stacje w sieci będą musiały taki pakiet przetworzyć. Zostanie on przekazany przez kartę sieciową stacji do CPU, który to dopiero podejmie dalszą decyzję na temat tego co z tym pakietem zrobić. Transmisja skierowana w takim zastosowaniu także się tutaj nie sprawdza. Wymaga ona wysłania oddzielnego pakietu, do każdego z uczestników grupy. Jest to mało efektywne. Rozwiązaniem problemu jest trzeci typ transmisji, zwany transmisją grupową.

Transmisja grupowa (często można spotkać się ze zwrotem “multicastowa”), umożliwia nadanie pakietu do określonej grupy hostów. Adresem źródłowym jest tutaj zawsze adres unicastowy. Adresem docelowym jest adres IP specjalnego typu, nazywany adresem multicast lub adresem multicastowym.

Adresy multicastowe należą do czwartej klasy adresowej, klasy D. Mają one 4 najbardziej znaczące bity zawsze równe binarnie 1110 (jeden-jeden-jeden-zero). Pozostałe 28 bitów definiuje kolejne adresy grupowe. Nie ma w tej klasie żadnego podziału na część sieci i hosta. Adresy są jedynie pogrupowane ze względu na ich przeznaczenie. 

Transmisja anycastowa korzysta z normalnych adresów unicastowych. Nie ma w niej znaczenia, które z wielu urządzeń o tym samym adresie IP obsłuży nadesłany pakiet. Jest on przesyłany do tego urządzenia, które jest najbliżej względem tablicy routingu. Adres anycast, wykorzystywany jest jako adres docelowy. Najczęstsze wykorzystanie tych adresów jest dla prostych bezstanowych usług, jak obsługa zapytań DNS lub np. pełnienie funkcji routera relay dla usługi 6to4.

Istnieje jeszcze jedna klasa adresowa, klasa E. Pierwsze 4 najbardziej znaczące bity zawsze są równe binarnie 1111 (jeden-jeden-jeden-jeden). Klasa ta nie ma obecnie żadnego zastosowania.


Klasy adresowe

Poniżej znajduje się zestawienie omówionych wyżej klas adresowych.

 

 

Taki podział nie skalował się zbyt dobrze, co doprowadziło do powstania FLSM, VLSM i CIDR.


Zapraszamy do kontaktu drogą mailową This email address is being protected from spambots. You need JavaScript enabled to view it. lub telefonicznie +48 797 004 932.