Routing & Switching

Protokół IPv4

Protokół IPv4
W: Routing & Switching

Protokół komunikacyjny IP działa w warstwie 3 modelu TCP/IP niezależnie od warstwy fizycznej. Oznacza to, że sposób podłączenia hosta - poprzez port rj-45, światłowód czy komunikację bezprzewodową - nie ma znaczenia. Urządzenia mogą korzystać z różnych mediów fizycznych, pozostając w tej samej sieci i korzystając ze wspólnej adresacji.

Dzięki protokołowi ARP (Address Resolution Protocol) możemy poinformować warstwę drugą który adres fizycznych (MAC) odpowiada konkretnemu adresowi logicznemu warstwy trzeciej. Dzięki temu jesteśmy w stanie skomunikować urządzenia w tej samej domenie rozgłoszeniowej. Jeśli jednak chcemy skomunikować się z hostem, serwerem czy usługą znajdującą się w innej podsieci, potrzebujemy protokołu routingu warstwy trzeciej inaczej trasowania np. ospf lub eigrp. Możemy również oczywiście wykorzystać trasy statyczne.

OSPF - Routing w oparciu o link state | teoria
Ospf (ang. Open Shortest Path First) to obecnie jeden z najchętniej wybieranych protokołów IGP. Podobnie EIGRP czy IS-IS funkcjonuje w ramach jednego obszaru atonomicznego. Oznacza to, że zajmuje się routingiem w ramach sieci zarządzanej przez jedną firmę lub organizację.Współcześnie stosujemy OSPF w wersji 2 dla IPv4 oraz w wersji
EIGRP - Routing Distance Vector od Cisco
Enhanced IGRP Pierwsze protokoły routingu dynamicznego korzystały z logiki przekazywania pakietów charakteryzującej obecne protokoły Distance (odległość) Vector (kierunek). W tamtych czasach powszechnie stosowanymi protokołami był RIP w wersji pierwszej, oraz niedługo później wydany IGRP. Jednak we wczesnych latach 90 kiedy „zakończyła się” wojna o standaryzację sieciową i zaczęto odchodzić

Protokół IP

Protokół IP jest z natury bezpołączeniowy. Oznacza to, że nie nawiązuje się sesji między hostami, a komunikacja odbywa się na żądanie. Nie ma pewności, czy host, z którym ostatnio się komunikowaliśmy, jest nadal osiągalny. Protokół nie gwarantuje dostarczenia danych w całości ani ich części; w tym zakresie polega na warstwie czwartej.

Do czego służy nam ten protokół? Spełnia dwie bardzo istotne funkcje. Zapewnia spójny system adresacji wykorzystywany globalnie i umożliwia odnalezienie interfejsu sieciowego oraz trasy do niego. Adres IP zarówno nadawcy, jak i odbiorcy, jest przekazywany w sposób niezmieniony przez całą trasę. Występuje wyjątek od tej reguły w postaci NAT, gdzie najczęściej ukrywamy adresy sieci wewnętrznej na routerze brzegowym, zamieniając go na publiczny.

Nagłówek protokołu IPv4 przedstawiony jest w formie tabeli, co ułatwia zrozumienie zawartych w nim pól oraz ich wielkość.

Do najważniejszych pól nagłówka należą:

  • Wersja – określa wersję pakietu IP oraz strukturę nagłówka. Dla IPv4 wartość wynosi 4.
  • Długość – określa długość nagłówka wyrażoną jako wielokrotność 32-bitowego słowa. Minimalna wartość to 5.
  • Typ usługi – informuje następny router o wymaganiach dotyczących obsługi pakietu. Odpowiada polu CoS w warstwie drugiej.
  • Długość całkowita – określa długość całego pakietu z nagłówkiem i danymi, maksymalnie 65 535 bajtów (16 bitów).
  • Identyfikacja – umożliwia złożenie fragmentowanych danych w całość.
  • Flagi – dwa bity: czy jest to ostatni fragment oraz czy może być fragmentowany.
  • Przesunięcie fragmentu – wskazuje pozycję fragmentu względem oryginału.
  • Czas życia TTL – określa pozostały czas życia danych w sekundach, zmniejsza się o 1 przy przejściu przez router, maksymalnie 255.
  • Protokół – identyfikuje protokół warstwy wyższej danych.
  • Suma kontrolna – służy do sprawdzenia integralności nagłówka.
  • Adres nadawcy i odbiorcy.
  • Opcje – umożliwiają przyszłą implementację nowych opcji.
  • Uzupełnienie – dopełnia pole opcji do pełnych 32 bitów.

Adresacja IPv4

Adres IP to 32-bitowy ciąg zer i jedynek przypisany interfejsowi sieciowemu lub grupie interfejsów (także adresy broadcast i multicast) lub całej sieci. Dla wygody zapisujemy go w formie dziesiętnej, rozdzielając kropkami na 4 ośmiobitowe oktety o wartościach od 0 do 255. Poniżej znajduje się przykład adresacji IP z wykorzystaniem prywatnej puli adresowej. Zagadnienie maski podsieci będzie omówione w dalszej części artykułu.

💡
Warto zauważyć, że adresy warstwy trzeciej nie muszą jednoznacznie identyfikować fizycznych urządzeń.

Klasy adresów

Na początku istnienia protokołu IP w warstwie 4, ilość dostępnych adresów wydawała się wystarczająca. Ograniczanie wielkości sieci wynikało z wydajności routerów oraz chęci separacji podsieci. Adresy IP były przydzielane w dużych blokach znacznie przekraczających rzeczywiste potrzeby odbiorców. Same protokoły routingu były stosunkowo prymitywne i opierały się na klasach adresów.

Standard IP podzielił pulę wszystkich możliwych kombinacji 32-bitowych adresów na pięć klas. Przynależność do klasy jest określana przez wartość pierwszego oktetu. Klasa A otrzymała prawie połowę wszystkich dostępnych adresów, reprezentowana przez sieci zaczynające się od 1 do 126. Klasa B otrzymała ćwierć adresów, zaczynających się od 128-191. Najpopularniejsza nadal klasa C zawiera 1/8 dostępnych adresów, zaczynających się od 192-223. Wszystkie wymienione klasy zawierają adresy przeznaczone do komunikacji typu unicast, gdzie każdy adres powinien być przypisany do jednego hosta.

IPv4 stosuje 3 klasy dla adresów unicastowych z konkretnym powodem. Każda sieć z klasy A pozwala na adresację 16 777 214 hostów. Ze względu na tak duże możliwości adresacyjne istnieje jedynie 126 takich sieci. Klasa B, nieco mniejsza, pozwala na adresację 65 654 hostów dla 16 385 sieci. Najpopularniejsza do dzisiaj klasa C umożliwia adresację 254 interfejsów sieciowych i pozwala na stworzenie aż 2 097 152 podsieci.

Adresy do komunikacji multicastowej, rozpoczynające się od 224-239, są przypisane do klasy D. Ostatnia klasa E pierwotnie była oznaczona jako eksperymentalna, lecz obecnie przeznaczona jest do wykorzystania w przyszłości. Cała sieć o numerach 0 oraz 127 jest zarezerwowana.

Prywatne adresy IP

Początkowo wszystkie adresy miały być routowalne w Internecie. Jak wiemy, zarówno ilość dostępnych adresów miała na to pozwolić, jak również względy bezpieczeństwa nie były jeszcze tak istotne. Jednakże z biegiem czasu i przy zastraszającym tempie wykorzystania całej puli zauważono, że wiele hostów wcale nie musi być osiągalnych, a wręcz nie powinno być spoza naszej sieci. Jeśli nie udostępniasz na swoim komputerze żadnych treści oraz nie potrzebujemy możliwości drukowania na naszej drukarce będąc na drugim końcu świata, nie potrzebujesz publicznego adresu IP (trasowalnego w Internecie). To samo dotyczy komputerów w wielu firmach czy uczelniach, które często nawet jeśli są serwerami, nie zawsze chcemy, aby ktoś z zewnątrz miał do nich dostęp. Wychodząc na przeciw tym oczekiwaniom, IANA wydała RFC 1819, w którym wydzieliła 3 pulę adresów IP, które mogą być wykorzystywane w sieciach prywatnych:

10.0.0.0 – 10.255.255.255 (10/8 prefix)

172.16.0.0 – 172.31.255.255 (172.16/12 prefix)

192.168.0.0 – 192.168.255.255 (192.168/16 prefix)

Dlatego wewnątrz sieci prywatnych, na przykład w sieciach domowych stosujemy adresację 192.168.0.0/24. Następnie nasz dostawca internetu stosuje NAT (Network Address Translation), „tłumacząc” wszystkie nasze adresy (i sąsiada też 😉) na adresy publiczne.

Warto również wspomnieć, że w protokole IP nie ma mechanizmu, który by uniemożliwił trasowanie sieci prywatnych w Internecie. Jest to zdefiniowane w RFC 1819, jednakże trasowanie jest nadal możliwe.

Maska podsieci

W celu lepszego zrozumienia, czym jest maska podsieci, odpowiedzmy sobie na pytanie: czym jest podsieć? Jest to sieć składająca się z następujących po sobie kolejno adresów. Dysponujemy 32 bitami do zaadresowania, co daje nam sporo możliwości. Jednak jak możemy określić, które z 4 miliardów adresów należą do naszej sieci i nie powinny być wykorzystywane przez innych? Odpowiedzią na to pytanie jest maska podsieci, składająca się z ciągu następujących po sobie jedynek i zer. Jak dobrze wiemy, dla maski podsieci bity przyjmują wartość 1 wyłącznie od lewej strony. Dzięki temu łatwo możemy określić wartość maski dla danego oktetu.

Wartości dziesiętne możliwe do zaadresowania w masce podsieci

Dlaczego jednak maska podsieci jest maską? Ponieważ, gdy "nałożymy" maskę podsieci - podobnie jak prawdziwą maskę - na nasz adres IP, otrzymamy informację o sieci, do której należy nasz host, oraz jak duża jest ta sieć. Posłużymy się przykładem znanego już nam hosta 192.168.0.100/24 i zamienimy go na system binarny.

Kiedy już mamy gotową zamianę, wystarczy podstawić wartości adresu IP oraz maski, aby ukazał się przed nami idealny schemat. Patrzymy, które bity mają wartość 1 zarówno dla adresu, jak i dla maski. Przepisujemy je do kolejnego rzędu i w ten sposób otrzymujemy adres naszej sieci.

Korzystając z naszego przykładu, wiemy, że nasz host o adresie 192.168.0.100/24 należy do sieci 192.168.0.0/24. Co jednak z bitami, które mają wartość 0 w naszej masce? Są to bity, które możemy wykorzystać jako adresy hostów w naszej sieci. W naszym przypadku mamy 8 bitów, co daje nam łącznie 256 adresów hostów. Jednakże w każdej sieci (z wyjątkiem /31 i /32) mamy dwa specjalne adresy – adres sieci jako pierwszy adres oraz ostatni adres, który jest adresem rozgłoszeniowym.

CIDR – Classless Inter-domain Routing

Jak wspomnieliśmy wcześniej, podczas projektowania protokołu IPv4 nikt nie przewidywał, że obecny Internet rozrośnie się do tak ogromnej skali, jak ma to miejsce dzisiaj. Każdy z nas posiada przynajmniej kilka urządzeń podłączonych do sieci - komputer, telefon, telewizor, konsolę czy inteligentny zegarek. W rzeczywistości, to nawet nie jest szczyt góry, jaką dla nas przygotowuje IoT, gdzie praktycznie każde urządzenie elektryczne może komunikować się za pomocą IP. Dochodzimy do punktu, w którym potrzebujemy ogromnych ilości podsieci, ale niekoniecznie o wielkości zdefiniowanej w oryginalnych klasach adresowych. Na przykład, do zaadresowania połączenia punkt-punkt potrzebujemy 2 adresów. Najmniejsza klasa C oferuje 254 użyteczne adresy. Tak więc, aby zaadresować 2 interfejsy sieciowe, marnujemy 252 adresy, które nie mogą być wykorzystane nigdzie indziej.

Wychodząc naprzeciw potrzebie lepszego dopasowania wielkości naszych sieci, powstało Classless InterDomain Routing. Co on wprowadził do sieci? Początkowo klasy adresów miały z góry zdefiniowane maski. Klasa A /8, klasa B /16 oraz klasa C /24, jednak z zastosowaniem CIDR możemy tworzyć klasy sieci z maską podsieci o dowolnej długości.

Wszystkie współczesne protokoły routingu pozwalają na wykorzystanie CIDR, jednak należy pamiętać, że pierwsze protokoły routingu, takie jak RIPv1, obsługują jedynie routing klasowy.

VLSM – Variable Length Subnet Mask

Kolejnym rozwiązaniem usprawniającym efektywne wykorzystanie sieci IPv4 jest Variable Length Subnet Mask – VLSM. Rozwiązanie to jest bardzo podobne do Classless Inter-Domain Routing, ponieważ również pozwala na podzielenie większej podsieci na kilka mniejszych. Jednak jak zawsze diabeł tkwi w szczegółach.

Wykorzystanie maski podsieci nie było konieczne, ponieważ na podstawie pierwszego oktetu można było określić przynależność adresu do danej klasy. Dzięki temu rozmiar był z góry ustalony. Jednak wraz z CIDR podział większej sieci, np. /16, na mniejsze zakładał wykorzystanie masek o tej samej długości, np. /24. Możliwość utworzenia podsieci o różnych długościach maski wprowadzono dopiero w VLSM. W ten sposób możemy otrzymać blok adresów IPv4 o długości /24 i podzielić go na kilka /26, jednocześnie wydzielając jeszcze mniejsze sieci o długości /30.

Napisane przez
Rafał Rudewicz
Pasjonat sieci komputerowych i automatyzacji. CCNP Enterprise & DevNet Specialist. IP/MPLS SME. Dołącz do mnie, aby razem odkrywać fascynujący świat technologii!
Komentarze
Więcej od Inna Sieć
6 sposobów na labowanie od Cisco
Routing & Switching

6 sposobów na labowanie od Cisco

Cisco oferuje sześć opcji labowania, które wspierają edukację. Narzędzia te obejmują zarówno darmowe symulatory, jak i rozbudowane laboratoria, które pozwalają na testowanie rzeczywistych scenariuszy oraz automatyzacji, co ułatwia naukę i rozwój umiejętności w bezpiecznym środowisku.
Świetnie! Udało ci się pomyślnie zarejestrować.
Witaj z powrotem! Zalogowałeś się pomyślnie.
Pomyślnie subskrybowałeś Inna Sieć.
Twój link wygasł.
Sukces! Sprawdź swoją skrzynkę e-mailową, aby uzyskać magiczny link do logowania.
Sukces! Twoje informacje rozliczeniowe zostały zaktualizowane.
Twoje informacje rozliczeniowe nie zostały zaktualizowane.