Podstawy sieci komputerowych
12. Zadania i protokoły warstwy sieciowej
12.1. Protokół IPv4
Protokół IPv4 został zaprojektowany w taki sposób, że nie ma potrzeby dodawania dużej ilości danych kontrolnych podczas procesu enkapsulacji. Zapewnia tylko podstawową funkcjonalność wymaganą do przesyłania pakietów ze źródła do miejsca docelowego. Jest bezpołączeniowy, co oznacza, że nie nawiązuje połączenia przed wysłaniem danych, ale działa na zasadzie "najlepszego wysiłku". To znaczy, że nie kontroluje przepływu ani nie korzysta z potwierdzeń dostarczenia danych, jak robi to protokół TCP. Robi jednak wszystko, co w jego mocy, aby komunikacja była skuteczna. Jest to również protokół niezależny od medium, co oznacza, że dane mogą być przesyłane między hostami niezależnie od używanego medium. Wszak w jednej sieci możemy używać skrętki, w innej światłowodu, a w trzeciej fali radiowych. Protokół IP działa dokładnie tak samo w każdej sieci. Problemem, który może się pojawić przy przesyłaniu danych na różnych nośnikach jest maksymalny rozmiar pakietu, który nazywamy MTU (Maximum Transmission Unit). Jeśli pakiet będzie zbyt duży, routery podłączone do sieci podzielą go na mniejsze części. Proces ten nazywamy fragmentacją, co jest kolejnym terminem z naszego słownika internetowego.
Aby ułatwić zrozumienie działania protokołu IPv4 i sposobu przesyłania pakietów przez Internet, można posłużyć się przykładem paczki wysłanej przez AliExpress. Opakowanie składa się z 3 kartonów połączonych w jedną całość. Nadawca napisał adres i wysłał przesyłkę do firmy kurierskiej. Wysyłając paczkę, rezygnuje z dodatkowych opcji, takich jak potwierdzenie odbioru czy śledzenie przesyłki. Pracownik firmy przed wydaniem paczki oznacza karton miejscem docelowym i adresem zwrotnym. Został przewieziony samochodem do portu wraz z dziesiątkami innych paczek, gdzie został zapakowany w kontener, a następnie przepłynął przez ocean.
W porcie przeznaczenia kontenery są rozpakowywane, paczki sortowane, a następnie przewożone samochodem do różnych miast i lokalnych punktów odbioru. Z punktu odbioru samochodem paczka ma być dostarczona pod wskazany adres, ale okazuje się, że trzy połączone kartony są zbyt duże, aby można je było przewieźć na wózku, więc kurier rozdziela je na poszczególne kartony i dostarcza Tobie. Ponieważ nadawca nie wybrał opcji dodatkowych, firma kurierska nie dostarczyła mu potwierdzenia odbioru. Możesz to zrobić sam, np. napisać opinię na AliExpress.
Przekształcenie tego na komunikację za pomocą protokołu IP wyglądałoby tak:
· Paczka wysyłana jest bez uprzedniego powiadomienia odbiorcy - mamy tryb bezpołączeniowy;
·
Podczas procesu
enkapsulacji przydzielany jest adres źródłowy i docelowy
– w naszym przypadku adres domowy odbiorcy jest adresem docelowym, a adres nadawcy jest adresem zwrotnym;
· Przesyłka nie zawierała zbyt wielu danych kontrolnych, które mogłyby spowolnić komunikację - nadawca zrezygnował z dodatkowej opcji, potwierdzenia i śledzenia przesyłki;
· Paczki docierają do miejsca przeznaczenia za pośrednictwem światłowodów, skrętek i fal radiowych - podobnie jak paczki dostarczane są różnymi środkami transportu: statkami, koleją, samochodami;
· Paczka jest zbyt duża, aby wysłać ją w całości przez jedną z sieci, przez co została podzielona, aby można ją było przewieźć małym samochodem;
· Protokół IP nie wysłał potwierdzenia otrzymania paczki - podobnie jak firma nie zapewniła nadawcy, że paczka dotarła.
Jak każdy protokół komunikacyjny, IPv4 ma również ustandaryzowane nagłówki, które umożliwiają dodawanie informacji kontrolnych. Poniżej przedstawiono przykład typowego nagłówka IPv4.
Wersja |
IHL |
Typ usługi |
Długość pakietu |
|
Identyfikacja |
Flaga |
Przesunięcie fragmentu |
||
TTL |
Protokół |
Suma kontrolna nagłówka |
||
Adres źródłowy |
||||
Adres docelowy |
||||
Opcje |
Wypełnienie |
· Docelowy adres IP – adres IP urządzenia, do którego kierowane są dane.
· Źródłowy adres IP – adres IP urządzenia będącego nadawcą danych.
· Czas życia (TTL) — 8-bitowe pole określające pozostały czas życia pakietu.
Wartość TTL zmniejsza się o co najmniej 1 za każdym razem, gdy pakiet przechodzi przez router (to znaczy po każdym przeskoku). Gdy wartość osiągnie 0, router odrzuca pakiet i usuwa go z przepływu danych w sieci. Mechanizm ten zapobiega nieskończonemu przesyłaniu pakietów, które nie mogą dotrzeć do celu, czyli tzw. "pętlom routingu". Jeśli pętle routingu byłyby dozwolone, sieć zostałaby przeciążona pakietami, które nigdy nie dotrą do celu. Zmniejszenie wartości TTL przy każdym przeskoku zapewnia, że ostatecznie osiągnie ona 0, a pakiety z polem TTL równym 0 zostaną odrzucone.
· Protokół — 8-bitowa wartość, która określa używany protokół warstwy wyższej (transportowej), taki jak UDP lub TCP.
· Type of Service (ToS) — zawiera 8-bitową wartość, która określa priorytet każdego pakietu.
· Fragment Offset - Pole używane podczas rekonstrukcji pakietów podzielonych przez routery. Wskazuje kolejność, w jakiej każdy pakiet powinien być ułożony podczas rekonstrukcji.
· Flaga More Fragments (MF) - Pojedynczy bit używany z polem Fragment Offset do partycjonowania i rekonstrukcji pakietów. Ustawienie flagi MF oznacza, że dany fragment nie jest ostatnim fragmentem pakietu. Gdy host odbierający zauważy przychodzący pakiet z ustawionym MF = 1, sprawdza pole przesunięcia fragmentu, aby umieścić fragment podczas rekonstrukcji pakietu. Gdy host odbierający zauważy, że przychodzący pakiet ma ustawione MF = 0 i ma niezerową wartość w polu przesunięcia fragmentu, użyje tego fragmentu jako ostatniego bloku zrekonstruowanego pakietu.
· Flaga DF (Don't Fragment) — Pojedynczy bit, który, jeśli jest ustawiony, oznacza, że fragmentacja pakietów jest niedozwolona.
· Wersja — zawiera numer wersji protokołu IP (w tym przypadku IPv4).
· Długość nagłówka (IHL) — określa rozmiar nagłówka pakietu.
· Długość pakietu — to pole podaje całkowity rozmiar pakietu w bajtach, łącznie z nagłówkiem i danymi.
· Identyfikacja — to pole służy do jednoznacznej identyfikacji fragmentu podzielonego pakietu IP.
· Suma kontrolna nagłówka — to pole służy do sprawdzania błędów nagłówka pakietu.
· OPCJE — jest to miejsce w nagłówku IPv4 na dodatkowe pola do obsługi innych usług. Jednak jest rzadko używany.